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.