Tweaki sieciowe

Co zapisuje każde pole na stronie Połączenie, czego nie rusza i które z nich mogą zmienić przebieg meczu — większość nie może, i strona wprost to mówi.

Najpierw uczciwe zdanie

Nic na stronie Połączenie nie obniża Twojego średniego pingu. Ping to odległość do serwera plus kolejka w Twoim routerze, a ustawienie na Twoim komputerze nie zmienia żadnej z tych dwóch rzeczy. To, co te pola potrafią, to usunięcie małych, konkretnych opóźnień powstających na Twojej własnej maszynie — mikrosekund, czasem kilku milisekund pod obciążeniem — i tylko tam, gdzie mechanizm, którego dotykają, w ogóle istnieje w Twoim sprzęcie. Tam, gdzie go nie ma, pole nic nie zapisuje i mówi o tym w dzienniku.

Żadne ustawienie tutaj nie zastąpi kabla. Wi-Fi potrafi skoczyć o dziesiątki milisekund przy jednym momencie zakłóceń, a żadne pole na tej stronie nic nie robi z zakłóceniami.

Pole po polu

Wysyłaj potwierdzenia TCP bez ich wstrzymywania — zapisuje TcpAckFrequency=1 w HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<GUID>, tylko dla przewodowych kart sieciowych, które są aktywne i fizyczne. Karty wirtualne — tap VPN, WSL, Hyper-V — są pomijane. Windows czeka do 40 ms, żeby dołączyć potwierdzenie do drugiego segmentu; to wysyła je od razu. Dotyczy wyłącznie TCP. CS2, Valorant, Fortnite, Apex, Dota 2 i League of Legends grają po UDP, gdzie nic to nie zmienia. Widać to w grach na TCP (Minecraft Java) i w ruchu sesyjnym MMO albo ARPG — najwyżej kilkadziesiąt milisekund na jeden obieg. Wi-Fi jest pomijane celowo: podwojenie liczby ramek wysyłanych w górę kosztuje czas antenowy, którego używa pobieranie. Zaczyna działać po ponownym uruchomieniu.

Wyłącz oszczędzanie energii karty sieciowej — zapisuje PnPCapabilities=8 w kluczu klasy karty, czyli to samo, co odznaczenie „Zezwalaj komputerowi na wyłączanie tego urządzenia" w Menedżerze urządzeń. Domyślnie odznaczone, a oto co się za to płaci: przy ustawionej wartości Windows traktuje kartę jako taką, której nie może zarządzać energią, więc wybudzanie komputera ze snu przez sieć przestaje działać, a w laptopie karta jest zatrzymywana w Modern Standby, zamiast przechodzić w bezczynność — nic nie dociera, dopóki klapa jest zamknięta. Zyskiem jest jeden pakiet po okresie bezczynności, a gra nigdy nie pozwala łączu stać bezczynnie. Zapisywane jest tylko wtedy, gdy sterownik faktycznie udostępnia zarządzanie energią; wbudowany sterownik Microsoftu, który Windows Update instaluje dla wielu kart Realtek, tego nie robi — wtedy pole o tym mówi i nic nie zapisuje.

Wyłącz Energy Efficient Ethernet — zapisuje 0 do tego słowa kluczowego EEE, które deklaruje sterownik (*EEE, EnableGreenEthernet, AdvancedEEE, EnableSavePowerNow, EEELinkAdvertisement), w typie, w jakim sterownik je przechowuje. EEE (802.3az) wprowadza łącze między pakietami w stan niskiego poboru mocy, a wyjście z niego kosztuje do około 16 mikrosekund na gigabicie — to nie jest ping, który dałoby się zobaczyć. Prawdziwym powodem, żeby to wyłączyć, jest stabilność: część kart 2,5G przy włączonym EEE gubi łącze, a własne zalecenie Intela dla rodziny I225/I226 mówi, żeby je wyłączyć. Kosztem jest około pół wata na łącze w bezczynności, co w laptopie oznacza baterię. Sterownik, który nie deklaruje żadnego z tych słów kluczowych, jest pomijany i komunikat o tym mówi; sterownik producenta może udostępniać to ustawienie tam, gdzie wbudowany tego nie robi.

Wyłącz selektywne wstrzymywanie karty — pojawia się tylko na komputerze stacjonarnym, którego sterownik karty deklaruje *SelectiveSuspend, i domyślnie jest odznaczone. Zapisuje 0 do tego słowa kluczowego, w typie, w jakim sterownik je przechowuje. Selektywne wstrzymywanie pozwala Windows przełączyć bezczynną kartę w tryb niskiego poboru po kilku sekundach bez ruchu (domyślnie pięciu); pierwszy pakiet po tym czeka, aż karta się obudzi. Gra nigdy nie zostawia łącza bezczynnego tak długo, więc w meczu nic to nie zmienia — zysk to pierwszy pakiet po chwili ciszy i nie został zmierzony. Microsoft kieruje ten mechanizm do kart USB 1.1 i 2.0; sterowniki większości kart przewodowych go nie deklarują i tam pole się nie pojawia. Kosztem jest pobór na bezczynności, dlatego na laptopie pole nigdy się nie pokazuje. Zadziała, kiedy karta się zrestartuje — wyłącz ją i włącz w Menedżerze urządzeń albo uruchom komputer ponownie. Czy na tej samej karcie robi coś ponad „Wyłącz oszczędzanie energii karty sieciowej”, nie zostało zmierzone.

