Как себя чувствует Intel без Hyper-Threading?

Как стало недавно известно, были обнаружены четыре новых аппаратных уязвимости, затрагивающие процессоры Intel. Эти новые «дыры» позволяют злоумышленникам получить доступ к данным пользователя, используя уязвимости стороннего канала – MDS (Microarchitectural Data Sampling), наиболее серьёзной из которых является, наверное, «ZombieLoad».

В отличие от предыдущих ошибок, основанных на спекулятивном исполнении команд, частично затронувших AMD и Arm-процессоры, ошибки MDS относятся исключительно к чипам Intel. Свести риск от этих уязвимостей можно не дожидаясь патчей и обновлений, отключив одновременную многопоточность (SMT), она же – «Hyper-Threading» у Intel.

В настоящее время Microsoft готовит обновление Windows 10 1903, которое призвано устранить четыре уязвимости MDS. Но полностью это проблему не решает, нужны также обновления в BIOS и, как сообщается, Intel уже выпустила новый микрокод для партнеров-производителей материнских плат. Однако на момент написания этой статьи не было выпущено ни одной новой версии BIOS. Мы решили протестировать худший вариант сценария, отключив Hyper-Threading. Это может оказаться единственным решением для старых компьютеров, поскольку вряд ли производители выпустят патчи для всех моделей.

Сегодня мы посмотрим, как влияет отключение Hyper-Threading на процессоры Intel, поддерживающие эту функцию. Мы уже делали это в прошлом, и это интересный тест, но теперь у нас есть повод взглянуть на результаты более критично, учитывая, что новая уязвимость безопасности в процессорах Intel связана с SMT.

Для теста мы выбрали процессоры Core i7-8700K и 7700K, протестировав их работу в ряде игр и приложений при включенной и отключенной функции Hyper-Threading. Восьмиядерный i9-9900K мы не стали брать, поскольку в нем недостающие потоки не приведут к потере производительности в играх, хотя в приложениях всё-таки соответствующее негативное влияние будет заметно в той же степени, как у 8700K и 7700K.


Если бы у нас было больше времени (мы сейчас готовимся к Computex 2019, так что следите за нашими обновлениями), мы бы хотели также протестировать некоторые двухъядерные процессоры Intel с поддержкой Hyper-Threading, поскольку в них влияние этой функции, несомненно, будет наиболее значительным. Хотя, можно обойтись результатами наших предыдущих тестов этой технологии.

Все тесты выполнялись на компьютере, оснащенном 32 ГБ памяти DDR4-3200, видеокартой GeForce RTX 2080 Ti (чтобы предотвратить боттлнеки на GPU) и Windows 10 build 1903. Игровые тесты проводились как в разрешении 1080p, так и в 1440p, но начнём мы с тестов приложений.

Тесты приложений

Прежде всего, мы получили результаты Cinebench R20 и, глядя на Core i7-8700K, видим снижение производительности на 24% при отключенной Hyper-Threading. Разумеется, такое снижение производительности не останется незамеченным. Более того, мы тем самым фактически превратили 8700K в 7700K по части производительности.

Между тем 7700K становится на 26% медленнее с отключенной Hyper-Threading, и теперь у нас есть старый четырехъядерник или Core i5 поколения Kaby Lake. Для приложений, которые активно используют все ядра, отключение SMT/Hyper-Threading сильно влияет на производительность.

WinRAR ощущает значительную потерю производительности – на 36% у 8700K. Очевидно, что Hyper-Threading отлично себя показывает в этом типе рабочей нагрузки. Столь же сильное падение мы видим и у 7700K – 39%.


Corona – высокопроизводительный рендер, и здесь 8700K показал снижение производительности на 31% при отключении Hyper-Threading, в то время как у 7700K – 33%. В обоих случаях снижение производительности велико, и это позволит нам оценить работу устраняющих уязвимость обновлений, при выполнении задач рендеринга и кодирования.

Blender также испытывает серьёзную потерю производительности при отключении Hyper-Threading, хоть и несколько меньше, чем Corona – на 25% для 8700K, т.е. примерно как Cinebench R20. Из-за меньшего количества ядер, 7700K страдает несколько больше, и здесь мы видим снижение производительности на 29%.

Потребляемая мощность

Прежде чем перейти к играм, мы бы хотели отметить общее энергопотребление системы. Да, мы не видим потребление отдельно процессоров, поэтому трудно что-то говорить об эффективности, но, как вы можете видеть, отключение Hyper-Threading на 8700K не приводит к весомой экономии энергии, уменьшая общее энергопотребление системы лишь на ~5%. В то же время отключение Hyper-Threading на 7700K приводит уже к 11% экономии энергии, и мы это связываем с тем, что четырёхядерный 7700K использует данную функцию более активно, чем шестиядерный 8700K.

