Назад | Перейти на главную страницу

DRBD - протокол A медленнее, чем B и C

У меня простой, но не такой простой вопрос: какого черта протокол A медленнее, чем B и C в моей настройке? Я имею в виду, что я застрял на этом уже больше недели, пробовал "все" конфигурации, играл с max-buffers max-epoch-size, sndbuf-size, rcvbuf-size и т. Д. И т. Д.

Я понимаю, что протоколу A вообще не нужно ждать, пока данные достигнут другого узла, протокол B считает, что запись выполнена, как только она доходит до него, а протокол C только тогда, когда он записан во втором узле. В общем, с точки зрения скорости это должно быть так: A> B> C, верно?

Также я понимаю, что буфер / кеш имеет значение, так как в какой-то момент протокол B, и в основном A, теряет производительность из-за полного использования кеша, так что «стек» становится перегруженным. Следовательно, предполагается, что большое количество операций записи (в основном, большего размера) замедлит ее. Я провел серьезное количество тестов, сравнил его с hdparm, dd, bonnie ++, iozone (целая куча листов, дни работы), и это все еще не имеет смысла; даже небольшие файлы / записи становятся медленнее с протоколами A и B.

Может ли кто-нибудь помочь мне сделать так, как должно?

Спасибо вам всем.

На обоих серверах установлен свежий Debian 9. DRBD работает с LVM. global_common.conf, как следует (играл с некоторыми из прокомментированных itens)

  global {
    usage-count no;
    # minor-count dialog-refresh disable-ip-verification
    # cmd-timeout-short 5; cmd-timeout-medium 121; cmd-timeout-long 600;
}

common {

     syncer {
        #rate 10M;
            # "hot area" aumenta o tiempo de resync pmas diminui os updates nos metadados
        # area pequena synca mais rapido mas a replicação fica mais lenta
        #al-extents 65533; #maximo
    }


    handlers {
        #Cria snapshot automaticamente assim que uma sincronização é iniciada
        #before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh";
        #remove o snapshot em caso de sucesso na resync
                #after-resync-target "/usr/lib/drbd/unsnapshot-resync-target-lvm.sh";
        # a reversão é um snapshot comum: lvconvert -M
    }

    startup {

        #wfc-timeout 0;
        #degr-wfc-timeout 15;
    }   

    options {

    }

    disk {
        #on-io-error detach;    

    }

    net {
        protocol C;

        #sndbuf-size          8000k;
        #rcvbuf-size          8000k;
            #timeout                   60;
            #connect-int               10;
            #ping-int                  10;
            #ping-timeout               5;
            #max-buffers                20000;
            #max-epoch-size             20000;
            #cram-hmac-alg         "sha1";
            #shared-secret  "appname-drbd";

    }
}