调度器 debugfs¶
启用 debugfs 启动内核后,将可以访问 /sys/kernel/debug/sched 下的调度器特定调试文件。 其中一些文件描述如下。
numa_balancing¶
numa_balancing 目录用于保存控制 NUMA 平衡功能的文件。 如果该功能的系统开销过高,则可以通过 scan_period_min_ms, scan_delay_ms, scan_period_max_ms, scan_size_mb 文件控制内核采样 NUMA 提示错误的速率。
scan_period_min_ms, scan_delay_ms, scan_period_max_ms, scan_size_mb¶
自动 NUMA 平衡扫描任务地址空间并取消映射页面,以检测页面是否放置正确,或者是否应将数据迁移到任务正在运行的本地内存节点。 每个“扫描延迟”时,任务都会扫描其地址空间中的下一个“扫描大小”页面数。 到达地址空间末尾时,扫描程序将从头开始重新启动。
“扫描延迟”和“扫描大小”结合起来,决定了扫描速率。 当“扫描延迟”减少时,扫描速率会增加。 每个任务的扫描延迟以及因此扫描速率是自适应的,并且取决于历史行为。 如果页面放置正确,则扫描延迟会增加,否则扫描延迟会减少。 “扫描大小”不是自适应的,但是“扫描大小”越大,扫描速率越高。
较高的扫描速率会导致较高的系统开销,因为必须捕获页面错误,并且可能必须迁移数据。 但是,扫描速率越高,如果工作负载模式发生变化,任务内存迁移到本地节点的速度就越快,并且可以最大程度地减少由于远程内存访问而造成的性能影响。 这些文件控制扫描延迟和扫描页面数的阈值。
scan_period_min_ms
是扫描任务虚拟内存的最短时间(以毫秒为单位)。 它有效地控制了每个任务的最大扫描速率。
scan_delay_ms
是任务最初派生时使用的起始“扫描延迟”。
scan_period_max_ms
是扫描任务虚拟内存的最长时间(以毫秒为单位)。 它有效地控制了每个任务的最小扫描速率。
scan_size_mb
是给定扫描中扫描的页面数,以兆字节为单位。