ADMIN-Tipp: Wer swappt?

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Swapping ist historisch bedingt ein Angstbegriff des performancebewussten Admins, auch wenn es bei heutigen Hauptspeichergrößen selten auftritt. Wenn aber gerade einmal nichts von der Stelle kommt, ist es interessant zu wissen: Liegt es am Swap? Und welcher Prozess nutzt ihn denn?

Ein Linux-Kommando, das den benutzten Swap-Space pro Prozess ausgeben würde, existiert nicht. Man kann sich aber leicht mit einem kleinen Shellskript behelfen, dass die nötigen Angaben aus dem Proc-Filesystem extrahiert. Eine Variante hat Erik Ljungstrom, der in London für eine Hostingfirma arbeitet, in seinem Blog vorgestellt:

#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0

done
echo "Overall swap used: $OVERALL"

Das weitgehend selbsterklärende Skript ermittelt zuerst die PIDs alle Prozesse aus "/proc" und sucht sich dann in einer Schleife dazu die Namen der Prozesse und den von ihnen benutzten Swap Space zusammen. Wer will, kann die Ausgaben noch mit "sort" auf die drei oder fünf am meisten swappenden Prozesse beschränken:

./getswap.sh | sort -n -k 5 | head -5
24.04.2012

Ähnliche Artikel

Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023