米客方德128M 工业级 SDNAND可靠性测试
手册下载:米客方德工业级SDNAND.pdf
离线
#!/bin/sh
let i_ok=0
let i_error=0
while [ 1 ]; do
rm /d/work3/x.bin -rf #源文件路径
rm /f/work3/x.bin -rf #米客方德SDNAND插入的U盘路径
dd if=/dev/urandom of=/d/work3/x.bin bs=1M count=110 #生成随机数文件
sync
mkdir -p /f/work3/ #生成U盘文件夹
cp /d/work3/x.bin /f/work3/x.bin -rf #复制到U盘
sync #立即写入U盘
if [[ $(md5sum /d/work3/x.bin /f/work3/x.bin | awk '{print $1}' | uniq | wc -l) == 1 ]]; then #比较源文件与U盘文件
let i_ok=i_ok+1 #正确次数 +1
else
let i_error=i_error+1
md5sum /d/work3/x.bin /f/work3/x.bin
mkdir -p /d/work3/dump/$i_error/
cp /d/work3/x.bin /d/work3/dump/$i_error/source.bin #发生错误保存 源文件到电脑,方便后面比较
cp /f/work3/x.bin /d/work3/dump/$i_error/dest.bin #发生错误保存 目标到电脑,方便后面比较
fi
echo "$i_ok 次测试通过, $i_error 次测试错误."
done
离线
离线
有datasheet吗
离线
这个速度比得上普通的SSD了,确定不是写缓存的?
离线
24小时不间断也只能测试3000次左右,
测完10万次,需要 100000/3000= 33 (天)
离线
这速度应该没真正写入到芯片上
离线
确实,这个速度是buff过的,把directIO打开吧。真的往disk上写,才是真的写。
离线
确实,这个速度是buff过的,把directIO打开吧。真的往disk上写,才是真的写。
可是我已经执行了 sync命令了,这算同步了吧?
请教”directIO“怎么打开呢?
离线
1.1 dd测试DirectIO
iops——写测试 dd if=/dev/zero of=./a.dat bs=8k count=1M oflag=direct
iops——读测试 dd if=./a.dat of=/dev/null bs=8k count=1M iflag=direct
bw——写测试 dd if=/dev/zero of=./a.dat bs=1M count=8k oflag=direct
bw——读测试 dd if=./a.dat of=/dev/null bs=1M count=8k iflag=direct
离线
willX 说:确实,这个速度是buff过的,把directIO打开吧。真的往disk上写,才是真的写。
可是我已经执行了 sync命令了,这算同步了吧?
请教”directIO“怎么打开呢?
感谢楼上各位大佬,但是又被各位大佬带坑里面去了,dd命令是生成本地硬盘的随机数文件,后面那个cp才是复制到sdnand。
离线
#!/bin/sh
let i_ok=0
let i_error=0
while [ 1 ]; do
date +"测试时间:%Y-%m-%d %H:%M:%S"
rm /d/work3/x.bin -rf #源文件路径
rm /f/work3/x.bin -rf #米客方德SDNAND插入的U盘路径
dd if=/dev/urandom of=/d/work3/x.bin bs=1M count=117 > /dev/null 2>&1 #生成随机数文件
sync
mkdir -p /f/work3/ #生成U盘文件夹
#cp /d/work3/x.bin /f/work3/x.bin -rf #复制到U盘
dd if=/d/work3/x.bin of=/f/work3/x.bin bs=1M status=progress oflag=direct
sync #立即写入U盘
if [[ $(md5sum /d/work3/x.bin /f/work3/x.bin | awk '{print $1}' | uniq | wc -l) == 1 ]]; then #比较源文件与U盘文件
let i_ok=i_ok+1 #正确次数 +1
else
let i_error=i_error+1
md5sum /d/work3/x.bin /f/work3/x.bin
mkdir -p /d/work3/dump/$i_error/
cp /d/work3/x.bin /d/work3/dump/$i_error/source.bin #发生错误保存 源文件到电脑,方便后面比较
cp /f/work3/x.bin /d/work3/dump/$i_error/dest.bin #发生错误保存 目标到电脑,方便后面比较
fi
echo -e "$i_ok 次测试通过, $i_error 次测试错误.\n"
done
根据各位大佬的指教,我把脚本更新了一下,复制文件用了dd替换cp命令,并加入status=progress参数显示进度,oflag=direct立即写入。
离线
测试时间:2023-05-25 22:59:45
120586240 bytes (121 MB, 115 MiB) copied, 31 s, 3.9 MB/s
117+0 records in
117+0 records out
122683392 bytes (123 MB, 117 MiB) copied, 31.6652 s, 3.9 MB/s
20479 次测试通过, 0 次测试错误.
离线
测试时间:2023-05-29 13:37:35
120586240 bytes (121 MB, 115 MiB) copied, 31 s, 3.9 MB/s
117+0 records in
117+0 records out
122683392 bytes (123 MB, 117 MiB) copied, 31.6728 s, 3.9 MB/s
27539 次测试通过, 0 次测试错误.
测试时间:2023-05-29 13:38:22
120586240 bytes (121 MB, 115 MiB) copied, 31 s, 3.9 MB/s
117+0 records in
117+0 records out
122683392 bytes (123 MB, 117 MiB) copied, 31.5946 s, 3.9 MB/s
27540 次测试通过, 0 次测试错误.
测试时间:2023-05-29 13:39:08
120586240 bytes (121 MB, 115 MiB) copied, 31 s, 3.9 MB/s
117+0 records in
117+0 records out
122683392 bytes (123 MB, 117 MiB) copied, 31.7013 s, 3.9 MB/s
27541 次测试通过, 0 次测试错误.
离线
你这个输出信息上看不出哪个是读取速率、哪个是写入速率呀。
离线