熊手を取り出す前に、Linuxキャッシュシステムにメモリが入っている場所を追跡するのが困難です。私は見たLinuxは私のRAMを食べる!と実際のメモリ使用量に基づいて親プロセスをどのように確認できますか?とLinuxでメモリ使用量を正しく決定するただし、これを例にすると、数値がシステムに表示される数値と正確に一致しません。
このシステムを使用すると、おそらく「キャッシュ」されているか、プログラムで使用されることがわかりますが、その数字は私に合計されません。
上から私はそれを見た。
top - 09:04:09 up 19 days, 20:38, 2 users, load average: 0.00, 0.10, 0.11
Tasks: 160 total, 1 running, 159 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 65974296k total, 43507804k used, 22466492k free, 305336k buffers
Swap: 7548924k total, 0k used, 7548924k free, 1480836k cached
わかりました。 「使用された」43GBメモリは実際には実際ではなく、おそらくほとんどがキャッシュされているでしょう。だからそれを掘り下げてみました。
$ free -m
total used free shared buffers cached
Mem: 64428 38845 25582 0 298 1445
-/+ buffers/cache: 37101 27326
Swap: 7371 0 7371
したがって、これは実際には37 GBが使用されており、1445 MBだけがキャッシュされていることを示しています(ここでは20000に似た1445が表示されると予想されます)。上記のウェブサイトを見ると、「キャッシュ」列が一般的にかなり高いことがわかります。だから私は、どのアプリケーションがメモリを使用しているかを確認するためにさらに調査し、次のことを行いました。
sudo smem -t
PID User Command Swap USS PSS RSS
9468
21475 root python /usr/bin/smem -t 0 6212 6234 6984
2431 root /opt/OV/lbin/perf/coda 0 7156 8060 12068
2213 root /opt/perf/bin/perfd 0 19056 19485 22032
20849 root /opt/shiny-server/ext/node/ 0 77244 77321 78616
21325 atpa /usr/lib64/R/bin/exec/R --n 0 3729836 3733774 3739520
21287 atpa /usr/lib64/R/bin/exec/R --n 0 4060136 4064074 4069820
-------------------------------------------------------------------------------
63 11
0 7947984 7970344 8054032
したがって、Rの2つのアプリケーションは約8GBのメモリを使用します。
上記のリンクの他の記事は、Linuxがメモリを「予約」してキャッシュに保持していることを示しています(たとえば、free -mはキャッシュが「Mem:」行に高い値を持っていることを示しています)。一方、私の場合は実際にそうです。使用中ですが、実際にメモリ使用量を報告するアプリケーションはなく、Linuxがメモリを使用する(キャッシュ/予約?)場所を追跡できないようです。
この記憶はどこに行きましたか? Linuxで使用していると仮定していますが、どこにいるのかわかりません。
/proc/meminfo
プログラム
MemTotal: 65974296 kB
MemFree: 24191624 kB
Buffers: 305320 kB
Cached: 1480760 kB
SwapCached: 0 kB
Active: 7769776 kB
Inactive: 215532 kB
Active(anon): 6199392 kB
Inactive(anon): 476 kB
Active(file): 1570384 kB
Inactive(file): 215056 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 7548924 kB
SwapFree: 7548924 kB
Dirty: 116 kB
Writeback: 0 kB
AnonPages: 6172696 kB
Mapped: 47400 kB
Shmem: 652 kB
Slab: 255468 kB
SReclaimable: 225620 kB
SUnreclaim: 29848 kB
KernelStack: 1736 kB
PageTables: 18780 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 40536072 kB
Committed_AS: 6455352 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 247288 kB
VmallocChunk: 34359487760 kB
HardwareCorrupted: 0 kB
AnonHugePages: 2586624 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 10240 kB
DirectMap2M: 67098624 kB
答え1
私の問題を見つけたと思います...
私の問題はVMwareのメモリ拡張システムのようです。デフォルトでは、これは、ホストシステムがゲストオペレーティングシステムにメモリ圧力を加えて、他のホストが大量のメモリを使用し始めたときにゲストメモリクォータを消費する方法です。
http://www.vfrank.org/2013/09/18/understanding-vmware-ballooning/
VMware を使用している場合は、次のコマンドを実行します。
vmware-toolbox-cmd stat balloon
これは膨らんだメモリ量を示しています。
私のため
#:vmware-toolbox-cmd stat balloon
32425 MB
他のソース:https://serverfault.com/questions/660080/Detect-memory-ballooning-from-within-the-affected-vm
問題を確認するには、拡張メモリをオフにしてください。
非対話メモリ:https://serverfault.com/questions/528295/unballooning-ram-thats-been-ballooned-by-vmware