6

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

猫 /proc/meminfo

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

4

2 回答 2

11

尝试:

sudo slabtop

或者

sudo cat /proc/slabinfo

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

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

于 2013-07-03T09:34:00.160 回答
2

您能否详细说明一下在这种情况下“内核”是什么意思,为什么要将其与系统的其余部分分开?

您可以使用

cat /proc/meminfo

或者

free -m

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

用于缓冲区/缓存的内存(现在是同一件事,但历史上 Linux 有单独的内存区域来满足这些需求)可以通过sudo slabtop -sc显示缓冲区/缓存(“slab 缓存”)使用情况和活动​​使用百分比(你可以认为这是缓存命中率)。如果占用大部分 RAM 的项目具有较高的“使用”百分比,则您的内核工作正常。

如果您真的想谈论“内核内存使用”,您必须确定内核模块、页表、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
...

也可以看看:

于 2018-04-13T12:41:00.567 回答