Hyper-Threading – а был ли смысл?


В декабре 2013 года (по сути перед обвалом гривны) сменил платформу – с Celeron E3200 на i3 4330. В сторону процессоров AMD душа не легла, но даже из Intel выбор был достаточно широк и неоднозначен, чтобы подобрать ту или иную модель. Во-первых, платформа – учитывая небольшую разницу в цене между бюджетными материнскими платами выбор пал в сторону 1150 с чипсетом H81. Во-вторых, сам процессор – рассматривать Celeron`ы и Pentium`ы особого смысла не было (тогда еще не было 3258-го пня). Остановился на модели i3 4330. Разумеется, i3 дороже чем пень, но имеет ряд преимуществ: Hyper-Threading, 4 МБ кэш-памяти, набор инструкций чуть шире, память 1600 МГц, графика HD4600, да и частота ядер чуть выше. Вместе с платой и процессором была куплена планка памяти DDR3-1600 4ГБ, позже была добавлена такая же. На процессор поставил Zalman 10X Optima в пассиве. В целом остался более чем доволен собранной конфигурацией.
Еще при выборе процессора пришлось изучать плюсы и минусы гиперпоточности. Проработав некоторое количество ресурсов понял, что Hyper-Threading местами дает хороший буст, а местами ровным счетом ничего, или того хуже – «съедает» производительность.
И вот возник интерес о том, что по сути дает эта гиперпоточность, ведь на сегодняшний день всё больше появляется приложений и игр, которые охотно используют много ядер. Просторы интернета наполнены различными тестами, в которых демонстрируют возможности Hyper-Threading в современных играх. Всё бы ничего, но так сложилось, что в последнее время я не особо часто/много играю в «такие» игры, а в основном либо WoT либо моды сталкера (правда сейчас решил поиграть в Dying Light, но доиграю ли?). Таким образом, смысл использования многоядерного/поточного процессора сходит на нет, тот же Pentium хорошо бы справился с такими полуторапоточными играми.
С задротством всё понятно, а что же с приложениями? Дальше речь пойдет о том, что дает гиперпоточность в повседневном использовании ПК. Для реализации задумки были выполнены некоторые тесты, причем было решено не использовать бенчмарки, а тестировать «живые» программы с которыми приходится сталкиваться в той или иной мере.
Тестирование выполнялось следующим образом:
— подготовленный набор программ и режимов тестировался путем замера времени выполнения задачи;
— тестирование выполнялось для 4 режимов работы процессора: 1C, 1C+HT, 2C, 2C+HT;
— режимы работы процессора устанавливались в BIOS;
— тестирование выполнялось минимум 2 раза для каждого режима работы CPU, если разность между результатами не превышает 1%, принималось среднее значение, в противном случае – дополнительно выполнялись 3 прогона и принималось среднее значение;
— после каждого прогона теста выполнялась перезагрузка системы;
— Windows, программы и файлы, с которыми работали программы, находились на SSD;
— во избежание конфликтных ситуаций с читателями («а вот у меня программа А выполняет эту задачу за Х времени, а у вас за Y»), а также для удобства просмотра и сравнения, результаты приведены не в абсолютных значения времени, а относительных – за 100% принимается время выполнения задачи в режиме 1С, а для других режимов относительно 1С (т.е. чем меньше, тем лучше).
Итак, поехали)
Первое, с чем сталкивается любой пользователь ПК – его старт. Ниже приведены тесты запуска Windows 10 Pro 10240 x64. За начало отсчета принимается появление логотипа, за окончание – появление рабочего стола. Признаюсь, этот тест несмотря на простоту оказался непростым. Windows умудрялась стартовать то за 2,5 с то за 12 с, причем разброс хаотичный. Ох уж эта Win10. Пришлось выполнить не по 5, а по 10 прогонов:

Как видим, ускоряет запуск Win не только увеличение физических ядер, но и Hyper-Threading. Не плохое начало.
Тут же, с логической точки зрения, необходимо приложить тесты завершения работы. Здесь никаких проблем с тестированием не возникло:

