Notes
To have reproducible results the aim should be to limit caching effects. For that:
- Test data should be forced to storage and larger than flash drive's internal caches
- Block caches should be emptied between tests
FIO
sudo apt update
sudo apt install fio
Save this file as a job file called "chia.fio" or whatever you want, and change filename to the path of the drive or RAID volume that you want to test
[global]
bs=128K
iodepth=256
direct=1
ioengine=libaio
group_reporting
time_based
name=chia
log_avg_msec=1000
bwavgtime=1000
filename=/<yourRAID>/fiotest.tmp
size=100G
[rd_qd_256_128k_1w]
stonewall
bs=128k
iodepth=256
numjobs=1
rw=read
runtime=60
write_bw_log=seq_read_bw.log
[wr_qd_256_128k_1w]
stonewall
bs=128k
iodepth=256
numjobs=1
rw=write
runtime=60
write_bw_log=seq_write_bw.log
run sudo fio chia.fio
IOzone
This assumes RHEL stack Linux.
Install from sources
sudo yum update -y
sudo yum groupinstall "Development Tools" -y
cd /opt
wget http://www.iozone.org/src/current/iozone3_490.tar
tar -xvf iozone3_490.tar
cd iozone3_490/src/current
make linux-AMD64
Run single threaded
- Assume the test drive or volume is mounted as /chia/scratch/disk01
- -i 0=write/rewrite
- -i 1=read/re-read
- -i 2=random-read/write
- -i 8=random_mix
- -e Include flush (fsync,fflush) in the timing calculations
- -r # record size in Kb
- -s # file size in GB
- -U Mount point to remount between tests, this option will clear the block caches between tests. For this to work, mounting of the disk/volume needs to be configured in /etc/fstab.
/opt/iozone3_490/src/current/iozone -e -r 256 -s 32G -i 0 -i 1 -i 2 -i 8 -f /chia/scratch/disk01/tfile -U /chia/scratch/disk01
Run multi threaded
- Assume the test drive or volume is mounted as /chia/scratch/disk01
- -I Use DIRECT I/O for all file operations. Tells the filesystem that all operations are to bypass the buffer cache and go directly to disk. This also will use VX_DIRECT on VxFS, and O_DIRECT on Linux, and directio() on Solaris.