Systemüberprüfung

wichtige Befehle

Festplatten

df -k                 # Platz in kByte
df -h                 # Platz in gröstmöglicher Einheit
vmstat 1              # zeigt die Systemaktivitäten im Sekundentakt
                      # si - Swap in   (in den Swap schreiben)
                      # so - Swap out  (aus dem Swap lesen)
                      # bi - Block in  (auf Platte schreiben)
                      # bo - Block out (von Platte lesen)
vmstat -p /dev/cciss/c0d0p1 1 # Statistik der ersten Partition
vmstat -d 1           # detailierte Plattenstatistik
fdisk -l              # (Nur als root!) ansprechbare Platten zeigen

ansprechbare Platten zeigen:

# ls -1 /sys/block/ | egrep -v 'loop|ram'

ansprechbare Platten mit Partitionen zeigen:

# ls -1 /sys/class/block/ | egrep -v 'loop|ram'
# cat /sys/class/block/cciss\!c0d0/uevent 
MAJOR=104
MINOR=0
DEVNAME=cciss/c0d0
DEVTYPE=disk
# cat /sys/class/block/cciss\!c0d0p1/uevent 
MAJOR=104
MINOR=1
DEVNAME=cciss/c0d0p1
DEVTYPE=partition

Wenn ein LVM eingerichtet ist, hat man es schwer zu ermitteln welches dm auf welcher physikalischen Platte liegt… Dieses Kommando zeigt welches virtuelle Volumen auf welcher physikalischen Platte liegt:

# ls -l /sys/block/dm-*/slaves/sd*

File Handler

Will man ein Verzeichnis umount(en) und bekommt die Meldung „device is busy.“, dann kann man so die Prozesse finden, die noch auf das Verzeichnis zugreifen.

zeigt offene Dateien in dem Verzeichnis:

# fuser -vm /home/

CPU

Prozessorinformationen:

# cat /proc/cpuinfo
# top
ps -ef | less         # UNIX-Style (Standard-Syntax)
ps aux | less         # BSD-Style
ps wwwaux | less      # BSD-Style (längere Kommandozeile)
ps axo user,pid,ppid,pcpu,pmem,vsz,rss,tty,stat,start,time,args | less
ps wwaxo user,pid,ppid,pcpu,pmem,vsz,rss,tty,stat,start,time,args | less
vmstat 1              # zeigt die Systemaktivitäten im Sekundentakt
                      # us - User      (User-Space-Interupts)
                      # sy - System    (System-Interupts)
                      # id - Idle      (nix zu tun)
                      # wa - Waiting   (warte auf Daten aus einem Nadelöhr z.B. Platte oder Netz)

RAM

# top                 # im Kopf steht die Speicherauslastung
                      # VIRT - virtueller Speicher (RAM+Swap)
                      # RES  - resident im RAM (eigentlicher RAM-Verbrauch)
                      # Swap = VIRT - RES   (unbedingt auf die Einheiten achten)
                      # SHR  - shared Speicher (meist verwendet von gemeinsam genutzte Libs)
# free

Speicherinformationen:

# cat /proc/meminfo

zeigt in der letzten Zeile den GENAUEN Speicherverbrauch des Prozesses unter „writeable/private:“ an:

# pmap -d [PID]

NIC

NIC's mit IP's anzeigen:

# ip aadr

zeigt alle aktiven NIC's:

ifconfig -a
ls -l /sys/class/net/eth0/    # zeigt alle ansprechbaren NICs
cat /sys/class/net/eth0/address       # MAC-Adresse von eth0
ls -1 /sys/class/net/eth0/statistics/         # Dateien mit statistischen Infos

Netzwerkkollisionen:

cat /sys/class/net/eth0/statistics/collisions

Empfangsfehler:

cat /sys/class/net/eth0/statistics/rx_errors

Sendefehler:

cat /sys/class/net/eth0/statistics/tx_errors

empfangene CRC-Fehler:

cat /sys/class/net/eth0/statistics/rx_crc_errors

Dateien mit Error-Statistik-Infos:

ls -la /sys/class/net/eth0/statistics/*errors

Will man die Netzwerkauslastung ermitteln, ohne das man eine Bandbreitensoftware zur verfühgung hat, kann man wie folgt vorgehen.

empfangene Datenmenge in Byte/Sekunde:

# XB="$(cat /sys/class/net/eth0/statistics/rx_bytes)";sleep 1;echo "$(cat /sys/class/net/eth0/statistics/rx_bytes)-$XB"|bc -l

gesendete Datenmenge in Byte/Sekunde:

# XB="$(cat /sys/class/net/eth0/statistics/tx_bytes)";sleep 1;echo "$(cat /sys/class/net/eth0/statistics/tx_bytes)-$XB"|bc -l

Grundlegendes

Sollte ein System langsam sein, muss man als erstes ermitteln wo der Engpass liegt. Als Engpass kommen fast immer nur vier Systemressourcen in Frage:

  1. Prozessor
  2. Speicher (bei zu wenig RAM wird auf die Festplatte → Swap zugegriffen)
  3. Festplatte
  4. Netzwerk

ACHTUNG!!! Die „load average“-Werte sagen in dieser Hinsicht GARNICHTS! Die „load average“ drückt nur aus, wie lange ein Prozess warten muss bis er wieder CPU-Zeit bekommt, sie sagt aber nichts über die CPU-Auslastung aus!!!

Ein hoher „load average“-Wert zeigt uns nur, dass EINE der vier Systemressourcen die Systemleistung begrenzt. Oft muss aber nicht das System selbst schuldig sein, denn oft wartet ein Prozess nur auf Daten eines anderen Prozesses, der auch auf einem anderen Rechner laufen kann. Das treibt unter Umständen auch die „load average“-Werte hoch.

Prozessor

Ob die CPU am Anschlag läuft, sieht man am schnellsten mit „top“.

# top
# vmstat 1

Speicher

Ob der RAM ausgeschöpft ist, kann man auf unterschiedlichen Arten ermitteln

# free
# top
# cat /proc/meminfo
# vmstat 1

Festplatte

# vmstat 1

Netzwerk

Das Netzwerk als Engpass zu ermitteln geht fast immer nur über die Ausschlussmethode. Denn nur wenn die Netzwerkbandbreite voll ausgeschöpft ist, kann man definitiv sagen, dass es an zu wenig Netzwerkbandbreite liegt. Meistens warten die Prozesse aber nur auf Antworten aus dem Netz, so das es im System keinen ersichtlichen Engpass gibt!

Die aktuell genutzte Netzwerkbandbreite kann man wie folgt ermitteln. letzte Sekunde im Durchschnitt (Byte/Sekunde):

# XB="$(cat /sys/class/net/eth0/statistics/rx_bytes)";sleep 1;echo "$(cat /sys/class/net/eth0/statistics/rx_bytes)-$XB"|bc -l
# XB="$(cat /sys/class/net/eth0/statistics/tx_bytes)";sleep 1;echo "$(cat /sys/class/net/eth0/statistics/tx_bytes)-$XB"|bc -l

letzte Minute im Durchschnitt (Byte/Minute):

# XB="$(cat /sys/class/net/eth0/statistics/rx_bytes)";sleep 60;echo "($(cat /sys/class/net/eth0/statistics/rx_bytes)-$XB)/60"|bc -l
# XB="$(cat /sys/class/net/eth0/statistics/tx_bytes)";sleep 60;echo "($(cat /sys/class/net/eth0/statistics/tx_bytes)-$XB)/60"|bc -l
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki