Jens Axboe, criador do io_uring e dos escalonadores de I/O CFQ, Deadline e Noop, continuou seus experimentos de otimização de I/O no núcleo do Linux. Desta vez, ele se concentrou nos escalonadores de I/O BFQ e mq-deadline, que se mostraram um gargalo pelo menos no caso de unidades NVMe de alta velocidade.
O estudo da situação revelou que uma das causas principais da performance não otimizada dos subsistemas de escalonadores de I/O foram os problemas com bloqueios concorrentes (‘lock contention’, tentativa de obter uma bloqueio mantido por outro thread). Graças a medidas voltadas para a redução da concorrência no gerenciamento de bloqueios, como a serialização do despacho e a inserção de solicitações, a velocidade dos escalonadores aumentou em várias situações (em IOPS).
Nos testes do escalonador BFQ com a ferramenta fio, o desempenho aumentou de 567K para 1551K operações de I/O por segundo, enquanto a concorrência de bloqueios caiu de 96% para 30%. No caso do mq-deadline, o desempenho após a aplicação dos patches propostos ao usar um dispositivo NVMe aumentou de 1070K para 2560K operações de I/O por segundo (IOPS), e a concorrência de bloqueios reduziu de 94% para 23%.
Fonte: opennet.ru
