Benchmarking (Español)

From ArchWiki

Benchmarking es el acto de medir el desempeño y comparar los resultados con los de otro sistema o un estándar bien aceptado a través de un procedimiento unificado. Este procedimiento unificado para la evaluación del desempeño del sistema puede ayudar a contestar preguntas como la siguientes:

  • ¿El sistema se está desempeñando como debería?
  • ¿Qué versión del driver debería usar para conseguir el óptimo desempeño?
  • ¿El sistema es capaz de hacer el trabajo x?

Herramientas individuales

UnixBench

Instale unixbenchAUR, para ejecutarla utilice el comando ubench.

Véase también:

interbench

interbench es una aplicación diseñada para hacer benchmarks de la interactividad de Linux.

Está diseñada para medir el efecto de los cambios en el diseño del kernel de Linux o cambios en la configuración del sistema como el CPU, planificador de E/S (I/O scheduler) y el sistema de archivos.

Sugerencia: Con un benchmark cuidadoso, se puede comparar distinto hardware

interbench está disponible en la AUR: interbenchAUR

Véase también:

ttcp

ttcp (Test TCP) mide el ancho de banda de punto a punto sobre cualquier conexión de red. El programa debe de estar instalado en ambos nodos en los cuales se medirá el ancho de banda.

Se pueden encontrar varios tipos de ttcp en la AUR:

iperf

iperf es una herramienta sencilla para analizar el ancho de banda de punto a punto que puede usar tanto TCP como UDP. Tiene un lindo formato de salida y un modo de prueba en paralelo.

Se puede instalar el paquete iperf o una versión diferente con iperf3

time

El comando time(1) provee un cronometraje estadístico acerca del comando ejecutado ya que demuestra el tiempo entre que el comando se invocó y llegó a su fin. El paquete time contiene el comando time y algunas shell contienen time de manera predeterminada.

$ time tar -zxvf archive.tar.gz

hdparm

Los medios de almacenamiento se pueden analizar con hdparm (hdparm). Usando hdparm con el switch -Tt se puede cronometrar con lecturas secuenciales. Este método es independiente a la alineación de las particiones!

# hdparm -Tt /dev/sdX
/dev/sdX:
Timing cached reads:   x MB in  y seconds = z MB/sec
Timing buffered disk reads:  x MB in  y seconds = z MB/sec
Nota: Para una evaluación certera de la velocidad de lectura se recomienda ejecutar el comando 2 ó 3 veces y hacer el promedio de los resultados de manera manual.

gnome-disks

Existe un benchmark gráfico llamado gnome-disks en el paquete gnome-disk-utility que dará lecturas min/max/ave (mínimo/máximo/promedio) junto con los tiempos de acceso un una linda interfaz gráfica. Este método es independiente a la alineación de las particiones!

# gnome-disks

Los usuarios deberán navegar a través de la GUI para llegar al botón de benchmark ("More actions..." > "Benchmark Volume..."). Ejemplo

KDiskMark

kdiskmarkes una herramienta de benchmarking para HDD y SSD con una interfaz gráfica muy amigable. KDiskMark con su configuración preestablecida y poderosa GUI llama a Flexible I/O Tester y maneja el output para proporcionar un resultado de benchmark comprensible y fácil de ver.

systemd-analyze

systemd-analyze plot > boot.svg

Va a trazar una detallada gráfica con la secuencia de arranque: El tiempo del kernel, el tiempo del espacio de usuario y el tiempo tomado por cada servicio. Ejemplo

dd

La herramienta dd puede ser utilizada tanto para medir la escritura como la lectura. ¡Este método depende de la alineación de la partición! En otras palabras, si no alineaste correctamente tus particiones, este hecho será visible aquí ya que se lee y escribe a un filesystem montado.

Nota: ¡Este método requiere sea ejecutado desde una partición montada en el dispositivo de interés!

Primero, introduzca un directorio en el SSD con al menos 1.1 GB de espacio libre (que de los permisos wrx a tu usuario), escriba un archivo de texto para medir las velocidades de escritura y para darle al dispositivo algo que leer:

$ dd if=/dev/zero of=/path/to/SSD/tempfile bs=1M count=1024 conv=fdatasync,notrunc status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s
Sugerencia: Véase dd-benchmark para una explicación sobre los requerimientos de sync y más opciones de dd relacionadas.

Después, limpiar el buffer-cache para medir las velocidades de lectura correctas directo del dispositivo:

# echo 3 > /proc/sys/vm/drop_caches
$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s

Ahora que el último archivo está en el buffer, repita el comando para ver la velocidad del buffer-cache:

$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s
Nota: Uno debería correr el comando de arriba 4 ó 5 veces y manualmente conseguir el promedio de los resultados para conseguir una evaluación precisa del la velocidad de lectura del buffer.

Finalmente, borre el archivo temporal.

$ rm tempfile
Nota: Algunos controladores de SSD tienen hardware de compresión, los cuales pueden arruinar los resultados del benchmark. Véase https://www.pugetsystems.com/labs/articles/SSDs-Advertised-vs-Actual-Performance-179/

dcfldd

Dcfldd no muestra la velocidad promedio en MB/s como lo hace dd sino que utiliza time, pero se puede resolver.

Cronometra la limpieza del disco:

# time dcfldd if=/dev/zero of=/dev/sdX bs=4M
18944 blocks (75776Mb) written.dcfldd:: No space left of device
real     16m17.033s
user     0m0.377s
sys      0m51.160s

Para calcular los MB/s se divide el resultado del comando dcfldd sobre el tiempo en segundos. Por ejemplo: 75776Mb / (16.4 min * 60) = 77.0 MB/s.

7z

El comando 7z puede ser utilizado para medir la velocidad del CPU en MIPS y revisar errores en la RAM. Simplemente instale p7zip y corra el comando de abajo. Información más detallada puede ser vista en [1].

$ 7z b