SteamDB

» » » Она вам не Винда!

Она вам не Винда!

Сенсационное расследование о тайных настройках Windows 10
Вступление


Простенькая на первый взгляд операционная системка, которая кажется вроде бы и так неплохо работоает, но она только хочет казаться нам вполне законченной и не нуждающейся в каких-либо дополнительных настройках. В этом расследовании я расскажу о её тайных настройках которые вляют на сетевые процессы происходящие в игре. Всё началось казалось бы с незначительной и не относящейся к делу вещи - с кроссовок! Сижу, смотрю на свои кроссовки и думаю - "Вот провёл я сетку 100 Мбит. Да стало гораздо лучше чем на гнилом adsl или на 4G от жадных опрераторов, но чёго-то всё равно явно не хватает". И после этого начался процесс изучения винды!
Глава 1. MTU
Первое, что должен сделать каждый, кто сидит через роутер - это проверить MTU! Если же при подключении компьютера напрямую к интернету Windows выставляет его автоматически, то при подключении через роутер он всегда ставит 1500 байт. Если MTU системы больше MTU сети, то пакеты при отправке будут фрагментироваться, фрагментация - это задержки, а задержки - это плохо! Чтобы определить MTU, понадобится "Командная строка" (запущенная с правами администратора) и несложная команда ping с ключами -f (запрет фрагментации) и -l <размер пакета в байтах> Пример:

ping 8.8.8.8 -f -l 1472

если же результат выглядит примерно так
Требуется фрагментация пакета, но установлен запрещающий флаг. Требуется фрагментация пакета, но установлен запрещающий флаг. Требуется фрагментация пакета, но установлен запрещающий флаг. Требуется фрагментация пакета, но установлен запрещающий флаг.
или же пишет что-то наподобие "ответа нет", то следует выходить на митинги то следует уменьшать размер пакета до тех пор пока не появится ответ от пингуемого узла. После чего к размеру пакета, на котором получился удачный ответ, прибавляем 28 байт (размер заголовка ICMP) - это и будет наш MTU. Пинговать лучше всего DNS-сервера вашего провайдера (если вы не используете альтернативные DNS-сервера).

В сетях 3G/4G бывает так что пинг не поможет определить MTU сети, тут лучше воспользоваться сторонними сервисами в интернете например Speedguide Analyzer[www.speedguide.net]

И так после того как мы определили MTU, его надо установить в системе. Для этого введём следующие команды:
netsh int ip set int <Имя интерфейса> mtu=<размер MTU> store=persistent netsh int ip set subint <Имя интерфейса> mtu=<размер MTU> store=persistent
Глава 2. Настройки TCP/IP
Тюниг TCP важен не только для тех игр, кто его использует, и не только потому что современные игры используют одновременно протоколы UDP и TCP. Одновременная работа TCP вместе с UDP может создавать проблемы в работе последнего (возникновение задержек и потерь) - поэтому тюнинг TCP не менее важен!

Autotuning level
Многие в интернете жалуются на функцию автоизменения размера окна приёма - она может являться даже причиной низкой скорости. Основная же причина, по которой стоит её выключить - это возникновление явления "переполнения буфферов" (Buffer bloat) - задержки вызванные нехваткой размера сетевых буфферов. Для отключения AutotuningLevel можно воспользоваться средой PowerShell:

Set-NetTCPSetting -SettingName InternetCustom -AutoTuningLevelLocal Disabled


Receive Segment Coalescing
Функция объединения нескольких пакетов в один. Также создаёт задержки. Отключить можно в том же PowerShell (хотя в Windows 10 уже отключена по умолчанию):

Set-NetOffloadGlobalSetting -ReceiveSegmentCoalescing Disabled Set-NetOffloadGlobalSetting -PacketCoalescingFilter Disabled


Nagle's Algorithm
С отключением этого алгоритма, пакеты будут отправляться сразу же без задержек. Для его отключения понадобится запустить редактор реестра (Win+R и ввести regedit) и пойти по следующему пути:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{индификатор сетевой карты}
* Лично я нахожу свою сетевую карту присваивая статический IP

И создаём там две переменные DWORD со следующими значениями:
TcpAckFrequency=1
TcpDelAckTicks=0
Глава 3. Планировщик классов мультимедия
Это вполне себе полезная функция появилась ещё в Windows 7 - она управляет приоритетами всей мультимедия включая и игры - но со времём той же Windows 7 создаёт и одну проблему: Майкрософт считает, что работа с сетью требует много ресурсов процессора и при этом мешает приложениям мультимедия, поэтому они просто ограничили процессорное время для работы с сетевыми протоколами - 10 тактов / мс. Тогда возможно Майкрософт считали, что этого хватит, но как показывает практика и как сознаются сами Майкрософт - это значение мало кого устраивает. Для того, чтобы убрать эту социальную несправедливость, пойдём в знакомый нам редактор реестра по следующему пути:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile
Найдём там переменную NetworkThrottlingIndex и присвоим ей значение ffffffff (шестнадцатеричное), это отключит межанизм ограничения.
Глава 4. QoS - "Вы не любите кошек? Вы просто не умеете их готовить!"
Читая разные руководства по оптимизации сети для онлайн игр, я заметил, что многие устраивают гонения на QoS, мол он "только мешает", "съедает траффик" и т.д. Но! На самом деле QoS может позволить вашим пакетам выжить в жестоком мире интернета... ну или хотя в вашей домашней сети.

