This guide describes DRBD version 8.4 and above. For 8.3 please look here.

15.3. Tuning recommendations

DRBD offers a number of configuration options which may have an effect
on your system’s throughput. This section list some recommendations
for tuning for throughput. However, since throughput is largely
hardware dependent, the effects of tweaking the options described here
may vary greatly from system to system. It is important to understand
that these recommendations should not be interpreted as "silver
bullets" which would magically remove any and all throughput
bottlenecks.

15.3.1. Setting max-buffers and max-epoch-size

These options affect write performance on the secondary
node. max-buffers is the maximum number of buffers DRBD allocates for
writing data to disk while max-epoch-size is the maximum number of
write requests permitted between two write barriers. max-buffers must be
equal or bigger to max-epoch-size to increase performance.
The default for both is 2048; setting it to around
8000 should be fine for most reasonably high-performance hardware RAID
controllers.

15.3.2. Tweaking the I/O unplug watermark

The I/O unplug watermark is a tunable which affects how often the I/O
subsystem’s controller is "kicked" (forced to process pending I/O
requests) during normal operation. There is no universally recommended
setting for this option; this is greatly hardware dependent.

Some controllers perform best when "kicked" frequently, so for these
controllers it makes sense to set this fairly low, perhaps even as low
as DRBD’s allowable minimum (16). Others perform best when left alone;
for these controllers a setting as high as max-buffers is advisable.

resource <resource> {
net {
unplug-watermark 16;
...
}
...
}

15.3.3. Tuning the TCP send buffer size

The TCP send buffer is a memory buffer for outgoing TCP traffic. By
default, it is set to a size of 128 KiB. For use in high-throughput
networks (such as dedicated Gigabit Ethernet or load-balanced bonded
connections), it may make sense to increase this to a size of 512 KiB,
or perhaps even more. Send buffer sizes of more than 2 MiB are
generally not recommended (and are also unlikely to produce any
throughput improvement).

15.3.4. Tuning the Activity Log size

If the application using DRBD is write intensive in the sense that it
frequently issues small writes scattered across the device, it is
usually advisable to use a fairly large activity log. Otherwise,
frequent metadata updates may be detrimental to write performance.

resource <resource> {
disk {
al-extents 3389;
...
}
...
}

15.3.5. Disabling barriers and disk flushes

Warning

The recommendations outlined in this section should be applied
only to systems with non-volatile (battery backed) controller caches.

Systems equipped with battery backed write cache come with built-in
means of protecting data in the face of power failure. In that case,
it is permissible to disable some of DRBD’s own safeguards created for
the same purpose. This may be beneficial in terms of throughput: