<div dir="ltr"><div><div>Hi Meng,<br><br></div>On the IMX6 platform, we use a performance counter to measure cpu cycles. In litmus/litmus.c from source code, you can find litmus_enable_perfcounters_v7(). This function resets the performance counter and starts to count cpu cycles. Can you check if this function is executed during the boot process?<br><br></div>-Namhoon<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 2, 2015 at 1:22 PM, Meng Xu <span dir="ltr"><<a href="mailto:xumengpanda@gmail.com" target="_blank">xumengpanda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-size:small">Hi Bjorn,</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Thank you so much for your quick and helpful reply!</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Hi Namhoon,</div><div class="gmail_default" style="font-size:small">Since you are also using the same ARM board and didn't have any problem in tracing the scheduling overhead, such as SCHED and CXS, could you help me have a look if I configured anything incorrectly? I really appreciate it! </div><div class="gmail_extra"><div class="gmail_quote"><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><div><span><br><blockquote type="cite"><div><div style="font-family:Helvetica;font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div style="font-size:small">Do you have any suggestion/advice on how I can get the complete events?</div><div style="font-size:small"><br></div><div style="font-size:small">I have tried to set the ftcat to highest priority under FIFO scheduler, it didn't solve the problem. </div><div style="font-size:small">I was suspecting it is because the buffer is not consumed by ftcat fast enough so that the old events are overwritten by new events. However, I only run on rtspin task which leave at least 3 full cores idle to consume the buffer. </div></div></div></blockquote><br></span></div><div>If ftcat is starved, then you get some incomplete records, but typically not 100% incomplete records. This must be something else.</div><div><br></div><div>Have you looked at the trace with ftdump? What does it look like? </div><span><font color="#888888"><div><br></div></font></span></div></blockquote><div><br></div></span><div><div class="gmail_default" style="font-size:small;display:inline">​I checked the ftdump and it shows that the events are actually recorded but the timestamp of each event is always 0. </div></div><div><br></div>(Below is the result that I filter out the ftdump for RT tasks<div class="gmail_default" style="font-size:small;display:inline">​ and I only show some of them since the rest of them are similar​</div>.)<br><br>CXS_START            seq:634  pid:964  timestamp:0  cpu:3  type:RT       irq:1 irqc:01 <br><br>CXS_END              seq:635  pid:964  timestamp:0  cpu:3  type:RT       irq:0 irqc:00 <br><br>CXS_START            seq:644  pid:964  timestamp:0  cpu:3  type:RT       irq:1 irqc:01 <br><br>CXS_END              seq:645  pid:964  timestamp:0  cpu:3  type:RT       irq:0 irqc:00 <br><br>CXS_START            seq:650  pid:964  timestamp:0  cpu:3  type:RT       irq:1 irqc:01 <br><br>CXS_END              seq:651  pid:964  timestamp:0  cpu:3  type:RT       irq:0 irqc:00 <br><br>CXS_START            seq:658  pid:964  timestamp:0  cpu:3  type:RT       irq:1 irqc:01 <br><br>CXS_END              seq:659  pid:964  timestamp:0  cpu:3  type:RT       irq:0 irqc:00 <br><br>CXS_START            seq:666  pid:964  timestamp:0  cpu:3  type:RT       irq:1 irqc:01 <br><br>CXS_END              seq:667  pid:964  timestamp:0  cpu:3  type:RT       irq:0 irqc:00 <br><br>CXS_START            seq:676  pid:964  timestamp:0  cpu:3  type:RT       irq:1 irqc:02 <br><br>CXS_END              seq:677  pid:964  timestamp:0  cpu:3  type:RT       irq:0 irqc:00 <br><br>CXS_START            seq:684  pid:964  timestamp:0  cpu:3  type:RT       irq:1 irqc:01 <br><br>CXS_END              seq:685  pid:964  timestamp:0  cpu:3  type:RT       irq:0 irqc:00 <br><br>CXS_START            seq:694  pid:964  timestamp:0  cpu:3  type:RT       irq:1 irqc:02 <br><br>CXS_END              seq:695  pid:964  timestamp:0  cpu:3  type:RT       irq:0 irqc:00 <br><br>CXS_START            seq:702  pid:964  timestamp:0  cpu:3  type:RT       irq:1 irqc:01 <br><br>CXS_END              seq:703  pid:964  timestamp:0  cpu:3  type:RT       irq:0 irqc:00 <br> <br><div><div class="gmail_default" style="display:inline"><br></div></div><div><div class="gmail_default" style="display:inline"><br>Is there anything else I need to configure to make it work? It seems that  in </div>litmus/trace.c<div class="gmail_default" style="display:inline">​, the ft_timestamp() always return 0?​</div></div><div><div class="gmail_default" style="display:inline"><p><span> </span><span>if</span><span> (record_timestamp)</span></p><p><span>            timestamp = ft_timestamp();</span></p><p><span> </span><span>if</span><span> (record_timestamp == RECORD_OFFSET_TIMESTAMP)</span></p><p><span>            timestamp += cycle_offset[smp_processor_id()][cpu];</span></p><div><span><br></span></div><div><span>Thanks,</span></div><div><span><br></span></div><div><span>Meng</span></div></div></div><br>--</div><span class=""><div><br>-----------<br>Meng Xu<br>PhD Student in Computer and Information Science<br>University of Pennsylvania<br><a href="http://www.cis.upenn.edu/~mengxu/" target="_blank">http://www.cis.upenn.edu/~mengxu/</a></div>
</span></div></div>
</blockquote></div><br></div>