Идём в оснаску "Групповая политика" (Win+R и ввести gpedit.msc) и ищем там "QoS на основе политики" (рисунок 4.1)


Рисунок 4.1

Далее нажимаем на этом пункте нажать правой кнопкой мыши и выбрираем "Дополнительные параметры QoS" и выставить их как показано на рисунке 4.2 и нажать OK


Рисунок 4.2

Далее опять нажимаем на пункте "QoS на основе политики" правой кнопкой мыши и выбираем "Создать новую политику" и пошагово выставляем значения для интересующей игры: название, exe-файл и обязательно выставить DSCP значение 46 (EF приоритет в QoS самый высокий) - рисунки 4.3 - 4.6.


Рисунок 4.3


Рисунок 4.4


Рисунок 4.5


Рисунок 4.6
Заключение
В качестве заключения лучше расскажет демонстрация игрового процесса в разных игровых приложениях.

Battlefield 3 - пинг 80 мс

Прямая ссылка

Call of Duty: Black Ops 2 - пинг 85 мс

Прямая ссылка

Counter-Strike: Global Offensive - пинг 60 мс

Прямая ссылка

Настройки ОС оказали сильное влияние на игровой процесс, но также сильно могут влиять настройки сетевой карты и роутера, но это уже совсем другая история...
P.S.
Через Windows можно также отключить HPET, при этом не пользуясь командной строкой и ковыряя BIOS: достаточно найти в Диспетчере устройств в разделе Системные устройства пункт Высокоточный таймер событий
P.P.S.
Windows по умолчанию начала включать масштабирование окон при повторных отправках, хотя по документации оно выключена по умолчанию, исправляем это:
Set-NetTCPSetting -SettingName InternetCustom -ForceWS Disabled

RouteCacheLimitEntries почему-то стал 4096, хотя по документации 128
Set-NetIPv4Protocol -RouteCacheLimitEntries 128

Отключаем LSO если есть
Disable-NetAdapterLso -Name *

Новый алгоритм контроля перегрузки TCP теперь CUBIC, если с ним возникают проблемы, то вернуть CTCP можно следующими командами:
netsh int tcp set supplemental template=internetcustom congestionprovider=ctcp netsh int tcp set supplemental template=internet congestionprovider=ctcp
?K1llm1s7eR? 10 июля 2018 21:13
https://www.youtube.com/watch?v=VM5z7FU4XGA
Sirè Im D'a Pièrrè Dièm 26 мая 2017 07:17
Я вас понял, благодарю за исчерпывающие ответы)
Hack Norris 24 мая 2017 17:52
NoFlame&NoExcuses: 6. Повторюсь, я не люблю сторонний софт, у меня с ним всё плохо заканчивалось P.S.: как раз кажется с AusLogics лагов становилось только больше
Hack Norris 24 мая 2017 17:52
NoFlame&NoExcuses: 4. Я сторонник тех, кто не любит ставить лишний софт если что-то можно седлать без него. И потому что процедура тривиальная - зачем для этого челую программу ставить. 5. Стала лучше регистрация попаданий, стало меньше лагов, уменьшилась задержка между выстрелом и попаданием - максимально полуилось минимизировать настройкой роутера. Кстати свой bufferbloat можете протестировать на http://www.dslreports.com в разделе "Speed Test"
Hack Norris 24 мая 2017 17:51
NoFlame&NoExcuses: 1. Там же написано "Что всё переосмыслил", поскольку у меня раньше была фекальная масса под названием ADSL, затем YOTA. Только после подключения оптики я смог судить о тех твиках, которые ранее применял и понял, что некоторые дают как плюсы так и жирнейшие минусы и решил начать с нуля и указать то, что не наносит вреда. 2. Да размер MTU в роутере тоже надо менять. 3. На семёрке его нет, радуйтесь =)
Sirè Im D'a Pièrrè Dièm 23 мая 2017 17:53
4. Не проще ли взамен QoS юзать к примеру cFosSpeed или другой софт для приоретизации трафика? 5. Косаемо твоих роликов... На практике вам удалось понизить пинг или же время отклика и улучшилось ли регистр. попадания в бф? 6. Пробовали юзать твики для сети из утилит подобных AusLogics BoostSpeed?
Sirè Im D'a Pièrrè Dièm 23 мая 2017 17:52
Приветствую, юзал ваши тивики еще из старого руководства по window7/8 достаточно информативная информация была... 1. Почему удалили всю инфу из темы и применимы ли данные твики на 7 ось? 2. Размер MTU в роутере тоже менять на то что поулчилось после поиска в консоле или оставлять 1500? 3. Не нашел как отключить RSC на 7ке. В powershellee жалуется на Set-NetOffloadGlobalSetting, в гугле вразумительной инфы не нашёл...