Это очень хороший и актуальный вопрос. Как мы все знаем, гиперпоточное ядро - это не настоящий процессор / ядро. Вместо этого это виртуальный ЦП / ядро (с этого момента я буду называть ядро). Планировщик ЦП Windows, начиная с Windows XP, должен уметь отличать гиперпоточные (виртуальные) ядра от реальных ядер. Тогда вы можете представить, что в этом идеальном мире он обращается с ними «как надо», и это не проблема. Вы ошибаетесь.
Собственная рекомендация Microsoft по оптимизации сервера Windows 2008 BizTalk рекомендует отключить HyperThreading. На мой взгляд, это говорит о том, что обработка ядер с гиперпоточностью не идеальна, и иногда потоки получают квант времени на ядре с гиперпоточностью и страдают от штрафа (часть производительности реального ядра, 10% I ''. гадаю, а Microsoft предполагает 20-30%).
Ссылка на статью Microsoft, в которой предлагается отключить HyperThreading для повышения эффективности сервера: http://msdn.microsoft.com/en-us/library/cc615012(BTS.10).aspx
Это ВТОРАЯ рекомендация после обновления BIOS, поэтому они считают ее важной. Они говорят:
ОТ МАЙКРОСОФТ:
"Отключить гиперпоточность на компьютерах BizTalk Server и SQL Server
Для компьютеров BizTalk Server необходимо отключить критически важную гиперпоточность. Это параметр BIOS, который обычно находится в настройках процессора в программе настройки BIOS. Гиперпоточность заставляет сервер иметь больше процессоров / процессорных ядер, чем есть на самом деле; однако гиперпоточные процессоры обычно обеспечивают от 20 до 30% производительности физического процессора / ядра процессора. Когда BizTalk Server подсчитывает количество процессоров для настройки своих алгоритмов самонастройки; гиперпоточные процессоры вызывают искажение этих настроек, что пагубно сказывается на общей производительности. "
Теперь они говорят, что это происходит из-за того, что он сбрасывает самонастраивающиеся алгоритмы, но затем упоминают о проблемах конкуренции (предполагая, что это более серьезная проблема планирования, по крайней мере, для меня). Читайте как хотите, но я думаю, что в нем все сказано. HyperThreading был хорошей идеей, когда был с системами с одним процессором, но теперь это просто осложнение, которое может снизить производительность в этом многоядерном мире.
Вместо полного отключения HyperThreading вы можете использовать такие программы, как Process Lasso (бесплатно), чтобы установить соответствие ЦП по умолчанию для критических процессов, чтобы их потоки никогда не выделялись виртуальным ЦП.
Итак ... Я не думаю, что кто-то действительно знает, насколько хорошо Планировщик ЦП Windows обрабатывает виртуальные ЦП, но я думаю, можно с уверенностью сказать, что XP справляется с этим хуже, и с тех пор они постепенно улучшили его, но это все еще не идеален. Фактически, он НИКОГДА не может быть идеальным, потому что ОС не знает, какие потоки лучше всего использовать на этих более медленных виртуальных ядрах. Это может быть проблемой, и почему Microsoft рекомендует отключить HyperThreading в серверных средах.
Также помните, что даже БЕЗ HyperThreading существует проблема «перегрузки ядра». Если вы можете сохранить поток на одном ядре, это хорошо, поскольку это снижает штрафы за изменение ядра.
person
dyasta
schedule
26.11.2010