开发者社区> 问答> 正文

两个c程序同时操作硬盘,一个读,一个写,结果发现读比写要慢的多。这种情况(磁盘接近满负荷写)下如何提高读的速度。

有两个程序要操作硬盘,一个读,一个写。
两个程序不同时运行时,都能达到硬盘的性能上限。180M/s。
但当两个程序同时跑起来时,读取速度却大幅下降速度大概只有60M左右。写的速度受影响要小很多平均能到120-160M/s吧。在两个同时抢占硬盘时,有哪些方法去做平衡读写速度的差异?提高读取的速度。

展开
收起
a123456678 2016-06-28 14:45:23 3328 0
1 条回答
写回答
取消 提交回答
  • 从硬盘的角度来说,读写访问应该是互斥的,所以是单进程/线程的。

    CPU内部有task scheduler调度读写程序,微观上如果两者的优先级相同,且发生频率相同,有可能是写的速度是读的一半左右,所以按照 写-读-写-读 round-robin的时间轮转算法来安排读写程序在CPU中的执行顺序的话,最后写能占有 2/3的CPU/硬盘时间,所以带宽降为2/3左右。

    试试看读写程序进行 IPC 进程间通信,通过同步互斥的方式协调两者的执行?

    具体还是要看应用场景,读写的数据有没有相关性,发生的频率和profile。

    2019-07-17 19:48:19
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
用户态高速块缓存方案 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多