OperatingSystemMXBean getSystemCpuLoad和getProcessCpuLoad值

时间:2016-07-17 12:34:19

标签: java linux centos cpu-usage

我有一个java程序,大多数时候需要大约5-10%的cpu。我使用OperatingSystemMXBean.getProcessCpuLoad

获取此信息

有时OperatingSystemMXBean.getProcessCpuLoad会返回大约0.7-0.8(70-80%)和OperatingSystemMXBean.getSystemCpuLoad = 1(100%)的值。

最初我虽然我的程序中有一个小问题需要这么多cpu,但是当我在linux控制台中检查top命令时,java进程大约是5-6%。

现在这是奇怪的部分。在Linux控制台中我做:

sar -u 2 5

我得到了

07:33:10 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
07:33:12 AM     all      2.02      0.00      1.01     96.46      0.51      0.00
07:33:14 AM     all      1.52      0.00      1.02     96.95      0.51      0.00
07:33:16 AM     all      8.16      0.00      2.04     89.29      0.51      0.00
07:33:18 AM     all      7.07      0.00      9.60     82.32      1.01      0.00
07:33:20 AM     all      4.57      0.00      0.51     94.42      0.51      0.00
Average:        all      4.67      0.00      2.84     91.89      0.61      0.00

空闲率为0%; OperatingSystemMXBean.getSystemCpuLoad计算如下:100-idle

现在如果我杀了一个进程(无论什么进程都没关系),例如我重新启动nginx,它消耗大约1%的cpu。

service nginx restart

正在运行sar -u 2 5

会得到以下结果

07:34:49 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
07:34:51 AM     all      4.04      0.00      1.52      0.00      0.51     93.94
07:34:53 AM     all      1.02      0.00      0.51      0.51      0.51     97.46
07:34:55 AM     all      2.53      0.00      1.52      0.00      0.00     95.96
07:34:57 AM     all      2.51      0.00      2.01      1.01      1.01     93.47
07:34:59 AM     all      3.54      0.00      2.53     20.71      0.51     72.73
Average:        all      2.73      0.00      1.62      4.44      0.51     90.71

空闲率约为90%,然后OperatingSystemMXBean.getProcessCpuLoadOperatingSystemMXBean.getSystemCpuLoad恢复正常值,约为5-10%;

我使用nginx作为例子,你可以杀死任何其他进程,效果是一样的。我没有运行任何cpu饥饿进程。所有进程都是1-2%cpu,java进程是最饥饿的进程,但不超过10-12%,平均值为5-6%。

关于getSystemCpuLoad的官方文档:https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/OperatingSystemMXBean.html#getSystemCpuLoad--

我有什么遗失的吗?

我正在使用CentOS 6.5

0 个答案:

没有答案