Java: Cores available to the JVM?

2019-04-07 17:59发布

In Java there's the method Runtime.getRuntime().availableProcessors() which has the following Javadoc:

Returns the number of processors available to the Java virtual machine. This value may change during a particular invocation of the virtual machine.

How can the value actually change? Under what circumstances would there be less processors available to the JVM than physically installed for example?

Jonas

4条回答
该账号已被封号
2楼-- · 2019-04-07 18:28

In Windows it's possible to change the number of cores an application is allowed to use via some simple properties. In virtualized environments you can also restrict cores to the VM so you only see the cores the VM sees. And in Linux/Unix you can set core affinity so that applications or users can't use all the cores so it's possible that you may have more cores installed than are visible to the JVM.

Note: this is useful for machines running multiple jobs where you don't want high resource contention and you want to underprovision (or even overprovision) resources.

查看更多
Deceive 欺骗
3楼-- · 2019-04-07 18:34

The Linux command taskset(1) can be used to force processes to use a specific CPU or specific sets of CPUs; it is pretty easy to modify a running program to force it to one or more processors. For example,

taskset -p `pidof java` --cpu-list 0,5,7,9-11
查看更多
Anthone
4楼-- · 2019-04-07 18:39

You can customize the resources available to the java applications with options on the java command. I actually don't know the exact name of the switches but you can customize a bunch of stuff.

Why would you give less processors to an instance of the JVM? It depends! maybe you're hosting tomcats and want to distribute resources available to your customers.

Hope this helps.

查看更多
Evening l夕情丶
5楼-- · 2019-04-07 18:45

On some hardware (servers), it is possible to hotswap processors without rebooting the system. This may cause the number of processors to change. Although a more common cause is when the sysadmin changed the processor scheduling policy.

查看更多
登录 后发表回答