设置内核线程的调度策略
来源:互联网 发布:java开发界面 编辑:程序博客网 时间:2024/06/11 01:58
调度策略总共分为三种1:sched_normal 非实时调用,就是常说的cfs,优先值的范围为100~139,有nice值决定2:sched_fifo 实时调用策略,先到先服务,高优先级的可以抢占第优先级的.3:sched_RR 实时调用策略,按照时间片运行,同样高优先级的可以抢占第优先级的.这两种优先级的额凡是是0~MAX_RT_PRI0-1 , 其中MAX_RT_PRI0等于100.我们在创建内核线程的执行函数中可以调用sched_setscheduler 等函数来改变调动策略。例如下例所示:static int power_saving_thread(void *data){ struct sched_param param = {.sched_priority = 1}; int do_sleep; unsigned int tsk_index = (unsigned long)data; u64 last_jiffies = 0; sched_setscheduler(current, SCHED_RR, ¶m);}那我们看看sched_setscheduler 是如何设置调度策略的sched_setscheduler->_sched_setscheduler->__sched_setschedulerstatic void __setscheduler(struct rq *rq, struct task_struct *p, const struct sched_attr *attr, bool keep_boost){ __setscheduler_params(p, attr); /* * Keep a potential priority boosting if called from * sched_setscheduler(). */ p->prio = normal_prio(p); if (keep_boost) p->prio = rt_effective_prio(p, p->prio);可见最终是根据优先级还设置当前线程属于那个调度类的。本来很明显就属于rt clss if (dl_prio(p->prio)) p->sched_class = &dl_sched_class; else if (rt_prio(p->prio)) p->sched_class = &rt_sched_class; else p->sched_class = &fair_sched_class;}
阅读全文
0 0
- 设置内核线程的调度策略
- linux内核的调度策略
- 线程的调度策略1
- 线程的调度策略2
- linux内核调度策略的修改对内核线程的影响
- Linux调度策略及线程优先级设置
- Linux调度策略及线程优先级设置
- 设置线程的调度
- Linux内核的三种调度策略
- LInux内核调度策略
- 线程的基本概念和调度策略
- 线程的基本概念和调度策略
- JAVA 多线程编程 --线程的调度策略
- linux线程调度策略
- 进程线程调度策略
- 线程调度策略
- 设置调度策略,优先级
- 用户空间实现线程 内核实现线程 线程的调度
- 2013腾讯编程马拉松初赛第五场(3月25日)
- IO-1、输入输出设备
- scala变量访问范围
- 从0开始架构一个IOS程序——03 — -分包用添加pch全局引用文件
- NIO初探
- 设置内核线程的调度策略
- 修改mysql数据库字符集为UTF8的
- java 解决默认方法冲突
- Maven常用参数及其说明
- effective C++解读
- CodeForces
- bugku 考细心
- ios使用AVCaptureVideoDataOutput实现连续拍照消除快门声音
- SVN 常见问题