[DRBD-user] Bad DRBD Performance

Lars Ellenberg lars.ellenberg at linbit.com
Thu Aug 6 18:21:28 CEST 2015

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


On Tue, Jun 30, 2015 at 10:53:02PM +0200, Leon Kramer wrote:
> I am going currently going nuts because of slow DRBD performance and after
> many hours trying different parameters I cannot find the problem here. I
> hope someone is able to help.
> 
> Regardless of how I tune the parameters I only achieve between 40-80 MB/s
> when writing to the drbd device from the active drbd node.
> 
> Even stranger is that I export some folder of the drbd with NFS and with
> some NFS client I receive basically a 100% write speed (110 MB/s) to drbd
> mounted via NFS. So writing to drbd via NFS is faster than writing to drbd
> from the active drbd node?
> 
> May the problem lie in RAID 6 of the subsystems? Now I am kinda helpless.

It is a *very* good idea to upgrade to 8.4.

It is a good idea to double check your controller write cache settings,
make sure it is "crash-safe" (has a healthy BBU, or some flash +
supercap or whatever your controller uses).

It may be a good idea to put DRBD meta data on RAID 1 instead.

And *then* we can look into tuning DRBD ;-)

> There are probably other problems with this configuration too. However, for
> now I would like to focus on getting the speed problem solved, so please
> don't get too offtopic. Thank you!
> 
> 
> Here is all information of the system:
> 
> ## Disk Througput
> 
>     root at stor02 ~ $ for i in $(seq 3); do time dd if=/dev/zero of=testfile
> bs=1G count=1 oflag=direct; done
>     1+0 records in
>     1+0 records out
>     1073741824 bytes (1,1 GB) copied, 1,32608 s, 810 MB/s
> 
>     real    0m1.391s
>     user    0m0.000s
>     sys 0m0.428s
>     1+0 records in
>     1+0 records out
>     1073741824 bytes (1,1 GB) copied, 1,60039 s, 671 MB/s
> 
>     real    0m1.678s
>     user    0m0.000s
>     sys 0m0.424s
>     1+0 records in
>     1+0 records out
>     1073741824 bytes (1,1 GB) copied, 1,24388 s, 863 MB/s
> 
>     real    0m1.334s
>     user    0m0.000s
>     sys 0m0.448s
> 
>     ---
> 
>     root at stor01 ~ $ for i in $(seq 3); do time dd if=/dev/zero of=testfile
> bs=1G count=1 oflag=direct; done
>     1+0 records in
>     1+0 records out
>     1073741824 bytes (1,1 GB) copied, 1,22048 s, 880 MB/s
> 
>     real    0m1.265s
>     user    0m0.000s
>     sys 0m0.312s
>     1+0 records in
>     1+0 records out
>     1073741824 bytes (1,1 GB) copied, 1,2497 s, 859 MB/s
> 
>     real    0m1.309s
>     user    0m0.000s
>     sys 0m0.328s
>     1+0 records in
>     1+0 records out
>     1073741824 bytes (1,1 GB) copied, 1,22641 s, 876 MB/s
> 
>     real    0m1.290s
>     user    0m0.000s
>     sys 0m0.328s
> 
>     ---
> 
> 
> 
> 
> 
> ## Disk Latency
> 
>     root at stor01 ~ $ for i in $(seq 3); do time dd if=/dev/zero of=testfile
> bs=512 count=1000 oflag=direct; done
>     1000+0 records in
>     1000+0 records out
>     512000 bytes (512 kB) copied, 0,555512 s, 922 kB/s
> 
>     real    0m0.557s
>     user    0m0.000s
>     sys 0m0.028s
>     1000+0 records in
>     1000+0 records out
>     512000 bytes (512 kB) copied, 0,463406 s, 1,1 MB/s
> 
>     real    0m0.465s
>     user    0m0.004s
>     sys 0m0.028s
>     1000+0 records in
>     1000+0 records out
>     512000 bytes (512 kB) copied, 0,621884 s, 823 kB/s
> 
>     real    0m0.623s
>     user    0m0.000s
>     sys 0m0.028s
> 
>     ---
> 
> 
>     t at stor02 ~ $ for i in $(seq 3); do time dd if=/dev/zero of=testfile
> bs=512 count=1000 oflag=direct; done
>     1000+0 records in
>     1000+0 records out
>     512000 bytes (512 kB) copied, 0,485988 s, 1,1 MB/s
> 
>     real    0m0.488s
>     user    0m0.000s
>     sys 0m0.036s
>     1000+0 records in
>     1000+0 records out
>     512000 bytes (512 kB) copied, 0,560012 s, 914 kB/s
> 
>     real    0m0.562s
>     user    0m0.000s
>     sys 0m0.032s
>     1000+0 records in
>     1000+0 records out
>     512000 bytes (512 kB) copied, 0,542077 s, 945 kB/s
> 
>     real    0m0.544s
>     user    0m0.000s
>     sys 0m0.032s
> 
>     ---
> 
> 
> 
> ## Network Throughput
> 
> Tests with iperf showed almost 10 Gbps.
> Both DRBD machines are sharing a dedicated 10 Gbps cable with MTU 9192.
> 
>         root at stor02 ~ $ ifconfig eth2
>     eth2      Link encap:Ethernet  HWaddr 90:e2:ba:48:2c:dc
>               inet addr:10.0.0.2  Bcast:10.0.0.3  Mask:255.255.255.252
>               inet6 addr: fe80::92e2:baff:fe48:2cdc/64 Scope:Link
>               UP BROADCAST RUNNING MULTICAST  MTU:9192  Metric:1
>               RX packets:1481638371 errors:0 dropped:0 overruns:0 frame:0
>               TX packets:988570639 errors:0 dropped:0 overruns:0 carrier:0
>               collisions:0 txqueuelen:1000
>               RX bytes:10338057837352 (9.4 TiB)  TX bytes:3222573497308
> (2.9 TiB)
> 
> 
> ## Network Latency
> 
>     root at stor02 ~ $ fping -l 10.0.0.1
>     10.0.0.1 : [0], 96 bytes, 0.12 ms (0.12 avg, 0% loss)
>     10.0.0.1 : [1], 96 bytes, 0.13 ms (0.12 avg, 0% loss)
>     10.0.0.1 : [2], 96 bytes, 0.12 ms (0.12 avg, 0% loss)
> 
> # DRBD Version and Status
> 
>     root at stor02 ~ $ cat /proc/drbd
>     version: 8.3.11 (api:88/proto:86-96)
>     srcversion: F937DCB2E5D83C6CCE4A6C9
>      0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
>         ns:17378172 nr:0 dw:177485633 dr:1946127117 al:3708575 bm:557 lo:0
> pe:0 ua:0 ap:0 ep:1 wo:f oos:0
> 
> 
> 
> # DRBD Config
> 
>     root at stor02 ~ $ drbdsetup /dev/drbd0 show
>     disk {
>         size                0s _is_default; # bytes
>         on-io-error         detach;
>         fencing             dont-care _is_default;
>         max-bio-bvecs       0 _is_default;
>     }
>     net {
>         timeout             60 _is_default; # 1/10 seconds
>         max-epoch-size      19997;
>         max-buffers         19997;
>         unplug-watermark    64;
>         connect-int         10 _is_default; # seconds
>         ping-int            10 _is_default; # seconds
>         sndbuf-size         524288; # bytes
>         rcvbuf-size         0 _is_default; # bytes
>         ko-count            0 _is_default;
>         cram-hmac-alg       "sha1";
>         shared-secret       "...";
>         after-sb-0pri       disconnect _is_default;
>         after-sb-1pri       disconnect _is_default;
>         after-sb-2pri       disconnect _is_default;
>         rr-conflict         disconnect _is_default;
>         ping-timeout        5 _is_default; # 1/10 seconds
>         on-congestion       block _is_default;
>         congestion-fill     0s _is_default; # byte
>         congestion-extents  127 _is_default;
>     }
>     syncer {
>         rate                2097152k; # bytes/second
>         after               -1 _is_default;
>         al-extents          3833;
>         on-no-data-accessible   io-error _is_default;
>         c-plan-ahead        0 _is_default; # 1/10 seconds
>         c-delay-target      10 _is_default; # 1/10 seconds
>         c-fill-target       0s _is_default; # bytes
>         c-max-rate          102400k _is_default; # bytes/second
>         c-min-rate          4096k _is_default; # bytes/second
>     }
>     protocol C;
>     _this_host {
>         device          minor 0;
>         disk            "/dev/vgRAPTOR/lvol0";
>         meta-disk       internal;
>         address         ipv4 10.0.0.2:7788;
>     }
>     _remote_host {
>         address         ipv4 10.0.0.1:7788;
>     }
> 
> 
> # Hardware Raid
> 
>     root at stor02 ~ $ arcconf getconfig 1 ld
>     Controllers found: 1
>     ----------------------------------------------------------------------
>     Logical device information
>     ----------------------------------------------------------------------
>     Logical device number 0
>        Logical device name                      : SYSTEM
>        RAID level                               : 6 Reed-Solomon
>        Status of logical device                 : Optimal
>        Size                                     : 51188 MB
>        Stripe-unit size                         : 256 KB
>        Read-cache setting                       : Enabled
>        Read-cache status                        : On
>        Write-cache setting                      : Enabled
>        Write-cache status                       : Off
>        Partitioned                              : Yes
>        Protected by Hot-Spare                   : No
>        Bootable                                 : Yes
>        Failed stripes                           : No
>        Power settings                           : Disabled
>        --------------------------------------------------------
>        Logical device segment information
>        --------------------------------------------------------
>        Segment 0                                : Present
> (Controller:1,Enclosure:0,Slot:0)      WD-WXH1...
>        Segment 1                                : Present
> (Controller:1,Enclosure:0,Slot:1)      WD-WXD1...
>        Segment 2                                : Present
> (Controller:1,Enclosure:0,Slot:2)      WD-WXD1...
>        Segment 3                                : Present
> (Controller:1,Enclosure:0,Slot:3)      WD-WXH1...
>        Segment 4                                : Present
> (Controller:1,Enclosure:0,Slot:4)      WD-WXJ1...
>        Segment 5                                : Present
> (Controller:1,Enclosure:0,Slot:5)      WD-WXD1...
>        Segment 6                                : Present
> (Controller:1,Enclosure:0,Slot:6)      WD-WXH1...
>        Segment 7                                : Present
> (Controller:1,Enclosure:0,Slot:7)      WD-WXH1...
> 
> 
>     Logical device number 1
> 
>        Logical device name                      : RAPTOR
> 
>        RAID level                               : 6 Reed-Solomon
> 
>        Status of logical device                 : Optimal
> 
>        Size                                     : 5668850 MB
> 
>        Stripe-unit size                         : 256 KB
> 
>        Read-cache setting                       : Enabled
> 
>        Read-cache status                        : On
> 
>        Write-cache setting                      : Enabled
> 
>        Write-cache status                       : Off    (Does this mean
> write cache is off?)
>        Partitioned                              : No
> 
>        Protected by Hot-Spare                   : No
> 
>        Bootable                                 : No
> 
>        Failed stripes                           : No
> 
>        Power settings                           : Disabled
> 
>        --------------------------------------------------------
> 
>        Logical device segment information
> 
>        --------------------------------------------------------
> 
>        Segment 0                                : Present
> (Controller:1,Enclosure:0,Slot:0)      WD-WXH1...
>        Segment 1                                : Present
> (Controller:1,Enclosure:0,Slot:1)      WD-WXD1...
>        Segment 2                                : Present
> (Controller:1,Enclosure:0,Slot:2)      WD-WXD1...
>        Segment 3                                : Present
> (Controller:1,Enclosure:0,Slot:3)      WD-WXH1...
>        Segment 4                                : Present
> (Controller:1,Enclosure:0,Slot:4)      WD-WXJ1...
>        Segment 5                                : Present
> (Controller:1,Enclosure:0,Slot:5)      WD-WXD1...
>        Segment 6                                : Present
> (Controller:1,Enclosure:0,Slot:6)      WD-WXH1...
>        Segment 7                                : Present
> (Controller:1,Enclosure:0,Slot:7)      WD-WXH1...
> 
> 
> # Results
> ## Throughput
>     root at stor02 /mnt/drbd_r0 $ for i in $(seq 3); do time dd if=/dev/zero
> of=testfile bs=1G count=1 oflag=direct; done
>     1+0 records in
>     1+0 records out
>     1073741824 bytes (1,1 GB) copied, 24,4773 s, 43,9 MB/s
> 
>     real    0m24.540s
>     user    0m0.000s
>     sys 0m0.492s
>     1+0 records in
>     1+0 records out
>     1073741824 bytes (1,1 GB) copied, 25,4277 s, 42,2 MB/s
> 
>     real    0m25.514s
>     user    0m0.000s
>     sys 0m0.504s
>     1+0 records in
>     1+0 records out
>     1073741824 bytes (1,1 GB) copied, 24,7216 s, 43,4 MB/s
> 
>     real    0m24.795s
>     user    0m0.000s
>     sys 0m0.508s
> 
> 
> ## Latency
>     root at stor02 /mnt/drbd_r0 $ for i in $(seq 3); do time dd if=/dev/zero
> of=testfile bs=512 count=1000 oflag=direct; done
>     1000+0 records in
>     1000+0 records out
>     512000 bytes (512 kB) copied, 1,13063 s, 453 kB/s
> 
>     real    0m1.133s
>     user    0m0.000s
>     sys 0m0.044s
>     1000+0 records in
>     1000+0 records out
>     512000 bytes (512 kB) copied, 1,18928 s, 431 kB/s
> 
>     real    0m1.191s
>     user    0m0.004s
>     sys 0m0.040s
>     1000+0 records in
>     1000+0 records out
>     512000 bytes (512 kB) copied, 0,763934 s, 670 kB/s
> 
>     real    0m0.766s
>     user    0m0.000s
>     sys 0m0.048s

> _______________________________________________
> drbd-user mailing list
> drbd-user at lists.linbit.com
> http://lists.linbit.com/mailman/listinfo/drbd-user


-- 
: Lars Ellenberg
: http://www.LINBIT.com | Your Way to High Availability
: DRBD, Linux-HA  and  Pacemaker support and consulting

DRBD® and LINBIT® are registered trademarks of LINBIT, Austria.
__
please don't Cc me, but send to list   --   I'm subscribed



More information about the drbd-user mailing list