在某些目的中,需要JVM考虑它在具有N核心的机器上运行而不是真实数量的核心(例如4核心而不是核心16).
JVM 在一些基于Mandriva/Red Hat Linux核心的Linux版本下运行.
这个问题是边缘情况,因为我期待这个问题的各种解决方案.这不是纯粹的linux管理问题,也不是纯粹程序员的问题.
所以...任何想法?
你碰巧知道解释为什么java安全管理器不禁止创建新线程或启动它们吗?新的FileWriter在安全管理器下,但新的Thread()和threadInstance.start()都不是更安全的安全管理器,并且可以调用.
我正在使用numactl,使用--physcpubind选项.手册说:
--physcpubind=cpus, -C cpus
Only execute process on cpus. Etc...
Run Code Online (Sandbox Code Playgroud)
假设我有NUMA系统,有3个NUMA节点,每个节点有4个核心.NUMA节点0具有0,1,2,3作为核心编号.NUMA节点1具有4,5,6,7,NUMA节点2具有8,9,10,11.我的问题是让我说我按如下方式运行程序:
export OMP_NUM_THREADS=6
numactl --physcpubind=0,1,4,5,8,9 ./program
Run Code Online (Sandbox Code Playgroud)
即我将用6个线程运行我的程序,我要求它们在CPU核心0,1,4,5,8,9上.例如,如果在程序期间的某个时刻线程0-5被分配了CPU核心0,1,4,5,8,9(setup1).是否有可能在程序执行期间的某个其他时刻线程0可能正在CPU核心9上运行,等等?即CPU内核之间会有线程迁移吗?或者线程唯一地绑定到CPU核心(如在setup1中)?谢谢.