Se utiliza de la siguiente manera: "sh ddtest.sh"
Codigo:
#!/bin/bash
########################################################
########## INICIO VARIABLES DE CONFIGURACION ###########
########################################################
#El archivo temporal que se utilizara para hacer el test
#Debe ser un directorio del disco duro que queremos testear
test_file="/tmp/test"
#El tamano de los bloques con los que se haran el test
#deben ser consecutivos multiples de 2
bs="1024 2048 4096 8192 16384 32768"
#El numero de veces que se hara el test con cada bloque, se hara la media
n_times=1
#El tamano del archivo que se utilizara para el test (en bytes) 1000000=1GB
count=1000000
#La posicion del resultado que da 'dd'.
#Ejecutar: dd if=/dev/zero of=borrame bs=1024 count=10
#Mirar en que posicion esta el resultao en MB/s
#Ejemplo:
# >$ dd if=/dev/zero of=borrame bs=1024 count=10
# 10+0 records in
# 10+0 records out
# 10240 bytes (10 kB) copied, 9.7221e-05 s, 105 MB/s
#El 105 esta en la posicion 8 de la linea (separando por espacios)
pos=8
#Limpiar caches despues de cada test (recomendable). 1=si, 0=no
lcaches=1
###############################################
############ INICIO DEL PROGRAMA ##############
###############################################
echo "Script para calcular el rendimiento del disco duro mediante dd"
echo "Recomendable abrirlo con un editor para configurar las opciones"
echo "Se necesitan los programas: bc, awk y bash"
echo "Fuente:www.dabax.net Licencia:GPLv3"
n_count=0
total_results=0
for b in $bs; do
actual=""
time=0
n_count=$[$n_count+1]
echo -n "bs=$b count=$count "
while [ $time -lt $n_times ]; do
partial_result=$(dd if=/dev/zero of=$test_file bs=$b count=$count 2>&1 \
|grep "MB/s" | awk "{print \$pos}")
actual="$actual $partial_result"
time=$[$time+1]
rm -f $test_file
if [ $lcaches -eq 1 ]; then echo "3" > /proc/sys/vm/drop_caches; fi
echo -n "."
done
aux=0
for a in $actual; do aux=$(echo "$aux + $a" | bc); done
aux=$(echo "$aux / $n_times" | bc)
total_results=$(echo "$total_results + $aux" | bc)
echo -n " $aux MB/sec"
count=$[$count/2]
echo ""
done
media=$(echo "$total_results / $n_count" | bc)
echo "Media: $media MB/sec"
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario