gpt4 book ai didi

java - 我没有得到百分比 linux java 的 cpu 负载

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:32 25 4
gpt4 key购买 nike

嗨,我正在尝试获取 CPU 负载,但我得到的每个值超过 100% 不明白我在做什么错......

因为我使用的是 core i3,上面有两个虚拟机和一个虚拟机,所以我正在执行此任务,我的源代码是,

public class PerformanceMonitor {

static long lastSystemTime = 0;
static long lastProcessCpuTime = 0;
public static int availableProcessors = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
// public static int availableProcessors = Runtime.getRuntime().availableProcessors();
public synchronized double getCpuUsage()
{
ManagementFactory.getThreadMXBean().setThreadCpuTimeEnabled(true);
if ( lastSystemTime == 0 )
{
baselineCounters();
// return ;
}

long systemTime = System.nanoTime();
long processCpuTime = 0;

processCpuTime = ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime();
double cpuUsage = (double) (processCpuTime - lastProcessCpuTime ) / ( systemTime - lastSystemTime )*100.0;

lastSystemTime = systemTime;
lastProcessCpuTime = processCpuTime;

return cpuUsage / availableProcessors;
}

private void baselineCounters()
{
lastSystemTime = System.nanoTime();

lastProcessCpuTime = ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime();
}



}

我在我的代码中使用了这个类,

  public static void main(String[] args) {

monitor = new PerformanceMonitor();
for(int i=0 ; i<10000 ; i++){
start();
double usage = monitor.getCpuUsage();
if(usage!=0)System.out.println("Current CPU usage in pourcentage : "+usage);
}
}

private static void start() {
int count=0;
for(int i=0 ; i<100000 ; i++){
count=(int) Math.random()*100;
}
}
}

我得到这样的输出,

Current CPU usage in pourcentage : 114.32926829268293
Current CPU usage in pourcentage : 48.70208931963182
Current CPU usage in pourcentage : 193.08746862328633
Current CPU usage in pourcentage : 236.85457129322594

希望得到您的建议在此先感谢

最佳答案

我怀疑间隔太短了。 linux 上的 cpu 计数器每秒仅更新 100 次,您可能会在大约 1/100 秒内执行循环,这意味着您会遇到非常大的错误。尝试增加循环的长度,使其达到几秒钟。


我延长了测试时间并删除了 /availableProcessors,我得到了这样的数字

Current CPU usage in percentage : 99.95763231535723
Current CPU usage in percentage : 99.94895863534565
Current CPU usage in percentage : 99.40642907762789
Current CPU usage in percentage : 99.96184668521532
Current CPU usage in percentage : 99.89017532820115
Current CPU usage in percentage : 99.91157680329947
Current CPU usage in percentage : 99.96919753553432
Current CPU usage in percentage : 99.94121334997978

关于java - 我没有得到百分比 linux java 的 cpu 负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9614649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com