GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So berechnen Sie die Speichernutzung in Linux mit sar, ps und free

Im Falle eines Leistungsproblems ist es wichtig, den Prozess oder die Anwendung zu finden, die den Speicher des Systems in Anspruch nehmen. Der Beitrag listet einige der grundlegenden Befehle zur Berechnung der Speichernutzung auf einem allgemeinen Linux-System auf.

1. Berechnen Sie die Speichernutzung mit SAR

# sar -r 1 10
Linux 2.6.32-504.el6.x86_64 (geeklab) 	03/05/2018 	_x86_64_	(16 CPU)

10:17:41 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
10:17:42 AM   1772488  31104712     94.61    382184  23831756  11675188     11.86
10:17:43 AM   1777348  31099852     94.59    382184  23831756  11675188     11.86
10:17:44 AM   1778412  31098788     94.59    382184  23831756  11675188     11.86
10:17:45 AM   1776720  31100480     94.60    382184  23831756  11675072     11.86
10:17:46 AM   1777932  31099268     94.59    382184  23831760  11675072     11.86
10:17:47 AM   1780848  31096352     94.58    382184  23831760  11675072     11.86
10:17:48 AM   1774460  31102740     94.60    382184  23831760  11675644     11.86
10:17:49 AM   1740080  31137120     94.71    382184  23831760  11717568     11.91
10:17:50 AM   1773608  31103592     94.61    382184  23831708  11675076     11.86
10:17:51 AM   1774752  31102448     94.60    382184  23831796  11675076     11.86
Average:      1772665  31104535     94.61    382184  23831757  11679414     11.87

Verwenden Sie die folgende Formel, um den freien Speicher aus dem Durchschnittswert zu berechnen:

kbmemfree + kbbuffers + kbcached = actual free memory on the system

Verwenden Sie das obige Beispiel:

1772665 + 382184 + 23831757 = 25986606KB

Das sind etwa 24,78 GB freier Speicherplatz.

2. Berechnen Sie die Speichernutzung mit dem kostenlosen Befehl

# free -m
             total       used       free     shared    buffers     cached
Mem:         32106      30382       1723       3031        373      23273
-/+ buffers/cache:       6736      25370
Swap:        63999          2      63997

Um im obigen Beispiel freien Speicher auf dem System zu erhalten, verwenden Sie:

-/+ buffers/cache ==> free column

Die freie Spalte meldet 25370 MB, sodass die Berechnung der SAR-Ausgabe ebenfalls übereinstimmt (beachten Sie, dass der SAR-Durchschnittswert verwendet wurde)

Um benutzten Speicher auf dem System zu erhalten, verwenden Sie:

-/+ buffers/cache ==> used column

In unserem Fall beträgt der verwendete Speicher 6736 MB.

3. Finden Sie die Top 10 Benutzer, die mehr Speicher auf dem System in Prozent verbrauchen

Bitte verwenden Sie eine einfache Shell-Syntax, die den ps-Befehl verwendet:

# ps -eo user,pcpu,pmem | tail -n +2 | awk '{num[$1]++; cpu[$1] += $2; mem[$1] += $3} END{printf("NPROC\tUSER\tCPU\tMEM\n"); for (user in cpu) printf("%d\t%s\t%.2f\t%.2f\n",num[user], user, cpu[user], mem[user]) }'
NPROC	USER	  CPU	MEM
29	oracle	  0.10	4.00
1	ntp	  0.00	0.00
1	rpc	  0.00	0.00
5	user	  0.00	0.00
1	dbus	  0.00	0.00
1	mysql	  0.00	0.30
12	daemon	  0.00	0.60
2	postfix	  0.00	0.00
12	apache1	  2.40	4.80
1	rpcuser	  0.00	0.00
349	root	  7.70	3.30

Aus der obigen Beispielbeobachtung hat root 349 Prozesse, die 3,3 % des Speichers beanspruchen, Benutzer oracle hat 29 Prozesse, die 4 % des Speichers beanspruchen, Benutzer apache1 hat 12 Prozesse, die etwa 4,8 % des Speichers verbrauchen, also insgesamt etwa 12 %. Der Wert von etwa 12 % ist auch in der SAR-Spalte „Commit“ zu sehen.

4. Überprüfen Sie die 10 wichtigsten Prozesse, die RSS (Resident Set Size) verbrauchen

Bitte verwenden Sie eine einfache Shell-Syntax, die den ps-Befehl verwendet:

# ps -e -orss,pid=,user=,args=, | sort -b -k1,1n | pr -TW$COLUMNS| tail -10
74336   5509 root     /opt/perf/bin/perfalarm
77212   8389 oracle   /grid/CRS/bin/ohasd.bin reboot
78216   9731 root     /opt/OV/lbin/agtrep/agtrep -start
96768   9808 root     /opt/OV/hpcs/hpsensor
108580 12073 root     /usr/lib/systemd/systemd-journald
136260 76477 root     storapid start -name storapid
178316  5350 root     /opt/OV/bin/oacore oacore /var/opt/OV/conf/oa/PipeDefinitions/oacore.xml
186168 10367 oracle   /grid/CRS/bin/oraagent.bin
1013484 31562 root    vxconfigd -x syslog
1317360 76463 root    vxencryptd

Die erste Spalte ist RSS , der zweite ist PID , der dritte ist USER und viertens ist Befehl ausgeführt .

RSS Der Wert ist hier der wichtigste, da er anzeigt, wie viel Speicher der Prozess tatsächlich in KB zugewiesen hat , verwenden Sie bitte nicht VSZ -Wert, der den „angeforderten“ Speicher nach Prozess berechnet, da jeder Prozess „Overhead“ zuweist, der durch den VSZ-Wert dargestellt wird, wobei RSS die tatsächliche Speicherzuweisung nach Prozess meldet.

Nach der Berechnung der RSS-Ausgabe wird die Datei „used ‘ Arbeitsspeicher kann aus der Ausgabe von free abgerufen und mit -/+ buffers/cache – used-Spalte verglichen werden Befehl — Sowohl RSS als auch die Ausgabe des Befehls free sollten übereinstimmen.


Linux
  1. Linux-Speichernutzung

  2. So löschen Sie Speicherpuffer und Cache in Linux

  3. Linux – Speichernutzung unter Linux richtig ermitteln?

  4. So überprüfen Sie die gesamte RAM-Größe und Speichernutzung in Linux

  5. So ermitteln Sie die Benutzerspeichernutzung in Linux

So sichern Sie Dateien und Verzeichnisse mit Rsync unter Linux

So führen Sie Linux-Apps unter Windows 10 und 11 mit WSL aus

So klonen und wiederherstellen Sie eine Linux-Partition mit dem dd-Befehl

So visualisieren Sie die Festplattennutzung unter Linux mit Baobab

Wie wird die Top/htop-Speichernutzung interpretiert?

So finden Sie die am häufigsten ausgeführten Prozesse nach Speicher- und CPU-Auslastung in Linux