SSD ディスクの小さなファイルの読み取りおよび書き込みパフォーマンス テスト

ツール スクリプト: 「test_ssd_small_files.sh」を参照してください。vdbench ツールによってコンパイルされた次のテスト レポートは参考用です。メーカーが異なると CPU やディスクが異なるため、注意してください。

マウント方法 テストツール 操作方法 読み取り率 I/Oモード ファイルの数 ファイルサイズ xfersize プロセス数 スレッド/プロセスの数 IOPS/秒 ファイル/秒 読み取りトラフィック (MB/秒) 書き込みトラフィック (MB/秒) 総トラフィック (MB/秒) 操作の遅延 (ミリ秒) CPU(%)
内線4 vdベンチ 書く 0% 注文 1000 6M 1024K 1 4 73.7 12.28 0 73.67 73.67 54.23 4.3
vdベンチ 書く 0% 注文 100 64M 1024K 1 4 44.6 0.69 0 44.62 44.62 89.00 3.7
vdベンチ 書く 0% 注文 1000 1M 1024K 1 4 86 86 0 86 86.00 46.55 2.6
vdベンチ 書く 0% 注文 1000 4M 1024K 1 4 62.7 15.67 0 62.68 62.68 63.74 4
vdベンチ 書く 0% 注文 10000 512K 512K 1 4 99.9 99.9 0 49.96 49.96 33.76 4
vdベンチ 書く 0% 注文 10000 64K 64K 1 4 100.3 100.3 0 6.27 6.27 5.65 4.4
vdベンチ 書く 0% 注文 10000 32K 32K 1 4 100.5 100.5 0 3.14 3.14 2.64 3.6
vdベンチ 読む 100% 注文 1000 6M 1024K 1 4 376.6 62.76 376.6 0 376.60 10.60 4.9
vdベンチ 読む 100% 注文 100 64M 1024K 1 4 393.2 6.14 393.2 0 393.20 10.16 4.7
vdベンチ 読む 100% 注文 1000 1M 1024K 1 4 386.6 386.6 386.6 0 386.60 10.25 5.2
vdベンチ 読む 100% 注文 1000 4M 1024K 1 4 381.4 95.35 381.4 0 381.40 10.46 4.6
vdベンチ 読む 100% 注文 10000 512K 512K 1 4 370.1 370.1 370.1 0 370.10 5.37 5.5
vdベンチ 読む 100% 注文 10000 64K 64K 1 4 6037 6037 377.3 0 377.30 0.64 16.6
vdベンチ 読む 100% 注文 10000 32K 32K 1 4 10182 10182 318.2 0 318.20 0.37 24.6
vdベンチ 読み書き 40% 注文 1000 6M 1024K 1 4 24.3 4.05 10.87 13.4 24.27 293.21 3.5
vdベンチ 読み書き 40% 注文 100 64M 1024K 1 4 27.5 0.43 12.11 15.38 27.49 256.23 3.4
vdベンチ 読み書き 40% 注文 1000 1M 1024K 1 4 22.8 22.8 9.92 12.93 22.85 312.79 3.3
vdベンチ 読み書き 40% 注文 1000 4M 1024K 1 4 22.4 5.6 9.8 12.62 22.42 318.06 3.2
vdベンチ 読み書き 40% 注文 10000 512K 512K 1 4 37.5 37.2 7.93 10.84 18.77 191.30 3.2
vdベンチ 読み書き 40% 注文 10000 64K 64K 1 4 331.3 331.3 7.91 12.80  20.71 1月24日 4.4
vdベンチ 読み書き 40% 注文 10000 32K 32K 1 4 927.2 927.2 11.26 17.71 28.98 8.52 6.1
vdベンチ 書く 0% ランダム 1000 6M 1024K 1 4 21.2 3.53 0 21.25 21.25 187.92 3.3
vdベンチ 書く 0% ランダム 100 64M 1024K 1 4 13.9 0.21 0 13.87 13.87 287.88 2.8
vdベンチ 書く 0% ランダム 1000 1M 1024K 1 4 61 61 0 61.03 61.03 65.42 3.8
vdベンチ 書く 0% ランダム 1000 4M 1024K 1 4 19.9 4.97 0 19.9 19.90 200.65 3.1
vdベンチ 書く 0% ランダム 10000 512K 128K 1 4 149.2 74.6 0 18.66 18.66 47.88 4.5
vdベンチ 書く 0% ランダム 10000 64K 64K 1 4 100.3 100.3 0 6.27 6.27 8.45 3.3
vdベンチ 書く 0% ランダム 10000 32K 32K 1 4 99.9 99.9 0 3.12 3.12 2.86 3.5
vdベンチ 読む 100% ランダム 1000 6M 1024K 1 4 383.6 63.93 383.6 0 383.60 10.41 4.5
vdベンチ 読む 100% ランダム 100 64M 1024K 1 4 378.9 5.92 378.8 0 378.88 10.54 4.2
vdベンチ 読む 100% ランダム 1000 1M 1024K 1 4 379.9 379.9 379.9 0 379.90 10.48 5.3
vdベンチ 読む 100% ランダム 1000 4M 1024K 1 4 385.7 96.42 385.6 0 385.60 10.35 4.6
vdベンチ 読む 100% ランダム 10000 512K 512K 1 4 727.9 727.9 363.9 0 363.90 5.43 5.7
vdベンチ 読む 100% ランダム 10000 64K 64K 1 4 6793.3 6793.3 424.58 0 424.58 0.56 18.3
vdベンチ 読む 100% ランダム 10000 32K 32K 1 4 10427 10427 325.8 0 325.86 0.36 24.6
vdベンチ 読み書き 40% ランダム 1000 6M 1M 1 4 24.7 4.11 10.96 13.77 24.73 290.67 3.3
vdベンチ 読み書き 40% ランダム 100 64M 1M 1 4 24.7 0.38 10.91 13.79 24.70 287.78 2.9
vdベンチ 読み書き 40% ランダム 1000 1M 1M 1 4 24 24 10.57 13.43 24.00 298.42 3.4
vdベンチ 読み書き 40% ランダム 1000 4M 1M 1 4 23.3 5.82 10.23 13.08 23.31 303.00 3.4
vdベンチ 読み書き 40% ランダム 10000 512K 512K 1 4 36.3 36.3 7.74 10.42 18.16 196.71 3.2
vdベンチ 読み書き 40% ランダム 10000 64K 64K 1 4 323.7 323.7 7.71 12.52 20.23 24.57 4.3
vdベンチ 読み書き 40% ランダム 10000 32K 32K 1 4 858.6 858.6 10.43 16.40  26.83 9.20 5.7

