Is it possible to force an existing Java application to use no more than x cores?

后端 未结 2 1581
渐次进展
渐次进展 2020-12-01 07:37

We are benchmarking existing Java programs. They are threaded applications designed to benefit from multi-core CPUs. We would like to measure the effect of the number of cor

相关标签:
2条回答
  • 2020-12-01 08:21

    Turn the problem upside down; instead of figuring out how to restrict the application to only use n cores on an m core machine, figure out how to make sure there are only n cores available to your application. You could write a very simple program that eats up one core by doing something like while (true); and start m-n instances of that program running at the highest priority, thus ensuring that your code only has n cores available.

    Alternatively, if your BIOS or OS allows disabling CPU cores, that works out too. I know CHUD tools on Mac OS X used to do it, but I haven't touched those tools since the G5 era, so that might not work anymore.

    0 讨论(0)
  • 2020-12-01 08:22

    It's called setting CPU affinity, and it's an OS setting for processes, not specific to Java.

    On Linux: http://www.cyberciti.biz/tips/setting-processor-affinity-certain-task-or-process.html

    On Windows: http://www.addictivetips.com/windows-tips/how-to-set-processor-affinity-to-an-application-in-windows/

    On Mac it doesn't look like you can set it: https://superuser.com/questions/149312/how-to-set-processor-affinity-on-os-x

    0 讨论(0)
提交回复
热议问题