394 Star 1.4K Fork 1.3K

GVPopenEuler / kernel

 / 详情

【openEuler-21.09】introduce qos scheduler for co-location

已完成
需求 成员
创建于  
2021-07-09 14:48

一、概述
Qos是一种适用于混合部署的全新调度算法,当在线任务需要运行时,在线任务能够快速抢占CPU资源并优先于离线任务运行,
从而隔离离线任务对在线任务的干扰。使用该调度算法,保障在线业务服务质量的前提下提升CPU利用率

二、应用场景
应用于云混合部署场景,适用于对交互类等时延敏感型业务(比如MySQL、Redis、Nginx等)和CPU消耗且时延不敏感的业务(比如AI算法)混合部署的场景。

三、接口
1、把任务配置成离线业务
/sys/fs/cgroup/cpu/xxx/cpu.qos_level <0是默认值代表在线,-1代表离线>

2、非离线任务持续占有cpu超过此时间会触发优先级反转解决流程
/proc/sys/kernel/qos_overload_detect_period_ms <1000~100000, 默认值为5000>

3、离线任务在超负载情况下返回用户态时,每次睡眠的时间
/proc/sys/kernel/qos_offline_wait_interval_ms <100~1000,默认是为100>

四、约束与限制
该方案依赖于原始linux的cfs_bandwidth和sched_group机制,因此需要将CONFIG_CFS_BANDWIDTH和CONFIG_CGROUP_SCHED打开

  1. 离线任务代码中不允许将SCHED_IDLE调度策略改成其他调度策略,否则可能导致离线任务抢在线任务的cpu资源;
  2. 重要的系统服务和内核线程不建议加入到离线组中,否则可能导致调度不及时,进而导致系统异常;
  3. 不允许把一个任务从在线组迁移到离线组,再从离线组迁移到在线组的操作,如果这么操作,会影响这个任务的QOS;

4.19 参见 #I4K96G:【openEuler-1.0-LTS】introduce qos scheduler for co-location

评论 (4)

Zheng Zucheng 创建了需求
Zheng Zucheng 关联仓库设置为openEuler/kernel
展开全部操作日志

Hey oskernel0719, Welcome to openEuler Community.
All of the projects in openEuler Community are maintained by @openeuler-ci-bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at https://gitee.com/openeuler/community/blob/master/en/sig-infrastructure/command.md to find the details.

openeuler-ci-bot 添加了
 
sig/Kernel
标签
zhengzengkai 关联分支设置为openEuler-21.09
solarhu 里程碑设置为openEuler-21.09
zhengzengkai 任务状态新建 修改为已完成
成坚 (CHENG Jian) 修改了描述
Qiuuuuu 修改了描述
Qiuuuuu 修改了描述

您好,有两个问题咨询一下:
1、如果想测试这个功能及效果,该如何去测试?并以何种方式去看效果?
谢谢!

在线任务和离线任务混合部署跟只部署在线任务进行对比,看在线任务的QoS是否受离线任务的影响

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(4)
5329419 openeuler ci bot 1632792936 8909060 oskernel0719 1670549376
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助