Por que o desempenho do armazenamento muda em várias profundidades da fila?

4

Estou no mercado para uma atualização de armazenamento para nossos servidores. Eu estou olhando para benchmarks de vários dispositivos SSD PCIe e em comparações vejo que as IOPS mudam em várias profundidades de fila. Como isso pode ser e por que isso está acontecendo? A maneira que eu entendo as coisas é: eu tenho um dispositivo com o máximo (teórico) de 100k IOPS. Se minha carga de trabalho produzir consistentemente 100.001 IOPS, terei uma profundidade de fila de 1, estou correto? No entanto, pelo que vejo em benchmarks, alguns dispositivos funcionam mais lentamente em profundidades de fila mais baixas, depois aceleram a uma profundidade de 4-64 e depois diminuem a velocidade em profundidades ainda maiores. A profundidade da fila não é uma propriedade do sistema operacional (ou talvez do controlador de armazenamento), então por que isso afetaria a IOPS?

    
por Mxx 20.12.2012 / 00:16

1 resposta

5

A resposta curta é que os discos rígidos otimizam a recuperação de dados se houver mais de uma solicitação de E / S pendente, o que geralmente aumenta o rendimento em detrimento da latência.

O NCQ faz isso, reordena os pedidos de IO para otimizar a taxa de transferência.

O SSD: s funciona de maneira diferente dos drives mecânicos, pois eles têm chips flash paralelos para armazenar dados. Ou seja, se você emitir uma solicitação de E / S por vez, a latência (pesquisa + tempo de leitura) decide a IOPS. Mas se você emitir 4 solicitações de uma só vez, o disco ssd poderá recuperá-las de maneira paralela ou otimizada, e poderá obter 4 vezes a taxa de transferência.

Quanto maior a profundidade da fila, maior a possibilidade de otimização do disco, até certo ponto. Como a IOPS é uma função da taxa de transferência, isso aumenta a IOPS em profundidades de fila mais altas.

EDITAR:

A fila verdadeira reside no sistema operacional que está emitindo todas as solicitações. Dito isso, eu conjeturo que o driver do controlador passe uma certa quantidade da fila para o controlador e o disco, para que eles possam trabalhar em suas profundidades de fila otimizadas. O disco deve ter sua própria fila para poder otimizar.

    
por 20.12.2012 / 02:44