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 aqui.
Last updated