Тестирование в играх

Начнём с результатов Assassin's Creed: Odyssey на разрешении 1080p. На 8700K значение средней частоты кадров сократилось лишь на 13%, а минимальной (1%) – не изменилось. С другой стороны, 7700K показал значительное падение как средней частоты кадров, так и 1%-минимальной – 23% и 21% соответственно. Владельцы четырёхъядерных процессоров гораздо сильнее ощутят снижение производительности при отключении Hyper-Threading.

А теперь мы видим, что если на 1440p приоритет управления у вас берет на себя видеокарта, 8700K отлично справляется с отключенной функцией Hyper-Threading, как раз благодаря RTX 2080 Ti. Для четырехъядерных и, не дай бог, двухъядерных процессоров, любое ограничение Hyper-Threading приведет к потере производительности.


Battlefield V – весьма требовательная к ресурсам процессора игра, правда нам удалось протестировать только однопользовательский режим, да и то потребовалось два аккаунта Origin из-за системы блокировки аккаунтов при изменении конфигурации. Возвращаясь к теме, мы опять же не видим значительного снижения производительности здесь. Наибольший спад составил 12%, если смотреть на 1%-минимальное значение FPS у 7700K.

Увеличение разрешения до 1440p не улучшило ситуацию с минимальным FPS, и мы видим, что в обоих случаях отключение Hyper-Threading действительно снижает производительность, хотя этот разрыв уже не так велик, как при рабочих нагрузках.


У Division 2 результаты – жесть. Взгляните, как упала производительность у 7700K при отключении Hyper-Threading. Средняя частота кадров снижается на 37%, а минимальная 1% – на 38%, что близко к результатам, показанным WinRAR.

Да, влияние на производительность 6-ядерного 8700K не столь велико, но даже при этом падение минимального FPS на 13% большинство игроков не оценят. Переходим на 1440p, и теперь 8700K даже с отключенным Hyper-Threading не является фактором ограничения производительности, его теперь берёт на себя RTX 2080 Ti. Однако мы по-прежнему наблюдаем падение производительности на треть у 7700K, глядя на минимальный 1% FPS у него.


Небольшая ремарка. Far Cry New Dawn чувствует себя лучше на 9700K, чем на 8700K. Средняя частота кадров на 9700K достигает ~120 при 1080p. Но мы бы хотели заметить, что когда мы отключаем Hyper-Threading у 8700K, он соответствует 9700K в этом тесте, из чего следует, что количество потоков не идёт на пользу этой игре, так что 6 ядер/6 потоков для неё в целом более эффективен, чем 6 ядер/12 потоков. Но подобных игр очень немного.

Как видим, 7700K с меньшим количеством ядер не страдает такой проблемой при включении Hyper-Threading, хотя он всё-ж был чуточку быстрее с отключенным. Так что, это одна из немногих игр, для которых отключение Hyper-Threading вообще не проблема, и на самом деле идёт на пользу. При условии, если у вас не двухядерный процессор, конечно.

Переключаемся на 1440p, и видим, что количество ядер здесь вообще ничего не решает, а Hyper-Threading лишь замедляет оба процессора.

Далее у нас Hitman 2, и здесь мы видим, что отключение Hyper-Threading не оказывает существенного влияния на 8700K, однако для четырехъядерного 7700K оно сокрушительно. Средняя частота кадров снизилась на 18%, но гораздо хуже, что 1%-минимальный FPS упал почти на 30%. Конечно, мы все еще видим стабильные 60+ кадров в секунду, но для тех, кто любит большой FPS, такой удар по производительности является жёстким.


Даже переключение на 1440p не помогло 7700K справиться с этим ударом, так как мы все еще наблюдаем падение минимального FPS более чем на 25%.


Следующей игрой идёт Rage 2, где отключение Hyper-Threading практически не оказывает влияния на 8700K. У 7700K средняя частота кадров также почти не меняется, но зато минимальный 1% FPS падает весьма значительно – на 20%.


Стоит только увеличить разрешение до 1440p в Rage 2, и процессор перестаёт быть компонентом, ограничивающим производительность. По крайней мере, если смотреть на 7700K без Hyper-Threading. Так что в данном случае отключение Hyper-Threading не оказывает влияния на производительность.

