Linux vmstat Command Tutorial für Anfänger (5 Beispiele)
Wenn Sie nach einem Befehlszeilenprogramm suchen, mit dem Sie auf Informationen über Prozesse, CPU-Aktivität, Speicher und mehr zugreifen können, werden Sie sich freuen, dass vmstat dies für Sie erledigt.
In diesem Artikel werden wir die Grundlagen dieses Tools anhand einiger leicht verständlicher Beispiele diskutieren. Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele in diesem Artikel auf einem Ubuntu 18.04 LTS-Rechner getestet wurden.
Linux vmstat Befehl
Der Befehl vmstat unter Linux meldet Statistiken über den virtuellen Speicher. Folgendes ist seine Syntax:
vmstat [options] [delay [count]]
Und so erklärt es die Man Page des Tools:
vmstat reports information about processes, memory, paging, block IO, traps, disks and cpu activity.
The first report produced gives averages since the last reboot. Addi?
tional reports give information on a sampling period of length delay.
The process and memory reports are instantaneous in either case.
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen einen besseren Eindruck davon vermitteln sollen, wie der Befehl vmstat funktioniert:
Q1. Wie benutze ich vmstat?
Für die grundlegende Verwendung führen Sie einfach ‚vmstat‘ sans any option aus.
vmstat
In meinem Fall hat der obige Befehl beispielsweise die folgende Ausgabe erzeugt:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 805624 770924 41792 838568 2 10 35 57 392 225 10 2 86 1 0
Wie die erste Zeile zeigt, ist die Ausgabe in sechs Abschnitte unterteilt. Die Man Page des Tools enthält detaillierte Informationen zu diesen Werten. Hier ist der Auszug:
Procs r: The number of runnable processes (running or waiting for run time). b: The number of processes in uninterruptible sleep.
Memory
swpd: the amount of virtual memory used.
free: the amount of idle memory.
buff: the amount of memory used as buffers.
cache: the amount of memory used as cache.
inact: the amount of inactive memory. (-a option)
active: the amount of active memory. (-a option)
Swap
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).
IO
bi: Blocks received from a block device (blocks/s).
bo: Blocks sent to a block device (blocks/s).
System
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.
Q2. Wie kann man vmstat dazu bringen, seine Ausgabe automatisch zu aktualisieren?
Standardmäßig erzeugt vmstat die Ausgabe einmalig. Wenn Sie jedoch möchten, dass vmstat seine Ausgabe automatisch aktualisiert, können Sie dies tun, indem Sie einen numerischen Wert als Eingabe für den Befehl angeben.
Dieser Zahlenwert wirkt als Verzögerung (in Sekunden), nach der der Ausgang aktualisiert wird. Zum Beispiel:
vmstat 3
Auf diese Weise wird die vmstat-Ausgabe alle 3 Sekunden aktualisiert.
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 824320 1067960 20500 507612 2 10 36 56 412 296 11 2 86 1 0 0 0 824320 1068116 20532 507176 0 0 0 39 2648 6093 4 1 93 1 0 0 0 824320 1062420 20548 507160 0 0 0 48 2603 5895 5 1 93 1 0 0 0 824320 1060180 20556 507152 0 0 0 289 2815 6092 4 1 94 0 0 1 0 824320 1059940 20580 509216 0 0 0 31 2578 5937 5 1 93 1 0 ... ... ...
Q3. Wie erstellt man vmstat display slabinfo?
Für slabinfo musst du die Kommandozeilenoption -m verwenden. Beachten Sie, dass der Kernel Ihrer Linux-Distribution slabinfo unterstützen muss, damit diese Option funktioniert. Wenn es Unterstützung gibt, dann müssen Sie den Befehl mit sudo-Berechtigungen ausführen.
sudo vmstat -m
Zum Beispiel, in meinem Fall, hier ist ein Auszug aus der produzierten Ausgabe:
Cache Num Total Size Pages ext4_groupinfo_4k 1568 1568 144 28 drm_i915_gem_request 112 112 576 28 i915_vma 934 1012 704 23 drm_i915_gem_object 896 1050 768 21 RAWv6 140 140 1152 28 UDPv6 104 104 1216 26 tw_sock_TCPv6 17 17 240 17 request_sock_TCPv6 0 0 304 26 TCPv6 60 60 2176 15 kcopyd_job 0 0 3312 9 dm_uevent 0 0 2632 12 cfq_io_cq 442 442 120 34 cfq_queue 408 408 240 17 bsg_cmd 0 0 216 18 mqueue_inode_cache 68 68 960 17 fuse_request 40 40 400 20 fuse_inode 19 19 832 19 ecryptfs_inode_cache 0 0 1024 16 ... ... ...
Q4. Wie kann man vmstat report disk activity summary stats erstellen?
Verwenden Sie dazu die Befehlszeilenoption -D.
vmstat -D
Hier ist die Ausgabe dieses Befehls, die auf meinem System erzeugt wurde:
21 disks 8 partitions 158637 total reads 31589 merged reads 7376734 read sectors 2099724 milli reading 198763 writes 553378 merged writes 11743120 written sectors 6396664 milli writing 0 inprogress IO 1248 milli spent IO
Q5. Wie kann man vmstat dazu bringen, den Zeitstempel an jede Ausgabezeile anzuhängen?
Um sicherzustellen, dass der Befehl vmstat jeder Ausgabezeile einen Zeitstempel anhängt, verwenden Sie die Befehlszeile -t:
vmstat -t
$ vmstat 2 -t procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp----- r b swpd free buff cache si so bi bo in cs us sy id wa st IST 1 0 822528 855556 36820 689220 1 9 34 54 62 68 11 2 86 1 0 2018-09-27 16:29:40 0 0 822528 849612 36828 692792 0 0 0 30 2894 7141 7 2 91 1 0 2018-09-27 16:29:42 1 0 822528 851820 36856 697288 0 0 0 276 3081 7072 17 2 80 1 0 2018-09-27 16:29:44 0 0 822528 850968 36856 697420 0 0 0 0 3025 8067 7 2 91 0 0 2018-09-27 16:29:46 0 0 822528 853480 36856 693360 0 0 0 0 2762 6285 5 1 93 0 0 2018-09-27 16:29:48 0 0 822528 853128 36872 692796 0 0 0 140 2881 6534 6 1 91 2 0 2018-09-27 16:29:50 0 0 822528 846924 36872 697108 0 0 0 0 2843 6637 6 2 93 0 0 2018-09-27 16:29:52
Die hervorgehobenen Einträge zeigen den Zeitstempel, der in jeder Zeile enthalten ist.
Fazit
Je nachdem, welche Art von Arbeit Sie auf der Linux-Befehlszeile verrichten, kann sich der Befehl vmstat als sehr hilfreich erweisen. Neben den hier beschriebenen Optionen gibt es noch viele andere Befehlszeilenoptionen, die dieses Tool anbietet. Hier erfahren Sie mehr.