最近项目遇到性能瓶颈,写盘时候CPU占用率比较高,打算从 SATA 硬盘升级到 SAS 硬盘,也希望能从系统软件方面改进一下,从几篇不错的文章了解到常用的 Linux 文件系统之间的性能差异,评测结果也比较一致,推荐这篇(http://www.debian-administration.org/articles/388)结果较详尽(但是2006的文章,过去这么久,评测结果可能有所变化)。
综合各评测结果看来,几种文件系统的性能表现如下:
Ext3 | ReiserFS | JFS | XFS | |
可用空间大小 | 92.77% | 99.83% | 99.82% | 99.95% |
创建分区速度(秒) 20G分区 | 14.7 | 2.2 (CPU 59%) | 1.3 (CPU 74%) | 0.7 |
mount速度(秒) 20G分区 | 0.2 | 2.3 | 0.2 | 0.5 |
unmount速度(秒) 20G分区 | 0.2 (CPU 37%) | 0.4 (CPU 14%) | 0.2 (CPU 27%) | 0.2 (CPU 45%) |
拷贝大文件(秒) 700M ISO Imag(CPU 46% - 51%) | 38.2 | 41.8 | 35.1 | 34.8 |
第二次拷贝同样的文件(秒)(CPU 38% - 50%) | 37.3 | 43.9 | 39.4 | 33.1 |
删除同样的ISO文件(秒) | 2.5 (CPU 10%) | 1.5 (CPU 49%) | 0.02 (CPU 10%) | 0.02 (CPU 10%) |
拷贝大文件树(秒) 7500个文件, 900个目录, 1.9GB(CPU 27% - 36%) | 158.3 | 172.1 | 180.1 | 166.1 |
第二次拷贝同样的大文件树(秒) | 120 | 136.9 (CPU 45%) | 151 (CPU 29%) | 135.2 |
删除同样的大文件树(秒) | 22 (CPU 15%) | 8.2 (CPU 86%) | 12.5 (CPU 15%) | 10.5 (CPU 65%) |
List同样的大文件树(秒) | 2.5 (CPU 35%) | 1.4 (CPU 71%) | 3.1 (CPU 35%) | 1.8 (CPU 70%) |
搜索同样的大文件树(秒) | 4.6 (CPU 6%) | 0.8 (CPU 36%) | 5 (CPU 6%) | 2.8 (CPU 10%) |
绿色:效率最高,蓝色:效率高,红色:效率最差
鉴于多数现有的评测“年代久远”,几年来软件和硬件都有发展,因此我还是自己做了一个简单的评测。
由于 ReiserFS 作者的前途渺茫,故只针对 Ext3,XFS,JFS 来评测,评测项目仅针对大文件树的操作,不测试CPU占用率。测试机使用 Virtualbox虚拟机,环境如下:
宿主机配置如下: CPU : Q9550 四核2.8G 内存 : 4G 硬盘 : SATA 500G
虚拟机配置如下: CPU: 单核 内存:384M 硬盘:8G
Ext3 | JFS | XFS | |
拷贝/usr目录到/root/usrx(秒) ext3已运行很多天, jfs和xfs系统刚装, 拷贝时虚拟硬盘还要自动扩展大小, 因此jfs和xfs硬盘会多一些性能损耗 | 158 | 145 | 123 |
第二次拷贝/usr目录(秒) | 153 | 109 | 91 |
删除/root/usrx目录(秒) | 3.5 | 10 | 14.6 |
第二次删除/root/usrx目录(秒) | 6.2 | 12 | 14.9 |
从这份测试结果来看,XFS对大文件树的拷贝性能似乎从较高变成最高了,而且遥遥领先,但删除大文件树的速度则是最慢的。删除文件虽然是最慢的,但在大多数系统中删除操作较少,而且删除动作的速度较拷贝的速度要快一个数量级,这样说来整个系统由于删除动作带来的性能损耗有限,因此删除动作的性能损耗可以接受。
另外推荐一篇文件系统的评测文章:
http://linuxgazette.net/122/TWDT.html#piszcz (有多张统计图,直观)