E/S assíncrona

E/S assíncrona é uma forma de processamento de entrada/saída que permite que a CPU continue executando simultaneamente enquanto a comunicação está em andamento.

Disco e rede são ordens de magnitude mais lentas que a CPU. Em vez de iniciar uma operação de E/S e esperar pelo resultado, a CPU pode iniciar a operação de E/S assim que souber que os dados serão necessários e continuar executando outras instruções que não dependem do resultado da operação. /O operação.

Algumas comparações aproximadas para fins ilustrativos:

Dispositivo

Latência

Largura de banda

Cache L3 da CPU

10 ns

>400GB/s

Memória

100 ns

100GB/s

Disco (SSD NVMe)

400 us

380MB/s

Rede

50 - 200ms

1 Gb/s (125 MB/s)

(estatísticas reais do disco conforme relatadas por fio para leituras aleatórias de tamanho 2 KB - ~ 190k IOPS)

Felizmente, as unidades SSD podem executar operações simultaneamente, de modo que a CPU pode iniciar várias solicitações ao mesmo tempo, continuar a execução e, em seguida, receber os resultados de várias operações ao mesmo tempo.

Alguns bancos de dados (como lmdb/mdbx) usam armazenamento mapeado em memória para ler e gravar em disco. Infelizmente, o armazenamento mapeado em memória é implementado pelo kernel (mmap) e não é assíncrono, portanto a execução é bloqueada enquanto se aguarda a conclusão da operação.

Mais sobre E/S assíncrona pode ser lida aquiarrow-up-right.

Last updated