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

Почему у Windows такая слабая привязка к процессору

Некоторое время назад я немного поигрался с новой виртуальной машиной Win2008 и обнаружил некоторые серьезные опасения.

Сервер - Dell T610. 16гиг, 4 ядра, 8 логических, 2,4 ГГц Xeon, серия 5600. ESXi 4.1.0 Гость 2008 64bit, с 2vCPU

Я тестировал производительность процессора с помощью 7Zip на файле размером 400 мегабайт. Наши требования к серверу особенно важны для однопоточной производительности, поэтому я запускаю 7Zip только с одним потоком.

7zip занимает на ВМ 4:50. Для сравнения, на недавнем 4-ядерном сервере с частотой 2 ГГц этот процесс занимает 4 часа.

Очевидно проблема здесь.

Поэтому я попытался установить привязку к процессу для процесса 7Zip.exe. На этот раз сжатие заняло всего 3:20. Обратите внимание, что установка привязки на физическом компьютере не имеет значения. (Так же быстро, включен или выключен) Как на физических, так и на виртуальных машинах, когда привязка не установлена, вы можете видеть, как процесс выполняется между всеми ядрами в Taskman)

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

Вопрос в том, почему у Windows такая потеря процессора, а у Linux - нет?

«Таким образом, в основном для однопоточных (или ограниченных) приложений, иногда лучше установить привязку ЦП к определенному ядру или подмножеству ядер. Это позволит масштабированию частоты процессора« Турбо »включиться и поддерживаться (вместо этого перехода к различным ядрам, которые нельзя увеличить, а можно даже уменьшить).

«На данный момент ни один планировщик ОС не учитывает активную тактовую частоту отдельных ядер (afaik). Возможно, это изменится в будущем выпуске Windows, но это кажется маловероятным, по крайней мере, в течение нескольких лет».

https://bitsum.com/pl_when_cpu_affinity_matters.php