小编gib*_*gib的帖子

哪个目录层次结构最好/最快?

我有一个很大的目录,里面有很多缓存文件,我想重新组织这些文件以获得最大性能(访问时间)。

  • 2 个 2TB SATA III 驱动器,软件 RAID 1(镜像)
  • 操作系统:Ubuntu 12.04 LTS
  • 文件系统:ext4
  • 500 GB od 数据
  • 大约 16-17 百万个文件
  • 平均文件大小:30KB
  • 文件名是 MD5 哈希值

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.dat16 个子目录在:1st、2nd、3rd、4th 级别,并且(平均)每个 4th 级别子目录有 15 个文件)。

我知道在简单的台式机 SATA III 驱动器上的 Software RAID 1 不是速度怪物,但也许有一些优化文件系统的好方法?

请注意:

  • 文件系统已启用 dir-index
  • 文件系统挂载了 noatime
  • 文件系统经过优化 e2fsck -Df

linux performance ext4 hard-drive

1
推荐指数
1
解决办法
241
查看次数

标签 统计

ext4 ×1

hard-drive ×1

linux ×1

performance ×1