Existem pequenas e simples ferramentas de transferência de arquivos para o Linux, que podem usar o estilo "zero-copy" de transferir arquivos do HDD (SSD) para o soquete tcp e de volta?
Eu quero muitas vezes enviar uma quantidade enorme de dados exclusivos incompressíveis (dezenas de centenas de GB) com Ethernet, 1 Gbit ou pode ser 10 Gbit, entre dois PCs. Não preciso de criptografia nem compactação, nenhuma transferência de deduplicação / delta e nenhuma soma de verificação extra da ferramenta (portanto, não há scp
nem padrão rsync
); apenas alta largura de banda de leituras de disco linear e alta utilização de rede.
E também quero que a ferramenta não faça muitas cópias de memória, mas use a infraestrutura "zero-copy" do kernel Linux moderno: syscalls splice
, vmsplice
, sendfile
, etc. Com ferramenta de cópia zero pode ignorar a maioria dos procedimentos de cópia de dados, instruindo o kernel a ler alguns dados do HDD / SSD / RAID (DMA lido para pagecache) e, em seguida, reempacotá-lo em pacotes e programar a placa de rede para fazer DMA diretamente do pagecache. Essa abordagem "zerocopy" reduzirá a carga do sistema da transferência, porque a CPU não precisará desintegrar todos os bytes de dados de arquivo. Um lado da transferência pode ter CPU lenta ...