我們在同一臺服務器上部署兩個ActivePivot實例(互相關)。如何將ActivePivot實例綁定到物理內核
服務器有12個邏輯核心。我們有ActivePivot實例A的4內核許可證和ActivePivot實例B的2內核許可證。
我們如何確定兩個實例各自使用自己的內核(而不是低效共享相同的內核)?
我們在同一臺服務器上部署兩個ActivePivot實例(互相關)。如何將ActivePivot實例綁定到物理內核
服務器有12個邏輯核心。我們有ActivePivot實例A的4內核許可證和ActivePivot實例B的2內核許可證。
我們如何確定兩個實例各自使用自己的內核(而不是低效共享相同的內核)?
ActivePivot在JVM中運行,因此您可以通過將承載ActivePivot實例的JVM進程綁定到一組內核來完成此操作。
所有操作系統都有命令將進程綁定到Windows中的核心/親和性(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?的討論)。