本节使用 "Overview"(概述)页面和带 "Called-by/Calls"(调用方/调用)面板的 "Functions"(函数)视图来说明时钟分析数据。
在 "Overview"(概述)页面中,取消选中三个 HW 计数器度量的复选框,仅使 "Total CPU Time"(CPU 总时间)复选框保持选中状态。
转到 "Functions"(函数)视图,然后单击 "Incl. Total CPU"(包含 总 CPU)的列标题一次以按包含总 CPU 时间排序。
函数 do_work() 现在应该处于列表的顶部。
选择 do_work() 函数并查看 "Functions"(函数)视图底部的 "Called-by/Calls"(调用方/调用)面板。
请注意 do_work() 是从两个位置调用的,并且它调用十个函数。
do_work() 调用的十个函数表示十个不同的任务,每个任务都具有程序执行的不同同步方法。在从 mttest 创建的一些实验中,您可能会看到第十一个函数,该函数使用相对较少的时间获取其他任务的工作块。屏幕抓图中未显示此函数。
通常情况下,创建处理数据的线程时会调用 do_work(),并在从 _lwp_start() 调用时显示它。在一种情况下,从 locktest() 被调用后,do_work() 调用名为 nothreads() 的单线程任务。
在面板的 "Calls"(调用)侧,请注意,除了前两个被调用方外,所有被调用方都显示大约相同的 "Attributed Total CPU"(归属总 CPU)时间量(约为 12 秒)。