Podnieś bufory odbiorcze karty do maksimum sterownika — pojawia się tylko tam, gdzie karta niosąca ruch mierzalnie odrzucała odebrane ramki: według jej własnego licznika odrzuceń od ostatniego uruchomienia co najmniej 0,01% z co najmniej 100 000 odebranych — to liczba, którą pokazuje Detektyw przycięć. Na starcie jest odznaczone, na komputerach stacjonarnych i laptopach, a jego etykieta podaje obie liczby. Zapisuje *ReceiveBuffers na górnej granicy zakresu, który deklaruje plik INF sterownika — nigdy liczby wybranej przez w0a — i tylko wtedy, gdy jest ona wyższa od wartości, z którą karta pracuje; wartość podniesiona ręcznie jeszcze wyżej nigdy nie jest obniżana. Karta, której bufory odbiorcze zapełniają się pod obciążeniem, odrzuca to, co przychodzi dalej: segment TCP jest wysyłany ponownie co najmniej jeden czas obiegu później, a pakiet UDP gry nigdy nie dociera. Opis ustawienia u Microsoftu mówi, że karcie ze zbyt małą liczbą buforów może ich zabraknąć pod dużym obciążeniem; przewodnik strojenia Intela radzi je podnieść, gdy odebrane pakiety są odrzucane, i podaje koszt około 2 KB pamięci na bufor. Bez zmierzonych odrzuceń nic to nie daje, dlatego pole wtedy się nie pokazuje. Działa po ponownym uruchomieniu karty, a licznik odrzuceń zaczyna wtedy od zera. Co robi z pingiem lub klatkami, nie zostało zmierzone; na komputerze, na którym powstaje w0a, maksimum wbudowanego sterownika Realtek wynosi 512, karta już na nim pracuje i nie odrzuciła niczego w 3,8 mln ramek.

Przywróć domyślne ustawienia TCP — uruchamia netsh int tcp set global autotuninglevel=normal, rss=enabled i ecncapability=disabled. To są wartości, z którymi Windows przychodzi. Pole najpierw odczytuje bieżącą wartość; na czystej maszynie wszystkie trzy są już poprawne, nic nie zapisuje i mówi o tym. Istnieje ze względu na to, co zostawiają po sobie skrypty tweakujące — porada „wyłącz auto-tuning", która zawala przepustowość na każdym łączu z prawdziwym opóźnieniem — i jest naprawą, nie zyskiem, dlatego jest odznaczone i nie liczy się jako optymalizacja. RSS to przełącznik globalny; to, czy przetwarzanie odbioru rozkłada się na rdzenie, zależy od tego, czy karta w ogóle oferuje RSS, a komunikat mówi, czy Twoja to robi. Te trzy nie mają zapisu cofnięcia; przywraca je karta „Ustawienia sieci” na stronie Fix.

Na ping pod obciążeniem — zapisuje 0 do *FlowControl, *InterruptModeration, *RscIPv4 i *RscIPv6 tam, gdzie karta je deklaruje, oraz uruchamia netsh int tcp set global rsc=disabled. Kontrola przepływu pozwala przełącznikowi wstrzymać wysyłanie tego komputera (ma znaczenie, gdy karta 2,5G zasila gigabitowy router, i tylko wtedy, gdy wysyłasz). Moderacja przerwań zbiera pakiety w paczki, zanim zobaczy je procesor: dziesiątki do setek mikrosekund. Scalanie segmentów łączy odbierane segmenty TCP, zanim przekaże je wyżej; ruch UDP z gier nigdy przez nie nie przechodzi, a wyłączenie go kosztuje procesor przy pobieraniu. Wszystko to mikrosekundy, przeciwko kolejce routera mierzonej w milisekundach. Bezwarunkowo zapisywana jest tylko kontrola przepływu — ramki pauzy wstrzymują każdy pakiet za sobą i żadna maszyna tego nie chce. Pozostałe trzy to wymiana coś za coś, więc są pomijane na maszynach z mniej niż sześcioma rdzeniami fizycznymi, gdzie dodatkowe przerwania kosztują więcej, niż oszczędzają, oraz na łączach powyżej 2,5 Gbit. Żadna z tych czterech nie jest zapisywana tam, gdzie karta nie deklaruje danego słowa kluczowego, a komunikat wypisuje dokładnie to, co zostało zapisane.

