- 前言
Extensibe Scheduler Class(下文使用首字母缩写ESC。)是Linux内核V6.11版本加入的新特性,开发者是Tejun Heo。本文简单记录一下如何通过make menuconfig的配置在QEMU上开启Extensible Scheduler Class。
本文基于6.12.0内核讨论。QEMU使用虚拟设备aarch64-virt-a53。
- 配置
当然,使用任何内核功能出现问题,首先应该找工程自带说明。Documentation/scheduler/sched-ext.rst文件是个必读文件。该文件提到,使用ESC特性,首先应该在arch/arm64/configs目录下的配置文件中开启下面的配置项:
然后开启menuconfig,默认界面为:
搜索一下sched_class_ext,发现有一个依赖配置项没有满足:
直接搜索debug_info_btf,发现确实有依赖项目没有满足。
很明显DEBUG_INFO_REDUCED应该配置为n。
进入Kernel hacking ---》 Compile-time checks and compiler options
另外,DEBUG_INFO_BTF还依赖pahole的版本,我的Ubuntu系统没有安装,这里要用apt命令安装一下。
以上操作之后,重新进入Kernel hacking ---》 Compile-time checks and compiler options菜单。
选中对应选项。
最后进入General setup---》Extensible Scheduling Class ,会发现对应的配置项出现了:
选中后保存.config。重新编译内核,即可使用ESC调度类了。
启动QEMU后会发现/sys/kernel/目录下出现了sched_ext目录,说明ESC开启了。