Benutzer-Werkzeuge

Webseiten-Werkzeuge


systemueberpruefung

Dies ist eine alte Version des Dokuments!


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 (Linux/GNU):

# 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]

http://www.tecmint.com/find-processes-by-memory-usage-top-batch-mode/

# top -b -o +%MEM | head -n 22
top - 11:51:41 up 18 days, 23:41,  4 users,  load average: 2,13, 1,09, 0,82
Tasks: 156 total,   1 running, 155 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3,0 us,  1,7 sy,  0,0 ni, 80,2 id, 14,9 wa,  0,0 hi,  0,1 si,  0,0 st
KiB Mem:  16432776 total, 16136676 used,   296100 free,   251656 buffers
KiB Swap:   974844 total,    71124 used,   903720 free.  8957284 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
32496 mysql     20   0 11,601g 6,158g  18644 S   0,0 39,3 112:36.34 mysqld
12528 root      20   0  113564  33000   2224 S   0,0  0,2   0:41.05 puppet
 1010 syslog    20   0  256052   9552      0 S   0,0  0,1   0:41.84 rsyslogd
13914 root      20   0  141804   6624   2280 S   0,0  0,0  28:21.92 mmm_agentd
 7924 root      20   0  105664   6480   5472 S   0,0  0,0   0:00.03 sshd
 8068 root      20   0   24140   5820   3764 S   0,0  0,0   0:01.17 bash
 7968 mhe       20   0   24124   5488   3464 S   0,0  0,0   0:00.11 bash
 8067 root      20   0   66468   4272   3800 S   0,0  0,0   0:00.00 sudo
 7967 mhe       20   0  105664   3836   2828 S   0,0  0,0   0:00.76 sshd
 7039 root      20   0   16328   3820   2568 S   0,0  0,0   0:17.34 watch
11993 root      20   0   24304   3640   2448 S   0,0  0,0   0:01.12 bash
16350 root      20   0   26332   3144   2716 R   6,3  0,0   0:00.01 top
    1 root      20   0   33484   2632   1732 S   0,0  0,0   0:22.41 init
 5566 root      20   0   16064   2472   1616 S   0,0  0,0  12:51.74 watch
16351 root      20   0    8732   2180   2076 S   0,0  0,0   0:00.00 head

auf FreeBSD

# top -b -o size | head -n 22
last pid: 51378;  load averages:  0.13,  0.10,  0.11  up 0+17:53:36    20:06:33
68 processes:  1 running, 67 sleeping
CPU:  0.0% user,  0.0% nice,  3.2% system,  0.1% interrupt, 96.6% idle
Mem: 2861M Active, 10G Inact, 12G Wired, 1337M Buf, 37G Free
ARC: 6738M Total, 2267M MFU, 3145M MRU, 1044K Anon, 35M Header, 1283M Other
     4291M Compressed, 6701M Uncompressed, 1.56:1 Ratio
Swap: 7949M Total, 7949M Free

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
47293 root         12  20    0    16G  1334M kqread   6 396:13   0.10% bhyve
56527 squid         1  20    0  1995M   282M kqread   4   0:11   0.00% squid
48263 root          1  34    0   183M  7328K kqread   1   0:00   0.00% cupsd
44830 root          1  20    0   175M   148M select   3   0:29   0.00% smbd
49207 root          1  20    0   175M   147M select   4   0:00   0.00% smbd
38845 root         21  52    0   140M    52M uwait    3   1:58   0.00% ts3server
46816 root          2  20    0   136M   105M select   0   0:00   0.00% smbd
47692 root          1  20    0   132M   105M select   5   0:00   0.00% smbd
36392 murmur        1  52    0    71M    21M select   6   0:00   0.00% murmurd
43004 www           1  20    0    70M    38M kqread   1   0:04   0.00% httpd
48037 www           1  20    0    70M    37M lockf    8   0:05   0.00% httpd
43924 www           1  21    0    66M    35M lockf   10   0:05   0.00% httpd
47806 www           1  20    0    65M    34M lockf    6   0:04   0.00% httpd
# top -b -o res | head -n 22
last pid: 56238;  load averages:  0.11,  0.10,  0.11  up 0+17:53:47    20:06:44
68 processes:  1 running, 67 sleeping
CPU:  0.0% user,  0.0% nice,  3.2% system,  0.1% interrupt, 96.6% idle
Mem: 2861M Active, 10G Inact, 12G Wired, 1337M Buf, 37G Free
ARC: 6738M Total, 2266M MFU, 3145M MRU, 788K Anon, 35M Header, 1283M Other
     4291M Compressed, 6701M Uncompressed, 1.56:1 Ratio
Swap: 7949M Total, 7949M Free

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
47293 root         12  20    0    16G  1334M kqread   8 396:13   0.10% bhyve
56527 squid         1  20    0  1995M   282M kqread   1   0:11   0.00% squid
44830 root          1  20    0   175M   148M select   3   0:29   0.00% smbd
49207 root          1  20    0   175M   147M select   4   0:00   0.00% smbd
47692 root          1  20    0   132M   105M select   5   0:00   0.00% smbd
46816 root          2  20    0   136M   105M select   0   0:00   0.00% smbd
38845 root         21  52    0   140M    52M uwait    3   1:58   0.00% ts3server
43004 www           1  20    0    70M    38M lockf    9   0:04   0.00% httpd
48037 www           1  20    0    70M    37M lockf    8   0:05   0.00% httpd
43924 www           1  21    0    66M    35M lockf   10   0:05   0.00% httpd
47806 www           1  20    0    65M    34M kqread   6   0:04   0.00% httpd
42752 www           1  20    0    64M    34M lockf    9   0:04   0.00% httpd
11115 www           1  20    0    64M    33M lockf    4   0:00   0.00% httpd

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

FreeBSD 12

RAM

leider zeigt die FreeBSD-Version von "top" nicht die gesammte RAM-Speichergröße an

# top
last pid: 11041;  load averages:  6.45,  6.74,  6.86                                       up 0+03:43:13  16:30:35
87 processes:  2 running, 85 sleeping
CPU:  0.1% user, 76.5% nice, 12.9% system, 10.2% interrupt,  0.3% idle
Mem: 362M Active, 431M Inact, 12G Wired, 40K Buf, 2432M Free
...

hier steht nur:

  • Active: RAM-Größe des aktiv genutzt wird
  • Inact: RAM-Größe die inaktiv ist
  • Wired: "verkabelte" RAM-Größe, einschließlich zwischengespeicherter Dateiseiten auf BIO-Ebene
  • Cache: Datenmenge, die im RAM zwischengespeichert liegt, um die langsamen Festplattenzugriffe zu minimieren
  • Buf: RAM-Größe die für den Festplatten-Cache auf BIO-Ebene verwendet wird
  • Free: freie RAM-Größe

beim Booten wird die RAM-Größe einmal ausgegeben:

# fgrep memory /var/run/dmesg.boot
real memory  = 17179869184 (16384 MB)
avail memory = 16096768000 (15351 MB)

aus dem Kernel-Status kann man die RAM-Größe jeder Zeit auslesen:

# sysctl hw | egrep 'hw.(phys|user|real)'
hw.physmem: 16595222528
hw.usermem: 4956823552
hw.realmem: 17179869184

# sysctl hw | awk '/hw[.](phys|user|real)/{print $1"\t"$2,"Byte,\t",$2/1024,"MB,\t",$2/1024^2,"GB"}'
hw.physmem:     16595222528 Byte,        16206272 MB,    15826,4 GB
hw.usermem:     3710742528 Byte,         3623772 MB,     3538,84 GB
hw.realmem:     17179869184 Byte,        16777216 MB,    16384 GB

angelehnt an das Linux-Werkzeug "free", hier auch mit farbiger Ausgabe:

# pkg install sysutils/freecolor

# freecolor
Physical  : [######.............................] 18%   (2870916/15781376)
Swap      : [###################################] 100%  (16777216/16777216)

# freecolor -tom
             total       used       free     shared    buffers     cached
Mem:         15411      12419       2991          0          0          0
Swap:        16384          0      16384
Total:       31795 = (   12419 (used) +    19375 (free))
/home/http/wiki/data/attic/systemueberpruefung.1653222185.txt · Zuletzt geändert: von manfred