Ustawienie pamięci Overcommit systemu Linux

0

Zgodnie z tym dokumentem: https://www.kernel.org/doc/Documentation/vm/overcommit-accounting , jeśli ustawię „vm.overcommit_memory” na „2”, to „Łączne zatwierdzenie przestrzeni adresowej dla systemu nie jest dozwolone przekroczenie swap + konfigurowalna ilość (domyślnie 50%) fizycznej pamięci RAM. ” Ponadto „Nadmierną kwotę można ustawić za pomocą„ vm.overcommit_ratio ”(procent) lub„ vm.overcommit_kbytes ”(wartość bezwzględna).”

Moje pytanie brzmi: czy „vm.overcommit_ratio” i „vm.overcommit_kbytes” ograniczają całkowitą sumę pamięci zatwierdzanej przez wszystkie procesy, czy tylko ograniczają każdy proces?

Myślę, że powinna to być ta ostatnia, ponieważ nie ma sensu ograniczać systemu do wykorzystania tylko połowy pamięci fizycznej w całości, ale opis w dokumencie sugeruje, że ogranicza on globalnie.

Sam
źródło

Odpowiedzi:

2

To jest globalne. Celem tego ustawienia jest upewnienie się, że nie możesz wykorzystać całej pamięci i spowodować, że zabójca OOM rozpocznie procesy zabijania.

psusi
źródło
2

Myślę, że to powinno być to drugie,

To ten pierwszy.

ponieważ nie ma sensu ograniczać systemu do wykorzystania tylko połowy pamięci fizycznej ogółem, ale opis w dokumencie sugeruje, że ogranicza on globalnie.

Zgoda. Ale to nie jest limit wykorzystania pamięci fizycznej. Jak mówi, ogranicza przydzieloną przestrzeń adresową, a nie wykorzystanie pamięci fizycznej. Oczywiście system zużyje prawie całą pamięć RAM.

David Schwartz
źródło
Więc jeśli wyłączę overcommit i wyłącz swap, ta wartość powinna wynosić 100, prawda?
Sam
@Sam Nie jestem pewien, o jakiej wartości mówisz. Ale jeśli chodzi o dozwoloną dozwoloną przestrzeń adresową, bez zamiany i wartością 100, zachowanie systemu może stać się bardzo patologiczne, ponieważ pamięć RAM jest zapchana brudnymi stronami, które prawie nigdy nie będą używane, a system nie ma miejsca na ich wysunięcie. Zestaw czystych stron może zostać bardzo mocno ściśnięty, co spowoduje okropną wydajność i ciągłe odrzucanie i ponowne ładowanie czystych stron.
David Schwartz
Tak, mam na myśli „vm.overcommit_memory = 2” i „vm.overcommit_ratio = 100”. Masz na myśli, że nie powinno być 100? Ale niższe niż to oznaczałoby, że nie mogę nawet wykorzystać całej mojej pamięci RAM, jeśli wyłączę nadmierne zaangażowanie i wyłączę zamianę, prawda?
Sam
@Sam Możesz wykorzystać całą swoją pamięć RAM. Ponownie, to nie jest ustawienie, jaki procent twojej pamięci RAM zostanie wykorzystany. (Ale tak, nie ważne jak coś ustawić, to jest niemożliwe, aby zrobić dobry użytek z całej pamięci RAM bez wymiany wymiany istnieje, aby umożliwić nam na efektywne wykorzystanie pamięci RAM Zobacz mój komentarz powyżej...)
David Schwartz