介绍Linux平台对存储器的性能测试
当前平台基于Ubuntu平台进行测试
dd命令基本测试
写入测试
dd if=/dev/random of=test.bin bs=1G count=1 oflag=direct
读取测试
dd if=test.bin of=/dev/zero bs=1G count=1 iflag=direct
fio命令测试
工具安装
sudo apt-get install fio
NVME测试
测试用例
nvme-comprehensive.fio
; 顺序读取测试
[job-seq-read]
ioengine=libaio
direct=1
runtime=60
time_based
filename=/mnt/nvme/fio_test_seq_read
bs=1m
size=10G
numjobs=4
iodepth=64
name=Sequential_Read
; 顺序写入测试
[job-seq-write]
ioengine=libaio
direct=1
runtime=60
time_based
filename=/mnt/nvme/fio_test_seq_write
bs=1m
size=10G
numjobs=4
iodepth=64
name=Sequential_Write
; 随机读取测试
[job-rand-read]
ioengine=libaio
direct=1
runtime=60
time_based
filename=/mnt/nvme/fio_test_rand_read
bs=4k
size=10G
numjobs=4
iodepth=64
name=Random_Read
; 随机写入测试
[job-rand-write]
ioengine=libaio
direct=1
runtime=60
time_based
filename=/mnt/nvme/fio_test_rand_write
bs=4k
size=10G
numjobs=4
iodepth=64
name=Random_Write
执行方法
fio nvme-comprehensive.fio --output=nvme-comprehensive-result.log
TF/SD卡测试
测试用例
tf-comprehensive.fio
; 全局设置
[global]
ioengine=libaio
direct=0 ; 使用缓冲 I/O,适合文件系统测试
runtime=60
time_based
group_reporting
numjobs=1 ; 对于 TF 卡,使用单线程以减少磨损
iodepth=1 ; 使用较低的 I/O 深度以减少并发压力
filename=/mnt/sdcard/testfile ; 使用创建的测试文件路径
size=5G ; 测试总数据量设为 5GB
; 顺序读取测试
[job-seq-read]
stonewall
rw=read
bs=1m
name=Sequential_Read
; 顺序写入测试
[job-seq-write]
stonewall
rw=write
bs=1m
name=Sequential_Write
; 随机读取测试
[job-rand-read]
stonewall
rw=randread
bs=4k
name=Random_Read
; 随机写入测试
[job-rand-write]
stonewall
rw=randwrite
bs=4k
name=Random_Write
测试方法
fio tf-comprehensive.fio --output=tf-comprehensive-result.log
iozone
安装
sudo apt install iozone3
命令介绍
- -a #全面测试
- -i #指定运行于哪种模式测试。可以使用-i # -i # -i #进行多个测试
-
- 0=write/rewrite
-
- 1=read/re-read
-
- 2=random read/random write
- -f #指定用来测试的临时文件,测试完后会自动删除
- -r #设置测试文件的块大小
- -s #设置测试文件的大小,要求为物理内存的1/2,1倍,2倍
- -I #直接IO,可排除掉缓存的影响,直接对硬盘读写
常见使用方法
iozone -a -i 0 -i 1 -i 2 -f ./testfile -r 16m -s 4G | tee -a iozone1.log