8# <"% 已禁用 阻止刚刚从运行中醒来的进程。
7#D%"#
7#调度延迟 调度进程所需的时间。
8#$",%""'"
""#
8#中断反转 中断处理程序执行优先级低于其抢占的任务的任务的时间。
#E",,
'#
延迟跟踪器可以记录前三个。 但延迟跟踪器不包含中断反转,但可以在其他跟踪器中看到。
84$"3
""")6+"#"$4
"'#$"
''""#""'
"'"#$"('(
"""#5"(""%"'
'#"%'"#
A-0"(""#E
"',,#$
(""FBA$G/<H2/BI$AGBA$G/BI32<J#
4%"#$"
',(,'%"%#%'
",,#5"(,"
B<'%%"#
背负在 ")6+之上以测量禁用的中断。 " 是 $4 制作的一个工具,可以检测内核中可能存
在的死锁情况。它会跟踪所采取的锁定,并可以检查锁定的顺序,以确保始终按正确的顺序执行两个锁定。
" 还确保在不禁用中断的情况下不会使用中断中使用的自旋锁。如果您不了解 ",请不要担心,这超
出了本文的范围。重要的是," 会跟踪中断被禁用的所有位置以及启用它们的位置。 使用此实现来记
录何时禁用和启用中断。
注意:0 挂钩到 " 基础结构,但是您不需要启用 " 来使用中断跟踪器。通过启用 ",您将增
加 更 多 开 销 。 如 果 您 担 心 测 量 延 迟 而 不 调 试 内 核 锁 定 , 则 建 议 禁 用 " ( BA$G/<H2/BI$AG 和
BA$G/BI32<)。
测量在系统中禁用中断的时间,以便分析性能。如果在事件发生时禁用中断,则该事件必须等到中断启用才能继
续。它必须等待的时间是在进入事件的开销之上增加延迟。禁用中断时,在重新启用中断之前,不会注意到向
B< 发送中断的设备。
8#*$=1
"=1'%"#%*(6(7(8'
"=1CK'#$",8"(
,#%#
插件 =1 是一种测量内核中禁用中断的时间的方法。 清单 *(6(7 和 8 显示了运行 =1 跟踪器的输出一段时间。
正如您所看到的那样,我需要将其分解为 8 页以上,这可能会有点冗长。 这是由于函数跟踪器。
%FBA$G/AB$A/B2J'%#5
%("'"%"#"'%
"%#',,(
'%FBA$G/3?A4$B/B2J('(,
%"#'%,,'#$
"(@'("%#L
%,"'',#
函数跟踪器(由 BA$G/AB$A/B2 启用)是一种跟踪内核中几乎所有函数的方法。 启用函数跟踪时,将
使用 "%" 编译内核。 这是一个配置文件,它将使所有函数调用一个名为 的特殊函数。 人们会意