Benchmarkeo del rendimiento del disco
Existen herramientas como Iozone (http://www.iozone.org), smallfile (https://github.com/bengland2/smallfile) y Flexible IO (https://github.com/axboe/fio) disponibles para realizar pruebas de rendimiento del disco. Para esta receta, utilizaremos FIO. Para ello, necesitamos escribir un archivo de trabajo que imite la carga de trabajo que deseamos ejecutar. Utilizando este archivo de trabajo, podemos simular la carga de trabajo en el objetivo. Para esta receta, tomaremos el ejemplo de FIO de los resultados de las pruebas publicados por IBM (https://github.com/thewmf/kvm-docker-comparison/tree/master/fio).
Preparación
En un entorno de metal desnudo/VM/contenedor de Docker, instale FIO y monte el disco que contiene un sistema de archivos para cada prueba bajo /ferrari o cualquier cosa que se mencione en el archivo de trabajo de FIO. En un entorno de metal desnudo, puede montar de forma nativa; en una VM, puede montar utilizando el controlador de disco virtual o realizar un paso de dispositivo. En Docker, podemos adjuntar el sistema de archivos desde la máquina host utilizando volúmenes de Docker.
Prepare el archivo de carga de trabajo. Seleccionaremos: https://github.com/thewmf/kvm-docker-comparison/blob/master/fio/mixed.fio:
$ curl -o mixed.fio https://raw.githubusercontent.com/thewmf/kvm-docker-comparison/master/fio/mixed.fio
$ cat mixed.fio
[global]
ioengine=libaio
direct=1
size=16g
group_reporting
thread
filename=/ferrari/fio-test-file
[mixed-random-rw-32x8]
stonewall
rw=randrw
rwmixread=70
bs=4K
iodepth=32
numjobs=8
runtime=60
NOTA
Esta receta es específica de Linux; puede funcionar en Docker para Mac o Windows con algunos cambios menores.
Utilizando el archivo de trabajo anterior, podemos realizar operaciones de E/S aleatorias directas en /ferrari/fio-test-file con un tamaño de bloque de 4K utilizando el controlador libaio en un archivo de 16 GB. La profundidad de E/S es 32 y el número de trabajos paralelos es 8. Es una carga de trabajo mixta, que realiza un 70 por ciento de lecturas y un 30 por ciento de escrituras.
Cómo hacerlo…
Siga estos pasos:
- Para una prueba de metal desnudo y VM, puede ejecutar simplemente el archivo de trabajo de FIO y recopilar el resultado:
$ fio mixed.fio
- Para una prueba de Docker, puede preparar un archivo Docker de la siguiente manera:
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get -qq install -y fio
ADD mixed.fio /
VOLUME ["/ferrari"]
ENTRYPOINT ["fio"]
- Ahora, cree una imagen utilizando el siguiente comando:
$ docker image build -t docker_fio_perf .
- Inicie el contenedor de la siguiente manera para ejecutar la prueba de rendimiento y recopilar los resultados como se muestra en la siguiente captura de pantalla:
$ docker container run --rm -v /ferrari:/ferrari docker_fio_perf mixed.fio

- Al ejecutar la prueba anterior en Fedora/RHEL/CentOS, donde SELinux está habilitado, obtendrá un error de permiso denegado. Para solucionarlo, vuelva a etiquetar el directorio de la máquina host mientras lo monta dentro del contenedor de la siguiente manera:
$ docker container run --rm -v /ferrari:/ferrari:z
docker_fio_perf mixed.fio
Cómo funciona…
FIO ejecutará la carga de trabajo dada en el archivo de trabajo y mostrará los resultados.
Hay más…
Una vez que se hayan recopilado los resultados, puede realizar una comparación de resultados. También puede probar diferentes tipos de patrones de E/S utilizando el archivo de trabajo y obtener el resultado deseado. Al examinar los resultados, hay algunas cosas que querrá examinar, como:
-
iops: El número de operaciones de entrada/salida por segundo; cuanto mayor, mejor.
-
ancho de banda (bw): La tasa de transferencia de datos, velocidad de bits o rendimiento; cuanto mayor, mejor.
-
Latencia (lat): El tiempo que transcurre entre la presentación al kernel y cuando la E/S está completa; cuanto menor, mejor.
Ver también
Consulte los resultados de las pruebas de rendimiento del disco publicados por IBM y VMware utilizando FIO en los enlaces referenciados anteriormente en este capítulo.