Прирост производительности хоть и наблюдается от появления дополнительных потоков, исход выключения Win практически не меняется.
Проверим установку 3DMark 13 и игр – S.T.A.L.K.E.R. — Тень Чернобыля и Dying Light:

Установка 3DMark мало зависит от наличия дополнительных потоков.

Та же картина и с установкой оригинальной игры Сталкер.

А вот при установке пиратской (но мы никому об этом не скажем) Dying Light стал активно использоваться многопоток. Результат для 2С и 2С+HT возможно был бы еще лучше, но судя по всему узким местом стал жесткий диск – процессор в этих режимах лишь изредка был нагружен на 100%, а вот диск большинство времени на 100%.
Из любопытства попробовал установить эту игру с HDD на тот же HDD и немного удивился – при четырех доступных потоках установка заняла на 90% больше времени чем режим 1 ядро + SSD.
Дополним тестами удаления с помощью программы Uninstall Tool 3.2 (деинсталляция, поиск и удаление остатков). Здесь приведу только одну диаграмму, т.к. время, необходимое на удаление практически одинаковое и в основном зависит от скорости сканирования реестра:

А вот и первый ляп гиперпоточности – если 2 ядра дают буст на 5,6%, то 1 ядро с HT наоборот «тормозит» на 11,5%.
Идем дальше – распознавание текста в FineReader 12. И снова казус – в режиме 4 потоков программа отказывается работать со всеми потоками и использует лишь 3 из четырех. Я бы смирился с этим если бы раньше не видел полноценную работу этой программы. То ли это всё Win10, то ли где-то в настройках что-то не так, не могу сказать. Приведу как есть, но стоит учесть, что в режиме 2С+НТ задействованы 3 потока:

Наблюдаем хорошую масштабируемость для физических ядер и неплохой буст для НТ. Но опять «но»: 1С+НТ по отношению к 1С в 100/80,6 = 1,24 раза шустрее, а 2С+НТ (но по факту 3 потока) по отношению к 2С в 56,4/45 = 1,25 раз. Интересный момент, но пока не выяснил почему так.
Далее запуск Word-документа. Для данного теста выполнялись 2 замера – от двойного клика по документу до появления первой страницы и от двойного клика по документу до загрузки последней страницы документа:

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

Примерно такая же ситуация и в случае с открытием всех страниц в документе, но менее выраженно.
Еще одним тестом было решено сделать компиляцию С++ проекта в Visual Studio 13:

Наблюдаем аналогичную картину с открытием Word-документа – достаточно второго потока.
Сохранение cdw-чертежа в jpg-изображение (Компас 16):

Потоки/ядра практически ничего не дают, однопоточный процесс.
Перейдем к мультимедиа. Начнем с конвертирования аудио. Тесты выполнялись в двух программах: AIMP3 и Movavi Video Converter 14. Для большей объективности замеры выполнялись для 1 и 4 файлов:

Здесь за 100% было взято время конвертирования одной программы на 1 ядре и относительно него результаты второй программы. Интересно получается – в режимах 1С/1С+НТ лучше использовать AIMP3, а в 2С/2С+НТ – MVC14. И если для AIMP3 разница между режимами минимальна (однопоток), то для MVC14 второе физическое ядро дает 20% буст. Интересно посмотреть на конвертирование 4 файлов:

