Skip to main content

IO性能

对比Photon和fio的读能力,测试对象是一块3.5TB的NVMe SSD

Photon

测试代码

https://github.com/alibaba/PhotonLibOS/blob/main/examples/perf/io-perf.cpp

测试命令

测试程序会以只读方式打开SSD设备,并进行随机读

./io-perf --disk_path=/dev/nvme0n1 --disk_size=3000000000000 --io_depth=128 --io_size=4096 --io_uring 

参数说明

  • 由于不使用三方库无法获得磁盘大小,因此需要手动设置disk_size参数。无需精确值。如指定3TB
  • 默认使用libaio作为IO引擎,--io_uring参数表示开启io_uring,需要把内核升级到6.x才能得到最好效果

fio

fio --filename=/dev/nvme0n1 --direct=1 --ioengine=libaio --iodepth=128 --rw=randread --bs=4k --size=100% --group_reporting --name=randread --numjobs=1

测试结果

IO EngineIO TypeIO SizeIO DepthDirectIOQPSThroughputCPU util
Photonio_uringRand-read4KB128Yes433K1.73GB100%
PhotonlibaioRand-read4KB128Yes346K1.38GB100%
fiolibaioRand-read4KB128Yes279K1.11GB100%
note

fio只开启一个job(线程)

结论

  • Photon在上述情况下比fio最多可高出50%的性能
  • 即使把IO引擎从io_uring换到libaio,Photon仍然胜出