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



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

cat/proc/meminfo

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

尝试:

sudo slabtop

sudo cat /proc/slabinfo

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

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

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

您可以使用

cat /proc/meminfo

free -m

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

用于缓冲区/缓存的内存(现在是一样的,但历史上 Linux 有单独的内存区域来满足这些需求(可以用 sudo slabtop -sc 来检查——它显示缓冲区/缓存("平板缓存"(使用情况和活动使用百分比(你可以认为这是缓存命中率(。如果占用最多 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
...

另请参阅:

  • https://unix.stackexchange.com/a/97265/20336
  • 每个 TCP/IP 网络连接的 Linux 内核消耗多少内存?

最新更新