当前位置: 首页 > news >正文

linux fair调度器

本文也是人三个方向来研究fair调度器的调度策略实现
1、fair权重的设置
2、task的入队操作
3、task的挑选
4、tick定时器的处理
fair调度器回调函数如下 :
在这里插入图片描述

fair权重的设置

大体的调用顺序如下:
在这里插入图片描述
也可以通过nice调用set_user_nice来重新设置权重

void reweight_task(struct task_struct *p, int prio)
{struct sched_entity *se = &p->se;struct cfs_rq *cfs_rq = cfs_rq_of(se);struct load_weight *load = &se->load;unsigned long weight = scale_load(sched_prio_to_weight[prio]);reweight_entity(cfs_rq, se, weight);load->inv_weight = sched_prio_to_wmult[prio];
}
const int sched_prio_to_weight[40] = {/* -20 */     88761,     71755,     56483,     46273,     36291,/* -15 */     29154,     23254,     18705,     14949,     11916,/* -10 */      9548,      7620,      6100,      4904,      3906,/*  -5 */      3121,      2501,      1991,      1586,      1277,/*   0 */      1024,       820,       655,       526,       423,/*   5 */       335,       272,       215,       172,       137,/*  10 */       110,        87,        70,        56,        45,/*  15 */        36,        29,        23,        18,        15,
};
const u32 sched_prio_to_wmult[40] = {/* -20 */     48388,     59856,     76040,     92818,    118348,/* -15 */    147320,    184698,    229616,    287308,    360437,/* -10 */    449829,    563644,    704093,    875809,   1099582,/*  -5 */   1376151,   1717300,   2157191,   2708050,   3363326,/*   0 */   4194304,   5237765,   6557202,   8165337,  10153587,/*   5 */  12820798,  15790321,  19976592,  24970740,  31350126,/*  10 */  39045157,  49367440,  61356676,  76695844,  95443717,/*  15 */ 119304647, 148102320, 186737708, 238609294, 286331153,
};

这里会通过优先级对weight和inv_weight两个成员变量进行赋值

task的入队

enqueue_task_fair->enqueue_entity->update_curr
_____________________________->place_entity
_____________________________->__enqueue_entity
vruntime的赋值:
在这里插入图片描述
对于一个全新的task,其值将会被设置成当前队列的了小vruntime.也就是说不管其优先级如何,其第一次调用的优先级是最高的。
update_curr 更新当前task的vruntime

static void update_curr(struct cfs_rq <
http://www.dtcms.com/a/528495.html

相关文章:

  • 建设工程项目在哪个网站查询零食网站页面模板
  • Python 基础详解:enumerate() 函数
  • 基于鸿蒙UniProton的车载信息娱乐系统开发指南
  • 自然语言处理前沿创新方向与技术路径
  • 微软做网页的软件烟台优化网站公司
  • 使用Jmeter进行http接口测试
  • Jenkins从节点配置全攻略:从搭建到任务调度,参数详解与实战指南
  • 【Agentic AI】提示链模式学习笔记
  • 广东省省考备考(第一百三十三天10.25)——科学推理(强化训练)
  • 四季变化,室外太阳光的剧烈变化, 从“被动适应”到“主动免疫”,机器视觉检测如何实现?
  • 观察者模式学习
  • 常用标准电阻表 | E24标准电阻表
  • 三、检索增强生成(RAG)技术体系
  • 【Leetcode hot 100】739.每日温度
  • JAVA国际版任务悬赏发布接单系统源码支持IOS+Android+H5
  • 网站做选择题怎么快速选择艺术品拍卖网站源码php
  • 大模型微调完整步骤( LLama-Factory)
  • Rust + PostgreSQL:deadpool 和 diesel 数据库连接池实战(四)
  • 关于门户网站建设讲话关键词挖掘查询工具爱站网
  • GitHub等平台形成的开源文化正在重塑可以让
  • RHCSA-12计划任务
  • 快速提高网站权重提升门户网站地方生活门户有哪些
  • 【开题答辩全过程】以 产品报价系统为例,包含答辩的问题和答案
  • JS基础Day01
  • 建c2c网站深圳有名的品牌设计公司
  • 网页文字游戏seo入门
  • Windows系统内置的WIN32控件可分为标准控件和通用控件两大类
  • 数据结构初阶:Java中的ArrayList
  • Linux修炼:Ext系列文件系统
  • RocketMQ源码详解(消费端启动流程)