本文主要是介绍5.70 BCC工具之runqslower.py解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一,工具简介
runqslower工具显示了任务准备运行与之后在CPU上运行之间的高延迟调度时间。
该工具需要Linux 4.9+(支持BPF_PROG_TYPE_PERF_EVENT)。
二,代码示例
此脚本统计任务在运行队列中等待在CPU上运行的时间,并将此时间显示为单个事件。这个时间应该很短,但由于CPU负载,任务可能需要等待其轮次。
此脚本会统计两种类型的运行队列延迟:
1. 从任务进入运行队列到其上下文切换和执行的时间。
这通过追踪ttwu_do_wakeup()、wake_up_new_task()到finish_task_switch()的过程,
使用原始跟踪点(如果支持)或kprobes,并在自愿上下文切换后统计运行队列的延迟。
2. 从任务被非自愿上下文切换但仍处于可运行状态,到其下一次执行的时间。
这仅通过finish_task_switch()进行统计。
#!/usr/bin/env pythonfrom __future__ import print_function
from bcc import BPF
import argparse
from time import strftime# arguments
examples = """examples:./runqslower # trace run queue latency higher than 10000 us (default)./runqslower 1000 # trace run queue latency higher than 1000 us./runqslower -p 123 # trace pid 123./runqslower -t 123 # trace tid 123 (us
这篇关于5.70 BCC工具之runqslower.py解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!