我们在同一台服务器上部署两个ActivePivot实例(共享)。
服务器有12个逻辑核心。我们为ActivePivot实例A提供了4核许可,为ActivePivot实例B提供了2核许可。
我们怎样才能确定两个实例各自使用自己的核心(而不是低效地共享相同的核心)?
答案 0 :(得分:0)
ActivePivot在JVM中运行,因此您可以通过将托管ActivePivot实例的JVM进程绑定到一组核心来实现。
所有操作系统都有命令将进程绑定到核心,Windows中的/ affinity(http://blog.tune-up.com/windows-insights/assign-processor-affinity-to-improve-performance/)和Linux中的任务集(http://www.cyberciti.biz/faq/taskset-cpu-affinity-command/)。诀窍是将JVM进程绑定到您想要的核心集。如果在Apache Tomcat中运行ActivePivot,则意味着使用绑定命令启动Tomcat本身。
但我不打算在您的用例中强制绑定。操作系统的线程调度程序可能会很好地在两个实例之间分配线程,并防止它们隐藏在相同的物理内核上。考虑到系统的其他线程,该调度是完全动态的。
我认为手动绑定的唯一情况是针对具有NUMA架构的大型服务器。因为将JVM隐藏到NUMA节点会提高性能(请参阅How does NUMA architecture affect the performance of ActivePivot?处的讨论)。