Confira !
Ming Lei da Red Hat publicou uma implementação inicial de um driver de bloco de espaço de usuário baseado em IO_uring para Linux.
A solicitação de comentários foi enviada na segunda-feira para "UBD" como um driver de bloco de espaço de usuário IO_uring. Este driver UBD vai junto com o daemon de espaço do usuário "UBDSRV" escrito por Ming Lei também.
Ming explicou sobre UBD:
As duas partes se comunicam pelo IORING_OP_URING_CMD de io_uring com um buffer cmd compartilhado para armazenar o comando io, e o buffer é somente leitura para ubdsrv, cada comando io é indexado diretamente pela tag de solicitação io e é gravado pelo driver ubd.
Por exemplo, quando uma solicitação READ io é enviada ao driver de bloco ubd, o driver ubd armazena o comando io no buffer cmd primeiro, depois completa um IORING_OP_URING_CMD para notificar o ubdsrv, e o URING_CMD é emitido para o driver ubd antecipadamente pelo ubdsrv para obter notificação de qualquer nova solicitação io e cada URING_CMD é associado a uma solicitação io por tag.
Depois que o ubdsrv recebe o comando io, ele traduz e manipula a solicitação ubd io, como, para o destino ubd-loop, o ubdsrv traduz a solicitação na mesma solicitação em outro arquivo ou disco, como o driver do bloco de loop do kernel. Na implementação do ubdsrv, o io ainda é tratado por io_uring e compartilha o mesmo anel com o comando IORING_OP_URING_CMD. Quando a solicitação de io de destino é concluída, o mesmo IORING_OP_URING_CMD é emitido para o driver ubd para confirmar o resultado da solicitação de io e receber notificação futura de nova solicitação de io.
O suporte a zero-copy para o driver UBD é um dos grandes recursos ainda a serem buscados.
Veja este patch para mais detalhes sobre este esforço de driver de bloco de espaço de usuário da Red Hat. O daemon de espaço do usuário UBD está hospedado no GitHub . Será interessante ver como esse driver de bloco de espaço do usuário evolui e que tipo de adoção ele pode ver.
Até a próxima !!
Nenhum comentário:
Postar um comentário