Update benchmark_disque.sh

This commit is contained in:
Dimitri ROYER-TAUPIN 2025-04-16 18:42:30 +02:00
parent b89ba14c72
commit 7bcdabea0a

View file

@ -8,6 +8,7 @@ FILECOUNT=1000
FILEMODE="fixed" FILEMODE="fixed"
LINES=1 LINES=1
FLUSH_CACHE="no" FLUSH_CACHE="no"
RANDOM_WRITE="no"
# Fonction pour convertir "M:SS.xxx" en secondes float # Fonction pour convertir "M:SS.xxx" en secondes float
convert_time_to_sec() { convert_time_to_sec() {
@ -32,6 +33,7 @@ function show_help {
echo " --mode=MODE Mode de génération : fixed ou random. Défaut: fixed" echo " --mode=MODE Mode de génération : fixed ou random. Défaut: fixed"
echo " --lines=N Nombre de lignes pour les fichiers en mode fixed. Défaut: 1" echo " --lines=N Nombre de lignes pour les fichiers en mode fixed. Défaut: 1"
echo " --flush-cache Vide les caches Linux entre écriture et lecture (nécessite root)" echo " --flush-cache Vide les caches Linux entre écriture et lecture (nécessite root)"
echo " --random-write Utilise /dev/urandom pour écrire au lieu de /dev/zero"
echo " --help Affiche ce message d'aide" echo " --help Affiche ce message d'aide"
echo "" echo ""
echo "Exemples:" echo "Exemples:"
@ -64,6 +66,9 @@ for arg in "$@"; do
--flush-cache) --flush-cache)
FLUSH_CACHE="yes" FLUSH_CACHE="yes"
;; ;;
--random-write)
RANDOM_WRITE="yes"
;;
--help) --help)
show_help show_help
;; ;;
@ -74,6 +79,13 @@ for arg in "$@"; do
esac esac
done done
# Définir la source d'écriture
if [[ "$RANDOM_WRITE" == "yes" ]]; then
WRITE_SRC="/dev/urandom"
else
WRITE_SRC="/dev/zero"
fi
# Répertoires # Répertoires
BENCHDIR="./testbench" BENCHDIR="./testbench"
TESTFILE="$BENCHDIR/dd_testfile" TESTFILE="$BENCHDIR/dd_testfile"
@ -81,8 +93,8 @@ SMALLDIR="$BENCHDIR/smallfiles"
mkdir -p "$SMALLDIR" mkdir -p "$SMALLDIR"
echo "=== Test d'écriture séquentielle avec dd ($FILESIZE, sync forcée) ===" echo "=== Test d'écriture séquentielle avec dd ($FILESIZE, source: $(basename $WRITE_SRC), 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="$WRITE_SRC" of="$TESTFILE" bs="$FILESIZE" count=1 conv=fdatasync status=none) 2>&1 | grep real | awk '{print $2}' | sed 's/m/:/;s/s//')
WRITE_SEC=$(convert_time_to_sec "$WRITE_TIME_SEC") WRITE_SEC=$(convert_time_to_sec "$WRITE_TIME_SEC")
echo -n "Durée : $WRITE_TIME_SEC" echo -n "Durée : $WRITE_TIME_SEC"
echo " (~$(awk -v size="$FILESIZE" -v sec="$WRITE_SEC" 'BEGIN { echo " (~$(awk -v size="$FILESIZE" -v sec="$WRITE_SEC" 'BEGIN {
@ -136,3 +148,4 @@ echo -e "\nNettoyage..."
rm -rf "$BENCHDIR" rm -rf "$BENCHDIR"
echo -e "\nBenchmark terminé." echo -e "\nBenchmark terminé."