GNU/Linux >> Tutoriales Linux >  >> Linux

DRBD terrible rendimiento de sincronización en 10GigE

Solución 1:

En las versiones más recientes de DRBD (8.3.9 y posteriores) hay un controlador de resincronización dinámica que necesita ajuste. En versiones anteriores de DRBD configurando el syncer {rate;} fue suficiente; ahora se usa más como un punto de partida ligeramente sugerido para la velocidad de resincronización dinámica.

El controlador de sincronización dinámica se sintoniza con la "configuración c" en la sección de disco de la configuración de DRBD (ver $ man drbd.conf para obtener detalles sobre cada una de estas configuraciones).

Con 10 Gbe entre estos nodos y suponiendo una latencia baja ya que se usa el protocolo C, la siguiente configuración debería hacer que las cosas se muevan más rápido:

resource rd0 {
        protocol C;
        disk {
                c-fill-target 10M;
                c-max-rate   700M;
                c-plan-ahead    7;
                c-min-rate     4M;
        }
        on cl1 {
                device /dev/drbd0;
                disk /dev/sda4;
                address 192.168.42.1:7788;
                meta-disk internal;
        }

        on cl2 {
                device /dev/drbd0;
                disk /dev/sda4;
                address 192.168.42.2:7788;
                meta-disk internal;
        }
}

Si aún no está satisfecho, intente cumplir max-buffers hasta 12k. Si aún no está satisfecho, puede intentar subir c-fill-target en incrementos de 2M.

Solución 2:

Alguien en otro lugar me sugirió que usara esta configuración:

        disk {
                on-io-error             detach;
                c-plan-ahead 0;
        }
        net {
                max-epoch-size          20000;
                max-buffers             131072;
        }

Y el rendimiento es excelente.

Editar: Según @Matt Kereczman y otras sugerencias, finalmente cambié a esto:

disk {
        on-io-error             detach;
        no-disk-flushes ;
        no-disk-barrier;
        c-plan-ahead 0;
        c-fill-target 24M;
        c-min-rate 80M;
        c-max-rate 720M;
} 
net {
        # max-epoch-size          20000;
        max-buffers             36k;
        sndbuf-size            1024k ;
        rcvbuf-size            2048k;
}

La velocidad de resincronización es alta:

cat /proc/drbd
version: 8.4.5 (api:1/proto:86-101)
srcversion: EDE19BAA3D4D4A0BEFD8CDE
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
    ns:133246146 nr:0 dw:2087494 dr:131187797 al:530 bm:0 lo:0 pe:5 ua:106 ap:0 ep:1 wo:d oos:4602377004
        [>....................] sync'ed:  2.8% (4494508/4622592)M
        finish: 1:52:27 speed: 682,064 (646,096) K/sec

La velocidad de escritura es excelente durante la resincronización con esta configuración (80 % de la velocidad de escritura local, velocidad de cable completa):

# dd if=/dev/zero of=./testdd bs=1M count=20k
20480+0 enregistrements lus
20480+0 enregistrements écrits
21474836480 octets (21 GB) copiés, 29,3731 s, 731 MB/s

La velocidad de lectura está bien:

# dd if=testdd bs=1M count=20k of=/dev/null
20480+0 enregistrements lus
20480+0 enregistrements écrits
21474836480 octets (21 GB) copiés, 29,4538 s, 729 MB/s

Edición posterior:

Después de una resincronización completa, el rendimiento es muy bueno (escritura a velocidad de cable, lectura a velocidad local). La resincronización es rápida (5/6 horas) y no daña demasiado el rendimiento (lectura a velocidad de cable, escritura a velocidad de cable). Definitivamente me quedaré con c-plan-ahead en cero. Con valores distintos de cero, la resincronización es demasiado larga.

Solución 3:

c-plan-ahead tiene que establecer un valor positivo para habilitar la velocidad de sincronización dinámica controller.disk c-plan-ahead 15; // 5 * RTT / 0.1s unit,in my case is 15 c-fill-target 24; c-max-rate 720M;


Linux
  1. MySQL:ajuste y optimización del rendimiento

  2. ¿Impacta Lvm en el rendimiento?

  3. Servicio del sistema operativo Linux 'cpuspeed'

  4. ¿Python tiene sincronización?

  5. Sincronización bidireccional en tiempo real de un gran árbol de archivos entre dos servidores Linux distantes

Cómo arreglar la velocidad de transferencia lenta de Zyxel NAS326

Linux – Diagrama de Linux Kernel vs. Herramientas de rendimiento?

Cómo instalar DRBD en CentOS Linux

Usar NTP para sincronizar la hora

Ajuste del rendimiento de Nginx

Acelerar un video en Linux