获知Linux的进程运行在哪个CPU内核上的方法
当你在 多核 NUMA 处理器上运行需要较高性能的 HPC(高性能计算)程序或非常消耗网络资源的程序时,CPU/memory 的亲和力是限度其发挥最大性能的重要因素之一。在同一 NUMA 节点上调度最相关的进程可以减少缓慢的远程内存访问。像英特尔 Sandy Bridge 处理器,该处理器有一个集成的 PCIe 控制器,你可以在同一 NUMA 节点上调度网络 I/O 负载(如网卡)来突破 PCI 到 CPU 亲和力限制。
作为性能优化和故障排除的一部分,你可能想知道特定的进程被调度到哪个 CPU 内核(或 NUMA 节点)上运行。
这里有几种方法可以 找出哪个 CPU 内核被调度来运行给定的 Lux 进程或线程。
方法一
如果一个进程使用 taskset 命令明确的被固定(pned)到 CPU 的特定内核上,你可以使用 taskset 命令找出被固定的 CPU 内核
复制代码
$ taskset -c -p <pid>
例如, 如果你对 PID 5357 这个进程有兴趣:
复制代码