メモリが上限に達しましたが、このメモリを使用しているプロセスがトップに表示されません

メモリが上限に達しましたが、このメモリを使用しているプロセスがトップに表示されません

2GB の RAM を搭載し、CentOS を使用する MediaTemple の DV 管理サーバー上で実行されているサーバーがあります。コマンドを実行すると、free -m次のようになります。

             total       used       free     shared    buffers     cached
Mem:          2048       1948         99          0          0        140
-/+ buffers/cache:       1808        239
Swap:         1536        288       1247

しかし、どのプロセスがメモリを使用しているかを調べようとするとtop、次のようになります。

1417 mysql     20   0  496m 496m 7512 S  1.3 24.3  42:10.92 mysqld                                                                                                                                         
 3259 okgo      20   0 49436  48m  11m S  0.0  2.4   0:21.96 php-cgi                                                                                                                                        
 3175 root      20   0 49144  47m 3196 S  0.0  2.3   0:01.80 spamd                                                                                                                                          
 3176 popuser   20   0 46940  45m  992 S  0.0  2.2   0:00.00 spamd                                                                                                                                          
 3269 okgo      20   0 44372  43m  10m S 19.2  2.1   0:02.11 php-cgi                                                                                                                                        
 3272 okgo_for  20   0 23808  23m  10m S  0.0  1.1   0:00.79 php-cgi                                                                                                                                        
27161 root      20   0 10816  10m 9460 S  0.0  0.5   0:01.97 httpd                                                                                                                                          
  786 root      20   0  4844 4844 2140 S  0.0  0.2   2:28.96 newrelic-daemon                                                                                                                                
 1017 apache    20   0  4552 4552 2228 S  0.0  0.2   0:01.38 httpd                                                                                                                                          
 3277 postfix   20   0  4432 4432 2548 S  0.0  0.2   0:00.00 trivial-rewrite    

free -mここで私を混乱させているのは、コマンドがこのメモリがキャッシュされていないことを示しているように見えるという事実です。つまり、-/+ buffers/cache行には 1827 が使用されていることも示されています。ここで何を見逃しているのでしょうか?

編集

リクエストに応じて、/proc/meminfo の出力を以下に示します (free -m と矛盾しているようです)。

MemTotal:        2097152 kB
MemFree:           55808 kB
Cached:           158656 kB
Buffers:               0 kB
Active:           368924 kB
Inactive:         428580 kB
Active(anon):     273480 kB
Inactive(anon):   365368 kB
Active(file):      95444 kB
Inactive(file):    63212 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       1572864 kB
SwapFree:        1277160 kB
Dirty:                68 kB
Writeback:             0 kB
AnonPages:        638848 kB
Shmem:              4424 kB
Slab:            1243780 kB
SReclaimable:    1222584 kB
SUnreclaim:        21196 kB

また、この郵便受け状況を明らかにするかもしれませんが、ここでの /proc/meminfo は、メモリの使用率が非常に高いことを示していますが、これは top には表示されていません。

答え1

スラブはカーネルが使用するメモリであり、現時点では約1.2GBで、出力は次のように与えられる。無料どこで使用されているかをより詳しく調べるには、スラブトップ指示。

PS システムに多数のファイルがあり、それらの読み取り/書き込みが頻繁に行われる場合に大量のスラブ メモリが使用される最も一般的なシナリオの 1 つです。この場合、大量のメモリが inode 情報のキャッシュに使用されます。このキャッシュは多少調整できますが、パフォーマンスが低下します。

関連情報