看来当前版本的 Linux 使用调度域在 CPU、超线程、NUMA 节点等之间分配进程。
假设我想要可视化系统上存在的域,以及与它们之间的工作分配方式相关的一些统计数据。问题可能是这样的:
- 该系统上存在哪些域?
- 每个 NUMA 节点/物理核心/其他域是否得到均匀利用,或者进程是否竞争访问某些核心而其他核心未得到充分利用?
- 流程迁移的频率如何?
有哪些工具可以满足此类需求?
答案1
对于逻辑 CPU 到 NUMA 节点的排列:
lscpu
或者:
numactl --hardware
它还显示有关节点内存和节点“距离”的实时信息。
有关进程内存使用情况的一般信息:
numastat -p <PID_or_name_pattern>
从包中
numactl
。对于更复杂的工具:
numatop
(根据联机帮助页,它仅支持 Intel Xeon 和一些 IBM 处理器)
请注意,当我看到空闲核心而下一个核心却忙于工作时,我会感到非常惊讶(当然,除非您使用 cpuset 强制系统进入此状态):您可以使用简单的top
, hit1
来查看每个 CPU 的活动。
答案2
JP Lozi 为其 2016 年论文“Linux Scheduler:a Decade of Wasted Cores”制作的工具可在以下网址找到:https://github.com/jplozi/wastedcores 如果您正在寻找类似的东西。不同基准运行的各种图形输出位于 http://sfu.lozi.org/results/
我不能保证它的可用性,我没有使用过它。看起来它上次更新是针对 4.1 Linux 内核的。