我在使用ps aux命令时想出了这个问题。在这里我可以看到一些进程在0%CPU 0%MEM 0 VSZ 0 RSS。
如果一个守护进程没有使用任何内存,为什么以及如何…
虽然让Jean-Baptiste的答案是正确的,但我相信在这种情况下更重要的是,你注意到的所有三个字段进程中的所有0个内存都是内核线程。它们的内存是所有内核内存,并不会显示在顶部或ps。您可以通过括号括起来的命令以及VSZ列中不占用内存的进程来判断它是Linux上的内核线程。 (这是代表基本上可以被视为进程内存的所有内容的列。内核线程只有0,这只是因为它们没有正确报告内存。
另请注意,2018年的开始时间不超过1分41秒,这些工作都没有真正活跃。
%MEM 可能没有在您的系统上完整记录。 AIX手册一下 ps 命令说:
%MEM
ps
%MEM 计算为工作段和代码的总和 段内存中的页面时间4(即RSS值)除以 正在使用的实内存大小,在机器中以KB为单位,为100, 四舍五入到最接近的完整百分点。此值尝试 传达进程使用的实际内存百分比。 不幸的是,像RSS一样,它往往夸大了流程的成本 即与其他进程共享程序文本。而且, 四舍五入到最接近的百分点会导致所有进程 在系统中,RSS值低于实际内存大小的0.005倍 %MEM为0.0。
计算为工作段和代码的总和 段内存中的页面时间4(即RSS值)除以 正在使用的实内存大小,在机器中以KB为单位,为100, 四舍五入到最接近的完整百分点。此值尝试 传达进程使用的实际内存百分比。 不幸的是,像RSS一样,它往往夸大了流程的成本 即与其他进程共享程序文本。而且, 四舍五入到最接近的百分点会导致所有进程 在系统中,RSS值低于实际内存大小的0.005倍 %MEM为0.0。
正如您可能通过检查输出所怀疑的那样,已经应用了一些舍入。因此,如果该值太低,则打印%0.0。
并且,这测量实际内存使用的百分比,这意味着它不反映进程的大小,而只反映进程的哪个部分实际映射到实际内存。
在你的第一种情况下,CPU的%0.0仅表示该进程存在但实际上什么也没做,它可能处于等待状态(或消耗很小的处理能力),而不是“它当前没有使用” 。在你的第二种情况下,你的过程是活跃的,它实际上非常繁忙(这就是它 %97.7 反映),但它做的是愚蠢的(无限循环无所事事)。
%97.7
要了解所有这些,您可以阅读有关进程状态,进程调度和虚拟内存的信息。