如何可视化 Linux 上的调度域?

如何可视化 Linux 上的调度域?

看来当前版本的 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 内核的。

相关内容