关键命令
# 清空文件系统缓存, 测试读写命令之前需要执行该命令
sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
# dd 写入速度测试
dd if=/dev/zero of=./test_write count=200 bs=1024k
# dd 读取速度测试
dd if=./test_write of=/dev/null bs=1024k
测试脚本
#!/bin/bash
# 检查是否提供了足够的参数
if [ $# -lt 1 ]; then
echo "Usage: $0 test_count"
exit 1
fi
# ANSI颜色码
green_color="\e[32m" # 绿色
red_color="\e[31m" # 红色
reset_color="\e[0m" # 重置颜色
total_iterations=$1
# 初始化计数器
write_success_count=0
write_failure_count=0
read_success_count=0
read_failure_count=0
echo "Total number of iterations: $total_iterations"
for ((i=1; i<=$total_iterations; i++)); do
# 清空文件系统缓存
sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
# 执行dd写入测试
if dd if=/dev/zero of=./test_write count=200 bs=1024k 2>&1 | grep -q "records in"; then
write_speed=$(dd if=./test_write of=/dev/null bs=1024k 2>&1 | awk '/copied/ {print $(NF-1), $NF}')
echo "write speed: $write_speed"
((write_success_count++))
else
echo "write failed"
((write_failure_count++))
fi
# 再次清空文件系统缓存
sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
# 执行dd读取测试
if dd if=./test_write of=/dev/null bs=1024k 2>&1 | grep -q "records in"; then
read_speed=$(dd if=./test_write of=/dev/null bs=1024k 2>&1 | awk '/copied/ {print $(NF-1), $NF}')
echo "read speed: $read_speed"
((read_success_count++))
else
echo "read failed"
((read_failed_count++))
fi
echo "----------------"
done
# 输出总的测试次数、成功次数和失败次数
echo "Total number of tests: $total_iterations"
echo -e "${green_color}Number of write successful tests: $write_success_count${reset_color}"
echo -e "${green_color}Number of read successful tests: $read_success_count${reset_color}"
echo -e "${red_color}Number of write failed tests: $write_failure_count${reset_color}"
echo -e "${red_color}Number of read failed tests: $read_failure_count${reset_color}"