我有一个很大的目录,里面有很多缓存文件,我想重新组织这些文件以获得最大性能(访问时间)。
PHP/Perl 脚本(随机)访问文件。这些脚本生成绝对路径并读取文件。没有目录列表:几乎只有fopen
文件的绝对路径。
当前目录层次结构是:cacheDir/d4/1d/d41d8cd98f00b204e9800998ecf8427e.dat
所以有 256 个一级子目录(d4
在示例中)和 256 个二级子目录(1d
在示例中)。平均每个二级目录大约有 200-300 个文件。
问题:当出现网络流量高峰和大量fopen
's in 时cacheDir
,流量iowait
正在增长,减慢系统速度,出现非常高的负载和明显的延迟。只有在cacheDir
访问文件时才会出现这种高负载。如果我以相同的频率访问其他目录/文件,则磁盘和系统运行良好。
我想知道更改缓存目录结构是否会提高性能?更改为(例如):(cacheDir/d/4/1/d/8/d41d8cd98f00b204e9800998ecf8427e.dat
16 个子目录在:1st、2nd、3rd、4th 级别,并且(平均)每个 4th 级别子目录有 15 个文件)。
我知道在简单的台式机 SATA III 驱动器上的 Software RAID 1 不是速度怪物,但也许有一些优化文件系统的好方法?
请注意:
dir-index
noatime
e2fsck -Df