Мы с вами уже убеждались ранее, насколько Shadow of the Tomb Raider может быть требовательным, и здесь мы в этом убедимся ещё раз. У 8700K наблюдаем падение среднего FPS на 10-12% при отключении Hyper-Threading, а у 7700K – вдвое большее, на 24%. Однако ухудшение значения минимального 1% FPS для обоих процессоров одинаковое. В любом случае отключение SMT оказывает сильное влияние на эту игру.

Даже при переходе на 1440p негативный эффект значительный, по крайней мере для 7700K. У 8700K все еще наблюдается небольшое снижение производительности, но это ничто по сравнению с 20%-м падением у 7700K.

Ну и напоследок – World War Z, использующая низкоуровневый API Vulkan. Эта игра прекрасно работает с 4 ядрами, поэтому ни один из процессоров не страдает при отключении Hyper-Threading. Нечто подобное мы видим и при разрешении 1440p, поскольку оба процессора способны извлечь максимальную производительность из RTX 2080 Ti.



Резюме

Мы теперь имеем неплохое представление о том, как 4- и 6-ядерные процессоры Intel работают с включенной Hyper-Threading по сравнению с отключенной. Если кратко, то производительность приложений при выполнении основных ресурсоемких операций обычно снижалась от 25 до 35%.

Влияние на производительность в играх может существенно различаться в зависимости от самой игры и других факторов, таких как разрешение, настройки графики и, конечно, установленная видеокарта. В тестируемых нами играх, 6-ядерный процессор Intel демонстрирует в основном минимальное влияние на свою производительность, хотя минимальный 1% FPS иногда заметно страдает, и при игре с высокой частотой обновления падение производительности будет весьма ощутимым.

Владельцы процессоров с топологией 8/16, таких как 9900K, практически не заметят никакого влияния Hyper-Threading во время игр, но падение производительности приложений по-прежнему будет сильным – на 25-35% без SMT. С другой стороны, наиболее существенное снижение производительности испытают на себе менее мощные процессоры, которые в гораздо большей степени полагаются на Hyper-Threading. Даже наш четырехъядерный 7700K зачастую демонстрировал значительную потерю производительности в игровых тестах, и это означает, что для владельцев двухъядерных процессоров с поддержкой SMT отключение Hyper-Threading будет еще более болезненным.

На данный момент трудно с уверенностью сказать, какое влияние на производительность окажут программные средства для смягчения риска от четырёх уязвимостей MDS на компьютерах под управлением Windows, но мы можем ожидать, что будут определенные потери, особенно там, где Hyper-Threading оказывает наибольшее влияние. Phoronix протестировал эти программные средства в Linux, и показатели потери производительности варьируются от незначительных до огромных. Кроме того, Phoronix обнаружил, что системы Intel теперь на ~16% медленнее, чем раньше, до установки программного смягчения воздействий Spectre, Meltdown, Foreshadow и Zombieload. В то время как системы AMD показали снижение производительности всего на 3%. Они также утверждают, что таких мер по уменьшению риска достаточно, чтобы приблизить Core i7-8700K к Ryzen 7 2700X и Core i9-7980XE к Threadripper 2990WX.

Если Intel не вытащит кролика из шляпы и не предоставит действительно эффективных программных решений, таких, чтобы можно было бы не отключать Hyper-Threading, то владельцев двух- и четырехъядерных процессоров Intel с поддержкой Hyper-Threading могут ожидать неутешительные последствия. В списке таких процессоров: Core i3 и Core i5 – от Clarkdale до Kaby Lake; все Core i7 вплоть до Kaby Lake; а также процессоры Kaby Lake и Coffee Lake семейства Pentium.

Тем, кто довольствуется более старым оборудованием и не выполняет никаких критически важных задач, до момента явного обнаружения атаки на MDS-эксплойтах, лучшим вариантом сохранить производительность будет, вероятно, отказ от установки обновлений против таких атак. Это не является нашей официальной рекомендацией, а лишь интересная мысль по поводу того, какими могут быть альтернативные пути решения проблемы после выпуска соответствующих обновлений.

В этой статье мы провели интересное исследование того, где функция Hyper-Threading оказывает наибольшее влияние. В ней мы отразили последствия наихудшего сценария, когда SMT приходится полностью исключить, но в свою очередь мы наблюдаем и некоторые движения в направлении не допустить такого сценария. Google отключил Hyper-Threading в Chrome OS, сообщество OpenBSD рекомендует сделать то же самое, в то время как Apple частично пропатчила системы средствами снижения риска проникновения эксплойтов и сообщила, что для полного устранения риска от уязвимостей необходимо отключить Hyper-Threading. Другие производители, такие как Microsoft, еще не заняли определенную позицию.