Darstellung der CPU-Auslastung pro Benutzer auf einem Linux-Computer

7

Ich möchte die folgende Situation grafisch darstellen (grafische Ausgabe wäre großartig, dh eine PNG-Datei): Ich habe Benutzer A, B und C. Ich beschränke ihre Ressourcen so, dass, wenn alle Benutzer gleichzeitig eine CPU-intensive Aufgabe ausführen, Diese Prozesse verbrauchen 25%, 25% und 50% der CPU. Ich weiß, dass ich die Echtzeitstatistiken verwenden kann top, habe aber keine Ahnung, was ich damit machen soll. Ich habe die riesige topManpage durchsucht, aber nicht viel zum Thema Ausgabe von Daten gefunden, die grafisch dargestellt werden können. Im Idealfall zeigt das Diagramm eine Zeitspanne von möglicherweise 30 Sekunden. Irgendwelche Ideen, wie dies erreicht werden kann?

mart1n
quelle
Markiert. Es wäre jedoch großartig, nur die Rohdaten irgendwie zu sammeln. Ich weiß, dass Sie es mit virt-top(so etwas wie virt-top -d $DELAY --csv $CSVFILE --script) tun können, aber nicht das Äquivalent fürtop
mart1n

Antworten:

4

Ich weiß, dass ich die Echtzeitstatistiken mit top abrufen kann, habe aber keine Ahnung, was ich damit machen soll

Der Stapelmodus könnte nützlich sein:

   -b : Batch mode operation
        Starts  top  in ’Batch mode’, which could be useful for sending output from top to other programs or
        to a file.  In this mode, top will not accept input and runs until the iterations limit  you’ve  set
        with the ’-n’ command-line option or until killed.

Zum Beispiel:

$ top -b -n 1 -u <user> | awk 'NR > 7 { sum += $9 } END { print sum }'

Ganglia Gmetric kann verwendet werden, um ein Diagramm dafür zu zeichnen.

cpu_per_user_gmetric.sh

#!/bin/bash
USERS="a b c"

for user in $USERS; do
    /usr/bin/gmetric --name CPU_per_"$user"_user --value `top -b -n 1 -u $user | awk 'NR>7 { sum += $9; } END { print sum; }'` --type uint8 --unit Percent
done

crontab -l

* * * * * /path/to/cpu_per_user_gmetric.sh

und hier ist das Ergebnis:

Geben Sie hier die Bildbeschreibung ein

Quanten
quelle
7

Der tloadBefehl repräsentiert die bildliche Darstellung der durchschnittlichen Systemlast über das ASCII-Diagramm. Mit diesem Befehl kann das Diagramm auf einem Terminal bereitgestellt werden. Die Syntax für den Befehl lautet:

tload [options] [terminal]

Wenn das Terminal nicht als Argument für diesen Befehl angegeben wird, wird standardmäßig das Diagramm auf dem aktuellen Terminal ausgegeben. Die einfachsten Formen dieses Befehls sind also:

$ tload
Pabloab
quelle
2

Vielleicht könnten Sie collectdeines der verfügbaren Plugins verwenden und anpassen ? Ja, keiner der aufgelisteten wird genau das tun, was Sie wollen, aber andererseits sind sie ziemlich einfach zu ändern, und ich denke, Sie könnten zum Beispiel mit dem processesPlugin beginnen und von dort aus arbeiten.

Janne Pikkarainen
quelle
1

Versuchen sarund sadfzu sammeln und die Daten für die einfache grafische Darstellung vorzubereiten. http://sebastien.godard.pagesperso-orange.fr/documentation.html

Jeremy
quelle
Ich habe ausgecheckt, sarkonnte aber keinen Weg finden, einen Prozess einem bestimmten Benutzer zuzuordnen. Irgendwelche Ideen?
Mart1n