Снижение задержки ввода путём отключения SMT или Hyper-Threading

Россия+7 (910) 990-43-11
Обновлено: 2022-07-28

Когда дело доходит до производительности в играх, важно понимать, что, хотя FPS имеет большое значение, это не единственный показатель, на который следует обращать внимание. Другим измерением, столь же важным, как FPS (по моему субъективному мнению), является задержка или скорость, с которой ваш компьютер выполняет ввод с периферийных устройств.

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

Мы уже обсуждали способы уменьшения задержки (пользовательский ISO-образ Windows, команды CMD, схемы управления питанием и т.д.), и сегодня я протестировал ещё один метод, с помощью которого можно сократить время ожидания на несколько миллисекунд.

Что такое SMT или Hyper-Threading

SMT (AMD) и Hyper-Threading (Intel) – это технологии, которые позволяют запускать более одного потока на каждом ядре, повышая эффективность процессоров во время рабочих нагрузок. Вот почему большинство современных процессоров описываются количеством ядер и потоков (например, 5600X имеет 6 ядер и 12 потоков).

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

Это слишком упрощенная версия того, что делают эти технологии, но для целей этой статьи достаточно понять простое уравнение: SMT/Hyper-Threading ON = возможно, более высокий FPS и производительность – в то время как – SMT/Hyper-Threading OFF = лучшая задержка в играх.

По сути, мне было любопытно, насколько большой будет разница в FPS для игр и насколько измеримой будет разница в задержке, если я отключу SMT (поскольку у меня система AMD) на моём ПК.

Методология

Я тестировал латентность с включенным и выключенным SMT с помощью LatencyMon, так как это очень популярный инструмент именно для этой задачи. Я запускал тест 3 раза как для SMT, так и для выключенного, и каждый раз перезапускал систему, чтобы убедиться, что система «свежая».

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

Для тестирования игры я решил использовать Apex Legends , так как эта игра известна тем, что является «многопоточной свиньей», что позволяет мне увидеть, как будет вести себя игра, если вдруг лишние потоки исчезнут, и она сможет работать только с 1 потоком на каждое ядро.

Сам тест представлял собой повторение заданий на полигоне, поскольку это контролируемая среда. Поскольку это не был надлежащий тест, результаты не являются точными на 100%, но, учитывая результаты, которые я записал, и то, что действия повторялись последовательно, я на 95% уверен в воспроизводимости окончательных результатов.

Всё это было выполнено на ПК, на котором запущен разгон PBO2 + Curve Optimizer на 5600X и разогнан RTX 2070. Я запускал пользовательскую установку Windows под названием KernelOS (1809), поэтому моя система уже довольно сильно настроена.

Тестирование с включенным SMT

Первым, что я протестировал с SMT, был LatencyMon, где результаты после 3 измерений были между 2,75 мкс и 2,8 мкс.

Проверка задержки в играх при включенном SMT – первый результат

Проверка задержки в играх при включенном SMT – второй результат

Проверка задержки в играх при включенном SMT – второй результат

Эти результаты согласуются со всеми другими предыдущими тестами, которые я проводил на своей системе, что меня совсем не удивило.

В Apex я проделал 3 раза тот же набор действий, что описан в методике, при измерении и записи FPS с помощью MSI Afterburner и RivaTuner. Настройки в Apex были 1920×1080, 110 FOV, со всеми остальными настройками на низком уровне для максимального FPS.

Тестирование FPS в Apex с включенным SMT

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

Тестирование с выключенным SMT

После входа в BIOS моего ПК и отключения SMT я начал второй раунд тестирования с перезапусками между каждым запуском LatencyMon и всеми остальными шагами, чтобы убедиться в достоверности результатов.

В LatencyMon без запущенных фоновых приложений задержка снизилась до 2,45 мкс – 2,5 мкс по сравнению с 2,75 мкс и 2,8 мкс.

Первый результат тестирования задержки с выключенным SMT

Третий результат тестирования задержки с выключенным SMT

Хотя я заметил заметное снижение задержки, было интересно, что в Apex мой FPS вообще не изменился или изменения были в пределах погрешности.

Результаты тестирования FPS в Apex при выключенном SMT

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

Разумные ограничения

Ограничения моего небольшого исследования здесь очевидны – я использовал только LatencyMon для измерения изменений задержки и использовал только одну игру (по 3 запуска каждой, чтобы получить среднее значение). Более того, поскольку в моей системе работает процессор AMD, я не тестировал аналог от Intel.

В то же время мои выводы согласуются с выводами большинства других специалистов по настройке ПК, которые экспериментировали с этой темой на разных платформах.

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

Поскольку меня интересуют игры, я бы сказал, что отключение SMT/Hyper-Threading и снижение задержки стоит того, чтобы потерять немного FPS, особенно если после выполнения некоторых тестов вы не потеряете ни одного кадра, как в случае с Apex.

Выводы

Хотя отключение SMT/Hyper-Threading может снизить производительность в рабочих задачах, если вы, как и я, являетесь конкурентоспособным геймером, и вам нужна максимально низкая задержка, отключение SMT/Hyper-Threading – это шаг в правильном направлении.

Снижение задержки очевидно, в то время как падение FPS и производительности будет зависеть от отдельных игр и оптимизаций. В то же время, как отмечают другие авторитетные источники, «в играх, в целом, не заметно разницы между SMT On и SMT Off, однако некоторые игры могут показывать различия в сценариях с ограниченным процессором», что соответствует моему выводу.

Как конкурентоспособный геймер, вы должны отключить виртуализацию ядра для снижения задержки. Единственный случай, когда этот совет не должен применяться, – это когда вы получаете огромную разницу в FPS в выбранной вами игре, что делает её неиграбельной.


4.2/4