我使用 ftrace 跟踪两个事件:cpu_Frequency 和 cpu_idle。我无法找到任何说明如何解释此信息的文档。我在下面提供了生成的跟踪文件中的两个片段,我需要了解如何解释 cpu_Frequency 和 cpu_idle 跟踪事件信息。我把我的困惑写在下面,请回答问题并提供你自己的见解。
对于CPU_频率:
1. 时间戳的格式是什么?
2. 为什么每个新的工作频率点都会有两个事件,每个事件是否意味着CPU开始以该频率工作,或者这些事件是进入/退出对?
跟踪输出:
# tracer: nop
#
# entries-in-buffer/entries-written: 36062/36062 #P:1
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
kworker/0:1H-27 [000] ...1 1130.362603: cpu_frequency: state=1190400 cpu_id=0
kworker/0:1H-27 [000] ...1 1130.362609: cpu_frequency: state=1190400 cpu_id=0
kworker/0:1H-27 [000] ...1 1130.411934: cpu_frequency: state=300000 cpu_id=0
kworker/0:1H-27 [000] ...1 1130.411947: cpu_frequency: state=300000 cpu_id=0
kworker/0:1H-27 [000] ...1 1131.532595: cpu_frequency: state=1190400 cpu_id=0
kworker/0:1H-27 [000] ...1 1131.532599: cpu_frequency: state=1190400 cpu_id=0
kworker/0:1H-27 [000] ...1 1131.581758: cpu_frequency: state=300000 cpu_id=0
kworker/0:1H-27 [000] ...1 1131.581768: cpu_frequency: state=300000 cpu_id=0
对于CPU_空闲:
1、这里的state=4294967295是什么意思,cpu_idle状态是什么?
2. 我在哪里可以获得有关这些状态实际含义的文档/信息?
<idle>-0 [000] d..2 1960.307101: cpu_idle: state=3 cpu_id=0
<idle>-0 [000] ...2 1960.310722: cpu_idle: state=4294967295 cpu_id=0
<idle>-0 [000] d..2 1960.310741: cpu_idle: state=3 cpu_id=0
<idle>-0 [000] ...2 1960.312114: cpu_idle: state=4294967295 cpu_id=0
<idle>-0 [000] d..2 1960.312131: cpu_idle: state=3 cpu_id=0
<idle>-0 [000] .N.2 1960.314410: cpu_idle: state=4294967295 cpu_id=0
<idle>-0 [000] d..2 1960.314980: cpu_idle: state=3 cpu_id=0
<idle>-0 [000] .N.2 1960.316077: cpu_idle: state=4294967295 cpu_id=0
<idle>-0 [000] d..2 1960.316539: cpu_idle: state=3 cpu_id=0
谢谢。
答案1
对于CPU_频率:
- 时间戳格式为“secs.usecs”。您可以在 ftrace 文档中找到更多相关信息:https://www.kernel.org/doc/Documentation/trace/ftrace.txt
- 我认为它显示了频率之间的转换延迟。
对于CPU_空闲:
- '4294967295' 表示退出当前状态。
- 该文档可以在这里找到:https://www.kernel.org/doc/Documentation/trace/events-power.txt