メモリ使用量とは何ですか? [閉鎖]

メモリ使用量とは何ですか? [閉鎖]

htopとによると、free現在見ているコンピュータのRAM容量は6631/11907MBです。これは利用可能なRAMの約半分です。ところがMEM%基準でソートしてみると、最も多く使われるtopメモリhtopはMEMが0.8%のXorgだ。 gnome-settings0.3%を使用し、他の何人かは0.1%を使用します。この割合を合わせると50%未満になります。

何がメモリの約50%を使用しているのか、どうやってtop / htopにこのメモリ使用量が表示されないのですか?

出力free -mt

             total       used       free     shared    buffers     cached
Mem:         11907      10660       1246          0        650       3379
-/+ buffers/cache:       6629       5277
Swap:         3999         26       3973
Total:       15907      10686       5220

編集する:要望通り…

仮想マシン統計 1 5

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  26640 312180 695976 4229988    0    0     4    34    0    1  1  1 96  2  0   
 0  0  26640 312032 695976 4230016    0    0     0     0  157  191  0  0 100  0  0  
 0  0  26640 312156 695976 4230016    0    0     0     0  158  270  0  0 100  0  0  
 0  0  26640 312156 695976 4230016    0    0     0     0  128  189  0  0 100  0  0  
 0  0  26640 312156 695976 4230016    0    0     0     0  212  308  0  0 100  0  0  

猫/proc/meminfo

MemTotal:       12192876 kB
MemFree:          311644 kB
Buffers:          695984 kB
Cached:          4230016 kB
SwapCached:         7684 kB
Active:          1378792 kB
Inactive:        3656424 kB
Active(anon):       2192 kB
Inactive(anon):   108500 kB
Active(file):    1376600 kB
Inactive(file):  3547924 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4095992 kB
SwapFree:        4069352 kB
Dirty:                28 kB
Writeback:             0 kB
AnonPages:        102412 kB
Mapped:            52116 kB
Shmem:              1456 kB
Slab:            5584084 kB
SReclaimable:    4402760 kB
SUnreclaim:      1181324 kB
KernelStack:        3176 kB
PageTables:        17852 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    10192428 kB
Committed_AS:     678004 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      185496 kB
VmallocChunk:   34359540220 kB
HardwareCorrupted:     0 kB
AnonHugePages:     28672 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:     5177316 kB
DirectMap2M:     7403520 kB
DirectMap1G:           0 kB

答え1

問題は、複数のプロセス間で共有されるため、多くのユーティリティで考慮されていない共有メモリが原因で発生する可能性があります。smemstatユーティリティ(「共有メモリの比例メモリ使用量の報告」)を使用してこれを確認できます。

編集:カーネルはメモリの大部分を占めることができます(出力used値に含まれていますfree)。内容を見てください/proc/meminfo。 ~によるとLinuxで「失われた」メモリ使用量を追跡する、Slab + Shmem + KernelStack + PageTablesはカーネル空間を提供します。一般的に、Slabはかなり重要なようです。

他のユーザーにも同様の問題があります。

答え2

この違いには2つの可能な説明があります。

  • あなたは仮想マシンにあり、共有メモリを持っています。
  • あなたはたくさん持っています。たくさんプロセスは非常に少量のメモリを消費しますが、集約されるとはるかに多くのメモリを消費します。

最初は決定しやすく、2番目も同じです。しかし、注意すべき点は、RAMを使用する複数のプロセスを見つける必要があることです。 PS、uniq、sortが役に立ちます。

➜  ~  ps axco command | uniq -c | sort -nr | head
      2 xdg-open <defunct>
      2 mplayer
      1 zsh
      1 zsh
      1 zsh
      1 x-session-manag
      1 xprop
      1 Xorg
      1 writeback
      1 watchdog/0

これにより、悪意のあるプロセスが自分自身を呼び出してメモリを使用していることを確認できます。

答え3

すでに自由命令で答えを得ているので、

free -m
-/+ buffers/cache:       6629       5277

これは必要な行なので、この値は使用された物理メモリーなので、実際に使用可能なメモリーは5277なので表示できtopません。htop

空の最初のフィールド:

             total       used       free     shared    buffers     cached
Mem:         11907      10660       1246          0        650       3379

実際にはオペレーティングシステム(カーネル)によって予約されており、バッファなしで実際に使用されていないメモリを表示し、より多くのvmstat情報とmdb -kモジュールを確認してカーネルが使用しているメモリを確認し、命令の値を使用して計算できますfree

すでに指摘したように、メモリはカーネルによって予約(キャッシュ)され、一部のアプリケーションが要求するまでそのまま残ります。そのため、どのプロセスがそれを使用しているかを判断することはできません。

出力を提供し、cat /proc/meminfoキャッシュフィールドを提供します。これが実際にカーネルが使用するものです!

答え4

1246MBの完全に利用可能なメモリがありますが、表示される5277MBには「キャッシュ」メモリはありません。これは、オペレーティングシステムが速度を上げるためにメモリに何かを入れたことを意味します。 「中古」と呼ばれますが(つまり、「無料」の電話番号は1246です)、必要に応じて実際に使用できます。

この回答をご覧ください。`free`:出力フォーマット

関連情報