开发者社区> 问答> 正文

操作系统缓存与磁盘性能关系

已解决

操作系统缓存与磁盘性能关系?
想请哪位专家科普一下,操作系统缓存与磁盘性能关系。

展开
收起
宝惜 2018-12-21 11:41:41 3122 0
2 条回答
写回答
取消 提交回答
  • 采纳回答

    对程序来说,读写文件的快慢,是操作系统提供的能力。
    在写的时候,操作系统一般会有缓存,称buffer,然后定期刷到磁盘。所以操作系统内存(这部分内容叫buffer)足够的情况下,程序短暂的写会表现得很好; 如果是长期持续写入,那缓存作用不大,写入能力就基本等同于磁盘的写能力;
    在读的时候,如果要读取的内容是之前写入的,数据已经在内存,这部分内容叫cache,那么读取就不需要去读磁盘,这个时候对程序来说,读操作等同于读内存,速度很快;如果文件内容不在缓存,则读取速度等同于读取磁盘。所以一般在Linux操作系统,第一次读文件可能慢,但第二次是飞快的,因为内容已经进入cache了。

    2019-07-17 23:23:20
    赞同 1 展开评论 打赏
  • 阿里云的一名码农,现在在性能领域埋头耕耘

    一溜的回复很精彩,把操作系统的缓存特性说的非常清楚。
    那怎么看待磁盘性能与操作系统的缓存之间的关系呢:
    通常场景是数据读写都走系统缓存,由内核定期刷到磁盘,那么如果为了测试磁盘性能,拼命地去调用read或者write函数,那不是真正磁盘的性能,sysbench默认磁盘性能测试就是调用pread函数和pwrite函数,所以没有真正测试到磁盘性能。
    如何正确测试磁盘性能,那就要绕开缓存,直接读写磁盘,通过设置文件的访问模式为 O_DIRECT,就可以真正测试磁盘性能。

    2019-07-17 23:23:20
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
用户态高速块缓存方案 立即下载
高性能Web架构之缓存体系 立即下载