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.