Jak duża partycja wymiany jest potrzebna do hibernacji?

11

Przeczytałem to pytanie , ale nie odpowiada ono ostatecznie na moje pytanie.

Jeśli chcę, aby mój komputer mógł hibernować, czy muszę mieć partycję wymiany tak dużą jak moja pamięć RAM, czy też Ubuntu mądrze będzie w stanie hibernacji, jeśli partycja wymiany zmieści się w aktualnie używanej pamięci RAM? Mam zamiar zainstalować Ubuntu na komputerze z dużą ilością pamięci RAM i stosunkowo małym dyskiem twardym, więc nie chcę używać więcej miejsca na dysku niż to konieczne.

Chciałem uniknąć podania moich rzeczywistych specyfikacji, aby uogólnić to pytanie, choć w razie potrzeby dam je.

Zamknięcie Cowboy
źródło

Odpowiedzi:

9

Trudno przewidzieć: twoja zamiana musi zostać uwzględniona

  • co jest już w wymianie po hibernacji
  • co jest w pamięci RAM po hibernacji, ale tylko część, która nie jest pamięcią podręczną dysku ani buforami; obraz RAM jest kompresowany, jeśli go używaszuswsusp
  • kilka struktur danych jądra

Możesz więc nie przejść w stan hibernacji, nawet jeśli swap jest większy niż pamięć RAM, ponieważ większość z nich jest już w użyciu. I odwrotnie, możesz z powodzeniem hibernować z wymianą mniejszą niż RAM, jeśli nie używasz żadnej z nich w tym czasie.

Jeśli chcesz uniknąć partycji wymiany o stałym rozmiarze, ponieważ dysk jest bardzo mały, możesz zamiast tego wybrać plik wymiany. Łatwiej jest zmienić rozmiar, a hibernacja do pliku wymiany powinna być obsługiwana (nie jestem pewien, czy obecnie działa po wyjęciu z pudełka, to przychodzi i odchodzi między wydaniami Ubuntu; IIRC zrobiło to w wersji 9.10, ale musiało zostać skonfigurowane w wersji 10.10 ).

Gilles „SO- przestań być zły”
źródło
1
Pamięć podręczna dysku nie jest skompresowana
psusi
1
sposób, w jaki został sformułowany, sprawiał, że brzmiał on tak, jakbyś mówił, że pamięć podręczna jest skompresowana, a nie obraz hibernacji. Aby skompresować obraz hibernacji, musisz zainstalować pakiet uswsusp. Domyślna implementacja jądra nie kompresuje się.
psusi
2

To pytanie nadal pojawia się w typowych zapytaniach podczas zmiany rozmiaru w celu ustawienia hibernacji. Oryginalna odpowiedź jest poprawna, ponieważ może różnić się niewiarygodnie w zależności od obciążenia pracą, ale nie wydaje mi się, że to pełna odpowiedź.

Pełna odpowiedź jest taka, że ​​możesz określić, ile potrzebujesz na podstawie konkretnego obciążenia, a następnie możesz odpowiednio dobrać rozmiar.

Podstawowym narzędziem są komunikaty jądra podczas hibernacji. Chcesz zobaczyć, ile pamięci zostało użyte z tym poleceniem:

sudo cat /var/log/syslog | grep 'PM:'|grep kbytes

Powinieneś otrzymać dane wyjściowe takie jak:

Aug 14 11:03:20 mike-XPS-15-9570 kernel: [17594.823584] PM: Allocated 11809876 kbytes in 2.65 seconds (4456.55 MB/s)
Aug 14 11:03:20 mike-XPS-15-9570 kernel: [17605.365657] PM: Wrote 11787284 kbytes in 9.09 seconds (1296.73 MB/s)

Następnie strategia polega na uruchomieniu maksymalnego obciążenia i uruchomieniu hibernacji, sprawdzeniu wymaganej przestrzeni wymiany, ewentualnie dodaniu marginesu bezpieczeństwa, a następnie zwiększeniu wielkości wymiany.

Mike Hardy
źródło