2

Существуют ли небольшие и простые средства передачи файлов для Linux, которые могут использовать стиль «нулевого копирования» для передачи файлов с жесткого диска (SSD) в tcp-сокет и обратно?

Я хочу часто отправлять огромное количество несжимаемых уникальных данных (десятки-сотни ГБ) по Ethernet, 1 Гбит или, возможно, 10 Гбит, между двумя ПК. Мне не нужно ни шифрование, ни сжатие, ни дедупликация / дельта-переносы, ни какие-либо дополнительные контрольные суммы из инструмента (так что нет scp и rsync умолчанию); просто высокая пропускная способность чтения с линейного диска и высокая загрузка сети.

А также я хочу, чтобы инструмент не создавал много копий памяти, а использовал инфраструктуру "нулевого копирования" современного ядра Linux: syscalls splice , vmsplice , sendfile и т.д. С помощью инструмента нулевого копирования можно пропустить большинство процедур копирования данных, инструктируя ядро прочитать некоторые данные с жесткого диска /SSD /RAID (DMA для чтения в pagecache), а затем упаковать их в пакеты и запрограммировать сетевую карту для выполнения DMA непосредственно из pagecache. Такой подход "нулевой копии" снизит нагрузку на систему при передаче, поскольку ЦПУ не придется разрушать каждый байт данных файла. Одна сторона передачи может иметь медленный процессор ...

0