マルチスレッド テストを参照してください。このハードウェアでは、スレッド数は 4、IO サイズは 1M ですが、基本的にはこれがより適切です。

6m-1线程:
avg_2-100 67.0 14.819 4.6 1.54 0.0 0.0 0.000 67.0 14.819 0.00 66.98 66.98 1048419
6m-2线程:
avg_2-100 72.1 27.611 5.2 1.55 0.0 0.0 0.000 72.1 27.611 0.00 72.08 72.08 1048576
6m-4线程:
avg_2-100 67.8 58.021 4.7 1.55 0.0 0.0 0.000 67.8 58.021 0.00 67.83 67.83 1048576
6m-8线程:
avg_2-100 54.9 143.75 4.4 1.55 0.0 0.0 0.000 54.9 143.75 0.00 54.91
6m-16线程:
avg_2-100 66.4 238.40 4.8 1.71 0.0 0.0 0.000 66.4 238.40 0.00 66.41 66.41 1048576

32k-1线程:
avg_2-100 99.5 0.414 7.1 1.50 0.0 0.0 0.000 99.5 0.414 0.00 3.11 3.11 32768
32k-2线程:
avg_2-100 98.3 0.690 7.4 1.61 0.0 0.0 0.000 98.3 0.690 0.00 3.07 3.07 32768
32k-4线程:
avg_2-600 100.1 1.216 3.7 1.47 0.0 0.0 0.000 100.1 1.216 0.00 3.13 3.13 32767
32k-8线程:
avg_2-100 99.8 2.416 7.3 1.66 0.0 0.0 0.000 99.8 2.416 0.00 3.12 3.12 32768
32k-16线程:
avg_2-100 98.5 2.252 7.3 1.62 0.0 0.0 0.000 98.5 2.252 0.00 3.08 3.08 32768

64m-1M/IO:
avg_2-600 382.8 10.439 4.8 2.99 100.0 382.8 10.439 0.0 0.000 382.7 0.00 382.77 1048576
64m-4M/IO:
avg_2-100 58.0 68.587 4.1 2.26 100.0 58.0 68.587 0.0 0.000 232.1 0.00 232.16 4194304
64m-8M/IO:
avg_2-100 28.6 139.23 4.2 2.15 100.0 28.6 139.23 0.0 0.000 228.6 0.00 228.64 8388608
64m-64M/IO:
avg_2-100 4.2 959.05 5.4 2.28 100.0 4.2 959.05 0.0 0.000 265.6 0.00 265.60 67108864


工具:vdbench /home/intel/vdbench50406
样例
1.全写:
fsd=fsd1,anchor=/opt/Tvdbench/6M,depth=1,width=1,files=1000,size=6144k
fwd=fwd1,fsd=fsd1,operation=write,threads=4,openflags=o_direct,xfersize=1M,fileio=sequential
rd=rd1,fwd=fwd*,fwdrate=100,format=yes,elapsed=600,interval=1


2.全读:
fsd=fsd1,anchor=/opt/Tvdbench/6M,depth=1,width=1,files=1000,size=6144k
fwd=fwd1,fsd=fsd1,operation=read,xfersize=1M,fileio=sequential,openflags=o_direct,fileselect=random,threads=4
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=600,interval=5


3.读写4/6:
fsd=fsd1,anchor=/opt/Tvdbench/6M,depth=1,width=1,files=1000,size=6144k
fwd=default,xfersize=1M,fileio=sequential,fileselect=random,threads=4,xfersize=4K,openflags=o_direct
fwd=fwd1,fsd=fsd1,operation=read,fileio=sequential,xfersize=1M,skew=40,openflags=o_direct,threads=4
fwd=fwd2,fsd=fsd1,operation=write,fileio=sequential,xfersize=1M,skew=60,openflags=o_direct,threads=4
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=600,interval=1

坏道检测:

badblocks -v /dev/sda >> ./tbadblock.txt

备注:

在U盘、SSD等固态存储产品中,闪存芯片颗粒是核心,其关乎产品成本、寿命以及速度。闪存芯片颗粒主要有三种类型,分别为SLC、MLC、TLC,三者之间的区别,如下。slc、mlc、tlc闪存芯片颗粒区别介绍SLC=Single-LevelCell,即1bit/cell,速度快寿命长,价格贵(约MLC3倍以上的价格),约10万次擦写寿命;MLC=Multi-LevelCell,即2bit/cell,速度一般寿命一般,价格一般,约3000---10000次擦写寿命TLC=Trinary-LevelCell,即3bit/cell,也有Flash厂家叫8LC,速度慢寿命短,价格便宜,约500-1000次擦写寿命。QLC,全称是 Quad-Level Cell ,四层式存储单元,QLC闪存颗粒拥有比TLC更高的存储密度。成本上相比TLC更低,优势 就是可以将容量做的更大,成本上更低;理论擦写次数仅150~300次。

#!/bin/bash
# Copyright (2023) 
# author: 
# file: test_ssd_small_files.sh
# desc: 测试ssd小文件的读写性能

df -h
df -iT
free -h
lscpu

uname -a

echo $(date +"%Y-%m-%d %H:%M:%S") "test ssd small begin"

# 测试目录 
mkdir -p /opt/Tvdbench

#
smartctl -a /dev/sda


