AxVisor 文件系统性能测试
· 阅读需 6 分钟
总体性能
我们在飞腾派 E2000 上测试了 Axvisor 文件系统的性能,同时与 Linux 文件系统的性能做了对比。 AxVisor 在 31 个测试中有 29 个操作显著快于 Linux,尤其是在小文件 / 元数据 / 目录 / 删除类操作优势极其明显
| 操作名称 | AxVisor耗时 | Linux耗时 | 加速比 | AxVisor吞吐 | Linux吞吐 |
|---|---|---|---|---|---|
| 创建 100 个 1KB 文件 | 30.46ms | 579.76ms | 19.03x | 3.21 MB/s | 0.17 MB/s |
| 创建 50 个 4KB 文件 | 15.10ms | 294.29ms | 19.49x | 12.93 MB/s | 0.67 MB/s |
| 创建 20 个 64KB 文件 | 12.00ms | 195.77ms | 16.31x | 104.18 MB/s | 6.57 MB/s |
| 创建 1MB 文件 | 3.65ms | 31.58ms | 8.65x | 274.16 MB/s | 33.33 MB/s |
| 创建 10MB 文件 | 43.65ms | 192.91ms | 4.42x | 229.09 MB/s | 52.63 MB/s |
| 创建 50MB 文件 | 438.48ms | 740.96ms | 1.69x | 114.03 MB/s | 67.56 MB/s |
| 创建 100MB 文件 | 1.171s | 1.458s | 1.25x | 85.40 MB/s | 68.96 MB/s |
| 顺序写 50MB 文件 (4KB 块) | 19.839s | 78.883s | 3.98x | 2.52 MB/s | 0.63 MB/s |
| 顺序写 100MB 文件 (64KB 块) | 7.199s | 11.863s | 1.65x | 13.89 MB/s | 8.43 MB/s |
| 读取 100 个 1KB 文件 | 8.52ms | 503.91ms | 59.14x | 11.46 MB/s | 0.19 MB/s |
| 读取 50 个 4KB 文件 | 5.88ms | 311.19ms | 52.92x | 33.22 MB/s | 0.63 MB/s |
| 读取 20 个 64KB 文件 | 5.36ms | 138.92ms | 25.92x | 233.10 MB/s | 9.61 MB/s |
| 读取 1MB 文件 | 2.73ms | 20.67ms | 7.57x | 366.73 MB/s | 50.00 MB/s |
| 读取 10MB 文件 | 26.97ms | 32.80ms | 1.22x | 370.84 MB/s | 333.33 MB/s |
| 读取 50MB 文件 | 149.76ms | 56.77ms | 0.38x | 333.88 MB/s | 1000.00 MB/s |
| 读取 100MB 文件 | 326.87ms | 82.17ms | 0.25x | 305.93 MB/s | 1250.00 MB/s |
| 随机读 10MB 文件 (1000 次 4KB) | 673.43ms | 5.991s | 8.90x | 5.12 MB/s | 0.65 MB/s |
| 随机读 50MB 文件 (5000 次 4KB) | 18.373s | 30.155s | 1.64x | 0.94 MB/s | 0.64 MB/s |
| 随机写 10MB 文件 (1000 次 4KB) | 664.54ms | 6.318s | 9.51x | 5.19 MB/s | 0.61 MB/s |
| 随机写 50MB 文件 (5000 次 4KB) | 18.315s | 31.675s | 1.73x | 0.94 MB/s | 0.61 MB/s |
| 向 10 个文件追加 2KB | 0.22ms | 21.73ms | 98.77x | 9.04 MB/s | 0.50 MB/s |
| 创建 50 个目录 | 16.49ms | 410.37ms | 24.89x | - | - |
| 列出 176 个文件 | 1.96ms | 30.55ms | 15.59x | - | - |
| 获取 100 个文件元数据 | 0.92ms | 36.04ms | 39.17x | - | - |
| 删除 50 个 4KB 文件 | 1.83ms | 318.20ms | 173.88x | - | - |
| 删除 20 个 64KB 文件 | 0.77ms | 139.22ms | 180.81x | - | - |
| 删除 2 个大文件 | 0.85ms | 37.46ms | 44.07x | - | - |
| 删除 50 个 1KB 文 件 | 1.42ms | 317.12ms | 223.32x | - | - |
| 删除 50MB 文件 | 4.77ms | 58.83ms | 12.33x | - | - |
| 删除 100MB 文件 | 10.56ms | 79.39ms | 7.52x | - | - |
| 删除 50 个目录 | 2.27ms | 300.25ms | 132.27x | - | - |
从31项基准测试的综合表现来看,AxVisor在总耗时上表现显著优于Linux,总响应时间约67.35秒,而Linux为171.28秒,整体加速比为2.54倍。在操作层面,AxVisor在29项测试中领先,仅在2项测试中落后于Linux。
从吞吐量角度,Linux略占优势,平均吞吐量为137.42 MB/s,AxVisor为119.80 MB/s。这种反向关系说明两个系统在不同的IO场景下有各自的优化重点。
小文件操作性能
创建操作:
- 1KB文件(100个):AxVisor 30.46ms vs Linux 579.76ms,加速比19.03x
- 4KB文件(50个):AxVisor 15.10ms vs Linux 294.29ms,加速比19.49x
- 64KB文件(20个):AxVisor 12.00ms vs Linux 195.77ms,加速比16.31x
AxVisor在小文件创建场景下保持16-19倍性能优势。Linux受VFS层复杂度、journaling机制、权限检查等多层开销影响。
读取操作:
- 1KB文件(100个):AxVisor 8.52ms vs Linux 503.91ms,加速比59.14x
- 4KB文件(50个):AxVisor 5.88ms vs Linux 311.19ms,加速比52.92x
- 64KB文件(20个):AxVisor 5.36ms vs Linux 138.92ms,加速比25.92x
小文件读取加速比超过创建操作,1KB文件达59倍。Linux的预读机制对 碎片化小文件读取增加额外开销。
大文件操作性能
随着文件规模的增大,AxVisor的性能优势逐渐减弱:
| 文件大小 | 创建加速比 | 读取加速比 | 写入加速比 |
|---|---|---|---|
| 1MB | 8.65x | 7.57x | - |
| 10MB | 4.42x | 1.22x | - |
| 50MB | 1.69x | 0.38x | - |
| 100MB | 1.25x | 0.25x | - |
读取性能反转:
- 50MB文件:AxVisor 149.76ms vs Linux 56.77ms
- 100MB文件:AxVisor 326.87ms vs Linux 82.17ms
在大文件读取场景下,Linux实现3-4倍性能优势,得益于成熟的page cache管理、高效的DMA传输和顺序读优化的read-ahead算法。
随机I/O性能
随机读取:
- 10MB(1000次4KB):AxVisor 673.43ms vs Linux 5.991s,加速比8.90x
- 50MB(5000次4KB):AxVisor 18.373s vs Linux 30.155s,加速比1.64x
随机写入:
- 10MB(1000次4KB):AxVisor 664.54ms vs Linux 6.318s,加速比9.51x
- 50MB(5000次4KB):AxVisor 18.315s vs Linux 31.675s,加速比1.73x
AxVisor在随机I/O场景下保持明显优势,Linux的I/O调度器在处理大量随机请求时引入额外调度开销。
