Fio es la abreviatura de Flexible IO, un generador de cargas de trabajo de IO versátil. En 2005, Jens Axboe, la columna vertebral detrás y autor de la pila de IO en el kernel de Linux, estaba cansado de escribir constantemente programas de prueba únicos para comparar o verificar cambios en el subsistema de IO de Linux. Como resultado, nació fio para hacer el trabajo mucho más fácil. Era lo suficientemente flexible como para permitir configuraciones detalladas de la carga de trabajo y contenía los informes necesarios para dar sentido a los datos al finalizar. Jens continuó trabajando en fio cuando se unió a Oracle y, más tarde, a Fusion-io. Hoy en día, la comunidad de usuarios de fio está activa y comprometida con el desarrollo y, en consecuencia, continuamente desarrollan fio e implementan nuevas funciones. Más de 100 personas han contribuido a fio, y muchas lo han hecho varias veces. Gracias a este compromiso, se lanza una nueva versión de fio aproximadamente cada 4 a 6 semanas, y fio se usa ampliamente como punto de referencia estándar de la industria, herramienta de prueba de estrés y para fines de verificación de IO.
Conjunto de funciones y capacidades principales
Las dos características principales de un buen punto de referencia son poder ejecutar la carga de trabajo que desea y obtener las unidades de salida deseadas. Ser flexible fue (y sigue siendo) el enfoque principal de fio. Admite opciones de carga de trabajo que no se encuentran en otros puntos de referencia junto con estadísticas de IO rigurosamente detalladas. Cualquier tipo de combinación de E/S aleatoria y secuencial, o combinación de lectura/escritura, es fácil de definir. El diseño interno de fio también es flexible. La definición de una carga de trabajo es completamente independiente del motor de IO (un término que utiliza fio para indicar cómo se entrega IO al kernel). Por ejemplo, si desea ejecutar una carga de trabajo con asíncrono nativo en Linux y luego comparar la misma carga de trabajo en Windows, simplemente cambie la línea del motor de E/S único a la versión nativa en Windows. O, si desea estadísticas de percentiles de latencia más detalladas en la cola de la distribución, también es fácil. Simplemente especifique los percentiles exactos en los que está interesado y FIO lo rastreará por usted.
Aunque inicialmente se desarrolló en Linux, las áreas de fio que no están vinculadas a funciones específicas del sistema operativo funcionan en cualquier plataforma, desde Windows hasta HP-UX y Android. También hay motores de E/S nativos en Linux, Windows, Solaris, etc. Esta es una característica clave para entornos mixtos en los que desea poder ejecutar (lo más cerca posible) cargas de trabajo idénticas en diferentes entornos operativos. Además, aunque fio normalmente se ejecuta directamente en la máquina de destino, también admite conexiones de red. Puede ejecutar un backend de servidor en las máquinas de destino y ejecutar la interfaz de recopilación de datos en una máquina cliente. Esto hace que sea más fácil de administrar, especialmente si fio se usa a menudo en varias máquinas.
Fio es predominantemente una aplicación CLI basada en texto, aunque existe soporte inicial para una interfaz gráfica de usuario basada en gtk multiplataforma (gfio). En el momento de esta publicación, gfio se incluye con la última versión de fio, v2.1, y debería ser bastante estable. Puede servir como una interfaz gráfica de usuario para cualquier carga de trabajo que admita el cliente CLI. También proporciona soporte básico para las opciones de trabajo y cargas de trabajo de edición de GUI, aunque el soporte completo aún está en desarrollo ya que gfio es un trabajo en progreso.
Fio también admite tres tipos diferentes de formatos de salida. La salida "clásica" es la predeterminada que vuelca las estadísticas de carga de trabajo al final de la carga de trabajo. También hay soporte para un formato CSV, aunque está disminuyendo lentamente a favor de un formato de salida basado en JSON. Este último es mucho más flexible y tiene la ventaja de ser fácil de analizar para personas y computadoras.
Fio ha avanzado rápidamente gracias a la sinergia de su vibrante comunidad de usuarios y desarrolladores. Es más fácil de ejecutar que los proyectos de la competencia, lo suficientemente flexible para realizar las tareas de los usuarios y tiene una sobrecarga lo suficientemente baja como para impulsar cualquier tipo de sistema de almacenamiento a toda velocidad. Combine eso con sus opciones e informes más completos que cualquier otra cosa, y fio es una herramienta excelente.
Por qué StorageReview.com usa FIO
A medida que comenzamos a aumentar tanto la cantidad como la profundidad de nuestras revisiones de almacenamiento empresarial, necesitábamos una mejor herramienta de evaluación comparativa para medir con precisión el rendimiento de diferentes productos de almacenamiento en múltiples sistemas operativos. El software generador de carga de trabajo tradicional, como Iometer o Vdbench, ofrece una compatibilidad limitada con su sistema operativo no nativo, o han tenido dificultades para escalar cargas para dispositivos de almacenamiento de alto rendimiento, como aceleradores de aplicaciones PCIe o almacenamiento en red de alto rendimiento. Desde que comenzó nuestra implementación de FIO, ha resuelto muchos de estos problemas e incluso ha ido un paso más allá al admitir secuencias de comandos durante largos períodos de prueba. Esta funcionalidad general lo convierte en nuestro punto de referencia sintético de elección para todas las revisiones empresariales.
Para nuestras revisiones, usamos FIO para medir el rendimiento de un dispositivo de almacenamiento durante un período de tiempo determinado. Para la mayoría de los productos, eso incluye 6 horas de preacondicionamiento antes de pasar a nuestras pruebas principales. Para los dispositivos de almacenamiento PCIe más grandes que pueden no entrar en estado estable durante muchas horas en la prueba, preacondicionamos el doble de tiempo a las 12 horas antes de que comiencen nuestras pruebas principales. Nuestro proceso de evaluación comparativa de almacenamiento empresarial sintético comienza con un análisis de la forma en que funciona la unidad durante una fase de preacondicionamiento exhaustiva. Cada uno de los productos comparables primero se borra de forma segura utilizando las herramientas del proveedor y luego se preacondicionan en estado estable con la misma carga de trabajo con la que se probará el dispositivo bajo una carga pesada de 16 subprocesos con una cola pendiente de 16 por subproceso. Completando el proceso, luego probamos en intervalos establecidos en múltiples perfiles de profundidad de subprocesos/colas para mostrar el rendimiento con un uso ligero y pesado.
Pruebas de preacondicionamiento y de estado estacionario primario:
- Rendimiento (lectura+escritura de IOPS agregado)
- Latencia promedio (latencia de lectura y escritura promediadas juntas)
- Latencia máxima (máxima latencia de lectura o escritura)
- Desviación estándar de latencia (desviación estándar de lectura+escritura promediada)
Nuestro análisis de carga de trabajo sintético empresarial incluye diferentes perfiles para reflejar algunas tareas del mundo real. Estos perfiles se han desarrollado para facilitar la comparación con nuestros puntos de referencia anteriores, así como valores ampliamente publicados, como la velocidad máxima de lectura y escritura de 4k y 8k 70/30, que se usa comúnmente para hardware empresarial.
- 4k
- 100 % de lectura o 100 % de escritura
- 100% 4k
- fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=4k –rwmixread=100 –io depth=16 –numjobs=16 –runtime=60 –group_reporting –nombre=4kprueba
- 8k 70/30
- 70% lectura, 30% escritura
- 100% 8k
- fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=8k –rwmixread=70 –io depth=16 –numjobs=16 –runtime=60 –group_reporting –nombre=8k7030prueba
Actualmente utilizamos FIO versión 2.0.7 (x64) en CentOS 6.3 para nuestras pruebas de rendimiento de Linux y FIO versión 2.0.12.2 (x64) en Windows Server 2008 R2 SP1 para nuestro rendimiento de Windows.
Plataformas de prueba de StorageReview Enterprise
Las soluciones de almacenamiento se prueban con el benchmark sintético FIO en el Laboratorio de pruebas de StorageReview Enterprise utilizando servidores independientes. Utilizamos HP ProLiant DL380/DL360 Gen9 para mostrar un rendimiento realista, cambiando solo el adaptador de almacenamiento o la interfaz de red para conectar nuestro DL380/DL360 a diferentes productos de almacenamiento. El DL380/DL360 ha demostrado ofrecer una gran compatibilidad con dispositivos de terceros, lo que lo convierte en una excelente plataforma para este entorno de prueba diverso.
(Generación 1) Lenovo Think Server RD240
- 2 x Intel Xeon X5650 (2.66 GHz, caché de 12 MB)
- Conjunto de chips Intel 5500+ ICH10R
- Memoria: 8 GB (2 x 4 GB) 1333 Mhz DDR3 RDIMM registrados
- Windows Server 2008 Standard Edition R2 SP1 de 64 bits y CentOS 6.2 de 64 bits
- HBA LSI 9211 SAS/SATA de 6.0 Gb/s
(Generación 2) Lenovo Think Server RD630
- 2 x Intel Xeon E5-2620 (2.0 GHz, caché de 15 MB, 6 núcleos)
- Chipset Intel C602
- Memoria: 16 GB (2 x 8 GB) 1333 Mhz DDR3 RDIMM registrados
- Windows Server 2008 R2 SP1 de 64 bits, Windows Server 2012 estándar, CentOS 6.3 de 64 bits
- 100GB Micron RealSSD P400e SSD de arranque
- LSI 9207-8i SAS/SATA 6.0Gb/s HBA (para pruebas comparativas de SSD o HDD)
(Generación 3) HP ProLiant DL380/DL360 Gen9
- CPU doble Intel E5-2667 v3 (3.2 GHz, 8 núcleos, caché de 20 MB)
- 256 GB de RAM (16 GB x 16 DDR4, 128 GB por CPU)
- Servidor Windows 2012 R2, CentOS 7.0
- SSD de arranque de 400 GB: Windows
- Disco duro de arranque de 300 GB: Linux
- HBA LSI 9300-8e SAS/SATA de 12.0 Gb/s (Para la evaluación comparativa de SSD o HDD)
- Supermicro SuperChasis 846BE1C-R1K28B SAS3 JBOD (para conectar SSD o HDD)




Amazon