GNU/Linux >> Linux の 問題 >  >> Linux

sar、ps、および free を使用して Linux でメモリ使用量を計算する方法

パフォーマンスの問題が発生した場合に備えて、システムのメモリを占有しているプロセスまたはアプリケーションを見つけることが重要です。この投稿には、一般的な 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 コマンドからの出力の両方が一致する必要があります。


Linux
  1. Linuxのメモリ使用量

  2. Linux で合計 RAM サイズとメモリ使用量を確認する方法

  3. Linux でメモリ使用量はどのように報告されますか?

  1. Linuxでメモリバッファとキャッシュを削除する方法

  2. Linux – Linuxのメモリ使用量を正しく判断しますか?

  3. Linuxでメモリ消費をログに記録する方法は?

  1. Linuxの無料コマンドの使用

  2. Linux で R のメモリ使用量を制限する

  3. Linuxでユーザーのメモリ使用量を見つける方法