gpt4 book ai didi

java Runtime.getRuntime().availableProcessors() 和 nproc 返回不同的值

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:15 24 4
gpt4 key购买 nike

我正在运行 Java appdocker container 里面,仅限于 4 CPU以及 docker container 所在的机器运行,有 10 CPU .

调用nproc时在docker container里面,结果我得到 4 , 但当我调用 Runtime.getRuntime().availableProcessors()我得到 10结果。

  • 为什么会这样? Java怎么来的查看全部 CPU
  • 有没有其他方式进入Java结果与 nproc 相同, 除了使用 Runtime.getRuntime().exec("nproc")

最佳答案

根据 Ken Sipe(下面的链接),Java 中存在一个错误,当使用共享 CPU(docker 中的默认设置)而不是 CPU 集(进程的固定 CPU)时,它会显示错误的 CPU/内核数。

然而,无论此设置如何,我自己都看到了错误的数字:

Runtime.availableProcessors(),没有 docker:8在 docker 中我总是得到 4,

而 nproc 说 1(当使用 --cpuset-cpus=0 <- 固定在 cpu0 上时)

参见 https://vimeo.com/138955223

关于java Runtime.getRuntime().availableProcessors() 和 nproc 返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36453298/

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