首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java VisualVM CPU的使用和处理器关联

Java VisualVM CPU的使用和处理器关联
EN

Stack Overflow用户
提问于 2016-03-04 17:14:00
回答 1查看 3.4K关注 0票数 8

在我今天的经验中,我发现Oracle显示的cpu使用量占整个机器核心的百分比,即使在被监视的JVM在操作系统中有一个有限的进程关联集时也是如此。这是在“监视器”选项卡中。

使用taskset (在linux上)限制受监视的jvm,当允许该jvm的处理器在htop中接近100%的利用率时,VisualVM中显示的cpu百分比显然等于cpu总数除以被监视jvm所允许的处理器数量。因此,这个比额表的分辨率不足以应付这一情况。

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

在显示cpu使用情况时,是否有一种只为关联分配的核心设置VisualVM帐户的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-12 01:06:15

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

代码语言:javascript
复制
    long processCpuTime = tracksProcessCpuTime ?
        model.getProcessCpuTime() / processorsCount : -1;

其中processorsCount是从OperatingSystemMXBean获得的

代码语言:javascript
复制
    OperatingSystemMXBean osbean = mxbeans.getOperatingSystemMXBean();
    if (osbean != null) processorsCount = osbean.getAvailableProcessors();

有一个由来已久的JVM bug JDK-6515172,没有考虑进程亲缘关系,也就是说,不管任务集如何,getAvailableProcessors总是返回CPU的总数。这是Linux和BSD特有的;在Solaris和Windows上正常工作。

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

看看这个问题,看看可能的解决办法。不过,他们还是有点丑。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35802052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档