Una gran serie de parches de Red Hat ahora está en cola en la rama Git de desarrollo del sistema de archivos XFS que es parte del nuevo material para la próxima ciclo de Linux 5.14 .
El gran conjunto de parches que se puso en cola esta semana en el código xfs-5.14 para el siguiente se centra en CIL (Lista de elementos comprometidos) y mejoras de escalabilidad de registros.
Se están viendo buenos números de rendimiento en este trabajo de escalabilidad para el sistema de archivos XFS. Los grandes números están viendo que la tasa de transacciones aumenta de alrededor de 700k a 1.7M de confirmaciones por segundo y una reducción en las operaciones de descarga en 2 ~ x órdenes de magnitud menos para cargas de trabajo pesadas de metadatos que no aplican fsync.
El mensaje en fusionar explica con más detalle el código que se ha reelaborado en el controlador XFS para una mejor escalabilidad alrededor del CIl y el registro:
Las optimizaciones FUA/FLUSH de escritura de registro reducen el número de descargas de caché necesarias para descargar el CIL en el diario. Extiende la antigua semántica de ordenación de registros pre-retardados requerida al escribir transacciones individuales en los iclogs para cubrir las transacciones del punto de control CIL en lugar de escrituras individuales en los iclogs. Al hacerlo, reducimos los requisitos de descarga de caché a una vez por punto de control CIL en lugar de una vez por escritura de iclog.
Los empujes de CIL asíncronos corrigen una limitación de canalización que solo permitía procesar un único empuje de CIL a la vez. Esto estaba provocando que la escritura de puntos de control CIL se vincule a la CPU, ya que solo se podía presionar un solo punto de control CIL a la vez. La canalización del punto de control se diseñó para permitir que varios impulsos estén en vuelo a la vez y usar un orden cuidadoso de los registros de confirmación para garantizar el orden de recuperación correcto, pero la implementación de la cola de trabajo no permitió que se ejecutaran trabajos simultáneos. Los trabajos simultáneos ahora se extienden a 4 puntos de control CIL que se ejecutan a la vez, por lo que se eliminan las limitaciones de uso de la CPU sin introducir nuevos problemas de contención de bloqueos.
La reelaboración de xlog_write () está muy atrasada. El código es complejo, difícil de entender, lleno de casos complicados y sutiles y, en general, muy difícil de modificar. Este conjunto de parches reelabora la API xlog_write () para reducir la sobrecarga de procesamiento de escribir largas cadenas de vectores de registro, y factoriza el código xlog_write () en una ruta rápida simple y compacta junto con una ruta lenta más clara para manejar los casos complejos.
El conjunto de parches de escalabilidad de confirmaciones CIL elimina los spinlocks de la ruta rápida de confirmación de transacciones. Estos spinlocks son el cuello de botella que limita el rendimiento en la ruta de confirmación de la transacción, por lo que aplicamos una variedad de técnicas diferentes para realizar ambas operaciones atómicas. actualizaciones sin bloqueo o por CPU de las estructuras de seguimiento de CIL durante las confirmaciones. Esto aumenta en gran medida el rendimiento del motor de confirmación de transacciones, moviendo el punto de contención a los algoritmos de seguimiento del espacio de registro después
duplicando el rendimiento en cargas de trabajo de 32 vías.
Esta serie de parches fue dirigida por Dave Chinner de Red Hat.