Obsah

Řešení problémů/paměť

Zde najdete obecné rady pro případ, že řešíte problémy s pamětí.

Diagnostika

Kolik mám volné paměti?

Spusťte Sledování systému a záložku Zdroje.

Nebo použijte v Terminálu příkaz free -m (přepínač -m převede jednotky na MB).

~ $ free -m
             total       used       free     shared    buffers     cached
Mem:          2509       1404       1105          0        123       1034
-/+ buffers/cache:        247       2262
Swap:         1051          0       1051
RAM swap
Celkem2509 MB1051 MB
Obsazeno247 MB0 MB
Volno2262 MB1051 MB

Systém vykazuje pouze 9,9% využití RAM, 1150 MB je využito pro vyrovnávací paměť (cache/buffers), a v případě potřeby bude hned uvolněno. Swap není využit, což ukazuje na dostatečnou kapacitu RAM.

Který proces mi zabírá nejvíc paměti?

Spusťte Sledování systému, záložku Procesy, a klikněte na sloupec Paměť.

Nebo použijte v Terminálu příkaz top; pak zmáčkněte Shift+M, aby se procesy seřadily podle toho, kolik paměti (RSS/RES, viz níže) zabírají.

Nebo pro jednoduchý výpis bez aktualizace ps -eo rss,args | sort -rn | head (výpis „RAM top ten“)

~ $ ps -eo rss,args | sort -rn | head
168744 /usr/lib/firefox-3.6.24/firefox-bin
30208 /usr/bin/python /usr/share/kupfer/kupfer.py --no-splash
26172 compiz
24340 nautilus
20896 /usr/lib/firefox-3.6.24/plugin-container /usr/lib/flashplugin-installer/libflashplayer.so 1414 plugin true
18936 python /usr/share/stackapplet/stackapplet.py
18128 /usr/bin/X :0 -nr -verbose -auth /var/run/gdm/auth-for-gdm-87yGLs/database -nolisten tcp vt7
16696 gnome-panel
15508 /usr/bin/python /usr/share/system-config-printer/applet.py
13796 /usr/lib/gnome-panel/clock-applet --oaf-activate-iid=OAFIID:GNOME_ClockApplet_Factory --oaf-ior-fd=42

Řešení

Linux mi žere strašně moc RAM!

Zeptejte se na fóru Ubuntu

Snažte se uvést co nejvíce informací, hlavně

Technické detaily

Kolik RAM mám skutečně k dispozici?

Kapacita RAM modulů nemusí odpovídat údaji o volné paměti ve výstupu free apod. Podívejte se, co k tomu říká kernel při bootování:

dmesg | grep -iw memory
...
[    0.000000] Memory: 2554056k/2612412k available (4940k kernel code, 57908k reserved, 2333k data, 688k init, 1703108k highmem)
...
[    0.746013] Freeing initrd memory: 14896k freed
[    1.316731] Freeing unused kernel memory: 688k freed

K dispozici je celkem 2612412k paměti.

57908k je rezervováno pro kernel a obsluhu paměti, z toho 4940k pro kód, 2333K pro různá data, 14896k bylo po zavedení systému uvolněno. Zbývá tedy 2554056k RAM.

Výpočet může vycházet pro různé systémy různě, ale vždy je třeba počítat se zabranou pamětí pro kernel a režii. Také pokud se velikost modulů RAM blíží 4GB na 32 bitovém systému, je potřeba počítat s ukrojením větší části paměti na mapování grafické paměti, I/O apod.

Co znamená VIRT, RSS/RES, SHR?

VIRT (virtual size) - celková velikost namapované paměti - kód, data, sdílené knihovny, paměť vyžádaná programem k použití. Maximální velikost paměti, kterou může momentálně proces použít.

RES (resident size) - paměť skutečně využitá procesem. Pokud si proces vyžádá 100M paměti, ale skutečně použije jen 1M, stoupne RES o 1M. Nezahrnuje ale část paměti ve swapu, a může obsahovat sdílenou paměť.

SHR (shared) - paměť, kterou je možné sdílet.

Nejvíce vypovídající hodnotou je asi RSS/RES, ale i ta je těžko izolovatelná pro konkrétní proces.

Jak zjistím údaje k RAM?

Použijte údaje z DMI (dmidecode, případně lshw), nebo SPD informace z EEPROM (decode-dimms).

sudo dmidecode -t memory
sudo lshw -c memory
sudo -s
apt-get install i2c-tools
modprobe eeprom
decode-dimms