什么是检查内核空间和用户空间内存的linux命令行

时间:2013-07-03 09:23:32

标签: linux command-line

我需要找到内核空间的RAM使用情况和使用的用户空间内存。看到了

  

cat / proc / meminfo

我无法找到确切的细节。是否有任何命令行来查找内核空间和使用的用户空间内存的RAM使用情况。

2 个答案:

答案 0 :(得分:7)

尝试:

sudo slabtop

sudo cat /proc/slabinfo

这些应该为您提供足够的信息来估计内核总内存消耗。

您可以阅读有关内核和用户空间内存here的更多信息。

答案 1 :(得分:1)

你能详细说明一下这个上下文中“内核”是什么意思吗?你为什么要把它与系统的其他部分分开?

您可以使用

cat /proc/meminfo

free -m

了解一般的内存使用情况。通常,“可用内存”将是进程在不久的将来可以获取的最大RAM量,如果请求更多,则系统将减速。另请注意,使用所有“可用内存”还需要牺牲所有磁盘缓存,这将使未来的磁盘访问速度变慢。

用于缓冲区/缓存的内存(现在同样的事情,但历史上Linux有这些需求的单独内存区域)可以用sudo slabtop -sc检查 - 显示缓冲区/缓存(“slab缓存”)的使用和活动使用百分比(您可以将其视为缓存命中率)。如果占用大多数RAM的项目具有高“USE”百分比,则内核工作正常。

如果你真的想谈论“内核内存使用”,你必须决定内核模块,页表,TCP / IP接收缓冲区,磁盘缓存等是否是你感兴趣的内存的一部分。就个人而言,我真的不在乎某件作品是技术上的内核过程还是用户模式过程 - 如果工作系统需要它,它仍然需要保留。

内核使用的一种解释:

grep Memory: /var/log/dmesg | \
  grep -E -o '[0-9]+K (kernel code|data|rwdata|rodata|init)' &&
awk '{print $2/1024 "K " $1 }' /proc/modules | sort -hr

示例输出:

8198K kernel code
1290K rwdata
3940K rodata
1428K init
1764K i915
1192K xfs
1068K btrfs
572K kvm
...

另见: