一,工具简介
cpudist会将任务在CPU上的时间汇总为直方图,显示任务在被取消调度之前在CPU上花费的时间。这提供了有价值的信息,可以指示过度订阅(处理器太少而任务太多)、由于过多上下文切换而产生的开销(例如,多个线程共用的常见锁)、工作负载分布不均、任务过于细化等。
默认情况下,通过简单地排除PID 0,CPU的空闲时间被排除在外。
另外,同样的选项也可用于汇总任务的离CPU时间,这有助于理解线程被取消调度的频率以及它们在等待I/O、锁、计时器和其他挂起原因上所花费的时间。
二,代码示例
#!/usr/bin/env pythonfrom __future__ import print_function
from bcc import BPF
from time import sleep, strftime
import argparseexamples = """examples:cpudist # summarize on-CPU time as a histogramcpudist -O # summarize off-CPU time as a histogramcpudist 1 10 # print 1 second summaries, 10 timescpudist -mT 1 # 1s summaries, milliseconds, and timestampscpudist -P # show each PID separatelycpudist -p 185 # trace PID 185 onlycpudist -I # include CPU idle timecpudist -e