# 读写性能
sync
ping -c 3 -w 3 127.0.0.1
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
# 顺序读写
mkdir -p ./log/seq/
echo $(date +"%Y-%m-%d %H:%M:%S") "test ssd small fio seq write"
./vdbench -f ./tlingwu/seq/create_files_64m  -o ./log/seq/create_files_64m
./vdbench -f ./tlingwu/seq/create_files_6m  -o ./log/seq/create_files_6m
./vdbench -f ./tlingwu/seq/create_files_4m  -o ./log/seq/create_files_4m
./vdbench -f ./tlingwu/seq/create_files_1m  -o ./log/seq/create_files_1m
./vdbench -f ./tlingwu/seq/create_files_512k  -o ./log/seq/create_files_512k
./vdbench -f ./tlingwu/seq/create_files_64k  -o ./log/seq/create_files_64k
./vdbench -f ./tlingwu/seq/create_files_32k  -o ./log/seq/create_files_32k
free -h
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
echo $(date +"%Y-%m-%d %H:%M:%S") "test ssd small read"
free -h
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_read_64m  -o ./log/seq/seq_read_64m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_read_6m  -o ./log/seq/seq_read_6m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_read_4m  -o ./log/seq/seq_read_4m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_read_1m  -o ./log/seq/seq_read_1m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_read_512k  -o ./log/seq/seq_read_512k
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_read_64k  -o ./log/seq/seq_read_64k
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_read_32k  -o ./log/seq/seq_read_32k
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
echo $(date +"%Y-%m-%d %H:%M:%S") "test ssd small read and write"
free -h
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_rw_64m  -o ./log/seq/seq_rw_64m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_rw_6m  -o ./log/seq/seq_rw_6m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_rw_4m  -o ./log/seq/seq_rw_4m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_rw_1m  -o ./log/seq/seq_rw_1m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_rw_512k  -o ./log/seq/seq_rw_512k
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_rw_64k  -o ./log/seq/seq_rw_64k
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/seq/seq_rw_32k  -o ./log/seq/seq_rw_32k
free -h
# 随机读写
mkdir -p ./log/random/
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
echo $(date +"%Y-%m-%d %H:%M:%S") "test ssd small fio random write"
free -h
./vdbench -f ./tlingwu/random/create_files_64m  -o ./log/random/create_files_64m
./vdbench -f ./tlingwu/random/create_files_6m  -o ./log/random/create_files_6m
./vdbench -f ./tlingwu/random/create_files_4m  -o ./log/random/create_files_4m
./vdbench -f ./tlingwu/random/create_files_1m  -o ./log/random/create_files_1m
./vdbench -f ./tlingwu/random/create_files_512k  -o ./log/random/create_files_512k
./vdbench -f ./tlingwu/random/create_files_64k  -o ./log/random/create_files_64k
./vdbench -f ./tlingwu/random/create_files_32k  -o ./log/random/create_files_32k
free -h
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
echo $(date +"%Y-%m-%d %H:%M:%S") "test ssd small read"
./vdbench -f ./tlingwu/random/seq_read_64m  -o ./log/random/seq_read_64m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_read_6m  -o ./log/random/seq_read_6m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_read_4m  -o ./log/random/seq_read_4m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_read_1m  -o ./log/random/seq_read_1m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_read_512k  -o ./log/random/seq_read_512k
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_read_64k  -o ./log/random/seq_read_64k
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_read_32k  -o ./log/random/seq_read_32k
free -h
echo $(date +"%Y-%m-%d %H:%M:%S") "test ssd small read and write"
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_rw_64m  -o ./log/random/seq_rw_64m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_rw_6m  -o ./log/random/seq_rw_6m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_rw_4m  -o ./log/random/seq_rw_4m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_rw_1m  -o ./log/random/seq_rw_1m
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_rw_512k  -o ./log/random/seq_rw_512k
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_rw_64k  -o ./log/random/seq_rw_64k
sync
echo 3 > /proc/sys/vm/drop_caches
ping -c 3 -w 3 127.0.0.1
./vdbench -f ./tlingwu/random/seq_rw_32k  -o ./log/random/seq_rw_32k
free -h
echo 3 > /proc/sys/vm/drop_caches
df -h
df -iT
echo $(date +"%Y-%m-%d %H:%M:%S") "test ssd small end"

おすすめ

転載: blog.csdn.net/huapeng_guo/article/details/132304554