免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3454 | 回复: 6
打印 上一主题 下一主题

块设备写文件速度很慢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-27 16:35 |只看该作者 |倒序浏览
现在对一个块设备进行测试,发现读写速度很慢,查看日志后发现设备驱动程序从request_queue中获取了request,从request提取bio,最后提取bio的page,发现bi_io_vec数组中的page太少了(最多就31个pages,最少只有一个),导致每次提交写请求提交的数据量太少了
高手帮忙分析下是哪个环节有问题?或者给点意见都行啊

论坛徽章:
0
2 [报告]
发表于 2011-05-28 22:21 |只看该作者
查看日志后发现设备驱动程序从request_queue中获取了request,从request提取bio,最后提取bio的page


分析过程就有问题, 设备驱动程序 make_request_fn函数, 将bio  变化 为request,进入调度队列

request_fn 函数, 从调度队列中取一个request ,执行之,对scsi设备 ,就转化为scsi命令 。

怎会从request提取bio?

论坛徽章:
0
3 [报告]
发表于 2011-05-30 09:52 |只看该作者
本帖最后由 chengmao2010 于 2011-05-30 09:53 编辑

回复 2# todaygood


    我不是看生成request的方向(从page到bio再到request的方向),看的是处理request的那条路线(即request到bio再到page)

论坛徽章:
0
4 [报告]
发表于 2011-05-30 09:56 |只看该作者
会不会和IO调度有关系呢?
IO调度会将bio合并到一个request中
也可以将两个request进行合并

论坛徽章:
0
5 [报告]
发表于 2011-06-21 21:02 |只看该作者
回复 4# chengmao2010


    可能跟IO调度有关系, 也可能跟IO流量的模型有关(可能是小块随机写)。

论坛徽章:
0
6 [报告]
发表于 2011-06-23 11:54 |只看该作者
你的块设备具体是什么设备?

论坛徽章:
0
7 [报告]
发表于 2011-06-29 16:41 |只看该作者
如果request少了,可以在blk_init_queue时注册大一些,可参考mmc里的bounce buf做法
blk_queue_bounce_limit(cq->queue, BLK_BOUNCE_HIGH);
blk_queue_max_hw_sectors(cq->queue, bouncesz / 512);
blk_queue_physical_block_size(cq->queue, bouncesz);
blk_queue_max_segments(cq->queue, bouncesz / PAGE_CACHE_SIZE);
blk_queue_max_segment_size(cq->queue, bouncesz);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP