GNU/Linux >> Linux Esercitazione >  >> Linux

DRBD terribili prestazioni di sincronizzazione su 10GigE

Soluzione 1:

Nelle versioni più recenti di DRBD (8.3.9 e successive) è presente un controller di risincronizzazione dinamica che necessita di messa a punto. Nelle versioni precedenti di DRBD impostando syncer {rate;} era abbastanza; ora è usato più come punto di partenza leggermente suggerito per la velocità di risincronizzazione dinamica.

Il controller di sincronizzazione dinamica è regolato con le "c-settings" nella sezione del disco della configurazione di DRBD (vedi $ man drbd.conf per i dettagli su ciascuna di queste impostazioni).

Con 10 Gbe tra questi nodi e supponendo una bassa latenza poiché viene utilizzato il protocollo C, la seguente configurazione dovrebbe far muovere le cose più velocemente:

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;
        }
}

Se non sei ancora soddisfatto, prova a compiere max-buffers fino a 12k. Se non sei ancora soddisfatto, puoi provare ad alzare c-fill-target con incrementi di 2M.

Soluzione 2:

Qualcuno altrove mi ha suggerito di usare queste impostazioni:

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

E le prestazioni sono eccellenti.

Modifica: Come suggerito da @Matt Kereczman e altri, sono finalmente passato a questo:

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 velocità di risincronizzazione è elevata:

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 velocità di scrittura è eccellente durante la risincronizzazione con queste impostazioni (80% della velocità di scrittura locale, velocità full wire):

# 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 velocità di lettura è OK:

# 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

Modifica successiva:

Dopo una risincronizzazione completa, le prestazioni sono molto buone (scrittura wire speed, lettura velocità locale). La risincronizzazione è veloce (5/6 ore) e non danneggia troppo le prestazioni (lettura wire speed, scrittura wire speed). Rimarrò sicuramente con c-plan-ahead a zero. Con valori diversi da zero, la risincronizzazione è troppo lunga.

Soluzione 3:

c-plan-ahead deve impostare un valore positivo per abilitare la velocità di sincronizzazione dinamica 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. Servizio del sistema operativo Linux 'cpuspeed'

  2. Prestazioni aritmetiche a 32 bit rispetto a 64 bit

  3. Python ha la sincronizzazione?

  4. dd prestazioni su Mac OS X rispetto a Linux

  5. Sincronizzazione bidirezionale in tempo reale di un albero di file di grandi dimensioni tra due server Linux distanti

Come riparare la velocità di trasferimento lenta di Zyxel NAS326

Linux:diagramma del kernel Linux vs. Strumenti per le prestazioni?

Come installare DRBD su CentOS Linux

Usa NTP per sincronizzare l'ora

Ottimizzazione delle prestazioni di Nginx

Velocizzare un video su Linux