Linux AIO / io_submit / io_getevents / no fifo (pipes nomeados)

0

Eu tenho que escrever muitos dados para um pipe. Posso usar as chamadas do Linux io_submit/io_getevents para gravar em Pipes nomeados ou é definido apenas para arquivos regulares. Eu tentei encontrar qualquer documento que explica a AIO sobre canos, mas não conseguiu. Alguém pode ajudar aqui.

Principalmente, estou preocupado com o campo aio_offset em struct iocb . E se um pacote de dados com deslocamento 8096 estiver programado para leitura / gravação antes de um pacote de dados de deslocamento como 4096.

    
por Rishi Agrawal 01.06.2018 / 07:43

1 resposta

0

O Linux AIO não se limita apenas a arquivos regulares - ele pode ser usado em arquivos especiais de dispositivos de bloco. Espero que as gravações AIO não possam ser usadas em pipes, porque os pipes não são capazes de procurar.

IOCB_CMD_PWRITE

pwrite() writes up to count bytes from the buffer starting at buf to the file descriptor fd at offset offset. The file offset is not changed.

The file referenced by fd must be capable of seeking.

O ponto da AIO é poder enfileirar várias gravações diretas de E / S (ou leituras) em um dispositivo de bloco sem precisar usar threads.

Para melhorar o desempenho de transferências em massa em um pipe, sugiro aumentar o tamanho do buffer de pipe de 4kB para não mais que 64kB ... exceto que 64kB já é o padrão no Linux moderno.

    
por 12.07.2018 / 23:39