GNU/Linux >> Znalost Linux >  >> Linux

Kam jde zbývající paměť vm.overcommit_ratio?

Co systém udělá se zbývajícími 20 %?

Jádro použije zbývající fyzickou paměť pro své vlastní účely (vnitřní struktury, tabulky, vyrovnávací paměti, mezipaměti, cokoliv). Nastavení paměti overcommitment řeší rezervace virtuální paměti uživatelských aplikací, jádro nepoužívá virtuální paměť, ale fyzickou.

Proč je tento parametr vyžadován na prvním místě?

overcommit_ratio Parametr je implementační volba navržená tak, aby zabránila aplikacím, aby si rezervovaly více virtuální paměti, než kolik jim bude rozumně dostupné v budoucnu, tj. až do paměti skutečně přistoupí (nebo se o to alespoň pokusí).

Nastavení overcommit_ratio až 50 % považovali vývojáři linuxového jádra za rozumnou výchozí hodnotu. Předpokládá se, že jádro nikdy nebude potřebovat používat více než 50 % fyzické paměti RAM. Váš počet najetých kilometrů se může lišit, což je důvod, proč je laditelný.

Proč bych to neměl vždy nastavit na 100 %?

Nastavení na 100 % (nebo jakoukoli "příliš vysokou" hodnotu) spolehlivě nezakáže přetížení, protože nemůžete předpokládat, že jádro bude používat 0 % (nebo příliš málo) RAM.

Nezabrání to pádu aplikací, protože jádro by stejně mohlo odebrat veškerou fyzickou paměť, kterou vyžaduje.


Nastavením poměru na 100 % se nevyhradí žádný prostor pro stránky zálohované soubory nebo alokace v jádře, jako je kód jádra, síťové vyrovnávací paměti atd.

Struktury v jádře budou alokovány bez ohledu na to, což způsobí overcommit. Obecně jsou omezeny individuálně (např. existuje nastavení pro síťové vyrovnávací paměti). Nemyslím si, že existuje celkový limit 50 %, i když celkový limit je něco, na čem se pracovalo za účelem hostování kontejnerů.

Stránky založené na souborech jsou místem, odkud obvykle spouštíte kód uživatelského prostoru, takže i na to potřebujete prostor.


Linux
  1. Linuxové jádro:5 nejlepších inovací

  2. Životní cyklus testování linuxového jádra

  3. Linux – Co znamená rozložení paměti virtuálního jádra v Dmesg?

  1. Jaké je rozhraní pro systémová volání ARM a kde je definováno v jádře Linuxu?

  2. Kde je příkaz drahokamu v RHEL6?

  3. Jak mohu rezervovat blok paměti z jádra Linuxu?

  1. Analyzujte linuxové jádro pomocí ftrace

  2. Kde je fork() na vidlicové bombě :(){ :|:&};:?

  3. Je při bootování načteno celé jádro do paměti?