Mostrando las entradas con la etiqueta disco duro. Mostrar todas las entradas
Mostrando las entradas con la etiqueta disco duro. Mostrar todas las entradas

miércoles, enero 02, 2008

Script para medir la velocidad del disco duro

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"