跳到主要内容

1 篇博文 含有标签「Linux」

Linux tag description

查看所有标签

AxVisor 文件系统性能测试

· 阅读需 6 分钟
Josen-B
AxVisor Kernel Engineer @ QCLIC

总体性能

我们在飞腾派 E2000 上测试了 Axvisor 文件系统的性能,同时与 Linux 文件系统的性能做了对比。 AxVisor 在 31 个测试中有 29 个操作显著快于 Linux,尤其是在小文件 / 元数据 / 目录 / 删除类操作优势极其明显

操作名称AxVisor耗时Linux耗时加速比AxVisor吞吐Linux吞吐
创建 100 个 1KB 文件30.46ms579.76ms19.03x3.21 MB/s0.17 MB/s
创建 50 个 4KB 文件15.10ms294.29ms19.49x12.93 MB/s0.67 MB/s
创建 20 个 64KB 文件12.00ms195.77ms16.31x104.18 MB/s6.57 MB/s
创建 1MB 文件3.65ms31.58ms8.65x274.16 MB/s33.33 MB/s
创建 10MB 文件43.65ms192.91ms4.42x229.09 MB/s52.63 MB/s
创建 50MB 文件438.48ms740.96ms1.69x114.03 MB/s67.56 MB/s
创建 100MB 文件1.171s1.458s1.25x85.40 MB/s68.96 MB/s
顺序写 50MB 文件 (4KB 块)19.839s78.883s3.98x2.52 MB/s0.63 MB/s
顺序写 100MB 文件 (64KB 块)7.199s11.863s1.65x13.89 MB/s8.43 MB/s
读取 100 个 1KB 文件8.52ms503.91ms59.14x11.46 MB/s0.19 MB/s
读取 50 个 4KB 文件5.88ms311.19ms52.92x33.22 MB/s0.63 MB/s
读取 20 个 64KB 文件5.36ms138.92ms25.92x233.10 MB/s9.61 MB/s
读取 1MB 文件2.73ms20.67ms7.57x366.73 MB/s50.00 MB/s
读取 10MB 文件26.97ms32.80ms1.22x370.84 MB/s333.33 MB/s
读取 50MB 文件149.76ms56.77ms0.38x333.88 MB/s1000.00 MB/s
读取 100MB 文件326.87ms82.17ms0.25x305.93 MB/s1250.00 MB/s
随机读 10MB 文件 (1000 次 4KB)673.43ms5.991s8.90x5.12 MB/s0.65 MB/s
随机读 50MB 文件 (5000 次 4KB)18.373s30.155s1.64x0.94 MB/s0.64 MB/s
随机写 10MB 文件 (1000 次 4KB)664.54ms6.318s9.51x5.19 MB/s0.61 MB/s
随机写 50MB 文件 (5000 次 4KB)18.315s31.675s1.73x0.94 MB/s0.61 MB/s
向 10 个文件追加 2KB0.22ms21.73ms98.77x9.04 MB/s0.50 MB/s
创建 50 个目录16.49ms410.37ms24.89x--
列出 176 个文件1.96ms30.55ms15.59x--
获取 100 个文件元数据0.92ms36.04ms39.17x--
删除 50 个 4KB 文件1.83ms318.20ms173.88x--
删除 20 个 64KB 文件0.77ms139.22ms180.81x--
删除 2 个大文件0.85ms37.46ms44.07x--
删除 50 个 1KB 文件1.42ms317.12ms223.32x--
删除 50MB 文件4.77ms58.83ms12.33x--
删除 100MB 文件10.56ms79.39ms7.52x--
删除 50 个目录2.27ms300.25ms132.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的性能优势逐渐减弱:

文件大小创建加速比读取加速比写入加速比
1MB8.65x7.57x-
10MB4.42x1.22x-
50MB1.69x0.38x-
100MB1.25x0.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调度器在处理大量随机请求时引入额外调度开销。

元数据操作性能

元数据操作是AxVisor表现最突出的领域:

操作AxVisorLinux加速比
创建50个目录16.49ms410.37ms24.89x
列出176个文件1.96ms30.55ms15.59x
获取100个文件元数据0.92ms36.04ms39.17x
删除50个4KB文件1.83ms318.20ms173.88x
删除50个目录2.27ms300.25ms132.27x

获取元数据操作达39倍加速,删除操作突破170倍。

原因:简化的权限检查机制、高效的inode/in-memory结构设计、减少的journaling开销、优化的目录项缓存策略。

顺序写入性能

小块顺序写入(4KB块):

  • 50MB:AxVisor 19.839s vs Linux 78.883s,加速比3.98x

大块顺序写入(64KB块):

  • 100MB:AxVisor 7.199s vs Linux 11.863s,加速比1.65x

AxVisor在顺序写入场景下保持优势,优势幅度与块大小呈反比。小块写入时优势来自更高效的单次I/O提交机制。

追加操作性能

向10个文件各追加2KB:AxVisor 0.22ms vs Linux 21.73ms,加速比98.77x

AxVisor在文件扩展、inode更新等环节实现路径极简,Linux的追加操作涉及复杂的journaling、锁竞争、文件锁等机制。