
El año pasado, escribí una publicación centrada en el desempeño del sincronizar llame a diferentes dispositivos de almacenamiento. La llamada fsync es extremadamente importante para una base de datos cuando la durabilidad, la «D» del acrónimo ACID, es un requisito difícil. La llamada garantiza que los datos se almacenen permanentemente en el disco. El requisito de durabilidad obliga a que cada transacción regrese solo cuando el archivo de registro de InnoDB y el archivo de registro binario se hayan lavado en el disco.
En esta publicación, en lugar de centrarnos en el rendimiento de varios dispositivos, vemos qué se puede hacer para mejorar el rendimiento de fsync con una tarjeta Intel Optane.
Intel Optano
Hace unos años, Intel introdujo un nuevo tipo de dispositivo de almacenamiento basado en el 3D_XPunto tecnología y se vende bajo la marca Optane. Esos dispositivos superan a los dispositivos flash regulares y tienen una mayor resistencia. En el contexto de esta publicación, descubrí que también son muy buenos para manejar llamadas fsync, algo para lo que muchos dispositivos flash no son buenos.
Recientemente obtuve acceso a una tarjeta Intel Optane NVMe, una tarjeta P4800X DC con una capacidad de almacenamiento de 375 GB. Veamos cómo se puede utilizar para mejorar el rendimiento.
Optane utilizado directamente como dispositivo de almacenamiento
Esta es probablemente la opción más simple si su conjunto de datos se ajusta al gráfico. Simplemente instale el dispositivo, cree un sistema de archivos, móntelo y listo. Usando el mismo script de python que en la primera publicación, los resultados son:
Opciones | Tasa de sincronización | Latencia |
ext4, O_DIRECTO | 21200 / s | 0,047 ms |
ext4 | 20000 / segundo | 0,050 ms |
ext4, datos = diario | 9600 / segundo | 0,100 ms |
Los resultados anteriores son bastante sorprendentes. El rendimiento de fsync está a la par con un controlador RAID con caché de escritura, para el cual tuve una tasa de 23000/s y es mucho mejor que una tarjeta NVMe normal basada en NAND como la Intel PC-3700, capaz de proporcionar un 7300/s flecha sincronizada. Incluso activando el registro ext4 completo, la tasa sigue siendo excelente incluso si, como se esperaba, se reduce a la mitad.
Optane utilizado como dispositivo de bloqueo de caché en un volumen híbrido
Si tiene un conjunto de datos grande, también puede usar la tarjeta Optane como caché de lectura/escritura y mejorar significativamente el rendimiento de fsync. Hice algunas pruebas con dos soluciones fácilmente disponibles, dm-caché y bcache. En ambos casos, la tarjeta Optane se colocó frente a una unidad USB Sata externa y la capa de caché se configuró en escribir.
Opciones | Tasa de sincronización | Latencia |
Sin caché | 13 / s | 75ms |
dm-caché | 3100 / segundo | 0,32 ms |
bcache | 2500 / segundo | 0,40 ms |
Ambas soluciones mejoran la frecuencia de fsync en dos órdenes de magnitud. Todavía es mucho más lento que el dispositivo directo, pero es un intercambio muy decente.
Optane utilizado como ZFS SLOG
ZFS también puede usar un dispositivo rápido para su registro de escritura, el ZIL. Uno de estos dispositivos en la terminología de ZFS se llama SLOG. Con el logbias de ZFS configurado en «latencia», este es el impacto de usar un dispositivo Optane como SLOG frente a la misma unidad USB SATA lenta:
Opciones | Tasa de sincronización | Latencia |
ZFS, SLOG | 7400 / segundo | 0,135 ms |
ZFS, sin SLOG | 28 / s | 36 ms |
La adición del dispositivo SLOG ha aumentado la tasa de fsync en un factor de casi 260. Las tasas también son el doble de las reportadas con dm-cache y bcache y aproximadamente un tercio del resultado usando el dispositivo Optane para almacenamiento. Teniendo en cuenta todos los beneficios adicionales de ZFS, como la compresión y las instantáneas, este es un resultado realmente interesante.
Conclusiones
Si tiene problemas con la latencia de comisión de una gran base de datos de transacciones, los dispositivos 3D_XPoint como Intel Optane pueden ofrecer nuevas opciones.