Linux内存报告差异

我正在获得meminfo和ps之间的内存使用差异.自由报告的利用记忆少于根据ps明显使用的进程.

据免费,我只有3188mb免费:

free -m
             total       used       free     shared    buffers     cached
Mem:         15360      13273       2086          0         79       1022
-/+ buffers/cache:      12171       3188
Swap:            0          0          0

我尝试使用ps(在非0 RSS值以下剪辑)来追踪内存的位置:

ps -A --sort -rss -o comm,pmem,rss

COMMAND         %MEM   RSS
mysqld          13.1 2062272
java             6.2 978072
ruby             0.7 114248
ruby             0.7 114144
squid            0.1 30716
ruby             0.0 11868
apache2          0.0 10132
apache2          0.0  9092
apache2          0.0  8504
PassengerHelper  0.0  5784
sshd             0.0  3008
apache2          0.0  2420
apache2          0.0  2228
bash             0.0  2120
sshd             0.0  1708
rsyslogd         0.0  1164
PassengerLoggin  0.0   880
ps               0.0   844
dbus-daemon      0.0   736
sshd             0.0   736
ntpd             0.0   664
squid            0.0   584
cron             0.0   532
ntpd             0.0   512
exim4            0.0   504
nrpe             0.0   496
PassengerWatchd  0.0   416
dhclient3        0.0   344
mysqld_safe      0.0   316
unlinkd          0.0   284
logger           0.0   252
init             0.0   200
getty            0.0   120

然而,这并没有什么意义,因为添加RSS列会导致只有3287mb的总内存使用,应该离开几乎12gb的免费!

我在Amazon AWS上使用内核2.6.16.33-xenU#2 SMP x86_64.

我的记忆在哪里?任何人都可以看出如何跟踪这一点吗?

检查Slab缓存(Slab :, SReclaimable:和SUnreclaim:in / proc / meminfo)的用法.这是一个内核数据结构的缓存,与免费报告的页面缓存分开.

如果slab缓存对于“缺少内存”的大部分是可重用的,请检查/ proc / slabinfo以查看它在哪里.如果是dentries或inode,可以使用sync;回波2> / proc / sys / vm / drop_caches来摆脱它们.

您还可以使用slabtop工具以友好格式显示Slab缓存的当前使用情况. c将按照当前缓存大小对列表进行排序.

相关文章
相关标签/搜索