Jens Axboe, creador de io_uring y de los planificadores de entrada/salida CFQ, Deadline y Noop, ha continuado sus experimentos en la optimización de la entrada/salida en el núcleo de Linux. Esta vez, su atención se ha centrado en los planificadores de entrada/salida BFQ y mq-deadline, que resultaron ser un cuello de botella al menos en el caso de los rápidos dispositivos NVMe.
El estudio de la situación reveló que una de las razones clave para el rendimiento subóptimo de las subsistemas de planificadores de entrada/salida eran los problemas de contención de bloqueo (intentos de obtener un bloqueo que es sostenido por otro hilo). Gracias a medidas dirigidas a reducir la competencia en el manejo de bloqueos, como la serialización de desalojo e inserciones de solicitudes, la velocidad de los planificadores ha aumentado en varias situaciones (en IOPS).
Al probar el planificador BFQ con la herramienta fio, el rendimiento aumentó de 567K a 1551K operaciones de entrada/salida por segundo, y la competencia de bloqueos disminuyó del 96% al 30%. En el caso de mq-deadline, el rendimiento tras aplicar los parches propuestos al utilizar un dispositivo NVMe aumentó de 1070K a 2560K operaciones de entrada/salida por segundo (IOPS), y la competencia de bloqueos se redujo del 94% al 23%.
Fuente: opennet.ru