Стоит сразу отметить, что механизм конвертирования у этих программ разный, а именно: AIMP3 одновременно конвертирует не более 1 файла в одном потоке. MVC14 же «по-еврейски» — запихивает все файлы параллельно в столько потоков, сколько есть (например, 5 файлов в 4 или 2 потока). И от этого MVC сильно страдает на одноядерных системах – 37% проигрыш AIMP`у. А если вдруг пользователь решит конвертировать 20 файлов? Кстати, параллельное конвертирование четырех аудиофайлов уже не может полноценно загрузить процессор в случае использования HDD (Hitachi 320ГБ, 7200 об/мин).
Опуская вышесказанное всё же наблюдаем неплохую масштабируемость для физических и виртуальных ядер.
Теперь работа с графическими файлами – конвертирование и обработка изображений в программе ACDSee Pro 7. Конвертирование bmp в jpg (пакетная обработка):

Однопоточный процесс, а были надежды на многопоток (как никак, 100 файлов). Видимо, конвертер надо искать другой. Теперь по сути: второе физическое ядро немного дает буст, а вот виртуальные потоки незначительно ухудшают ситуацию. Еще один ляп гиперпоточности.
Обработка изображений (удаление шума, пакетная обработка):

Отличная масштабируемость для физических ядер и хорошая прибавка от НТ.
Что касается видеофайлов – здесь несколько больше тестов. Первым делом всё тоже конвертирование:

Интересный момент – гиперпоточность самую малость замедляет одно ядро, второе физическое ядро немного увеличивает производительность, а режим 2С+НТ дает ощутимую прибавку.
А теперь тот же файл, но количестве 4 шт.:

Хорошая масштабируемость ядер, да и от виртуальных ядер тоже есть толк. Это был MJPEG-кодек, смотрим на H.264:

Отличная масштабируемость ядер, хорошая прибавка от НТ для одного ядра, а вот для двух ядер гиперпоточность принесла меньший буст. Результаты тестов для четырех файлов не привожу, т.к. даже используя 4 потока файлы конвертируется поочередно.
Конвертирование MKV в MP4 (H.264) имеет вид предыдущего теста, а вот MKV в AVI (MJPEG) несколько отличается от режима AVI без компрессии в AVI (MJPEG):


Как видим, в этом случае программа использует многопоток не только для конвертирования 4 файлов, но и для 1 файла, хоть и в меньшей степени, но уж лучше так, чем совсем никак.
Обратимся к другой программе, работающей с видеофайлами – Nero Vision – простенькая программа для быстрого монтажа видео:

Хороший буст от появления второго ядра/потока, но режим 2С+НТ уже мало что дает, здесь достаточно двух ядер.

А H.264 охотно использует все 4 потока.
С мультимедиа закончили, осталось несколько различных тестов, один из них – создание RAR-архива:

Масштабируемость ядер неплохая, архиватор использует 4 потока, хотя к НТ относится как-то вяло, но «на безрыбье и рак рыба».
Просканируем папку, из которой создавали архив, встроенным антивирусом:

Ситуация напомнила конвертирование AVI без компрессии в AVI (MJPEG), Movavi Video Converter 14, 1 файл, цитирую: «гиперпоточность самую малость замедляет одно ядро, второе физическое ядро немного увеличивает производительность, а режим 2С+НТ дает ощутимую прибавку».
Теперь та же папка, но в архиве, что до этого тестировали:

Типичный однопоток.
Сканирование реестра в AusLogics BoostSpeed 5:

НТ немного ускорил одно ядро, но замедлил два ядра. В целом двухъядерного процессора достаточно.
Ну и напоследок удалим папку с 13824 файлами по 300 байт:

Аналогичная предыдущему тесту ситуация.

Заключение
Стоит отметить, что набор программ для тестирования подбирался согласно собственным потребностям. Некоторые программы изначально были исключены, т.к. представляют собой явный однопоток (Gwyddion, Вейвлет-преобразование в MatLab и т.п.). Разумеется, с учетом таких программ «средняя температура по палате» была бы ниже, но в таких случаях и от физических ядер проку мало.
Помимо того, что было сказано в начале («…Hyper-Threading местами дает хороший буст, а местами ровным счетом ничего, или того хуже – «съедает» производительность…»), стало ясно, что эффект от НТ сильно зависит не только от используемой программы, но и от конкретной задачи или условий ее выполнения. Возможно некоторым программам стоит поискать замену, но даже с таким положением дел от НТ всё же больше толку чем вреда, по крайней мере для i3.
В целом поставленную задачу выполнил, собственное любопытство удовлетворил, хоть и частично (некоторые моменты/режимы еще стоит проверить), но могу сказать, что смысл покупки процессора с Hyper-Threading таки был.
Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал
рейтинг: 3.0 из 5
голосов: 2

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают