[PYTHON] Berechnen Sie die Speicherfreigaberate von Linux-Prozessen

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

Berechnen Sie die Speicherfreigaberate von Linux-Prozessen
Berechnen Sie die Anzahl der Änderungen
Überprüfen Sie den Speicherstatus des Servers mit dem Befehl Linux free
Überprüfen Sie den Speicherschutz von Linux Kern mit Code für ARM
[Verständnis in 3 Minuten] Der Beginn von Linux
100 Sprachverarbeitung Knock-93 (unter Verwendung von Pandas): Berechnung der Genauigkeitsrate der Analogie-Aufgabe
[Java] [Linux] Untersuchen, wie die Implementierung von untergeordneten Java-Prozessen unter Linux realisiert wird
[Python] Überprüfen Sie den Speicherverbrauch von Variablen
Verstehen Sie den "temporären" Teil von UNIX / Linux
[Linux] Lernen Sie die Grundlagen von Shell-Befehlen
Der Ursprung von Manjaro Linux ist "Mount Kirimanjaro"
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
[2020Juli] Überprüfen Sie die UDID des iPad unter Linux
Berechnen Sie die Wahrscheinlichkeit von Ausreißern auf den Box-Whiskern
Linux (Befehlsspeicher)
Hier finden Sie die Menge an freiem Speicher des Befehls free
Berechnen Sie das Volumen aus der zweidimensionalen Struktur einer Verbindung
Die Geschichte des Aufbaus der schnellsten Linux-Umgebung der Welt
Öffnen Sie die Chrome-Version von LINE über die Befehlszeile [Linux].
[Python] Berechnen Sie den Durchschnittswert des Pixelwerts RGB des Objekts
Die Geschichte des Teilens der Pyenv-Umgebung mit mehreren Benutzern
[C-Sprache] [Linux] Ruft den Wert der Umgebungsvariablen ab
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Schritte zur Berechnung der Wahrscheinlichkeit einer Normalverteilung
Schätzen Sie die Gesamtspeicherauslastung eines Objekts grob ab
Überprüfen Sie den Linux-Verteilungstyp und die Version
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
Verstehen Sie die Attribute von Linux-Dateien (Befehl ls -l)
Ankündigung der Verfügbarkeit von Java 11 LTS unter Amazon Linux 2