Linux/Performance Testing

CPU

 * top
 * vmstat

Disk

 * vmstat
 * iostat
 * iotop

dd if=/dev/zero of=test.img bs=8k count=10k

10240+0 records in 10240+0 records out 83886080 bytes (84 MB) copied, 1.08009 s, 77.7 MB/s

time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync"

Ref:


 * 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=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting

Random 4K read QD1 (this is the number that really matters for real world performance unless you know better for sure):
 * 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

My versions: (2 minute test) fio --name=test --filename=test.img --rw=write --size=1g --blocksize=1024k --ioengine=libaio --iodepth=32 --direct=1 --loop=99 --runtime=120 fio --name=test --filename=test.img --rw=randwrite --size=1g --blocksize=1024k --ioengine=libaio --iodepth=32 --direct=1 --loop=99 --runtime=120

fio --name=test --filename=test.img --rw=read --size=1g --blocksize=1024k --ioengine=libaio --iodepth=32 --direct=1 --loop=99 --runtime=120 fio --name=test --filename=test.img --rw=randread --size=1g --blocksize=1024k --ioengine=libaio --iodepth=32 --direct=1 --loop=99 --runtime=120

fio --name=test --filename=test.img --rw=write --size=1g --blocksize=1024k --ioengine=libaio --iodepth=1 --direct=1 --loop=99 --runtime=120 fio --name=test --filename=test.img --rw=read --size=1g --blocksize=1024k --ioengine=libaio --iodepth=1 --direct=1 --loop=99 --runtime=120
 * 1) single queue depth

disk-perf.sh
 * 1) !/bin/bash

for QD in 1 32 ; do

for BS in 1024k 4096k ; do

echo "SEQ WRITE $BS ${QD}QD:" for i in 1 2 ; do fio --name=test --filename=test.img --rw=write --size=1g --blocksize=$BS --ioengine=libaio --iodepth=$QD --direct=1 --loop=99 --runtime=120 | grep "WRITE:" sleep 10 done

echo "SEQ READ $BS ${QD}QD:" for i in 1 2 ; do fio --name=test --filename=test.img --rw=read --size=1g --blocksize=$BS --ioengine=libaio --iodepth=$QD --direct=1 --loop=99 --runtime=120 | grep "READ:" sleep 10 done

echo "RAND WRITE $BS ${QD}QD:" for i in 1 2 ; do fio --name=test --filename=test.img --rw=randwrite --size=1g --blocksize=$BS --ioengine=libaio --iodepth=$QD --direct=1 --loop=99 --runtime=120 | grep "WRITE:" sleep 10 done

echo "RAND READ $BS ${QD}QD:" for i in 1 2 ; do fio --name=test --filename=test.img --rw=randread --size=1g --blocksize=$BS --ioengine=libaio --iodepth=$QD --direct=1 --loop=99 --runtime=120 | grep "READ:" sleep 10 done

done

done

Random Read Random Write
fio --name=global --iodepth=32 --bs=128k --direct=1 \ --ioengine=libaio \ --filename=/dev/nvme0n1 \ --name=randwrite --rw=randwrite \ --name=randread --rw=randread

fio --name=global --runtime=10m --iodepth=32 --bs=128k --direct=1 \ --ioengine=libaio \ --filename=/dev/nvme0n1 \ --name=randwrite --rw=randwrite \ --name=randread --rw=randread

Full Sequential Read Write
fio --name=global --iodepth=32 --bs=128k --direct=1 \ --ioengine=libaio \ --filename=/dev/nvme0n1 \ --name=write --rw=write \ --name=read --rw=read

fio --name=global --runtime=10m --iodepth=32 --bs=128k --direct=1 \ --ioengine=libaio \ --filename=/dev/nvme0n1 \ --name=write --rw=write \ --name=read --rw=read

Network

 * iptraf
 * nmon