調査した後も、RAMの使用状況の監視について混乱している


10

私は通り抜けたこの記事あなたの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

記事の説明図によると、これは130MBの使用済みRAMと459MBの空きRAMがあることを意味し、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)メモリで並べ替えるための一番上のコマンドはmではなく、Mです。#2)すべてのプロセスを表示するには、** ps ax -o command、rss **;を試してください。あなたが実行したものはあなた自身のものを示しているだけです。
2013

また、私たちの出力更新してくださいcat /proc/meminfo
ラーフルパティル


@tink、その説明をありがとう。私はps ax -o rss | awk '{ sum+=$1} END {print sum}'ちょうど今、153156 を試しました。–
ジョナ

@ RahulPatil、OPが更新されました。実行中のプロセスは元の数と少し異なる場合がありますが、それほど離れてはいけないことに注意してください。また、私があなたのために得た結果は、この上のコメントで私がティンクのために得た結果と一致していないようです。それらはほんの数分間隔で撮影されました。
ジョナ

回答:


8

あなただけのメモリの概念を理解する必要があります

/ proc / meminfoの出力に従って、以下のことに注意する必要があります:

バッファ:-バッファは、まだディスクに「書き込まれる」必要があるものです。キャッシュディスクブロック専用のRAMの量を表します。「キャッシュ」は「バッファ」に似ていますが、今回はファイルの読み取りからページをキャッシュします

キャッシュ:-キャッシュとは、ディスクから「読み取られ」、後で使用するために保存されるものです。一般に、キャッシュ領域は、アプリケーションがより多くのメモリを要求すると徐々に縮小されるため、別の「空き」RAMと見なすことができます。

「バッファ」と「キャッシュ」の両方がシステムキャッシュのサイズを表すことを理解するのに十分です。内部のLinuxカーネルメカニズムの要求に応じて、動的に拡大または縮小します。

ウェブホスティングでは、以下のコマンドを使用してキャッシュをクリアします(ほとんどがcronで構成されています)。

sync && echo 3 > /proc/sys/vm/drop_caches

引用リンク

もう1つの要件、つまりユーザーごとのメモリ使用量の編集

#!/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

上記のスクリプトで確認し、正しく表示されるかどうかをお知らせください。


ラフルに感謝します。最後の質問です。以来free -m、ユーザーごとに使用ビューメモリへの道を提供していない、特定のユーザによって消費されているどのくらいの実際のRAMを決定する正確な方法は何ですか?これは、たとえば、共有サーバーで独自のメモリ使用量を監視するときに発生します。
ジョナ

@Jonah更新しました。確認してください
Rahul Patil

そのスクリプトは期待どおりに動作していません。しかし、すぐに更新する予定です
Rahul Patil 2013

@Jonah私のansを受け入れてくれてありがとう..... MichaelHamptonに本当に感謝します...
Rahul Patil

2

良い答え@RahulPatil。

psまたはtopについて考慮するもう1つのポイントは次のとおりです。

このツール[exmap]は、複数のアプリケーションで使用されている共有ライブラリを考慮に入れるため、psまたはtopよりも正確です。たとえば、2つのアプリケーションが1MBのメモリを使用する同じ共有ライブラリを使用している場合、psは1MBの追加メモリを使用して両方のアプリを表示しますが、exmapは500KBを使用して各アプリをより正確に表示します。この優れた精度は、KDEやGNOMEなどのアプリケーション間で共有されるライブラリを非常に頻繁に使用するデスクトップ環境を評価する場合に特に重要です。

ibm / developerworks / linux_memory経由

あなたの質問はヘッドレスサーバーに言及しているので-私は実際にどのくらいのダブルレポーティングトップまたはpsがあるかわかりません。


0

それが私たちのほとんどにとって「当然」であるので、私たちは明白なものを見落としているかもしれないと恐れています。

ジョナ、私が間違っていても許してください、しかしあなたの質問はあなたがこれらの値すべて、特にCPU使用率が通常秒から秒にかなり大きく変わることに気付いていないかもしれないように聞こえるかもしれません。

CPU使用率は、新しいプロセスが開始されるとすぐに1桁から100%になることがありますが、すぐに(できれば)50%未満の範囲に戻ります。

メモリ使用量の変化はゆっくりですが、Linuxは、ディスクアクセスを「キャッシュ」するプロセスを実行することにより、アクティブに使用されていないメモリを使用しようとします。たとえば、一部が読み取られた後の大きなファイルの残りの部分など、次にディスクから何を読み取る必要があるかを予測し、それをキャッシュにプリロードしようとします。一部のメモリ使用量の値には、プロセスで使用されるメモリとキャッシュに使用されるメモリの両方が含まれます。しばらく稼働しているシステムでは、2つを合わせた場合、おそらく80〜90%以上になります。

また、などの使用状況を表示するために実行するプロセスもtopCPUとメモリを使用することを考慮してください。CPU使用率を継続的に報告するループを含むスクリプトを記述した場合、使用率自体を報告する行為(sleep 遅延は発生しません)はすべてのCPUを使用するため、ほぼ必ず100%を示し ます。


ドク、考えをありがとう、しかしこれは問題ではありませんでした
ジョナ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.