GNU/Linux >> Znalost Linux >  >> Linux

Linux – správně určit využití paměti v Linuxu?

Jsem trochu zmatený z některých výsledků, které vidím z ps a zdarma .

Na mém serveru je toto výsledek free -m

[[email protected] ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          2048       2033         14          0         73       1398
-/+ buffers/cache:        561       1486
Swap:         2047         11       2036

Chápu, jak Linux spravuje paměť, je, že bude ukládat využití disku do RAM, takže každý další přístup je rychlejší. Domnívám se, že to naznačují sloupce „cached“. Kromě toho jsou v paměti RAM uloženy různé vyrovnávací paměti, které jsou uvedeny ve sloupci „vyrovnávací paměti“.

Pokud tedy správně rozumím, „skutečné“ použití má být „použitá“ hodnota „-/+ buffery/mezipaměť“ nebo v tomto případě 561.

Takže za předpokladu, že je to všechno správně, část, která mě hodí, jsou výsledky ps aux .

Jak rozumím ps výsledkem je, že 6. sloupec (RSS) představuje velikost v kilobajtech, kterou proces používá pro paměť.

Takže když spustím tento příkaz:

[[email protected] ~]# ps aux | awk '{sum+=$6} END {print sum / 1024}'
1475.52

Neměl by být výsledkem sloupec „použito“ „-/+ buffery/mezipaměť“ z free -m ?

Jak tedy mohu správně určit využití paměti procesem v Linuxu? Moje logika je zřejmě chybná.

Přijatá odpověď:

Nestydatě zkopírujte/vložte moji odpověď ze serverfault právě druhý den 🙂

Systém linuxové virtuální paměti není tak jednoduchý. Nemůžete jen sečíst všechna pole RSS a získat nahlášenou hodnotu used free . Existuje pro to mnoho důvodů, ale uvedu pár těch největších.

  • Když se proces rozvětví, rodič i podřízený se zobrazí se stejným RSS. Linux však používá kopírování při zápisu, takže oba procesy skutečně využívají stejnou paměť. Pouze když jeden z procesů upraví paměť, bude skutečně duplikována.
    To způsobí free číslo bude menší než top Součet RSS.

  • Hodnota RSS nezahrnuje sdílenou paměť. Protože sdílená paměť není vlastněna žádným procesem, top nezahrnuje jej do RSS.
    To způsobí, že free číslo bude větší než top Součet RSS.


Linux
  1. Linux – Omezit využití paměti pro jeden linuxový proces?

  2. Určení využití disku v Linuxu pomocí příkazu „du“.

  3. Jak zaznamenat spotřebu paměti v Linuxu?

  1. Využití paměti Linuxu

  2. Jak zjistit využití uživatelské paměti v linuxu

  3. Linux zdarma ukazuje vysoké využití paměti, ale top ne

  1. Linux – skutečné využití paměti?

  2. Free Command v Linuxu vysvětleno s příklady

  3. Jak vypočítat využití paměti v Linuxu pomocí sar, ps a zdarma