sql >> Base de Datos >  >> NoSQL >> MongoDB

XFS frente a EXT4:comparación del rendimiento de MongoDB en AWS EC2

AWS es una plataforma en la nube extremadamente popular y confiable para administrar implementaciones de MongoDB, pero la cuestión de XFS frente a EXT4 hace que muchos desarrolladores se pregunten qué sistema de archivos de Linux les brindará el mejor rendimiento para sus aplicaciones. La guía oficial de MongoDB sobre la implementación en producción recomienda usar el sistema de archivos XFS en Linux, especialmente al implementar el motor de almacenamiento WiredTiger. Sin embargo, la recomendación no nos dice por qué deberíamos esperar un aumento del rendimiento o qué tipo de mejoras de rendimiento experimentaremos. Decidimos llegar al fondo investigando cuantitativamente el rendimiento de MongoDB en XFS para que pueda comparar si EXT4 es una mejor opción para sus instancias de AWS EC2.

Sistema de archivos XFS

XFS es un sistema de archivos de registro en diario de 64 bits altamente escalable y de alto rendimiento desarrollado en SGI en 1993 y adaptado a Linux en 2002. Admite E/S altamente paralelas y tamaños de sistemas de archivos de hasta 9 exabytes, y registra en diario solo los metadatos del sistema de archivos, no los datos del usuario. Algunas características clave de mejora del rendimiento de XFS son:

    • El acceso en paralelo a través de grupos de asignación garantiza que varios subprocesos puedan realizar E/S simultáneamente en el mismo volumen.
    • La asignación basada en la extensión reduce la fragmentación, el tamaño de los metadatos y mejora el rendimiento de E/S al permitir menos operaciones de E/S y de mayor tamaño.
    • La asignación retrasada mejora la contigüidad y el rendimiento de los datos. La fragmentación se reduce combinando escrituras y asignando extensiones en grandes fragmentos, y los archivos escritos aleatoriamente (como los que están asignados a la memoria) se pueden asignar de forma contigua

Hay muchas más funciones de XFS para explorar, y puede obtener más información en el sitio web de XFS y en la Guía del usuario de XFS.

Ejecución de pruebas de rendimiento en MongoDB

Como habrá aprendido en nuestras publicaciones anteriores, hemos estado usando YCSB para comparar el rendimiento de MongoDB, incluida una comparación detallada del rendimiento de MongoDB respaldado por MMAP en varios proveedores de la nube. Decidimos usar la misma carga de trabajo de YCSB que hemos estado usando anteriormente:Carga de trabajo A (actualización pesada:50 % de lecturas + 50 % de actualizaciones). La fase de inserción de la carga de trabajo mide el rendimiento del 100 % de las cargas de trabajo de escritura, mientras que la fase de carga medirá el rendimiento frente a la carga de trabajo real (50/50 % de lectura/actualización).

Nuestras pruebas se ejecutaron en el controlador de sincronización MongoDB, y la distribución de Linux era Amazon Linux (4.4.44-39.55.amzn1.x86_64). Elegimos MongoDB versión 3.2.10 ejecutando WiredTiger para nuestras pruebas, ya que WT es donde se esperaban mejores ganancias y ejecutamos las pruebas en 2 equipos de hardware diferentes:

  • Discos de alta velocidad :Instancia de AWS EC2 c3.large donde MongoDB usaba discos SSD en configuración RAID 0 para el almacenamiento (se asigna al tamaño de clúster de ScaleGrid HighPerfLarge).
  • Discos de velocidad media :Instancia AWS EC2 m3.medium donde MongoDB usaba EBS (Elastic Block Store) IOPS conjunto de discos aprovisionados en 300 IOPS (mapas a tamaño de clúster de ScaleGrid Medio).

Nota:cualquier tipo de prueba de rendimiento en entornos virtualizados debe tomarse con cautela. Nuestro objetivo aquí no es comparar las cifras de rendimiento en estos entornos, sino proporcionar una medida cuantitativa de las diferencias de rendimiento entre EXT4 y XFS en el mismo entorno virtualizado.

Disco SSD de alta velocidad

Realizamos la siguiente prueba en nuestro equipo de alto rendimiento:

  1. 6 millones insertados registros en varias cargas del servidor (variando el número de subprocesos del cliente YCSB).
  2. Se ejecutó la carga de trabajo en recuento de operaciones de 10 millones registros en varias cargas del servidor.

Resultados de rendimiento del disco SSD

Características de rendimiento/latencia para la inserción de registros de 6 millones en la configuración de alto rendimiento:

Características de rendimiento/latencia para 10 millones de operaciones de escritura/actualización en la configuración de alto rendimiento:

Observaciones del disco SSD

  • XFS es espectacularmente rápido durante la fase de inserción y la ejecución de la carga de trabajo. En recuentos de subprocesos más bajos, es hasta un 50% más rápido que EXT4. A medida que aumentaba la carga, ambos sistemas de archivos se vieron limitados por el rendimiento del hardware subyacente, pero XFS aún mantuvo su liderazgo.
  • La latencia para XFS y EXT4 fue comparable en ambas ejecuciones. Tenga en cuenta que todos los números están en microsegundos.

Disco de IOPS aprovisionado de EBS más lento (300 IOPS)

La siguiente prueba se ejecutó en nuestra plataforma de rendimiento de tamaño mediano:

  1. 3 millones insertados registros en varias cargas del servidor (variando el número de subprocesos del cliente YCSB).
  2. Se ejecutó la carga de trabajo en recuento de operaciones de 5 millones registros en varias cargas del servidor.

Dada nuestra experiencia en la configuración de gama alta, esperábamos que XFS también tuviera una ventaja decente en este equipo.

Resultados de rendimiento del disco de IOPS

Características de rendimiento/latencia para la inserción de registros de 3M en la configuración del medio:

Características de rendimiento/latencia para 5 millones de operaciones de escritura/actualización en la configuración media:

Observaciones de disco IOPS

  • XFS es comparable, aunque ligeramente por detrás de EXT4 en la configuración de tamaño medio. Parece que a este nivel de recursos del sistema, las optimizaciones de rendimiento de XFS realmente no marcan la diferencia. Esta es una observación importante si está considerando implementar XFS en instancias más pequeñas con la esperanza de mejorar el rendimiento.

XFS frente a EXT4 en AWS EC2

En términos de rendimiento, XFS es de hecho un multiplicador de fuerza cuando se combina con discos de alta velocidad de los que puede aprovecharse realmente. Para sistemas de gama baja a media, no parece poder hacer mucho para mejorar su rendimiento.