内核视图

核心视图显示线程执行如何映射到逻辑处理器核心(选择“分析”>“并发可视化工具”来启动并发可视化工具)。 如果要编写服务器应用程序,则此视图可以帮助您通过使用线程关联或线程池管理来优化缓存性能。 如果在使用线程关联之后实际上加剧了跨核迁移问题,则此视图还可帮助您以直观方式检查相关情况。 内核视图包括关系图和图例两个部分。

关系图在 Y 轴上显示逻辑内核,而在 X 轴上显示时间。 关系图中的每个线程都具有唯一的颜色,以便您可以跟踪它随时间跨核心移动的情况。 通过在图例区域中选择线程,您可以在此关系图中筛选它们。

图例区域中具有关系图中每种颜色的对应项。 每个项各自显示线程颜色和名称、跨核心上下文切换数、上下文切换的总数,以及跨越核心的上下文切换所占的百分比。 图例按跨核心的上下文切换数以降序排序。 它仅会列出在显示的时间范围内执行的线程。 缩放或平移后,将更新列表。

“核心”视图图例

“核心”视图图例按颜色和名称标识每个线程。 它包括一些列,分别显示跨核心上下文切换数、上下文切换总数以及跨越核心的上下文切换所占的百分比。 图例中的行按跨核心上下文切换数以降序排序。

可以选择图例中的行,以便筛选时间线中显示的线程。 时间线中仅显示选定的线程。 如果未选择任何行,则时间线中将显示所有行。

与留在同一逻辑核心上的切换相比,跨核心上下文切换要花费更多的开销和性能。 在上下文切换过程中,将保存并恢复处理器寄存器,执行操作系统内核代码,重新加载转换旁视缓冲项,并刷新处理器管道。 因为缓存数据对其他核心上的此线程无效,所以跨核心上下文切换可能比其他上下文切换的开销更大。 相比之下,如果某个线程上下文切换到之前运行过该线程的核心上,则有用的数据可能仍在缓存中。 当跨核心上下文切换因试图管理线程关联而有所增加且性能出现下降时,请考虑是否要解决这一问题。 首先消除线程关联,然后观察由此导致的跨核心行为。

下表描述了图例元素。

元素 定义
线程名 显示上一个内核时间线中线程的颜色,以及该线程的名称。
跨核心上下文切换 也从一个逻辑内核切换到另一个逻辑内核的线程的上下文切换数。 不区分从一个处理器芯片跨到另一个芯片的跨核心上下文切换,以及留在同一芯片上的跨核心上下文切换。
上下文切换总数 采样期间给定线程的上下文切换总数。 每次线程更改上下文(例如从执行到同步)时,将进行一次上下文切换计数。
跨越核心的上下文切换所占的百分比 通过跨核心上下文切换数除以上下文切换总数计算出的百分比。 此百分比越高,此特定线程的性能上的跨核心上下文切换的开销的整体效果越大。

内核视图时间线

时间线中的每一行表示已配置的系统上的一个逻辑处理器内核。 对于每一行,水平轴显示在给定时刻逻辑内核上运行的线程。 将鼠标悬停在时间线上感兴趣的颜色上可返回用于标识线程的工具提示。 为了帮助进行线程标识,窗口底部的图例显示每个颜色所代表的线程。 通过单击并拖动,或通过按住 Ctrl 并移动鼠标滚轮,使用缩放工具进行放大和缩小。 在内核视图与线程视图之间切换时,可保持缩放一致性。

内核视图的逻辑内核数

每个通道名称代表分析的系统上存在的一个逻辑内核。 该命名方法会从 0 开始计数至逻辑内核的总数。 例如,四核系统从逻辑内核 0 计数到逻辑内核 3。

内核视图缩放工具

缩放控件是一个滑块,允许在时间线上进行放大和缩小操作,便于你关注特定的感兴趣的区域。 此控件以当前视图的中心为缩放点,因此放大前请先调整视图。

其他缩放方式

  • 放大:通过拖动在时间线视图中选择一个区域。 释放鼠标按钮后,时间线视图会放大选定的范围。

  • 放大和缩小:将鼠标悬停在时间线上,然后按 Ctrl 并移动鼠标滚轮