Co zrobi system z pozostałymi 20%?
Jądro wykorzysta pozostałą pamięć fizyczną do własnych celów (struktury wewnętrzne, tabele, bufory, pamięci podręczne itp.). Ustawienie nadmiernego zaangażowania pamięci obsługuje rezerwacje pamięci wirtualnej aplikacji użytkownika, jądro nie używa pamięci wirtualnej, ale fizycznej.
Dlaczego ten parametr jest wymagany w pierwszej kolejności?
Ten overcommit_ratio
parametr jest wyborem implementacji zaprojektowanym w celu uniemożliwienia aplikacjom zarezerwowania większej ilości pamięci wirtualnej niż to, co będzie dla nich rozsądnie dostępne w przyszłości, tj. Kiedy faktycznie uzyskają dostęp do pamięci (lub przynajmniej spróbują).
Ustawienie overcommit_ratio
50% zostało uznane przez programistów jądra Linux za rozsądną wartość domyślną. Zakłada, że jądro nigdy nie będzie potrzebowało więcej niż 50% fizycznej pamięci RAM. Twój przebieg może się różnić, powód, dla którego można go przestrajać.
Dlaczego nie powinienem zawsze ustawiać na 100%?
Ustawienie go na 100% (lub jakąkolwiek „zbyt wysoką” wartość) nie wyłącza niezawodnie nadmiernego zaangażowania, ponieważ nie można zakładać, że jądro zużyje 0% (lub zbyt mało) pamięci RAM.
Nie zapobiegnie to awariom aplikacji, ponieważ jądro i tak może wyprzedzić całą wymaganą pamięć fizyczną.
Ustawienie współczynnika na 100% nie zarezerwuje miejsca na strony z kopiami plików ani na przydziały w jądrze, takie jak kod jądra, bufory sieciowe itp.
Struktury wewnątrz jądra będą przydzielane niezależnie, powodując nadmierne zaangażowanie. Są one generalnie ograniczone indywidualnie (np. Istnieje ustawienie buforów sieciowych). Nie sądzę, że istnieje ogólny limit 50%, chociaż ogólny limit został opracowany w celu hostingu kontenerów.
Strony z kopiami plików to miejsce, z którego zwykle uruchamiasz kod przestrzeni użytkownika, więc potrzebujesz na to również miejsca.
źródło