cópia paralela de arquivo usando tee inesperadamente lento

cópia paralela de arquivo usando tee inesperadamente lento

estamos copiando um grande instantâneo zfs (zfs send) do site-1 para o site-2. site-1 e site-2 são remotos e conectados via IPsec (leia-se: lento)

no site-2, precisamos dos dados em dois servidores zfs diferentes. atualmente estamos usando dois ssh "zfs send" simultâneos | zfs recebe comandos. é claro que isso é um desperdício de largura de banda.

experimentamos o seguinte (1 ssh remoto, tee, 1 ssh local):

[root@site-2-1 ~]# \
    time \
    ssh root@site-1-0 \
        "cat /tmp/100000000.rnd | pigz -1" \
    | pv -B 10m -s 100000000 \
    | tee \
        >(ssh root@site-2-2 "pigz -d > /tmp/test.rnd.1") \
    | pigz -d \
    > /tmp/test.rnd.1

95.4MiB 0:00:52 [1.83MiB/s] [===<snipped>===>] 100%

real    0m52.062s
user    0m0.979s
sys 0m1.100s

que acabou sendo mais lento que uma simulação da solução original (2 SSH remotos simultaneamente):

[root@site-2-1 ~]# \
    time \
    ssh root@site-1-0 \
        "cat /tmp/100000000.rnd | pigz -1" \
    | pv -B 10m -s 100000000 \
    | pigz -d \
    > /tmp/test.rnd.2
95.4MiB 0:00:30 [3.09MiB/s] [===<snipped>===>] 100%

real    0m30.837s
user    0m0.827s
sys 0m1.003s


[root@site-2-2 ~]# \
    time \
    ssh root@site-1-0 \
        "cat /tmp/100000000.rnd | pigz -1" \
    | pv -B 10m -s 100000000 \
    | pigz -d \
    > /tmp/test.rnd.2
95.4MiB 0:00:38 [ 2.5MiB/s] [===<snipped>===>] 100%

real    0m38.187s
user    0m0.840s
sys 0m0.846s

examinamos o código do tee, nosso principal suspeito, e parece que ele opera a partir de um único thread.

alguém pode recomendar uma alternativa mais rápida ao tee, ou talvez uma solução totalmente diferente?

desde já obrigado, Guven

Responder1

sugestão:

zfs send > file
scp file server-at-site2:
ssh server-at-site2 zfs receive < file
ssh server-at-site2 cat file | ssh second-server-at-site2 zfs receive

Isso requer duas transferências, mas presumivelmente a segunda será mais rápida (por causa da rede local, etc.)

informação relacionada