Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.
Le Fri, 4 Dec 2015 17:04:26 +0100
Lars Ellenberg <lars.ellenberg at linbit.com> écrivait:
> You are not supposed to disable the resync controller,
> you are supposed to correctly use it.
>
> https://blogs.linbit.com/p/443/drbd-sync-rate-controller-2/
>
> ... you should:
>
> * set c-plan-ahead to 20 (default with 8.4),
> or more if there’s a lot of latency on the connection (WAN
> link with protocol A); or less, if you want to have it
> react faster to changes
This is a dedicated, direct, 10GigE connection with redundant 1G (just
in case). Latency is less than 100ms; Throughput is more than 750 MB/s.
The required minimum transfer speed is 500 MB/s.
from the documentation, the adequate setting would be 1 but values
under 5 shouldn't be used. I tried 1 and 10, but got very poor results
(slowwww resync. I can't wait 2 weeks to 2 months for sync to finish,
the system enters production next week).
In my testing setting c-plan-ahead to 0 was precisely the most
important tweak to get decent sync/resync throughput.
> * leave the fixed resync rate (the initial guess for the
> controller) at about 30% or less of what your hardware can handle;
>
> * set c-max-rate to 100% (or slightly more) of
> what your hardware can handle;
I actually set it at 95% or so :)
> (the default is 100M, which was the effective limitation in
> this case)
>
> * set c-fill-target to the minimum (just as high as necessary)
> that gets your hardware saturated, if the system is otherwise
> idle.
Apparently something around 24M is OK with my current hardware.
> Respectively, figure out the maximum possible resync rate in your
> setup while the system is idle, then set c-fill-target to the
> minimum setting that still reaches that rate.
>
> And finally, while checking application request
> latency/responsiveness, tune c-min-rate to the maximum that still
> allows for acceptable responsiveness.
>
> You may need to adjust max-buffers and/or tcp send/receive buffer
> sizes as well.
Here's my current configuration that gives satisfying
results (cluster.res unchanged from previous post).
global {
usage-count no;
# minor-count dialog-refresh disable-ip-verification
}
common {
handlers {
}
startup {
# wfc-timeout degr-wfc-timeout outdated-wfc-timeout
wait-after-sb # wfc-timeout 20;
}
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;
}
syncer {
rate 4194304k; # bytes/second
al-extents 6433;
}
}
Using these settings, idle resync rate is ~700MB/s. sequential write
speed over 500MB/s during resync, sequential read over 700MB/s during
resync. I'll do a test again when the system are sync'ed but it looks
good enough.
--
------------------------------------------------------------------------
Emmanuel Florac | Direction technique
| Intellique
| <eflorac at intellique.com>
| +33 1 78 94 84 02
------------------------------------------------------------------------