linux内核编程4部曲之三:修改O(1)调度算法
来源:互联网 发布:故宫 书目 知乎 编辑:程序博客网 时间:2024/05/01 23:12
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说
linux内核编程4部曲之二:增加linux内核系统调用
linux内核编程4部曲之三:修改O(1)调度算法
linux内核编程4部曲之四:模块编程
一、实验目的
修改O(1)调度程序,使交互性非常强的程序(IO密集型)在时间片用完后,不放置到活动数组,而放入过期数组(与O(1)调度实现相反),并测试cpu密集型和IO密集型进程的调度性能。
二、修改调度程序
该调度逻辑在2.6.12内核中,是在kernel/sched.c文件里的scheduler_tick()函数里实现的,进入该函数,定位到如下代码:
- if (!TASK_INTERACTIVE(p) || EXPIRED_STARVING(rq)) {
- enqueue_task(p, rq->expired);
- if (p->static_prio < rq->best_expired_prio)
- rq->best_expired_prio = p->static_prio;
- } else
- enqueue_task(p, rq->active);
- }
第一个if判断里就是判断CPU消耗和IO消耗的,去掉if判断,使在时间片用完时,系统直接将进程不加判断直接加入过期队列,修改后的代码如下:
- enqueue_task(p, rq->expired);
- if(p->static_prio < rq->best_expired_prio)
- rq->best_expired_prio = p->static_prio
该内核重新编译,并修改grub启动选项,从而可以使实验在两个O(1)调度程序下运行,如下图。如我们要测试更改前的调度,就引导第三个系统选项,如果要测试更改后的,则引导第一个(默认)。
四、性能测试
1、测试修改调度前后cpu密集程序和IO密集程序前后性能变化
A、测试cpu密集程序前后性能的程序cpu_app_test.cpp关键代码为:
B、测试IO密集型前后性能对比程序io_app_test.cpp关键代码为:
C、将两个程序分别编译成可执行文件:cpu_app_test、io_app_test
D、编写测试程序性能的调用脚本auto_test.sh
E、分别在修改调度的系统和未修改调度的系统,调用测试脚本,auto_test.sh,并且查看记录文件cpu_app_test.log和io_app_test.log
未修改调度的系统cpu密集程序结果
修改了调度的cpu密集程序结果
未修改调度的IO密集型程序结果
修改了调度的IO密集型程序结果
2、测试修改前后cpu密集程序与IO密集型程序性能比较
A、在测试基础上,修改cpu_app_test.cpp和io_app_test.cpp程序,将子进程的时间间隔打印功能注释掉
B、屏蔽掉子进程的时间间隔功能后,我们可以专注于整个程序(cpu密集或IO密集)所有子进程完成后的总时间,分别在两个系统中利用auto_test.sh脚本,测试运行20次。
C、分别在两个系统中查看日志文件,io_app_test.log、cpu_app_test.log
D、对比结果
修改调度前的结果:
修改调度后的结果
0
上一篇:linux内核编程4部曲之二:增加linux内核系统调用
下一篇:linux内核编程4部曲之四:模块编程
相关热门文章
- linux 常见服务端口
- xmanager 2.0 for linux配置
- 【ROOTFS搭建】busybox的httpd...
- openwrt中luci学习笔记
- Linux里如何查找文件内容...
给主人留下些什么吧!~~
评论热议
阅读全文
0 0
- linux内核编程4部曲之三:修改O(1)调度算法
- linux内核编程4部曲之三:修改O(1)调度算法
- linux内核编程4部曲之三:修改O(1)调度算法
- Linux进程调度算法之O(1)算法
- linux内核之调度算法(二)
- linux内核分析之调度——实时调度算法
- Linux内核调度算法
- Linux内核调度算法
- O(1)调度算法
- Linux I/O 调度算法
- linux内核调度器进化史:O(n)->O(1)->O(log(n))
- linux内核调度器进化史:O(n)->O(1)->O(log(n))
- linux o(1)调度
- Linux内核(三)进程调度
- Linux内核中的调度算法
- linux内核编程4部曲之四:模块编程
- linux内核编程4部曲之四:模块编程
- linux内核编程4部曲之四:模块编程
- gdb查看内存区命令
- 虚拟地址的结构与操作
- Linux启动过程详解
- linux内核编程4部曲之二:增加linux内核系统调用
- Docker Toolbox
- linux内核编程4部曲之三:修改O(1)调度算法
- HDU 5608 莫比乌斯反演 + 莫比乌斯函数前缀和
- linux内核编程4部曲之四:模块编程
- C
- strtok函数应用
- Subline Text3 基本命令
- strncpy的实现
- 组合数的性质&证明
- 状态转化图
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
折叠
子母门
儿童上下铺
床板
排骨架
儿童床品牌
板床
板式
气垫
松木
床铺
床头板
工业壁扇价格
壁式排气扇
壁扇什么牌子好
美的壁扇价格表
工业壁扇规格
防爆壁扇
壁扇价格
先锋壁扇
格力壁扇
工业壁扇
美的壁扇
壁扇电机
联想笔记本电池
滨特尔
笔记本电池多少钱
便宜的笔记本电脑
笔记本电脑电池价格
笔记本电脑价格大全
ibm笔记本电脑
商务笔记本电脑排名
笔记本电脑图片
笔记本厂家
联想商务笔记本
笔记本报价大全
笔记本价位
手提电脑多少钱
手提电脑价格大全
笔记本电脑移动电源
联想小新笔记本