安卓io调度器,哪个模式最好的安卓手机。

有关2.6内核的IO调度器
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
有关2.6内核的IO调度器
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口2.6包含的四个I/O调度器分别是No-op I/O scheduler、Anticipatory I/O scheduler、Deadline I/O scheduler与CFQ I/O scheduler。
在后文中分别简称为ns、as、ds与cfq。
ns是一个简化的调度程序它只作最基本的合并与排序。与桌面系统的关系不是很大,主要用在一些特殊的软件
与硬件环境下,这些软件与硬件一般都拥有自己的调度机制对内核支持的要求很小,这很适合一些嵌入式系统环境。作为桌面用户我们一般不会选择它。
as是当前内核中默认的I/O调度器。它拥有非常好的性能,在2.5中它就相当引人注意。在与2.4内核进行的对比测试中,在2.4中多项以分钟为单位
完成的任务,它则是以秒为单位来完成的。正因为如此它成为目前2.6测试版中默认的I/O调度器。但它也存在着弱点,它本身是比较庞大与复杂的,
在一些特殊的情况下,特别是在数据吞吐量非常大的数据库系统中它会变的比较缓慢。
ds就是针对as的缺点进行改善而来的,还处于测试阶段,但已经很稳定了。目前表现出的性能几乎与as一样好。加之比as更加小巧,
是相当有前途的调度器,值得一试:)
cfq为系统内的所有任务分配相同的带宽,提供一个公平的工作环境,它比较适合桌面环境。事实上在测试中它也有不错的表现,
mplayer xmms等多媒体播放器与它配合的相当好,回放平滑几乎没有因访问磁盘而出现的跳帧现象。对于喜欢在Linux下听音乐看电影的朋友不妨尝试一下。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:62177次
排名:千里之外
转载:123篇
评论:14条
(2)(7)(1)(10)(5)(1)(14)(24)(17)(2)(5)(11)(2)(22)(6)虚拟环境中多网络接口卡IO调度系统的研究,io调度器 row,io调度,io调度器,调度系统..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
虚拟环境中多网络接口卡IO调度系统的研究
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口学写块设备驱动(二)----更换IO调度器&.
上节我们的块设备驱动已经可以使用了,本节我们对其进行一点小的改动,修改其使用的IO调度器。我们知道,标准磁盘的寻道延时很高,故有了IO调度器存在的必要,它通过对IO请求进行合并或者排序来提高块设备的使用效率。但是因为我们目前的块设备在内存中,即没有通常的磁盘寻道延时,且读写迅速,所以我们不需要IO调度器为我们做多余的事情浪费资源。目前Linux有四种IO调度器,anticipatory、cfq、deadline和noop。例子这里最适合我们的是noop,它基本对IO请求什么都不做。
我们想要更换IO调度器,关键的函数是这么两个:
首先,为请求队列选择IO调度器
int elevator_init(struct request_queue *q, char
其次,由于我们使用blk_init_queue(request_fn_proc
*)初始化IO请求队列时,通用块层为我们初始化了默认的IO调度器,所以我们需要下面的函数来释放它:
void elevator_exit(struct elevator_queue *old_eq)
释放某个请求队列上的IO调度器
更改后的simp_blkdev_init 函数&如下:
static&int&simp_blkdev_init(void){&&
&&&&int&&&
&&&&struct&elevator_queue&*old_e;&&
&&&&//init&the&request&queue&by&the&handler&function
&&&&simp_blkdev_queue&=&blk_init_queue(simp_blkdev_do_request,&rq_lock);&&
&&&&if(!simp_blkdev_queue){&&
&&&&&&&&ret&=&-ENOMEM;&&
&&&&&&&&goto&error_init_&&
&&&&//init&a&new&io&scheduler
&&&&old_e&=&simp_blkdev_queue-&&&
&&&&if(IS_ERR_VALUE(&elevator_init(simp_blkdev_queue,"noop")&)&){&&
&&&&&&&&printk(KERN_WARNING&"Switch&elevator&failed,using&default\n");&&
&&&&}else{&&
&&&&&&&&elevator_exit(old_e);&&
&&&&//alloc&the&resource&of&gendisk
&&&&simp_blkdev_disk&=&alloc_disk(1);&&
&&&&if(!simp_blkdev_disk){&&
&&&&&&&&ret&=&-ENOMEM;&&
&&&&&&&&goto&error_alloc_&&
&&&&//populate&the&gendisk&structure
&&&&strcpy(simp_blkdev_disk-&disk_name,SIMP_BLKDEV_DISKNAME);&&
&&&&simp_blkdev_disk-&major&=&SIMP_BLKDEV_DEVICEMAJOR;&&
&&&&simp_blkdev_disk-&first_minor&=&0;&&
&&&&simp_blkdev_disk-&fops&=&&simp_blkdev_&&
&&&&simp_blkdev_disk-&queue&=&simp_blkdev_&&
&&&&set_capacity(simp_blkdev_disk,SIMP_BLKDEV_BYTES&&9);&&
&&&&add_disk(simp_blkdev_disk);&&
&&&&printk("module&simp_blkdev&added.\n");&&
&&&&return&0;&&
error_init_queue:&&
&&&&blk_cleanup_queue(simp_blkdev_queue);&&
error_alloc_disk:&&
&&&&return&&&&
static int simp_blkdev_init(void){
struct elevator_queue *old_e;
//init the request queue by the handler function
simp_blkdev_queue = blk_init_queue(simp_blkdev_do_request,&rq_lock);
if(!simp_blkdev_queue){
ret = -ENOMEM;
goto error_init_
//init a new io scheduler
old_e = simp_blkdev_queue-&
if(IS_ERR_VALUE( elevator_init(simp_blkdev_queue,"noop") ) ){
printk(KERN_WARNING "Switch elevator failed,using default\n");
elevator_exit(old_e);
//alloc the resource of gendisk
simp_blkdev_disk = alloc_disk(1);
if(!simp_blkdev_disk){
ret = -ENOMEM;
goto error_alloc_
//populate the gendisk structure
strcpy(simp_blkdev_disk-&disk_name,SIMP_BLKDEV_DISKNAME);
simp_blkdev_disk-&major = SIMP_BLKDEV_DEVICEMAJOR;
simp_blkdev_disk-&first_minor = 0;
simp_blkdev_disk-&fops = &simp_blkdev_
simp_blkdev_disk-&queue = simp_blkdev_
set_capacity(simp_blkdev_disk,SIMP_BLKDEV_BYTES&&9);
add_disk(simp_blkdev_disk);
printk("module simp_blkdev added.\n");
error_init_queue:
blk_cleanup_queue(simp_blkdev_queue);
error_alloc_disk:
没有更换IO调度器之前(cfq):
<img ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="http://hi.csdn.net/attachment//0_rreI.gif"
TITLE="学写块设备驱动(二)----更换IO调度器&." />
更换IO调度器(noop)
<img ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="http://hi.csdn.net/attachment//0_PaBb.gif"
TITLE="学写块设备驱动(二)----更换IO调度器&." />
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 最好的安卓模拟器 的文章

 

随机推荐