Você deve examinar a chamada de sistema sendfile(2)
, que otimiza a cópia de dados de um descritor de arquivo aberto para outro dentro do kernel. Note que os dois descritores de arquivos não precisam ser arquivos de disco. Você também pode usar um soquete de rede.
Veja também o sinalizador O_DIRECT
quando usado com open(2)
em um arquivo. Ele permite leitura / gravação sem recopiar os dados do buffer do dma no buffer do usuário, mas você deve alinhar seu buffer em uma página ou similar e usar múltiplos tamanhos de páginas para o tamanho.
hdparm -t --direct
pode fazer testes de tempo com este sinalizador.
Alguns comandos do pacote sg3_utils
, como sg_dd
, fazem o disco de baixo nível io e têm opções para O_DIRECT
também.