Table of Contents

Paměť obsazená procesem

Při zjišťování informací o tom kolik zabírá konkrétní proces paměti, získáme několik odlišných hodnot. Konkrétně VIRT, RES, SHR, SWAP, CODE a DATA, což může být matoucí, ale vzhledem k tomu, že pokaždé řešíme trochu odlišný problém, hledáme pokaždé odlišné informace. Proto je třeba pochopit význam jednotlivých hodnot, které jsou níže detailněji popsány.

Přesto nejčastěji hledáme hodnotu RES+SWAP-SHR.

VIRT – Virtual image

Jde o kompletní paměť mapovanou procesem. Tato hodnota zahrnuje kód, data, sdílené knihovny, swapované stránky i soubory mapované do paměti. Jedná se o zavádějící hodnotu, protože například mapované soubory nejsou ihned uloženy do paměti, ale natahují se až ve chvíli, kdy jsou některé jejich části skutečně potřeba. Hodnota tedy zahrnuje i data, která v paměti aktuálně ani nejsou.

RES – Resident size

Hodnota, kterou proces skutečně zabírá ve fyzické paměti RAM. Ale POZOR, v této hodnotě není zahrnuta paměť, která může být swapována, a naopak je v ní zahrnuta sdílená paměť SHR.

SHR – Shared memory

Jedná se o část paměti, která může být potencionálně sdílena s jinými procesy. Například paměť s binárním kódem (především knihovny) je jen pro čtení, takže do ní nelze zapisovat a není problém ji tedy sdílet. Prakticky každý proces potřebuje systémovou knihovnu glibc, ta je mu tedy mapována, ale nekopíruje se, zůstává tedy v paměti jen jednou.

SWAP – Swapped size

Velikost dat odložených do swapu.

CODE – Code size

Fyzická paměť pro executable code, označovaná jako ’text resident set’ neboli TRS.

DATA – Data+Stack size

Fyzická paměť pro vše kromě executable code, označovaná jako ’data resident set’ neboli DRS.