块设备写文件速度很慢

发布于 2022-10-15 05:53:22 字数 181 浏览 18 评论 0

现在对一个块设备进行测试,发现读写速度很慢,查看日志后发现设备驱动程序从request_queue中获取了request,从request提取bio,最后提取bio的page,发现bi_io_vec数组中的page太少了(最多就31个pages,最少只有一个),导致每次提交写请求提交的数据量太少了
高手帮忙分析下是哪个环节有问题?或者给点意见都行啊

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

南街女流氓 2022-10-22 05:53:22

查看日志后发现设备驱动程序从request_queue中获取了request,从request提取bio,最后提取bio的page

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

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

怎会从request提取bio?

淡淡绿茶香 2022-10-22 05:53:22

本帖最后由 chengmao2010 于 2011-05-30 09:53 编辑

回复 2# todaygood

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

一笔一画续写前缘 2022-10-22 05:53:22

会不会和IO调度有关系呢?
IO调度会将bio合并到一个request中
也可以将两个request进行合并

少钕鈤記 2022-10-22 05:53:22

回复 4# chengmao2010

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

眸中客 2022-10-22 05:53:22

你的块设备具体是什么设备?

人间☆小暴躁 2022-10-22 05:53:22

如果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);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文