Voici ce que j'ai appris en faisant exactement la même chose que vous. Je suggère d'utiliser mbuffer. Lors de tests dans mon environnement, cela n'a aidé que du côté de la réception, sans cela, l'envoi ralentirait pendant que la réception rattraperait.
Quelques exemples:
http://everycity.co.uk/alasdair/2010/07/using-mbuffer-to-speed-up-slow-zfs-send-zfs-receive/
Page d'accueil avec options et syntaxe
http://www.maier-komor.de/mbuffer.html
La commande d'envoi de mon script de réplication:
zfs send -i tank/pool@oldsnap tank/pool@newsnap | ssh -c arcfour remotehostip "mbuffer -s 128k -m 1G | zfs receive -F tank/pool"
cela exécute mbuffer sur l'hôte distant en tant que tampon de réception afin que l'envoi s'exécute le plus rapidement possible. J'ai exécuté une ligne de 20 Mbits et j'ai constaté que le fait d'avoir mbuffer du côté de l'envoi ne m'a pas aidé non plus, ma boîte zfs principale utilise également tout son ram comme cache, donc donner même 1g à mbuffer me obligerait à réduire certaines tailles de cache.
De plus, et ce n'est pas vraiment mon domaine d'expertise, je pense qu'il vaut mieux laisser ssh faire la compression. Dans votre exemple, je pense que vous utilisez bzip, puis utilisez ssh qui, par défaut, utilise la compression, donc SSH essaie de compresser un flux compressé. J'ai fini par utiliser arcfour comme chiffre car c'est le moins gourmand en CPU et c'était important pour moi. Vous pouvez avoir de meilleurs résultats avec un autre chiffrement, mais je suggérerais certainement de laisser SSH faire la compression (ou de désactiver la compression ssh si vous voulez vraiment utiliser quelque chose qu'il ne prend pas en charge).
Ce qui est vraiment intéressant, c'est que l'utilisation de mbuffer lors de l'envoi et de la réception sur localhost accélère également les choses:
zfs send tank/pool@snapshot | mbuffer -s 128k -m 4G -o - | zfs receive -F tank2/pool
J'ai trouvé que 4g pour les transferts localhost semble être le bonbon pour moi. Cela montre simplement que l'envoi / la réception zfs n'aime pas vraiment la latence ou toute autre pause dans le flux pour fonctionner au mieux.
Juste mon expérience, j'espère que cela vous aidera. Il m'a fallu un certain temps pour comprendre tout cela.