[DRBD-user] DRBD small sync write performance issue

wang xuchen ben.wxc at gmail.com
Mon Sep 27 18:02:56 CEST 2010

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


Hi all:

The following code snippet is sited from drbd_work.c

function drbd_work

int drbd_worker(struct drbd_thread *thi)
{
.....

                if (down_trylock(&mdev->data.work.s))
                {


                        mutex_lock(&mdev->data.mutex);
                        if (mdev->data.socket && !mdev->net_conf->no_cork)
                                drbd_tcp_uncork(mdev->data.socket);
                        mutex_unlock(&mdev->data.mutex);

                        intr = down_interruptible(&mdev->data.work.s);

                        mutex_lock(&mdev->data.mutex);
                        if (mdev->data.socket  && !mdev->net_conf->no_cork)
                                drbd_tcp_cork(mdev->data.socket);
                        mutex_unlock(&mdev->data.mutex);
                   }
                   ...............

}

I did a little performance test which shows down_interruptible spend 0.1
million second each run on average. I am using primary/secondary
configuration with replication over 10G Ethernet dedication connection.

The test result was yielded by running dd if=/dev/zero of=/dev/drbd1
bs=4kcount=100000 oflag=direct. Here is the result:
409600000 bytes (410 MB) copied, 25.9126 seconds, 15.8 MB/s. It says that
DRBD is capable of processing roughly 5000 IO per second. I believe this
result has everything to do with down_interruptible that mentions above.
Interesting thing is, I don`t see anywhere semephore mdev->data.work.s
get incremented.

can somebody give me a hint?

Thanks
Ben


Commit yourself to constant self-improvement
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linbit.com/pipermail/drbd-user/attachments/20100927/45cfff3e/attachment.htm>


More information about the drbd-user mailing list