Mittwoch, 12. Oktober 2016

Berechnen der CPU Nutzung in Bash

Für Last-Analysen, Performance-Analysen und Robustheitsanalysen ist es sinnvoll die CPU Auslastung des Zielsystems zu kennen um auf mögliche Ressourcenprobleme bei des CPU zu schliessen. Dabei sind die Programme top und stop die ersten Anlaufpunkte. Um aber die gesamte CPU Auslastung automatisch per BASH Script zu erfassen sind nur begrenzt geeignet. Alternativ kann man sysstat benutzen, welches aber erst installiert werden muss. Hier nun eine sehr einfache Methode die CPU Auslastung per BASH Script ohne Zusatzsoftware zu erfassen:

ps -A -o pcpu | tail -n+2 | paste -s -d '+' - | tr , . |bc

Dieser Wert muss dann noch durch die Anzahl der CPUs geteilt werden um die Auslastung des Servers zu ermitteln. Das tr ist nur auf Systemen notwendig, die ein Komma als Dezimal-Separator haben, sonst schadet es aber auch nicht.


Die Anzahl der Kerne eines Servers kann man auf verschiedene Weisen ermitteln. Hier die meine, welche für Linux als auch für macOS funktioniert:

getCores () {
    os=`uname`
    if [[ "$os" == 'Linux' ]]; then
        core=`nproc`
    elif [[ "$os" == 'Darwin' ]]; then
        core=`sysctl -n hw.ncpu`
    else
        echo "Error: Unsupported platform: $os"
        core=-1
        exit
    fi
}

Die Anzahl der Kerne wird in die BASH Variable $core geschrieben.



Keine Kommentare:

Kommentar veröffentlichen