原文:http://www.searchtb.com/2011/05/提升磁盘io性能的几个技巧.html
目前磁盘都是机械方式运作的,主要体现在磁盘读写前寻找磁道的过程。磁盘自带的读写缓存大小,对于磁盘读写速度至关重要。读写速度快的磁盘,通常都带有较大的读写缓存。磁盘的寻道过程是机械方式,决定了其随机读写速度将明显低于顺序读写。在我们做系统设计和实现时,需要考虑到磁盘的这一特性。
FastDFS是一个开源的高效分布式文件系统,它最初的实现,文件是按hash方式随机分布到多个目录中的,后来增加了顺序存放的做法。通过对比测试,发现文件按目录顺序存储,写文件IO效率明显高于按目录随机存储。
目前磁盘顺序读取的速度并不差,比如普通硬盘的IO可以达到每秒40~60MB,好一些的硬盘可以达到每秒100MB左右。在多进程或多线程并发读取磁盘的情况下,随着并发数的增加,磁盘IO效率将大大下降。主要是因为每次读写,磁道可能存在较大的偏移,磁道寻址时间加大,导致磁盘IO性能急剧下降。对于这种场景,优化方案是尽可能减少并发读写的进程数或线程数。可以用锁的机制,也可以采用专门的磁盘IO线程来对磁盘进行读写。FastDFS 2.x版本,磁盘读写就采用了专门的线程来完成。
为了充分发挥多块磁盘的效率,不建议使用传统的RAID方式。比较好的做法是每块磁盘单独mount,通过程序来控制对多块磁盘进行并发读写。采用单盘mount,文件的备份和冗余可以通过多台机器实现。
文件数多了之后,比如达到上千万个文件,当随机访问众多文件时,文件系统的性能会急剧下降。业界流行的做法是将多个小文件合并存储到一个大文件中的方式来降低文件数。FastDFS 3.0支持将多个小文件合并存储到一个较大文件中,目前开发进展比较顺利,预计5月份可以发布3.0版本。
提升磁盘IO的另外一个技巧,一次尽可能多写入或多读取。也就是说,将程序的读写buffer设置得尽可能大一些。例如日志或者redo log的写入,不是每次调用都直接写磁盘,而是先缓存到内存中,等buffer满了再写入磁盘,也可以定时写入磁盘。
操作系统和C库函数通常会对写入的文件内容做缓存,以减少实际写文件的次数。直接调用系统函数fsync或C函数fflush将使系统的缓存机制失效,此时将强制把内容刷到磁盘上。除非必需,否则不要执行强制刷盘操作。
注:如果没有特别说明,文中说的磁盘指的是硬盘。
相关推荐
查看磁盘IO性能
公司的DELL R720服务做了raid 5,安装了windows server 2012 发现服务器运行很慢,怀疑了磁盘IO问题,故此做了性能监控和分析,发现确实为磁盘IO问题。此为分析报告,对windows服务器性能监控有指导意义。后来咨询...
易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar ...
WMI磁盘IO性能监控.rar WMI磁盘IO性能监控.rar WMI磁盘IO性能监控.rar WMI磁盘IO性能监控.rar WMI磁盘IO性能监控.rar WMI磁盘IO性能监控.rar
易语言源码易语言磁盘IO性能监控源码.rar 易语言源码易语言磁盘IO性能监控源码.rar 易语言源码易语言磁盘IO性能监控源码.rar 易语言源码易语言磁盘IO性能监控源码.rar 易语言源码易语言磁盘IO性能监控源码.rar ...
易语言磁盘IO性能监控源码,磁盘IO性能监控
易语言WMI磁盘IO性能监控源码,WMI磁盘IO性能监控,磁盘IO性能监控,格式化字节,StrFormatByteSize64A
易语言源码WMI磁盘IO性能监控易语言源码.rar 易语言源码WMI磁盘IO性能监控易语言源码.rar 易语言源码WMI磁盘IO性能监控易语言源码.rar 易语言源码WMI磁盘IO性能监控易语言源码.rar 易语言源码WMI磁盘IO性能监控...
详解linux下使用IOMETER测试磁盘IO性能.docx详解linux下使用IOMETER测试磁盘IO性能.docx
iostat来对linux硬盘IO性能进行检测iostat来对linux硬盘IO性能进行检测iostat来对linux硬盘IO性能进行检测iostat来对linux硬盘IO性能进行检测
该模版是zabbix用于磁盘IO性能监控,包括各项指标以及相应的图形
linux下图形界面测试磁盘IO性能的源码,直接编译即可运行
Unix,Linux 磁盘 IO 性能监控命令.docxUnix,Linux 磁盘 IO 性能监控命令.docx
磁盘io性能监控(linux和windows).docx磁盘io性能监控(linux和windows).docx
每个文件描述符对应内核中一个叫file的对象,而每个文件对应一个叫inode的对象。假设某个进程两次打开同一个文件,得到了两个文件描述符,那么在 内核中对应的是两个file对象,但只有一个inode...因此不会提升IO性能。
bonnie++ linux测试磁盘IO性能的工具
详解linux下使用IOMETER测试磁盘IO性能.doc
磁盘通常是计算机最慢的子系统,也是最容易出现性能瓶颈的地方,因为磁盘离 CPU 距离最远而且 CPU 访问磁盘要涉及到机械操作,...要监测 IO 性能,有必要了解一下基本原理和 Linux 是如何处理硬盘和内存之间的 IO 的。
linux查看磁盘io的几种方法.docx