私は経験したこの記事、RAMの使用量を確認するさまざまな方法について説明します。しかし、異なるアプローチを調和させることはできず、どちらが正しいかはわかりません。
初めてログインすると、こんな画面が出ます。
System information as of Sun Apr 28 21:46:58 UTC 2013
System load: 0.0 Processes: 76
Usage of /: 15.6% of 7.87GB Users logged in: 1
Memory usage: 41% IP address for eth0:
Swap usage: 0%
これは私がRAMの41%を使用していることを示しています。サーバーが多くの操作を実行していないので、かなり高いようです。それとも、この数字がRAM以外のものを表しますか?
free -m
次に、この方法を試してみましょう。
ubuntu@ip-:~$ free -m
total used free shared buffers cached
Mem: 590 513 76 0 67 315
-/+ buffers/cache: 130 459
Swap: 0 0 0
記事の説明グラフによると、これは使用されたRAMが130 MB、空きRAMが459 MBであり、RAMの約22%を使用していることを示しています。
次に、次を実行しますtop
。
top - 22:14:48 up 195 days, 21:30, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.3%us, 0.3%sy, 0.0%ni, 97.7%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 604376k total, 525692k used, 78684k free, 69124k buffers
Swap: 0k total, 0k used, 0k free, 322740k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24332 1864 976 S 0.0 0.3 0:08.75 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
要約によると、合計604Mのうち525MGを使用していますが、「m」インタラクティブコマンドを使用して最上位メモリごとにソートすると、最上位プロセスはメモリの0.3%しか使用しないため、最も混乱します。 ? ?
最後に、このps
コマンドはメモリ使用量がほとんどないようです。
root@ip-:/home/ubuntu# ps -o command,rss
COMMAND RSS
ps -o command,rss 788
sudo su root 1764
su root 1404
bash 2132
私は誰かがこのような明白な紛争を引き起こす私が持っている誤解を正すことを願っています。
ありがとうございます!
編集者ラフル
出力cat /proc/meminfo
:
MemTotal: 604376 kB
MemFree: 157564 kB
Buffers: 49640 kB
Cached: 231376 kB
SwapCached: 0 kB
Active: 290040 kB
Inactive: 97772 kB
Active(anon): 107672 kB
Inactive(anon): 4844 kB
Active(file): 182368 kB
Inactive(file): 92928 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 52 kB
Writeback: 0 kB
AnonPages: 106836 kB
Mapped: 22920 kB
Shmem: 5712 kB
Slab: 42032 kB
SReclaimable: 34016 kB
SUnreclaim: 8016 kB
KernelStack: 688 kB
PageTables: 3584 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 302188 kB
Committed_AS: 242768 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7152 kB
VmallocChunk: 34359729008 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
答え1
メモリの概念を理解するだけです。
/proc/meminfoの出力に応じて、次の点に注意してください。
バッファー:- バッファはまだディスクに「書き込み」されていません。ディスクブロックキャッシュに割り当てられているRAMの量を示します。 「キャッシュ済み」は「バッファ」に似ていますが、今回はファイルから読み取ったページをキャッシュします。
隠れ家:- キャッシュは、ディスクから「読み込み」、後で使用するために保存することです。一般に、キャッシュ領域は、アプリケーションがより多くのメモリを必要とする場合、徐々に減少するという点で別の「使用可能な」RAMと考えることができます。
「バッファ」と「キャッシュ済み」の両方がシステムキャッシュのサイズを表すことを理解すれば十分です。内部Linuxカーネルメカニズムの要件に応じて動的に拡張または縮小されます。
Webホスティングでは、次のcmdを使用してキャッシュを消去します。 (主にcronで設定):
sync && echo 3 > /proc/sys/vm/drop_caches
引用する協会
ユーザーあたりのメモリ使用量という別の要件を編集してください。
#!/bin/bash
total_mem=0
printf "%-10s%-10s\n" User MemUsage
while read u m
do
[[ $old_user != $u ]] && { printf "%-10s%-0.1f\n" $old_user $total_mem; total_mem=0; }
total_mem=$(echo $m + $total_mem | bc);
old_user=$u
done < <(ps --no-headers -eo user,%mem| sort -k1)
#--EOF
上記のスクリプトを確認し、正しく表示されるかどうかを教えてください。
答え2
素晴らしい答え@RahulPatil。
psまたはtopについて考慮すべきもう一つのことは次のとおりです。
このツール[exmap]は、複数のアプリケーションで使用される共有ライブラリを考慮しているため、psまたはtopよりも正確です。たとえば、両方のアプリケーションが1MBのメモリを占有する同じ共有ライブラリを使用している場合、psは両方のアプリケーションが1MBの追加メモリを使用しているとマークしますが、exmapは500KBを使用する各アプリケーションをより正確に表示します。これらの高精度は、アプリケーション間で共有されるライブラリを大量に使用するKDEやGNOMEなどのデスクトップ環境を評価する場合に特に重要です。
渡すibm/developerworks/linux_memory
あなたの質問はヘッドレスサーバーに関連しているので、topまたはpsが実際にどのように二重報告しているのかわかりません。
答え3
私たちのほとんどが「当然のこと」なので、明らかなことを見落としているのではないかと心配です。
Jonah、私が間違っているなら許してください。しかし、あなたの質問は、これらのすべての値、特にCPU使用率が時間の経過とともに大きく変化することが多いことに気付かないかもしれません。
新しいプロセスが開始されると、CPU使用率はすぐに1桁から100%にジャンプできますが、まもなく(希望的に)50%未満の範囲に戻ります。
メモリ使用量はゆっくりと変化しますが、Linuxはディスクアクセスを「キャッシュ」するプロセスを実行し、積極的に使用されていないメモリを使用しようとします。たとえば、大容量ファイルの残りの部分を読み取るなど、次にディスクから読み取るべき内容を予測し、それをキャッシュにプリロードします。一部のメモリ使用量値には、プロセスで使用されるメモリとキャッシュに使用されるメモリが含まれます。しばらく実行されたシステムでは、2つの合計が最大80〜90%以上になる可能性があります。
また、使用量を表示するために実行するプロセス(たとえば)top
もCPUとメモリを使用することを検討してください。継続的にCPU使用率を報告するループを含むスクリプトを作成する場合、使用量報告ジョブ自体( sleep
一部の待ち時間なし)はすべてのCPUを使用するため、ほぼ常に100%で表示されます。