Last active
October 31, 2025 16:56
-
-
Save ashvardanian/96a3a39a85cfbae3a373710038455a0a to your computer and use it in GitHub Desktop.
Profiling SSDs for IO-intensive applications
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Based on StackOverflow answer: https://askubuntu.com/a/991311 | |
| # For every engine that we may use, performs following benchmarks (in current directory). | |
| # 1. Sequential READ speed with big blocks. | |
| # 2. Sequential WRITE speed with big blocks. | |
| # 3. Mixed random 4K read and write QD1 with sync. | |
| # 4-6. Random 4K read QD1: | |
| # 4. with iodepth=1, numjobs=1 | |
| # 5. with iodepth=1024, numjobs=1 | |
| # 6. with iodepth=1024, numjobs=4 | |
| # | |
| # Full list of engines is available here: | |
| # https://fio.readthedocs.io/en/latest/fio_doc.html#i-o-engine | |
| sudo apt install fio | |
| # LibAIO | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randrw --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1024 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1024 --direct=1 --numjobs=2 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1024 --direct=1 --numjobs=4 --runtime=60 --group_reporting | |
| # mmap | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=mmap --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=mmap --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randrw --size=500m --io_size=10g --blocksize=4k --ioengine=mmap --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=mmap --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=mmap --fsync=1 --iodepth=1024 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=mmap --fsync=1 --iodepth=1024 --direct=1 --numjobs=2 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=mmap --fsync=1 --iodepth=1024 --direct=1 --numjobs=4 --runtime=60 --group_reporting | |
| # io_uring | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=io_uring --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=io_uring --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randrw --size=500m --io_size=10g --blocksize=4k --ioengine=io_uring --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=io_uring --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=io_uring --fsync=1 --iodepth=1024 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=io_uring --fsync=1 --iodepth=1024 --direct=1 --numjobs=2 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=io_uring --fsync=1 --iodepth=1024 --direct=1 --numjobs=4 --runtime=60 --group_reporting | |
| # libcufile is only supported on Volta and Ampere | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libcufile --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=libcufile --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randrw --size=500m --io_size=10g --blocksize=4k --ioengine=libcufile --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libcufile --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libcufile --fsync=1 --iodepth=1024 --direct=1 --numjobs=1 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libcufile --fsync=1 --iodepth=1024 --direct=1 --numjobs=2 --runtime=60 --group_reporting | |
| fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libcufile --fsync=1 --iodepth=1024 --direct=1 --numjobs=4 --runtime=60 --group_reporting |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment