我在小型嵌入式 ARM 系统上使用 BusyBox。我正在尝试读取“顶部”输出,特别是列出的 Python 进程。该进程使用了多少实际内存?另外,VSZ 代表什么?该系统只有 64MB RAM。
内存:已用 41444K,空闲 20572K,0K 碎片,0K buff,18728K 缓存 CPU: 3% usr 3% sys 0% nic 92% 空闲 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
答案1
VSZ
(或者VIRT
,取决于 的版本top
)是映射到进程地址空间的内存量。它包括由进程的可执行文件和共享库、其堆和堆栈以及它映射的其他任何内容支持的页面。
在您显示的示例输出中,虚拟大小大于系统上的物理内存量,因此进程地址空间中的某些(大多数!)页面实际上并不存在于 RAM 中。这不是问题:许多程序包含大量代码并映射大量共享库,但它们实际上只使用该代码的某些部分,或者至少同时只使用该代码的某些部分,这使得内核可以放弃每当不使用它们时,或者甚至从不首先加载它们时,都会从内存中取出未使用的部分。
您的版本top
似乎没有显示一RES
列,该列会告诉您进程地址空间中当前驻留在 RAM 中的内存量。