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.
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. Under most
circumstances, these two options should be set in parallel, and to
identical values. The default for both is 2048; setting it to around
8000 should be fine for most reasonably high-performance hardware RAID
controllers.
resource <resource> { net { max-buffers 8000; max-epoch-size 8000; ... } ... }
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; ... } ... }
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).
resource <resource> { net { sndbuf-size 512k; ... } ... }
DRBD also supports TCP send buffer auto-tuning. After enabling this feature, DRBD will dynamically select an appropriate TCP send buffer size. TCP send buffer auto tuning is enabled by simply setting the buffer size to zero:
resource <resource> { net { sndbuf-size 0; ... } ... }
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; ... } ... }
![]() | 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:
resource <resource> { disk { disk-barrier no; disk-flushes no; ... } ... }