Update benchmark_disque.sh
This commit is contained in:
parent
cbe3664207
commit
0af01862f8
1 changed files with 27 additions and 11 deletions
|
|
@ -8,6 +8,20 @@ FILECOUNT=1000
|
||||||
FILEMODE="fixed"
|
FILEMODE="fixed"
|
||||||
LINES=1
|
LINES=1
|
||||||
|
|
||||||
|
# Fonction pour convertir "M:SS.xxx" ou "S.xxx" en secondes float
|
||||||
|
convert_time_to_sec() {
|
||||||
|
local raw="$1"
|
||||||
|
IFS=":" read -r min sec <<< "$raw"
|
||||||
|
echo | awk -v m="${min:-0}" -v s="${sec:-0}" 'BEGIN {
|
||||||
|
total = (m * 60) + s;
|
||||||
|
if (total <= 0) {
|
||||||
|
print "0.001"; # éviter division par zéro
|
||||||
|
} else {
|
||||||
|
print total;
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
}
|
||||||
|
|
||||||
function show_help {
|
function show_help {
|
||||||
echo "Usage: $0 [OPTIONS]"
|
echo "Usage: $0 [OPTIONS]"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
@ -64,23 +78,25 @@ mkdir -p "$SMALLDIR"
|
||||||
|
|
||||||
echo "=== Test d'écriture séquentielle avec dd ($FILESIZE, sync forcée) ==="
|
echo "=== Test d'écriture séquentielle avec dd ($FILESIZE, sync forcée) ==="
|
||||||
WRITE_TIME_SEC=$( (time dd if=/dev/zero of="$TESTFILE" bs="$FILESIZE" count=1 conv=fdatasync status=none) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//')
|
WRITE_TIME_SEC=$( (time dd if=/dev/zero of="$TESTFILE" bs="$FILESIZE" count=1 conv=fdatasync status=none) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//')
|
||||||
WRITE_SEC=$(echo "$WRITE_TIME_SEC" | awk -F: '{ print ($1 * 60) + $2 }')
|
WRITE_SEC=$(convert_time_to_sec "$WRITE_TIME_SEC")
|
||||||
echo "Durée : $WRITE_TIME_SEC (~$(awk -v size="$FILESIZE" -v sec="$WRITE_SEC" 'BEGIN {
|
echo -n "Durée : $WRITE_TIME_SEC"
|
||||||
|
echo " (~$(awk -v size="$FILESIZE" -v sec="$WRITE_SEC" 'BEGIN {
|
||||||
gsub(/[A-Za-z]/, "", size)
|
gsub(/[A-Za-z]/, "", size)
|
||||||
if (index(tolower(ARGV[1]), "g")) mult=1024; else mult=1;
|
if (index(tolower(ARGV[1]), "g")) mult=1024; else mult=1;
|
||||||
printf "%.2f", (size * mult) / sec
|
printf "%.2f", (size * mult) / sec
|
||||||
}') MB/s)"
|
}') MB/s)"
|
||||||
|
|
||||||
echo -e "\\n=== Test de lecture séquentielle ==="
|
echo -e "\n=== Test de lecture séquentielle ==="
|
||||||
READ_TIME_SEC=$( (time dd if="$TESTFILE" of=/dev/null bs="$FILESIZE" status=none) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//')
|
READ_TIME_SEC=$( (time dd if="$TESTFILE" of=/dev/null bs="$FILESIZE" status=none) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//')
|
||||||
READ_SEC=$(echo "$READ_TIME_SEC" | awk -F: '{ print ($1 * 60) + $2 }')
|
READ_SEC=$(convert_time_to_sec "$READ_TIME_SEC")
|
||||||
echo "Durée : $READ_TIME_SEC (~$(awk -v size="$FILESIZE" -v sec="$READ_SEC" 'BEGIN {
|
echo -n "Durée : $READ_TIME_SEC"
|
||||||
|
echo " (~$(awk -v size="$FILESIZE" -v sec="$READ_SEC" 'BEGIN {
|
||||||
gsub(/[A-Za-z]/, "", size)
|
gsub(/[A-Za-z]/, "", size)
|
||||||
if (index(tolower(ARGV[1]), "g")) mult=1024; else mult=1;
|
if (index(tolower(ARGV[1]), "g")) mult=1024; else mult=1;
|
||||||
printf "%.2f", (size * mult) / sec
|
printf "%.2f", (size * mult) / sec
|
||||||
}') MB/s)"
|
}') MB/s)"
|
||||||
|
|
||||||
echo -e "\\n=== Test IOPS sur $FILECOUNT fichiers ($FILEMODE) ==="
|
echo -e "\n=== Test IOPS sur $FILECOUNT fichiers ($FILEMODE) ==="
|
||||||
|
|
||||||
echo -n "Création : "
|
echo -n "Création : "
|
||||||
CREATE_TIME_SEC=$( (time for i in $(seq 1 "$FILECOUNT"); do
|
CREATE_TIME_SEC=$( (time for i in $(seq 1 "$FILECOUNT"); do
|
||||||
|
|
@ -90,8 +106,7 @@ CREATE_TIME_SEC=$( (time for i in $(seq 1 "$FILECOUNT"); do
|
||||||
yes "Ligne test $i" | head -n "$LINES" > "$SMALLDIR/file_$i"
|
yes "Ligne test $i" | head -n "$LINES" > "$SMALLDIR/file_$i"
|
||||||
fi
|
fi
|
||||||
done) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//')
|
done) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//')
|
||||||
|
CREATE_SEC=$(convert_time_to_sec "$CREATE_TIME_SEC")
|
||||||
CREATE_SEC=$(echo "$CREATE_TIME_SEC" | awk -F: '{ print ($1 * 60) + $2 }')
|
|
||||||
CREATE_IOPS=$(awk -v total="$FILECOUNT" -v sec="$CREATE_SEC" 'BEGIN { printf "%.1f", total / sec }')
|
CREATE_IOPS=$(awk -v total="$FILECOUNT" -v sec="$CREATE_SEC" 'BEGIN { printf "%.1f", total / sec }')
|
||||||
echo "$CREATE_TIME_SEC (~$CREATE_IOPS IOPS)"
|
echo "$CREATE_TIME_SEC (~$CREATE_IOPS IOPS)"
|
||||||
|
|
||||||
|
|
@ -99,10 +114,11 @@ echo -n "Lecture : "
|
||||||
READ_SMALL_SEC=$( (time for i in $(seq 1 "$FILECOUNT"); do
|
READ_SMALL_SEC=$( (time for i in $(seq 1 "$FILECOUNT"); do
|
||||||
cat "$SMALLDIR/file_$i" > /dev/null
|
cat "$SMALLDIR/file_$i" > /dev/null
|
||||||
done) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//')
|
done) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//')
|
||||||
READ_SMALL_IOPS=$(awk -v total="$FILECOUNT" -v sec="$(echo $READ_SMALL_SEC | awk -F: '{ print ($1 * 60) + $2 }')" 'BEGIN { printf "%.1f", total / sec }')
|
READ_SMALL_SEC_VAL=$(convert_time_to_sec "$READ_SMALL_SEC")
|
||||||
|
READ_SMALL_IOPS=$(awk -v total="$FILECOUNT" -v sec="$READ_SMALL_SEC_VAL" 'BEGIN { printf "%.1f", total / sec }')
|
||||||
echo "$READ_SMALL_SEC (~$READ_SMALL_IOPS IOPS)"
|
echo "$READ_SMALL_SEC (~$READ_SMALL_IOPS IOPS)"
|
||||||
|
|
||||||
echo -e "\\nNettoyage..."
|
echo -e "\nNettoyage..."
|
||||||
rm -rf "$BENCHDIR"
|
rm -rf "$BENCHDIR"
|
||||||
|
|
||||||
echo -e "\\nBenchmark terminé."
|
echo -e "\nBenchmark terminé."
|
||||||
Loading…
Add table
Reference in a new issue