进程的CPU利用率是什么意思?
如何衡量?
有什么方法可以减少它?
我一直对这个概念感到困惑。我试图在Linux中使用'top'命令来测量使用的CPU。但是,我注意到的是,当没有其他用户进程在运行时,我的进程似乎会在I / O中没有阻塞时占用99%的CPU。但是,如果还有其他进程在运行,则达到45%或50%。当没有其他进程在运行时,进程是否可以占用99%的CPU?
方向上的任何链接或指针也会有所帮助。
答案 0 :(得分:3)
此上下文中的CPU利用率是每个进程消耗的总可用处理器周期的比例。
如果它只是计算一些冗长的计算,那么你所看到的是正常的:操作系统在要求它的进程之间公平地划分可用的100%的计算资源。
相反,如果您的程序应该等待某个事件,比如等待用户按键或输入来自网络,则听起来您的程序处于无限循环中:它从不等待任何事情但只是一直在搅拌。如果是这种情况,你应该考虑重写它,这样,当它没有工作要做时,它会等待一些东西。这可能正在等待用户按键,使数据包到达网络连接或其他任何内容。如果是这种情况,你应该寻找代码“有什么工作要做吗?不!有任何工作要做吗?不!有任何工作要做吗?不!”疯狂。如果是这种情况,您应该找到一种方法,使其使用适当的操作系统调用或库函数等待工作。
答案 1 :(得分:2)
CPU利用率基本上是(“使用CPU的时间'* 100 /'实时'),通常以较小的间隔计算。
99%意味着它只是在不等待的情况下一直处理数字。这很正常,实际上有时这就是你想要的。它等待的越少 - 计算结果的速度就越快。
当其他进程具有相同或更高的优先级时,CPU利用率下降是正常的。毕竟,只有一个CPU和一堆进程试图同时使用它,你的进程必须等到其他人完成工作,这就是CPU利用率下降的原因。
但有时CPU利用率很高。如果非关键进程在CPU使用率较高的情况下工作数小时,则其他更关键的进程无法获得公平的CPU份额并需要更长时间才能完成。对于Web服务器,这意味着较少的客户端可以使用您的服对于文件服务器,这意味着下载文件的时间会更长。在这两种情况下,真实用户都会感到不快。
因此,基本上,这取决于您的服务器正在做什么,并且您的流程对您的业务至关重要,或者不是那么重要。如果它很重要,您希望它尽可能多地占用CPU。否则尽可能少的CPU。
答案 2 :(得分:2)
程序正在运行或等待,100%或0%。当你看到一些其他数量的利用率,比如50%,这是某个时间间隔的平均值,比如秒。所以不要担心利用率百分比。你应该做的是确保它没有做任何不必绝对必须做的事情。 That's what performance tuning is about.这就是它的全部内容。
答案 3 :(得分:1)
有什么方法可以减少它?
这取决于您是否要降低CPU使用率峰值的高度或长度计算的持续时间,或两者兼而有之。
因此,如果您的应用程序使用100%CPU一分钟,您是否希望将其“减少”为“2分钟内50%”或“100%超过30秒”或“50%超过1分钟”?< / p>
这些都不同。
例如,假设你想确保一个应用程序永远不会使用双核机器超过50%的计算能力(我不是说它是一件好事,我只是给予一个例子),然后有一个非常简单的方法:你可以将你的程序的“CPU亲和力”设置为两个核心中的一个。请注意,我不建议在你的情况下这样做:我在这里说的是,为了完整起见,它存在,它有有效的用途,并且有一个原因,为什么Linux和Windows开发人员都编写了API和最终用户命令允许在每个进程的基础上设置CPU亲和性(这些功能对程序员和最终用户都是完全可用的。)
现在,如果您想减少长度计算的持续时间,您必须优化您的应用程序,以便它使用更少的资源(例如,使用最适合您的问题的算法)。
当没有其他进程正在运行时,进程是否可以接受99%的CPU?
这取决于您的要求。通常是的,它不仅可以接受,而且也很常见。
答案 4 :(得分:0)
CPU是一种资源。操作系统(例如Linux或Windows)管理此资源并确保您的所有程序都有时间公平执行。
所以你不必担心这个。