GNU/Linux >> Tutoriels Linux >  >> Linux

Performances de synchronisation DRBD terribles sur 10GigE

Solution 1 :

Dans les versions plus récentes de DRBD (8.3.9 et plus récentes), il existe un contrôleur de resynchronisation dynamique qui doit être réglé. Dans les anciennes versions de DRBD, définir le syncer {rate;} était suffisant; maintenant, il est davantage utilisé comme point de départ légèrement suggéré pour la vitesse de resynchronisation dynamique.

Le contrôleur de synchronisation dynamique est réglé avec les "c-settings" dans la section disque de la configuration de DRBD (voir $ man drbd.conf pour plus de détails sur chacun de ces paramètres).

Avec 10 Go entre ces nœuds et en supposant une faible latence puisque le protocole C est utilisé, la configuration suivante devrait accélérer les choses :

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 vous n'êtes toujours pas satisfait, essayez d'avoir max-buffers jusqu'à 12k. Si vous n'êtes toujours pas satisfait, vous pouvez essayer d'augmenter le c-fill-target par incréments de 2M.

Solution 2 :

Quelqu'un d'autre m'a suggéré d'utiliser ces paramètres :

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

Et les performances sont excellentes.

Modifier : Selon @Matt Kereczman et d'autres suggestions, j'ai finalement changé pour ceci :

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 vitesse de resynchronisation est élevée :

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 vitesse d'écriture est excellente lors de la resynchronisation avec ces paramètres (80 % de la vitesse d'écriture locale, pleine vitesse filaire) :

# 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 vitesse de lecture est correcte :

# 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

Modification ultérieure :

Après une resynchronisation complète, les performances sont très bonnes (écriture à vitesse filaire, lecture à vitesse locale). La resynchronisation est rapide (5/6 heures) et ne nuit pas trop aux performances (lecture à la vitesse du fil, écriture à la vitesse du fil). Je vais certainement rester avec c-plan-ahead à zéro. Avec des valeurs non nulles, la resynchronisation est beaucoup trop longue.

Solution 3 :

c-plan-ahead doit définir une valeur positive pour activer le taux de synchronisation dynamique 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 - Réglage et optimisation des performances

  2. Service d'exploitation Linux "cpuspeed"

  3. Obtenir la vitesse du lien par programmation ?

  4. Performances Arithmétique 32 bits contre 64 bits

  5. dd performances sur Mac OS X vs Linux

Comment réparer la vitesse de transfert lente du Zyxel NAS326

Linux - Schéma du noyau Linux Vs. Outils de performances ?

Comment installer DRBD sur CentOS Linux

Utiliser NTP pour synchroniser l'heure

Réglage des performances Nginx

Accélérer une vidéo sous Linux