我试图通过查看 Linux 中 Top 的输出来确定程序的 CPU 使用率。我知道 %us 表示用户空间,%sy 表示系统/内核等。但是,如果我看到 100%us。这是否意味着 CPU 实际上只在做有用的工作?如果 CPU 被占用以等待不可用的资源或缓存未命中,它是否也会显示在 %us 列或任何其他列中?
谢谢。
答案1
正如特拉维斯指出的那样,这是一个棘手的问题,而且实际上取决于定义什么是有用的工作 - 但这更像是一个学术问题。
我认为这可能是计算用户空间中运行的总 CPU 周期百分比,这些周期未处于空闲状态。只要程序在等待某些资源时进入休眠状态,它就不会消耗 CPU。
如果由于某种原因它不能做到这一点,top 会以 %wa 的形式告诉您专门等待 IO 的时间百分比。
简短回答:100% 中的 %us 可能包含一些繁琐的工作,但确切数量取决于您拥有的处理器类型、您正在运行的软件类型以及其他十几个因素。要了解 top 告诉您的全部内容,您可能需要查看源代码(幸运的是,源代码是免费提供的)。