Priorytet dla aplikacji (QoS) — tego pola już nie ma; w0a nie zapisuje zasady QoS dla gry. Całą funkcją było samo oznaczenie pakietów i z oznaczania zrezygnowano: dostawcy internetu przeważnie je ignorują, a część traktuje oznaczony ruch jako coś do nadzorowania, a nie do przepuszczenia przodem — spowalnia go albo odrzuca. Jeśli wcześniejsza wersja zapisała zasadę na tym komputerze, karta „Ustawienia sieci” na stronie Fix ją usuwa.

Strona DNS — mierzy każdy resolver po zwykłym UDP i zapisuje wybraną parę na karcie, która niesie Twój ruch (obie rodziny adresów tam, gdzie operator publikuje IPv6, w przeciwnym razie IPv6 wraca na automatyczne). Opóźnienie DNS zmienia to, jak szybko nazwa zostaje odnaleziona — pierwsze połączenie z serwerem, przeglądarka, początek pobierania. Nie zmienia pingu w trakcie meczu.

Szyfrowany DNS (na stronie DNS) — wyłączony, dopóki się go nie włączy. Włącza wbudowany w Windows DNS over HTTPS dla serwerów, których używa karta sieciowa, i tylko tam, gdzie Windows zna już dla nich szyfrowany adres (Cloudflare, Google i Quad9); przy każdym innym serwerze mówi to i niczego nie zapisuje, a resolver prowadzony przez program na samym komputerze zostawia temu programowi. To ustawienie prywatności: sieć po drodze nie odczyta już z ruchu DNS, jakich nazw się szuka; adresy serwerów, z którymi się łączysz, nadal są widoczne, a dla pingu i FPS nie obiecuje niczego. Powrót do nieszyfrowanego DNS pozostaje wyłączony, żeby żadne zapytanie nie wyszło po cichu bez szyfrowania. Po włączeniu w0a rozwiązuje jedną nazwę i zachowuje ustawienie tylko wtedy, gdy przyszła odpowiedź i widać było, jak klient DNS Windows łączy się z serwerem przez HTTPS; w przeciwnym razie cofa ustawienie i mówi, czego z tych dwóch zabrakło. Wartości ms na stronie DNS to pomiary przez nieszyfrowany DNS, a nie czas szyfrowanego zapytania. Cofnięcie: przycisk na karcie, strona Kopie zapasowe albo Fix > Połączenie internetowe i DNS.

Co zostało usunięte

Pole o nazwie „Szybciej zwalniaj zamknięte połączenia" zapisywało TcpTimedWaitDelay=30 i StrictTimeWaitSeqCheck=1. Zmierzone: pierwszą wartość Windows 11 faktycznie czyta — TIME_WAIT zamkniętego połączenia kończył się po 30 sekundach — ale to, o czym ona decyduje, to jak szybko zamknięte połączenie zwalnia swój port, a to jest problem serwera; pojedynczemu komputerowi nie skończą się porty podczas gry. Druga wartość nie występuje w żadnym sieciowym sterowniku Windows. Pole, które nic nie daje grze, nie ma czego szukać na tej stronie, więc go nie ma. Jeśli zastosowałeś je wcześniej, karta „Ustawienia sieci” na stronie Fix usuwa obie wartości, a stare zapisy cofnięcia nadal wczytują się na stronie Kopie zapasowe.

Jak to cofnąć

przełącznik działania poza domeną, kasuje PnPCapabilities z fizycznych kart i TcpAckFrequency z każdego interfejsu. „Odciążenia karty sieciowej" przywracają słowa kluczowe karty — łącznie z zapisami EEE, selektywnym wstrzymywaniem i buforami odbiorczymi — do domyślnych wartości z pliku INF samego sterownika. Żadne z nich nie zależy od pliku kopii zapasowej w0a.

Poza tą stroną

Kabel zamiast Wi-Fi. Router z SQM (fq_codel albo cake), jeśli ktoś pobiera pliki, kiedy grasz. Kabel usuwa z drogi radio i jego zakłócenia; SQM utrzymuje krótką kolejkę w routerze, gdy pobiera się coś innego. Żadne ustawienie na twoim komputerze nie zrobi żadnej z tych rzeczy, a ile zmieniają na twoim łączu, nie zmierzono.

Które ustawienia Windows coś zmieniają w grze, komu każde z nich pomaga i komu nie daje nic: Optymalizacja Windows 11 pod gry: ustawienia, które naprawdę mają znaczenie

w0a nie zmienia żadnego ustawienia Windows, dopóki o to nie poprosisz, a tweak zapamiętuje starą wartość, zanim zapisze nową. Powiadom mnie

Czy ta strona pomogła?

Czego zabrakło albo co nie zadziałało? Czytamy każdą taką wiadomość.

Jeśli ta strona nie rozwiązała problemu, napisz do nas — podaj, który artykuł czytasz, a poprawimy ten artykuł.