Linux/Performance Testing

From Omnia
Jump to navigation Jump to search

Monitor System

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: [1]

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
# single queue depth
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


disk-perf.sh

#!/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

keywords