I have a simple, not quite so simple question: why the heck is protocol A slower than B and C in my setup? I mean, I've been stuck on this for over a week now, tried "all" the configurations, played with max-buffers max-epoch-size, sndbuf-size, rcvbuf-size, etc etc.
I understand that Protocol A doesn't need to wait for the data to reach the other node whatsoever, Protocol B considers the write done as soon as it reaches it, and C only when its written in the second node. So, basically, its supposed to go like that in terms of speed: A > B > C, right?
Also I understand the buffer/cache matter, that at some point, protocol B, and mostly A, loses performance due to full use of cache, so that the "stack" becomes congested. Therefore, a big amount of writes (larger ones, mostly) is supposed to make it slower. I ran a serious amount of tests, benchmarked it with hdparm, dd, bonnie++, iozone (a whole bunch of sheets, days of work) and it still doesnt make sense; even the small files/writes gets slower with Protocol A and B.
Can anybody help me make it go as its supposed to?
Thank you all.
Both servers with Debian 9 fresh installed. DRBD working with LVM. global_common.conf as it follows (played with some of the commented 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";
}
}