Jens Axboe, de maker van io_uring en de I/O-schedulers CFQ, Deadline en Noop, heeft zijn experimenten met optimalisatie van I/O in de Linux-kernel voortgezet. Deze keer richtte hij zich op de I/O-schedulers BFQ en mq-deadline, die een bottleneck bleken te zijn in elk geval met snelle NVMe-opslag.
Uit een analyse van de situatie bleek dat een van de belangrijkste oorzaken van de suboptimale prestaties van de subsystemen van I/O-schedulers problemen met concurrerende locks waren ("lock contention", het proberen om een lock te verkrijgen die door een andere thread wordt vastgehouden). Dankzij maatregelen die gericht waren op het verminderen van concurrentie bij het verwerken van locks, zoals de serialisatie van dispatching en het inlassen van verzoeken, steeg de snelheid van de schedulers in verschillende situaties aanzienlijk (in IOPS).
Bij het testen van de BFQ-scheduler met de utility fio steeg de performance van 567K naar 1551K I/O-operaties per seconde, en nam de lock contention af van 96% naar 30%. In het geval van mq-deadline steeg de performance na de toepassing van de voorgestelde patches tijdens het gebruik van een NVMe-opslag van 1070K naar 2560K I/O-operaties per seconde (IOPS), en daalde de lock contention van 94% naar 23%.
Bron: opennet.ru
