Ein Programm, das die Speicherfreigaberate durch Kopieren beim Schreiben von Linux-Prozessen berechnet.
Mit diesem Eintrag
Gesehen im obigen Eintrag
Ein Perl-Programm, das das Modul Linux :: Smaps verwendet, das unter Bezugnahme auf eingeführt wurde Ich habe in Python geschrieben. Ich denke, es ist einfach zu bedienen, da es ohne Installation eines externen Moduls funktioniert. Wir haben bestätigt, dass es mit der Python 2.6-Serie und höher funktioniert.
#!/usr/bin/env python
import sys
def read_smaps(pidlist):
try:
print("PID\tRSS\tSHARED\t\tNONE_SHARED")
mem = lambda t, f: int(f[1]) if f[0] == '%s:' % t else 0.0
for pid in pidlist:
filename = "/proc/%s/smaps" % pid
with open(filename) as f:
rss = 0.0
shared = 0.0
for line in f:
fields = line.split()
rss += mem('Rss', fields)
shared += mem('Shared_Clean', fields)
shared += mem('Shared_Dirty', fields)
print("%s\t%d\t%d (%.2f%%)\t%d" %
(pid, rss, shared, shared/rss*100, rss - shared))
except IOError as e:
print(e)
if __name__ == '__main__':
if len(sys.argv) < 2:
print("usage: %s [pids]" % __file__)
sys.exit(-1)
read_smaps(sys.argv[1:])
$ sudo ./read_smaps.py
usage: ./read_smap.py [pids]
##Geben Sie die Liste der PIDs mit dem Befehl pgrep an und verwenden Sie den Speicher des Programms.(Teilungsrate)Berechnen
$ sudo ./read_smaps.py `pgrep train_model.py`
PID RSS SHARED NONE_SHARED
23241 330396 202516 (61.29%) 127880
23246 414720 202476 (48.82%) 212244
23247 414836 202480 (48.81%) 212356
23248 414196 202440 (48.88%) 211756
RSS repräsentiert die Speichernutzung des Prozesses, SHARED repräsentiert die Nutzung des gemeinsam genutzten Speichers (Freigaberate) und NONE_SHARED repräsentiert die Nutzung des nicht gemeinsam genutzten Speichers. Das obige Beispiel ist ein in Python geschriebener Multi-Prozess (unter Verwendung von Scikit-Learn), der die Speicherfreigaberate eines Programms untersucht, das Regressionslernen und Kreuzvalidierung durchführt. Es wird jedoch gesagt, dass es etwa 50% des Speichers gemeinsam nutzt. Du kannst es lesen.
Es ist ein einfaches Programm, das nur den Inhalt der Datei / proc / {PID} / smaps liest. Es scheint also, dass viele Leute in AWK im Web schreiben. Ich schreibe meine Arbeit, Datenwissenschaft und Elementartechnologie oft in Python, also habe ich sie in Python geschrieben, was ich gewohnt bin. Vor kurzem habe ich heimlich die Go-Sprache gelernt und sogar bei der Arbeit verlassenen Code in Go geschrieben.
Recommended Posts