我正在研究 Java 中的一些代码(SOR 算法和 LU 分解)。主要目标是研究在 NUMA 感知架构中执行此类算法的影响。我已经找到了一些工具,例如numactl和其他关联环境变量。例如:GOMP_CPU_AFFINITY (GCC)和KMP_AFFINITY (ICC)使用 C 中的相同算法将线程固定到内核。但是我不知道在 Java 中研究 NUMA 有什么替代方法。对于 Java,我只使用numactl并使用--interleave=all标志来提高性能,但我并不能真正控制 JVM 级别中发生的事情。
我发现了另一个名为numastat的工具,它应该测量 NUMA 架构中的“NUMA 计数器”,并且知道 NUMA 节点中的“命中”(numa_hit)和“未命中”(numa_miss)的分配。但是我不确定如何使用它来测量我的 Java 应用程序中的计数器。为了研究 NUMA 在 Java 应用程序中的影响,我应该执行什么样的测试(和编程技术)?
谢谢你的帮助。