Oto przykład przed i po klastrowaniu procesów w instalacji Windows 11 z 64 GB pamięci RAM. Zmniejszyliśmy liczbę procesów z 224 do 126 jednocześnie w stanie bezczynności, choć waha się ona do 123. Redukcja o prawie 100 procesów.


W przeszłości system Windows grupował wiele usług systemowych w jeden proces svchost.exe. Jednak począwszy od systemu Windows 10 (wersja 1703), Microsoft zmienił to: jeśli komputer ma więcej niż 3,5 GB pamięci RAM, system Windows dzieli każdą usługę na własny niezależny proces. Jest to decyzja oparta wyłącznie na ilości pamięci wykrytej podczas uruchamiania.
Dlaczego warto rozdzielić procesy? Cóż, głównie dlatego, że izolując je, jeśli jedna usługa ulegnie awarii, cała grupa nie ulegnie awarii. Jest to również kwestia widoczności. Łatwiej jest zobaczyć w Menedżerze zadań, która dokładnie usługa zużywa procesor (bez konieczności sprawdzania w grupie). Jest to kwestia bezpieczeństwa, ponieważ izolacja między procesami pozwala uniknąć błędów łańcucha.
Możemy jednak oszukać Windows, ustawiając sztucznie wysoki próg. Wierząc, że nie ma wystarczającej ilości pamięci RAM do "zmarnowania", Windows jest zmuszony do pakowania usług do mniejszej liczby kontenerów, drastycznie zmniejszając liczbę wszystkich procesów.
Korzyści z grupowania procesów są liczne, takie jak zmniejszenie obciążenia procesora. Każdy niezależny proces wymaga od procesora zarządzania własnymi wątkami, priorytetami i dostępem do pamięci. Grupując je, zmniejsza się obciążenie procesora związane z zarządzaniem.
Znacznie łatwiej jest monitorować Menedżera zadań bez setek identycznych wierszy i uzyskujemy szczątkową oszczędność pamięci, ponieważ każdy otwarty proces zużywa niewielką ilość pamięci RAM przez sam fakt istnienia (jego własna struktura wsparcia). Zgrupowanie ich razem usuwa kilka MB pozornego zużycia.
Jedynym możliwym negatywnym skutkiem jest ten wspomniany powyżej. Jeśli usługa ulegnie awarii w systemie klastrowym, może przeciągnąć w dół inne usługi, które współdzielą ten sam kontener, powodując ponowne uruchomienie kilku funkcji jednocześnie. Jeśli są one oddzielne, tylko ta konkretna usługa ulegnie awarii bez wpływu na pozostałe. Oddzielne procesy sprawiają, że trudniej jest, aby awaria bezpieczeństwa w jednej usłudze wpłynęła na inne składniki systemu. Jeśli napotkasz nieoczekiwany błąd, zawsze możesz przywrócić klastrowanie.
Nie jest to hack ani nowa cudowna sztuczka. Jest to coś, co można znaleźć w oficjalnej dokumentacji Microsoftu na temat tego zachowania na portalu technicznym Microsoft Learn, który jest skierowany do programistów i administratorów systemów.
Jeśli chcesz to wypróbować, oto tabela z niektórymi odpowiednikami w zależności od pamięci RAM. Działa zarówno dla Windows 10, jak i Windows 11. Aby ją zastosować, wystarczy otworzyć CMD lub PowerShell jako administrator, uruchomić polecenie i uruchomić ponownie komputer.
Rejestr SvcHostSplitThresholdInKB ustawia "próg" pamięci RAM. Jeśli komputer ma więcej pamięci RAM niż wartość ustawiona w poleceniu, system Windows rozdzieli procesy. Jeśli ma mniej, grupuje je razem. To dlatego zawsze pojawiają się w tabeli poleceń z wartością wyższą niż bieżąca pamięć RAM; w ten sposób oszukujemy system Windows, aby grupował usługi zbiorczo.
(Jeśli ilość pamięci RAM nie znajduje się w tabeli, wystarczy obliczyć dwukrotność bieżącej pamięci w GB i zastosować wzór: Ilość GB x 1024 x 1024).
| Bieżąca pamięć RAM | Polecenie do zastosowania (Grupuj procesy) |
|---|---|
| 64 GB | reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 134217728 /f (obowiązuje próg 128 GB) |
| 32 GB | reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 67108864 /f(obowiązuje próg 64 GB) |
| 16 GB | reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 33554432 /f(obowiązuje próg 32 GB) |
| 8 GB | reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 16777216 /f (obowiązuje próg 16 GB) |
| 4 GB | reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /t REG_DWORD /d 8388608 /f (obowiązuje próg 8 GB) |
Aby przywrócić dowolną z tych zmian do stanu fabrycznego, wystarczy użyć tego innego polecenia i ponownie uruchomić komputer.
reg delete "HKLM\SYSTEM\CurrentControlSet\Control" /v SvcHostSplitThresholdInKB /f




