限制可用的处理器

时间:2009-06-04 09:03:23

标签: java linux cpu-usage

我在使用Solaris时遇到了一个问题,我希望限制Java可以看到的CPU数量(由Runtime.getRuntime().availableProcessors()返回。我以为我有了它,我得到了一些关于Linux的信息我被告知使用taskset将限制java将使用的CPU数量(这是真的,它确实如此),但它不会改变availableProcessors()返回的内容。< / p>

我已经搜索了很多,以找到一些更改此availableProcessors()返回值的方法,但我还没有设法找到任何内容。有没有人知道限制它的方法或为什么taskset -c 0,1 java -cp ./ Test不起作用。

Test.java

public class Test {
  public static void main(String args[]) {
    System.out.println(Runtime.getRuntime().availableProcessors());
  }
}

干杯

1 个答案:

答案 0 :(得分:-1)

任务集在这里不起作用就不足为奇了,因为它是一个设置调度程序参数的命令,而availableProcessors()没有任何理由来查询调度程序。

请注意,在您的示例中,taskset不仅限制您使用两个处理器;它限制你使用两个特定的处理器(0和1)。

我想知道你是否可以使用横切(AOP)或字节码生成来包装availableProcessors()调用?