From 0af01862f8386cef3a8a9b1624b8473d315c462d Mon Sep 17 00:00:00 2001 From: Ripley Date: Wed, 16 Apr 2025 18:35:24 +0200 Subject: [PATCH] Update benchmark_disque.sh --- benchmark_disque.sh | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/benchmark_disque.sh b/benchmark_disque.sh index ab67ca3..cded26a 100755 --- a/benchmark_disque.sh +++ b/benchmark_disque.sh @@ -8,6 +8,20 @@ FILECOUNT=1000 FILEMODE="fixed" 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 { echo "Usage: $0 [OPTIONS]" echo "" @@ -64,23 +78,25 @@ mkdir -p "$SMALLDIR" 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_SEC=$(echo "$WRITE_TIME_SEC" | awk -F: '{ print ($1 * 60) + $2 }') -echo "Durée : $WRITE_TIME_SEC (~$(awk -v size="$FILESIZE" -v sec="$WRITE_SEC" 'BEGIN { +WRITE_SEC=$(convert_time_to_sec "$WRITE_TIME_SEC") +echo -n "Durée : $WRITE_TIME_SEC" +echo " (~$(awk -v size="$FILESIZE" -v sec="$WRITE_SEC" 'BEGIN { gsub(/[A-Za-z]/, "", size) if (index(tolower(ARGV[1]), "g")) mult=1024; else mult=1; printf "%.2f", (size * mult) / sec }') 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_SEC=$(echo "$READ_TIME_SEC" | awk -F: '{ print ($1 * 60) + $2 }') -echo "Durée : $READ_TIME_SEC (~$(awk -v size="$FILESIZE" -v sec="$READ_SEC" 'BEGIN { +READ_SEC=$(convert_time_to_sec "$READ_TIME_SEC") +echo -n "Durée : $READ_TIME_SEC" +echo " (~$(awk -v size="$FILESIZE" -v sec="$READ_SEC" 'BEGIN { gsub(/[A-Za-z]/, "", size) if (index(tolower(ARGV[1]), "g")) mult=1024; else mult=1; printf "%.2f", (size * mult) / sec }') MB/s)" -echo -e "\\n=== Test IOPS sur $FILECOUNT fichiers ($FILEMODE) ===" +echo -e "\n=== Test IOPS sur $FILECOUNT fichiers ($FILEMODE) ===" echo -n "Création : " 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" fi done) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//') - -CREATE_SEC=$(echo "$CREATE_TIME_SEC" | awk -F: '{ print ($1 * 60) + $2 }') +CREATE_SEC=$(convert_time_to_sec "$CREATE_TIME_SEC") CREATE_IOPS=$(awk -v total="$FILECOUNT" -v sec="$CREATE_SEC" 'BEGIN { printf "%.1f", total / sec }') 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 cat "$SMALLDIR/file_$i" > /dev/null 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 -e "\\nNettoyage..." +echo -e "\nNettoyage..." rm -rf "$BENCHDIR" -echo -e "\\nBenchmark terminé." \ No newline at end of file +echo -e "\nBenchmark terminé." \ No newline at end of file