OK6410A 开发板 (八) 80 linux-5.11 OK6410A CFS调度器

CFS调度器 和 CFS调度器类 有什么关系
CFS调度器类中 有两种 调度器策略 : SCHED_NORAML SCHED_BATCH , 这个和调度器有什么关系
CFS
完全公平调度 
完全公平体现在 每个进程在一次调度间隔内的总的虚拟运行时间相等

一轮调度:
	cfs中调度中一个进程最小运行时间是0.75ms
	
	调度周期:在某个时间长度可以保证运行队列中的每个进程至少运行一次,我们把这个时间长度称为调度周期。也称为调度延迟,因为一个进程等待被调度的延迟时间是一个调度周期。

	调度最小粒度:为了防止进程切换太频繁,进程被调度后应该至少运行一小段时间,我们把这个时间长度称为调度最小粒度。

	调度周期的默认值是6毫秒,调度最小粒度的默认值是0.75毫秒
	
	如果运行队列中的进程数量太多,导致把调度周期sysctl_sched_latency平分给进程时的时间片小于调度最小粒度,那么调度周期取“调度最小粒度 × 进程数量”

	也就是说,
		一轮调度时常 要大于等于 6毫秒
		一个进程在一轮调度中的最小运行时间 >=0.75毫秒
	
	进程的时间片(一轮调度中的总的实际运行时间) = 调度周期 × 进程的权重 / 运行队列中所有进程的权重总和


总的虚拟运行时间:
	一次调度间隔的虚拟运行时间=实际运行时间*(NICE_0_LOAD/权重)

	一个进程的总的虚拟运行时间 = 进程的时间片 × nice 0对应的权重 / 进程的权重
					 = 调度周期 × 进程的权重 / 运行队列中所有进程的权重总和 × nice 0对应的权重 / 进程的权重
					 = 调度周期 × nice 0对应的权重/运行队列中所有进程的权重总和
					 是个固定值

nice 值 可以 通过 sched_prio_to_weight  转换为 权重

  • 简而言之
总的虚拟运行时间要相等
当实际运行时间相同时,优先级高的相较于优先级低的 虚拟运行时间小
我们挑选虚拟运行时间小的来运行
当总的虚拟运行时间相等时,优先级大的实际运行时间要多
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值