Dieselbe Art von Daten, die in /proc/self/status
ist auch in /proc/self/statm
. Es ist jedoch einfacher zu analysieren, da es sich nur um eine durch Leerzeichen getrennte Liste von mehreren Statistik . Ich habe nicht feststellen können, ob beide Dateien immer vorhanden sind.
/proc/[pid]/statm
Liefert Informationen über die Speichernutzung, gemessen in Seiten. Die Spalten sind:
- Größe (1) Gesamtgröße des Programms (dasselbe wie VmSize in /proc/[pid]/status)
- Gebietsansässiger (2) Gebietsansässiger Satzgröße (gleich wie VmRSS in /proc/[pid]/status)
- shared (3) Anzahl der residenten gemeinsam genutzten Seiten (d. h., die durch eine Datei gesichert sind) (dasselbe wie RssFile+RssShmem in /proc/[pid]/status)
- Text (4) Text (Code)
- lib (5) Bibliothek (unbenutzt seit Linux 2.6; immer 0)
- Daten (6) Daten + Stapel
- dt (7) dirty pages (seit Linux 2.6 unbenutzt; immer 0)
Hier ist ein einfaches Beispiel:
from pathlib import Path
from resource import getpagesize
PAGESIZE = getpagesize()
PATH = Path('/proc/self/statm')
def get_resident_set_size() -> int:
"""Return the current resident set size in bytes."""
# statm columns are: size resident shared text lib data dt
statm = PATH.read_text()
fields = statm.split()
return int(fields[1]) * PAGESIZE
data = []
start_memory = get_resident_set_size()
for _ in range(10):
data.append('X' * 100000)
print(get_resident_set_size() - start_memory)
Das Ergebnis ist eine Liste, die in etwa so aussieht:
0
0
368640
368640
368640
638976
638976
909312
909312
909312
Sie können sehen, dass sie nach etwa 3 Zuweisungen von 100.000 Bytes um etwa 300.000 Bytes ansteigt.