Linux kernel 四象限法调度

四象限法进程调度 给出一个不采用任何函数硬调用 “统一合理调度” 所有任务的方法,只需要修改少量代码:

  • task_struct 增加 dynamic_prior 表示唤醒后提升到的优先级。
  • try_to_wake_up 增加参数 increment,换算到 sched_class 含义后设置 dynamic_prior。
  • sched_class 增加 update_prio 回调,每次 tick,preempt 更新 dynamic_prior,比如衰减它。

针对 ksoftirqd 以及任何其它不确定调度造成的 SLA 违约(task 越多,时间份额越小,这太常规,太 Linux 了),可以更大的 increment 唤醒特定 ksoftirqd(如 NET_RX_SOFTIRQ),并更缓慢的 update_prio。

如网卡,键盘等接受外界数据的大都高紧急高优先,否则唤醒消费数据的进程也没用,纯属浪费时间,Linux 虽鄙视键盘鼠标,但它连网卡也一起鄙视了。Linux cfs 已经在 place_entity 的时候赋予被唤醒 task 优先权,但它微弱且 oneshot,很快即泯然众人,需要同时做到两点,increment 表示紧急性,update_prio 的速率表示重要性。百字短文,不多说。

浙江温州皮鞋湿,下雨进水不会胖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值