磁盘测速

一、写在测试之前的

程序测试磁盘速度应该考虑到几点:

  1. 首先是内存的存在。内存作为读写的缓冲区,写入一个文件到磁盘时fflush() 会将写入数据从用户态转为核态,只有核态命令fsync() 才能够将数据真正的刷新的硬盘。内存作为缓存在读时可能影响更大。
  2. 其次是磁盘缓存,磁盘缓存是非易失性的,速度接近于内存,但容量一般在16MB~64MB 之间。会对写入速度的测试有较大影响。比如对于64MB 缓存硬盘,只写入一个小于64MB 文件后计算速度会非常大。
  3. 不同磁道上扇区密度不同。如下左图是比较旧磁盘采用的磁道上扇区分法,这样的在同样一圈磁道上扇区数相同,内外径不同磁道上磁头旋转一圈读取的数据量相同,缺点就在于外径扇区没有充分利用较大的磁道。而右边采用的近似等线密度的扇区分区,外径上磁道比内径上磁道具有更多的扇区,也就是说磁头在外径磁道上旋转一周的时间会读取更多的数据,这点在后面的实验中也有证实。
  4. 还有一个需要考虑到得是文件系统的影响,文件系统决定了文件的放置,很大程度上决定了测试的读写性能,比如Linux ext 文件系统就和windows 的文件系统不同(因为不需要碎片整理了)。在下面大部分测试中都使用的是打开文件、写文件、关闭文件,然后对同一个文件重复同样流程。

  1  2

继续阅读