我正在使用 trace-cmd 跟踪负载生成器。这是我的 trace-cmd 报告的输出片段:
loadgen-2682 [003] 105.979473: funcgraph_entry: | select_task_rq_fair() {
loadgen-2682 [003] 105.979473: funcgraph_entry: | select_idle_sibling() {
loadgen-2682 [003] 105.979473: funcgraph_entry: 0.071 us | idle_cpu();
loadgen-2682 [003] 105.979474: funcgraph_entry: 0.111 us | idle_cpu();
loadgen-2682 [003] 105.979474: funcgraph_entry: 0.056 us | idle_cpu();
loadgen-2682 [003] 105.979475: funcgraph_entry: 0.056 us | idle_cpu();
loadgen-2682 [003] 105.979475: funcgraph_exit: 2.324 us | }
loadgen-2682 [003] 105.979476: funcgraph_exit: 2.940 us | }
loadgen-2682 [003] 105.979476: funcgraph_entry: | set_task_cpu() {
loadgen-2682 [003] 105.979476: funcgraph_entry: | migrate_task_rq_fair() {
loadgen-2682 [003] 105.979476: funcgraph_entry: 0.080 us | remove_entity_load_avg();
loadgen-2682 [003] 105.979477: funcgraph_exit: 0.537 us | }
loadgen-2682 [003] 105.979477: funcgraph_entry: 0.042 us | set_task_rq_fair();
loadgen-2682 [003] 105.979478: funcgraph_exit: 1.463 us | }
所有函数的持续时间看起来都像是包含了嵌套函数调用所花费的时间。例如,我认为select_idle_sibling()
2.324 us 的持续时间包括在idle_cpu()
通话中花费的 0.294 us(总计)。同样,我相信select_task_rq_fair()
包括select_idle_sibling()
持续时间。
我要问的是,trace-cmd 中是否有办法将其关闭,这样select_task_rq_fair()
会显示其持续时间,不包括它调用的任何函数;即select_task_rq_fair()
显示持续时间为 0.616 us(2.940 us - 2.324 us)。我无法在手册页中找到此问题的答案。