Назад | Перейти на главную страницу

Дросселирование процессора на Opteron 6272 в Windows

Я пытаюсь протестировать многопоточное приложение на своем новом сервере HP Proliant, который имеет 2x Opteron 6272 и 64 ГБ оперативной памяти.

Когда я запускаю приложение на настольном компьютере (ряд процессоров i7 и Xeon X5675), приложение заставляет все ядра загружаться почти на 100%.

Когда я запускаю приложение на своем сервере, независимо от того, сколько потоков я запускаю, общее использование ЦП приложением колеблется в районе 20-25%. То есть, если я работаю с 32 потоками, все 32 ядра будут зависать примерно на 20%, если я запускаю 16 потоков, они будут зависать примерно на 40% и так далее.

  1. Сначала я подозревал, что это связано с операционной системой, поэтому я установил Windows 7 на сервер, чтобы на рабочих столах и на сервере была одна и та же ОС.
  2. Тогда я заподозрил, что дело в железе, я изменил управление питанием в BIOS на High Performance. Несмотря на то, что это действительно увеличило контрольное время, проблема использования 20% сохраняется.
  3. Я могу получить все 32 ядра на 100%, используя тест y-cruncher. Мой собственный тест написан на .NET, может ли это иметь какое-то отношение к этому?

Меня озадачивает эта проблема. Кто-нибудь знает, что могло вызвать это?

Если ваше приложение обрабатывает большой объем данных, попробуйте следовать по пути к данным - если входные данные поступают из сети, проверьте возможные задержки, ограничения полосы пропускания или ошибки передачи. Вы уже проверили дисковый ввод-вывод, который в противном случае мог бы стать узким местом.

И последнее, но не менее важное: поскольку это многопоточное .NET-приложение, вы должны убедиться, что сборка мусора на сервере используется, иначе вы можете увидеть странные характеристики нагрузки, как описано в этом посте из переполнения стека.