繁体   English   中英

Java VisualVM CPU使用率和处理器关联性

[英]Java VisualVM CPU usage and processor affinity

根据我今天的经验,即使受监视的JVM在OS中设置的进程亲和力有限,Oracle的Java VisualVM仍将CPU使用率显示为占整个计算机内核的百分比。 这是在“监视”选项卡中。

taskset (在Linux,Ubuntu上)限制受监视的jvm,当允许该jvm的处理器在htop利用率接近100%时,VisualVM中显示的cpu百分比显然等于cpus的总数除以允许的处理器数到受监控的JVM。 因此,秤的分辨率对于这种情况是不足的。

您能否确认您在其他操作系统上或总体上也观察到了同样的情况?

显示cpu使用情况时,是否有一种方法仅将VisualVM帐户用于关联性分配的核心?

根据VisualVM源代码 ,CPU使用率的确计算为总CPU时间除以处理器数量:

    long processCpuTime = tracksProcessCpuTime ?
        model.getProcessCpuTime() / processorsCount : -1;

OperatingSystemMXBean获得processorsCount的位置:

    OperatingSystemMXBean osbean = mxbeans.getOperatingSystemMXBean();
    if (osbean != null) processorsCount = osbean.getAvailableProcessors();

有一个长期存在的JVM错误JDK-6515172 ,未考虑进程亲和性,即,无论任务集如何, getAvailableProcessors总是返回CPU的总数。 这是特定于Linux和BSD的; 在Solaris和Windows上正常工作。

大约一个月前,此错误终于得到解决。 但是,此修复程序仅适用于JDK 9。

查看此问题以获取可能的解决方法。 他们虽然有些丑陋。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM