如何解释busybox“top”输出?

Sea*_*abs 8 linux top arm busybox

我在小型嵌入式 ARM 系统上使用 BusyBox。我正在尝试读取“顶部”输出,特别是对于列出的 Python 进程。这个进程使用了​​多少实际内存?还有 VSZ 代表什么?该系统只有 64MB 的 RAM。

内存:已使用 41444K,可用 20572K,0K 碎片,0K buff,18728K 缓存
CPU:3% usr 3% sys 0% nic 92% idle 0% io 0% irq 0% sirq
平均负载:0.00 0.04 0.05 1/112 31667
  PID PPID 用户状态 VSZ %VSZ %CPU 命令
  777 775 python S 146m 241% 3% /usr/bin/python -u -- dpdsrv.py

Cel*_*ada 6

VSZ(或者VIRT,取决于 的版本top)是映射到进程地址空间的内存量。它包括由进程的可执行文件和共享库、其堆和堆栈以及它已映射的任何其他内容支持的页面。

在您显示的示例输出的情况下,虚拟大小大于系统上的物理内存量,因此进程地址空间中的某些(大多数!)页面在物理上并不存在于 RAM 中。这不是问题:许多程序包含大量代码并映射大量共享库,但它们实际上只使用该代码的某些部分,或者至少同时只使用该代码的某些部分,这允许内核丢弃不使用时从内存中取出未使用的部分,甚至从一开始就从不加载它们。

您的版本top似乎没有显示一RES列,它会告诉您进程地址空间中有多少内存当前驻留在 RAM 中。