经过长时间的研究,我来这里寻求帮助。
我想测量应用程序内核的延迟。
例如,我有一个基于C的应用程序,当我运行它时,我想要测量内核调度它所需的时间。
我在我的C应用程序中使用了time.h库,但它告诉我执行应用程序所需的时间,而不是内核调度它所需的时间。
PS:我一直在使用PREEMPT_RT补丁,而且我的内核已经具有先发制人的功能了,如果这些信息对您有帮助的话。
发布于 2022-03-22 15:21:45
bcc (https://github.com/iovisor/bcc)具有runqlat工具,该工具报告调度程序延迟。它可以报告整个系统或每个进程的调度程序延迟。
下面是一个示例:
# ./runqlat
Tracing run queue latency... Hit Ctrl-C to end.
^C
usecs : count distribution
0 -> 1 : 233 |*********** |
2 -> 3 : 742 |************************************ |
4 -> 7 : 203 |********** |
8 -> 15 : 173 |******** |
16 -> 31 : 24 |* |
32 -> 63 : 0 | |
64 -> 127 : 30 |* |
128 -> 255 : 6 | |
256 -> 511 : 3 | |
512 -> 1023 : 5 | |
1024 -> 2047 : 27 |* |
2048 -> 4095 : 30 |* |
4096 -> 8191 : 20 | |
8192 -> 16383 : 29 |* |
16384 -> 32767 : 809 |****************************************|
32768 -> 65535 : 64 |*** |要获得进程的调度程序延迟,需要指定-p交换机。-m开关指定毫秒而不是微秒。
# ./runqlat -mp 4505 1
Tracing run queue latency... Hit Ctrl-C to end.
msecs : count distribution
0 -> 1 : 1 |* |
2 -> 3 : 2 |*** |
4 -> 7 : 1 |* |
8 -> 15 : 0 | |
16 -> 31 : 25 |****************************************|
32 -> 63 : 3 |**** |https://stackoverflow.com/questions/71553063
复制相似问题