[DRBD-user] drbd read performance

Gary Bowers gbowers at itrus.com
Wed Jul 29 22:22:12 CEST 2009

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


Ok, this is my first post to this list, so please be easy on me.  I  
have setup two openfiler nodes each with a 4 drive software sata RAID0  
array that mirrors from one node to the other.  There are only the 4  
drives in each host, so we partitioned off a RAID10 slice for the  
boot, then we created a RAID0 slice for the DRBD data.  We then use  
that volume to create iSCSI and NFS shares to serve up to other hosts.

I have been trying to track down why my performance seems to be so  
bad.  I then ran across the following test, and it leaves me  
scratching my head.

On the primary server, I run a dd against the drbd1 device to just  
read it in.

dd if=/dev/drbd1 of=/dev/null bs=1M&

I then run iostat -k 2 to check the performance.  i see long periods  
2-10 secons on NO activity, then brief periods of 25-30 MB/s.  I tried  
disabling the remote node, and this does not improve performance.

If I run the same command for the underlying md2 raid disk, I get a  
consistent 200-240 MB/s.  I expected there to be a write penalty, but  
I am scratching my head on the read penalty.  By the time that we get  
the iSCSI out to the clients, I am getting maybe 30MB/s, and averaging  
about 15MB/s.

Here is my drbd.conf

global {
     # minor-count 64;
     # dialog-refresh 5; # 5 seconds
     # disable-ip-verification;
     usage-count ask;
}

common {
   syncer { rate 100M;
            al-extents 257;
   }

   net {
         unplug-watermark 128;
   }
}

resource meta {

   protocol C;

   handlers {
     pri-on-incon-degr "echo O > /proc/sysrq-trigger ; halt -f";
     pri-lost-after-sb "echo O > /proc/sysrq-trigger ; halt -f";
     local-io-error "echo O > /proc/sysrq-trigger ; halt -f";
     outdate-peer "/usr/lib64/heartbeat/drbd-peer-outdater";
   }

  startup {
     # wfc-timeout  0;
     degr-wfc-timeout 120;    # 2 minutes.
   }

   disk {
     on-io-error   detach;
     fencing resource-only;
   }

   net {
     after-sb-0pri disconnect;
     after-sb-1pri disconnect;
     after-sb-2pri disconnect;
     rr-conflict disconnect;
   }

   syncer {
#    rate 10M;
#    after "r2";
     al-extents 257;
   }

     device     /dev/drbd0;
     disk       /dev/rootvg/meta;
     meta-disk internal;

   on stg1 {
     address    1.2.5.80:7788;
  }

    on stg2 {
     address   1.2.5.81:7788;
   }
}

resource NAS {

   protocol C;

   handlers {
     pri-on-incon-degr "echo O > /proc/sysrq-trigger ; halt -f";
     pri-lost-after-sb "echo O > /proc/sysrq-trigger ; halt -f";
     local-io-error "echo O > /proc/sysrq-trigger ; halt -f";
     outdate-peer "/usr/lib64/heartbeat/drbd-peer-outdater";
   }

   startup {
     wfc-timeout         0;  ## Infinite!
     degr-wfc-timeout  120;  ## 2 minutes.
   }

   disk {
     on-io-error detach;
     fencing resource-only;
   }

   net {
     # timeout           60;
     # connect-int       10;
     # ping-int          10;
     # max-buffers     2048;
     # max-epoch-size  2048;
   }

   syncer {
   after "meta";
   }

     device     /dev/drbd1;
     disk       /dev/md2;
     meta-disk internal;

   on stg1 {
   address    1.2.5.80:7789;
   }

   on stg2 {
   address   1.2.5.81:7789;
   }
}



Any direction would be appreciated.

Gary



More information about the drbd-user mailing list