パフォーマンスの問題が発生した場合に備えて、システムのメモリを占有しているプロセスまたはアプリケーションを見つけることが重要です。この投稿には、一般的な Linux システムでのメモリ使用量を計算するための基本的なコマンドがいくつかリストされています。
1. 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
平均値から空きメモリを計算するには、次の式を使用します:
kbmemfree + kbbuffers + kbcached = actual free memory on the system
上記の例を使用:
1772665 + 382184 + 23831757 = 25986606KB
これは約 24.78GB の空きメモリです。
2. free コマンドを使用してメモリ使用量を計算
# free -m total used free shared buffers cached Mem: 32106 30382 1723 3031 373 23273 -/+ buffers/cache: 6736 25370 Swap: 63999 2 63997
上記の例から、システムの空きメモリを取得するには:
-/+ buffers/cache ==> free column
Free 列は 25370 MB を報告するため、sar 出力計算にも一致します (SAR では平均値が使用されたことに注意してください)
システム使用時に使用済みメモリを取得するには:
-/+ buffers/cache ==> used column
この場合、使用メモリは 6736MB です。
3.システムでより多くのメモリを消費している上位 10 人のユーザーをパーセンテージで検索します
ps コマンドを使用する単純なシェル構文を使用してください:
# 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
上記の観察例から、root にはメモリの 3.3% を使用している 349 のプロセスがあり、ユーザー oracle にはメモリの 4% を使用している 29 のプロセスがあり、ユーザー apache1 にはメモリの約 4.8% を消費している 12 のプロセスがあり、合計で約 12% を消費しています。 sar 'commit' 列でも約 12% の値を確認できます。
4. RSS ( Resident Set Size ) を消費している上位 10 のプロセスを確認してください
ps コマンドを使用する単純なシェル構文を使用してください:
# 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
最初の列は RSS です 、2 番目は PID です 、3 番目は USER です 4 番目は Command Executed です .
RSS 値は、プロセスが実際に割り当てたメモリ量を KB 単位で示すため、ここで最も重要です。 、VSZ は使用しないでください 各プロセスは VSZ 値によって示される「オーバーヘッド」を割り当てているため、プロセスごとに「要求された」メモリを計算する値。ここで、RSS はプロセスごとの実際のメモリ割り当てを報告します。
RSS 出力の計算後、「使用済み」 ‘ メモリを取得して、free の出力から -/+ buffers/cache – used 列と比較できます コマンド — RSS と free コマンドからの出力の両方が一致する必要があります。