gpt4 book ai didi

Java VisualVM CPU 使用率和处理器亲和性

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:27 26 4
gpt4 key购买 nike

根据我今天的经验,我发现 Oracle 的 Java VisualVM 将 cpu 使用率显示为总机器内核的百分比,即使被监视的 JVM 在操作系统中设置了有限的进程亲缘关系也是如此。这是在“监视器”选项卡中。

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

您能否确认您在其他操作系统或一般情况下观察到相同情况?

有没有办法让 VisualVM 在显示 CPU 使用率时只考虑关联分配的核心?

最佳答案

根据 VisualVM source code , CPU 使用率确实计算为总 CPU 时间除以处理器数量:

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

其中 processorsCount 是从 OperatingSystemMXBean 获得的:

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

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

大约一个月前,这个错误终于被解决了。但是,此修复仅适用于 JDK 9。

this question可能的解决方法。虽然它们有点丑。

关于Java VisualVM CPU 使用率和处理器亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35802052/

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