我正在对同一应用程序的多个实例进行应用程序基准测试。我发现将它们的进程(在 Linux 下使用 sched_setaffinity,在 Windows 下使用 TaskManager)固定到特定 CPU 可以提高性能。所以我会:
* whatever.exe pinned to CPU 1
* whatever.exe pinned to CPU 2
* whatever.exe pinned to CPU 3
* whatever.exe pinned to CPU 4
每个 whatever.exe 都有自己的缓冲区和堆内存。我想避免 CPU 1 上的进程必须访问 CPU 2 上的 RAM,因为对于英特尔的核心微架构,这需要 QPI 跳转到下一个处理器。
在 Windows 下如何确定进程正在使用哪个 CPU 的 RAM?在 Linux 下如何做到这一点?
我正在考虑这样的答案:“进程 X 的 RAM 从物理 RAM 地址 Y 到 Z,而 CPU A 直接连接到从地址 B 到 C 的 RAM”。
是否有一个 Windows 工具可以得到这种答案?