Portál AbcLinuxu, 10. května 2025 17:23
Není paměť úplně zaplněná? Používá se swap?
Pošli výstup free
radek@arch-desktop: ~$ free total used free shared buffers cached Mem: 501296 379824 121472 0 10932 255100 -/+ buffers/cache: 113792 387504 Swap: 1048572 56832 991740 radek@arch-desktop: ~$ radek@arch-desktop: ~$ radek@arch-desktop: ~$ free total used free shared buffers cached Mem: 501296 495120 6176 0 392 357148 -/+ buffers/cache: 137580 363716 Swap: 1048572 56848 991724 radek@arch-desktop: ~$ free total used free shared buffers cached Mem: 501296 496508 4788 0 140 353784 -/+ buffers/cache: 142584 358712 Swap: 1048572 56852 991720 radek@arch-desktop: ~$ free total used free shared buffers cached Mem: 501296 496616 4680 0 128 340888 -/+ buffers/cache: 155600 345696 Swap: 1048572 57132 991440 radek@arch-desktop: ~$ free total used free shared buffers cached Mem: 501296 493108 8188 0 256 229364 -/+ buffers/cache: 263488 237808 Swap: 1048572 207408 841164 radek@arch-desktop: ~$ free total used free shared buffers cached Mem: 501296 396292 105004 0 656 121972 -/+ buffers/cache: 273664 227632 Swap: 1048572 205496 843076 radek@arch-desktop: ~$ free total used free shared buffers cached Mem: 501296 397640 103656 0 672 123548 -/+ buffers/cache: 273420 227876 Swap: 1048572 205452 843120 radek@arch-desktop: ~$
Problém bude v tom, že se používá swap ("virtuální paměť"). Řešením bude zjistit, které aplikace RAM "žerou" a nahradit je "menšími žrouty" nebo přikoupit paměť.
Není to hloupost. Já např. na svém notebooku mám v kolonce "used" ve výpisu "free" hodnotu 621 MB (mluvím o RAM, nikoli swap). A to používám (vyjma firefoxu) samé "odlehčené" programy -- např. pekwm jako správce oken.
Plete tu několik věcí dohromady.
Za prvé některá jádra na některém hardwaru skutečně předvádějí zátuhy, aniž by přitom byla nějaká swapovací aktivita. S tím neporadím.
Za druhé Linux při přidělování paměti blokové keši věští a někdy má špatný odhad. Dobře je to popsáno zde v kapitole Swappiness. Příznakem je vytlačování virtuální stránek procesů do swapu blokovou keší. Řešením je vypnout swap nebo poladit hodnotu swapinnes.
Za třetí podle dodaných výpisů skutečně něco (procesy nebo jádro, bez /proc/meminfo nelze soudit) spotřebovává paměť:
radek@arch-desktop: ~$ free total used free shared buffers cached Mem: 501296 496616 4680 0 128 340888 -/+ buffers/cache: 155600 345696 Swap: 1048572 57132 991440 radek@arch-desktop: ~$ free total used free shared buffers cached Mem: 501296 493108 8188 0 256 229364 -/+ buffers/cache: 263488 237808 Swap: 1048572 207408 841164
Tato dvě sousední měření ukazují, že někde utíká paměť. Když sečte -/+buffers/cache:used se Swap:used a součty porovnáte, je vidět, že nejdříve jste měl skutečnou spotřebu 212732 a potom 470896.
On to taky může být prostě hloupě napsaný kopírovací program, který čte z rychlého disku, co to jde, do RAM a pomalu zapisuje do flashové paměti, takže v RAM se hromadí nezapsaná data. Normálně si nezapsaná data přebírá jádro a přesouvá je do blokové keše, ale ta vám v tomto případě také klesla, takže jádro přestalo data přijímat a slovutný kopírovací program místo držení rozumně velkého bufferu jej nafukoval až k prasknutí. Je to ale jen moje hypotéza. Chtělo by to prozkoumat, co zabírá paměť.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.