内核有点用词不当。Linux内核由多个进程/线程+模块(lsmod
)组成,因此要获得完整的图片,您需要查看整个过程,而不仅仅是一个组件。
顺便说一句我的节目slabtop
:
Active / Total Size (% used) : 173428.30K / 204497.61K (84.8%)
手册页slabtop
也有这样的说法:
slabtop统计信息标头跟踪正在使用的slab字节数,而不是对物理内存的度量。/ proc / meminfo文件中的'Slab'字段正在跟踪有关已使用的Slab物理内存的信息。
删除缓存
按照您的问题下的注释中@derobert的 建议删除我的缓存对我有以下好处:
$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$
Active / Total Size (% used) : 61858.78K / 90524.77K (68.3%)
发送3将执行以下操作:免费的页面缓存,牙科和inode。我将在标题为“ U&L”的U&L问答中对此进行更多讨论:是否有任何方法或工具可以转储内存缓存和缓冲区?“。因此,仅维护有关页面缓存,牙科和索引节点的信息就占用了我110MB的空间。
附加信息
那么我的内核使用了多少RAM?
这张照片对我来说有点模糊,但是这是我“认为”的一些事情。
平板
我们可以使用此技术获得Slab使用情况的快照。本质上,我们可以从中提取此信息/proc/meminfo
。
$ grep Slab /proc/meminfo
Slab: 100728 kB
模组
另外,我们可以通过从以下位置获取这些值来获取内核模块的大小值(不清楚它是从磁盘上还是在RAM中时确定的)/proc/modules
:
$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758
Slabinfo
可在以下proc结构中访问有关SLAB的许多详细信息/proc/slabinfo
:
$ less /proc/slabinfo | head -5
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_ffff8801f2b30000 0 0 320 25 2 : tunables 0 0 0 : slabdata 0 0 0
fuse_request 100 125 632 25 4 : tunables 0 0 0 : slabdata 5 5 0
fuse_inode 21 21 768 21 4 : tunables 0 0 0 : slabdata 1 1 0
Dmesg
当系统启动时,会有一行报告Linux内核在加载后的内存使用情况。
$ dmesg |grep Memory:
[ 0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)
参考文献