Oto, czego się nauczyłem, robiąc dokładnie to samo, co robisz. Sugeruję użycie mbuffera. Podczas testowania w moim środowisku pomogło to tylko po stronie odbierającej, bez niego wysyłanie spowolniłoby, podczas gdy odbiór był nadrobiony.
Kilka przykładów:
http://everycity.co.uk/alasdair/2010/07/using-mbuffer-to-speed-up-slow-zfs-send-zfs-receive/
Strona główna z opcjami i składnią
http://www.maier-komor.de/mbuffer.html
Polecenie send z mojego skryptu replikacji:
zfs send -i tank/pool@oldsnap tank/pool@newsnap | ssh -c arcfour remotehostip "mbuffer -s 128k -m 1G | zfs receive -F tank/pool"
uruchamia to mbuffer na zdalnym hoście jako bufor odbiorczy, więc wysyłanie przebiega tak szybko, jak to możliwe. Uruchomiłem linię 20mbit i stwierdziłem, że mbuffer po stronie wysyłającej również nie pomógł, również moje główne pudełko ZFS używa całego RAM-u jako pamięci podręcznej, więc przekazanie nawet 1 g mbufora wymagałoby ode mnie zmniejszenia niektórych rozmiarów pamięci podręcznej.
Ponadto, i to nie jest naprawdę mój obszar specjalizacji, myślę, że najlepiej po prostu pozwolić kompresji ssh. W twoim przykładzie myślę, że używasz bzip, a następnie ssh, który domyślnie używa kompresji, więc SSH próbuje skompresować skompresowany strumień. Skończyło się na użyciu arcfour jako szyfru, ponieważ jest to procesor najmniej obciążający i to było dla mnie ważne. Możesz mieć lepsze wyniki z innym szyfrem, ale zdecydowanie sugeruję zezwolenie SSH na kompresję (lub wyłączenie kompresji ssh, jeśli naprawdę chcesz użyć czegoś, czego nie obsługuje).
Bardzo interesujące jest to, że użycie mbuffer podczas wysyłania i odbierania na localhost również przyspiesza:
zfs send tank/pool@snapshot | mbuffer -s 128k -m 4G -o - | zfs receive -F tank2/pool
Odkryłem, że 4g dla transferów localhost wydaje mi się być słodkim miejscem. To po prostu pokazuje, że wysyłanie / odbieranie zfs tak naprawdę nie lubi opóźnień ani żadnych innych przerw w strumieniu, aby działać najlepiej.
Tylko moje doświadczenie, mam nadzieję, że to pomaga. Zajęło mi to trochę czasu, żeby to wszystko zrozumieć.