核心视图显示线程执行如何映射到逻辑处理器核心(选择“分析>并发可视化工具”以启动并发可视化工具)。 如果要编写服务器应用程序,此视图可帮助你使用线程相关性或线程池管理来优化缓存性能。 它还可以帮助你检查线程相关性的使用可能使跨核心迁移问题恶化的情况。 核心视图有两个部分:一个图形和一个图例。
该图显示 y 轴上的逻辑核心和 x 轴上的时间。 图形中的每个线程都有唯一的颜色,以便跟踪其随时间推移在核心之间的移动。 可以通过选择图例区域中的线程来筛选此图上的线程。
图例区域具有图形中每种颜色的条目。 每个条目显示线程颜色和名称、跨核心上下文切换数、上下文切换总数以及跨核心的上下文切换百分比。 图例按跨核心上下文切换次数递减排序。 它仅列出在显示的时间范围内执行的线程。 缩放或平移时,列表会更新。
核心视图说明
核心视图图例按颜色和名称标识每个线程。 它包括显示跨核心上下文切换计数、上下文切换总数以及跨核心的上下文切换百分比的列。 图例中的各行根据跨核心上下文切换次数,从多到少排序。
可以选择图例中的行来筛选时间线中显示的线程。 时间线中仅显示所选线程。 如果未选择任何行,则时间线中会显示所有行。
跨核心上下文交换机的开销和性能比保留在同一逻辑核心上的交换机的成本更高。 在上下文切换期间,将保存和恢复处理器寄存器,执行操作系统内核代码,重新加载转换后援缓冲区条目,并刷新处理器管线。 跨核心上下文切换比其他上下文切换更昂贵,因为缓存数据对另一个核心上的此线程无效。 相比之下,如果线程上下文切换到之前运行过的核心,那么有用的数据很可能仍在缓存中。 当通过尝试管理线程亲和性增加了跨核心上下文切换并导致性能下降时,请考虑是否解决此问题。 首先消除线程相关性,然后观察生成的跨核心行为。
下表描述了图例元素。
| 元素 | Definition |
|---|---|
| 线程名称 | 显示上一个核心时间线中线程的颜色以及该线程的名称。 |
| 跨核心上下文切换 | 已经从一个逻辑核心切换到另一个逻辑核心的线程的上下文切换次数。 它不区分跨核心的上下文切换,无论是从一个处理器芯片到另一个处理器芯片,还是在同一芯片上的切换。 |
| 上下文切换总数 | 采样期间给定线程的上下文切换总数。 每次线程更改上下文(例如,从执行到同步)都会计算一个上下文切换。 |
| 跨核心的上下文切换百分比 | 通过将跨核心上下文切换数除以总上下文开关数来计算为百分比。 此百分比越高,跨核心上下文切换对该特定线程性能的总体影响就越大。 |
核心视图时间线
时间线中的每个行都表示分析系统上的逻辑处理器核心。 对于每一行,水平轴显示哪个线程在给定的时间点在逻辑核心上运行。 可以将鼠标悬停在时间线中感兴趣的颜色上,以返回标识线程的工具提示。 为了帮助进行线程识别,窗口底部的图例显示每个颜色所代表的内容。 使用缩放工具放大和缩小,方法是单击和拖动或按 Ctrl 并移动鼠标滚轮。 在核心视图和线程视图之间切换时,会保持缩放一致性。
查看核心逻辑处理器核心
每个通道名称表示被分析的系统上存在的逻辑核心之一。 命名编号从 0 开始,一直到逻辑核心的总数量。 例如,四核系统将从逻辑核心 0 到逻辑核心 3 进行计数。
核心处理器视图缩放工具
缩放控件是一个滑块,可用于放大和缩小时间线,以便你可以专注于特定兴趣区域。 此控件缩放当前视图的中心,因此在放大之前调整视图。
缩放的其他方法
放大:拖动以选择时间线视图中的区域。 释放鼠标按钮时,时间线视图会放大所选区域。
放大和缩小:将鼠标悬停在时间线上,然后在移动鼠标滚轮时按 Ctrl 。