User Tools

Site Tools


realtime:documentation:howto:debugging:cyclictest-smi-ftrace

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
realtime:documentation:howto:debugging:cyclictest-smi-ftrace [2018/08/21 09:16]
ebugden Update link
realtime:documentation:howto:debugging:cyclictest-smi-ftrace [2018/08/21 13:12]
ebugden Move to smi-latency folder
Line 3: Line 3:
 One way to identify where [[realtime:​documentation:​howto:​debugging:​smi-latency:​start|SMI]]s happen is to look for inexplicably long gaps in a kernel function trace, as these usually indicate that an abnormally long amount of time was spent handling an SMI. [[realtime:​documentation:​howto:​tools:​cyclictest:​start|Cyclictest]] can be used to produce a trace which can then be analyzed to find latencies that could be caused by SMIs. This trace analyzing technique is interesting because it can be used to identify firmware or hardware related latencies on any architecture that supports tracing, not just SMIs on x86 processors. One way to identify where [[realtime:​documentation:​howto:​debugging:​smi-latency:​start|SMI]]s happen is to look for inexplicably long gaps in a kernel function trace, as these usually indicate that an abnormally long amount of time was spent handling an SMI. [[realtime:​documentation:​howto:​tools:​cyclictest:​start|Cyclictest]] can be used to produce a trace which can then be analyzed to find latencies that could be caused by SMIs. This trace analyzing technique is interesting because it can be used to identify firmware or hardware related latencies on any architecture that supports tracing, not just SMIs on x86 processors.
  
-This page explains how to correctly produce a function trace using Cyclictest and how to identify SMI related latencies in the trace. Additional details that clarify some of the topics mentioned more briefly on this page can be found in the general documentation about debugging using Cyclictest [[realtime:​documentation:​howto:​debugging:​cyclictest:​debugging|here]].+This page explains how to correctly produce a function trace using Cyclictest and how to identify SMI related latencies in the trace. Additional details that clarify some of the topics mentioned more briefly on this page can be found in the general documentation about debugging using Cyclictest [[realtime:​documentation:​howto:​tools:​cyclictest:​tracing|here]].
  
 ===== Importance ===== ===== Importance =====
Line 29: Line 29:
 </​code> ​ </​code> ​
  
-The combination of options in this example is not appropriate for every test situation. More details about how to choose the right options for measuring a specific latency on a given system can be found in the Cyclictest documentation [[realtime:​documentation:​howto:​debugging:​cyclictest:​test-design:start|here]].+The combination of options in this example is not appropriate for every test situation. More details about how to choose the right options for measuring a specific latency on a given system can be found in the Cyclictest documentation [[realtime:​documentation:​howto:​tools:​cyclictest:​test-design#​option-selection|here]].
  
 <WRAP center round important 60%> <WRAP center round important 60%>
Line 35: Line 35:
 </​WRAP>​ </​WRAP>​
  
-Function tracing slows down the execution of the program, so the target latency will most likely be longer after enabling tracing. It is important to adjust for this additional overhead because otherwise the tracing may not break on the correct latency and the trace may not contain the latency that was supposed to be observed. More details about how to adjust the break trace limit can be found in the documentation about debugging using Cyclictest [[realtime:​documentation:​howto:​debugging:​cyclictest:​debugging#​measuring-the-tracing-overhead|here]].+Function tracing slows down the execution of the program, so the target latency will most likely be longer after enabling tracing. It is important to adjust for this additional overhead because otherwise the tracing may not break on the correct latency and the trace may not contain the latency that was supposed to be observed. More details about how to adjust the break trace limit can be found in the documentation about debugging using Cyclictest [[realtime:​documentation:​howto:​tools:​cyclictest:​tracing#​measuring-the-tracing-overhead|here]].
  
 ===== Analysis ===== ===== Analysis =====