Co się stanie, jeśli zmniejszymy rozmiar hiberfil.sys

17

Dzisiaj odkryłem, że możemy ustawić rozmiar hiberfil.sys za pomocą powercfg -H -size 100%narzędzia wiersza polecenia. Ignorując przestrzeń, którą dostaniesz, co jeszcze się zmieni, jeśli ją ustawimy powercfg -H -size 50%? Czy ogranicza maksymalne użycie pamięci RAM do 50%? Czy system nie hibernuje, jeśli mam więcej niż 50% pamięci RAM?


źródło
2
system zawiesi się z powodu tego testu ( msdn.microsoft.com/en-us/library/ff559341%28v=vs.85%29.aspx ), gdy używana pamięć RAM jest większa niż może pomieścić plik hibernacji
magicandre1981

Odpowiedzi:

21

Ja znalazłem dokument Microsoft dotyczącą pliku hibernacji. Mówi nam to, że zawartość pamięci jest kompresowana przed zrzuceniem do pliku hibernacji, więc przez większość czasu ustawienie mniejszego procentowego rozmiaru pliku hibernacji jest korzystne, ponieważ marnuje się mniej miejsca na dysku.

System Windows obsługuje hibernację, kopiując zawartość pamięci na dysk. System kompresuje zawartość pamięci przed zachowaniem jej na dysku, co zmniejsza wymaganą przestrzeń dyskową do mniejszej niż całkowita ilość pamięci fizycznej w systemie.

Prawidłowa składnia polecenia wydaje się następująca:

PowerCfg.exe /HIBERNATE /SIZE 75

Dokument stwierdza również, że jeśli plik hibernacji jest zbyt mały, pojawi się komunikat „Błąd zatrzymania”, a kody podpowiedzą, o ile należy zwiększyć rozmiar pliku hibernacji.

Takie postępowanie nie ograniczy ilości fizycznej pamięci RAM dostępnej dla twojego systemu.

Po skompresowaniu zmniejszenie rozmiaru pliku nie będzie stanowiło problemu, jeśli tylko rzadko trafisz na 100% używanej pamięci fizycznej i / lub twoja pamięć prawdopodobnie będzie zawierać dane, które można kompresować przez większość czasu.

Z tego dokumentu:

System Windows rezerwuje miejsce na dysku na hibernację w pliku hibernacji o nazwie Hiberfil.sys. W systemie Windows 7 domyślny rozmiar pliku hibernacji wynosi 75 procent całkowitej pamięci fizycznej w systemie. Na przykład na komputerze, który ma 2 GB pamięci RAM, domyślny rozmiar pliku hibernacji to 1,5 GB.

W rzadkich i ekstremalnych przypadkach użycia pamięci , w tym sprawdzania poprawności pamięci przez narzędzie pamięci lub narzędzie testowe, hibernacja może się nie powieść, ponieważ zawartość pamięci nie może być wystarczająco skompresowana, aby zmieściła się w rozmiarze pliku hibernacji.

Spróbowałbym spróbować mniejszych liczb, ale osobiście nie obniżyłbym nawet 50%. Może to być w porządku, a najgorsze, co się stanie, to hibernacja zakończy się niepowodzeniem, a będziesz musiał ponownie uruchomić się normalnie i ustawić rozmiar nieco większy.

Mokubai
źródło
2
Dziękuję za odpowiedź. Nie wiem o oficjalny ale zarówno powercfg -H -size 100%i PowerCfg.exe /HIBERNATE /SIZE 75działa prawidłowo
1
Wygląda na to, że w systemie Windows 10 powercfgpolecenie nie przyjmuje już /SIZEargumentu - nie jest już co najmniej udokumentowane, ale jeśli go podasz, nie wystąpi błąd.
martineau,
Odkryłem, że czas wznowienia ze stanu hibernacji znacznie się wydłużył, kiedy obniżyłem ten odsetek do 60% (Windows 7 SP1). Czy jestem jedyny?
deddebme 24.01.16
@ Martinineau jest całkowicie możliwe, że z powodu hybrydowego zamknięcia w systemie Windows rozmiar pliku hibernacji stał się adaptacyjny w podobny sposób jak plik wymiany. Nie miałem okazji zbadać, poza tym, że zobaczyłem, że mój plik hibernacji stanowi około 35% wielkości pamięci RAM mojego systemu, ale nie jestem zaskoczony.
Mokubai
1
@intrepidis: Jestem tego w pełni świadomy. Czy wiesz, że jeśli po prostu użyjesz powercfg /?, zostaniesz potraktowany o wiele dłuższą listą wszystkich możliwych parametrów. Które, jeśli przejrzysz je, w końcu (nie w kolejności alfabetycznej) zobaczysz wpis, -HIBERNATE, -Ha poza -H <ON|OFF>tym zaakceptuje także -H -Size <PercentSize>gdzie -Size Specifies the desired hiberfile size in percentage of the total memory. The default size cannot be smaller than 50. This switch will also enable the hiberfile automatically.- co odpowiada połączonej dokumentacji MS.
martineau
4

Składnia w systemie Windows 10 jest nieco inna

PowerCfg /h[ibernate] off

wyłączy hibernację i usunie plik C: \ hiberfil.sys

PowerCfg /h[ibernate] on

Ponownie włączy funkcję i utworzy plik C: \ hiberfil.sys o mniej więcej tym samym rozmiarze co dostępna pamięć (system RAM 16GiB tworzy hiberfil.sys o wielkości 15,9GiB)

PowerCfg /h[ibrnate] size 75

Utworzy plik hiberfil.sys lub zmniejszy jego rozmiar do około 75% (12GiB)

PowerCfg /h size 100

W rzeczywistości działa tak samo, jak włączenie funkcji

Wartość rozmiaru większa niż 100 powoduje wyświetlenie komunikatu o błędzie parametru, a rozmiar mniejszy niż 40 ustawia efektywny rozmiar na 40%.

użytkownik718960
źródło