Page Cache 在磁盘速度测试中的影响
Page cache,本质上是一个一个的物理内存页,作用于介于内存缓冲区和物理文件之间,是操作系统用于提高I/O效率和系统性能的一个有效方法。
用户调用read时,OS会将比read多的多的数据事先读取到page cache中,接下来的read操作很可能不会再涉及到磁盘操作,而是从cache中读取;用户调用write时,OS则将数据写到page cache中,而不是立即写入磁盘,等到OS认为写的时机成熟,才会将数据从page cache写入磁盘。
Page Cache的这种特性,将会给磁盘速度测试带来误差:以wirte为例,将一块内存缓冲区写入文件,write操作在时间N内完成,则N很可能是写page cache(内存)的时间而不是实际写入物理磁盘的时间,这就使得所测得的速度虚高;相对来说,read操作受page cache影响稍低一些。
在linux和windows下都有bypass page cache的技术,具体来说就是在打开文件的时候,flags参数需要加入O_DIRECT(linux)/NO_BUFFERING(windows),这两个synchronous标记确保了read/write调用结束之后,data is guaranteed to have been transferred.
阅读(1458) | 评论(0) | 转发(0) |