[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Linux-cluster] GFS + CORAID Performance Problem

bigendian+gfs gmail com wrote:

Thanks Wendy! I don't know if my second post made it since I sent it from the wrong alias, but here's a little more information I've gathered:

Great job ! Glad to have such an educated user who even supplied sysrq-t without being asked ... Look like (vm) flushing is part of the culprit. Note that since you have such huge amont of memory, the vm is slow to reclaim the pages (it thinks you have enough free pages). Then all of a sudden, when it decides to flush, it immediately creates a "burst mode" that creates this latency issue. One way to get around this is to ask the flush daemon to flush more (and more often) by setting the vm dirty ratio to a lower value. The trick is to try to flush the dirty pages in a more uniform manner, instead of getting itself into burst mode. I'm not sure which kernel you're running. For RHEL4 (and 2.6 based comunity version of kernels), there are few tunables in /proc/sys/vm directory you can play around with. Two most useful ones are:

shell> echo 50 > /proc/sys/vm/dirty_background_ratio
shell> echo 80 > /proc/sys/vm/dirty_ratio

The 80, 50 are two numbers that I make-up to show you the usage. You have to play around with them (but make sure to remember its original-default value). Now, no need to set mem=<smaller value> in your kernel parameter. I was just too lazy to explain (and/or write instructions about sysra-t) in previous mail about this.

If you cannot get improvements by this tuning, your next homework is to give us oprofile output ...:) ...

-- Wendy

* The I/O blocking bahavior seems to be isolated to a single node in my two node cluster. The other node shows no symptoms even when running bonnie++ at the same time in a different directory. * Shutting down the cluster on the "good" machine doesn't improve things on the other. * Shutting down the cluster on the "bad" machine doesn't hurt performance on the other. * It appears that only read system calls are blocking during the "Rewriting" portion of the bonnie++ suite. * Stopping bonnie++ on the node with blocking issues results in 15+ seconds of high I/O activity where pdflush and gfs_logd (and gfs_inoded IIRC) are quite busy. * The read delay is sometimes as long as 10 seconds when it happens, which seems to be every few seconds.
* Rebooting for good measure didn't make a difference.

I don't know if this is helpful, but here's some data I captured from a "echo t > /proc/sysrq-trigger":

Dec 10 17:31:25 gfs03 kernel: pdflush D ffffffff8014b24f 0 122 18 123 86 (L-TLB) Dec 10 17:31:25 gfs03 kernel: 0000010629ebbc78 0000000000000046 0000010629fe69c0 0000010227bc3f00 Dec 10 17:31:25 gfs03 kernel: 0000000000000216 ffffffffa00e798a 0000010829d660c0 0000000200000008
Dec 10 17:31:25 gfs03 kernel:        0000010629e7b7f0 000000000000120d
Dec 10 17:31:25 gfs03 kernel: Call Trace:<ffffffffa00e798a>{:dm_mod:dm_request+396} <ffffffffa0229db8>{:gfs:diaper_make_request+162} Dec 10 17:31:25 gfs03 kernel: <ffffffff8014b24f>{keventd_create_kthread+0} <ffffffff8030a11f>{io_schedule+38} Dec 10 17:31:25 gfs03 kernel: <ffffffffa00e79c5>{:dm_mod:dm_unplug_all+0} <ffffffff80179d24>{__wait_on_buffer+125} Dec 10 17:31:25 gfs03 kernel: <ffffffff80179baa>{bh_wake_function+0} <ffffffff80179baa>{bh_wake_function+0} Dec 10 17:31:25 gfs03 kernel: <ffffffffa022bc67>{:gfs:gfs_logbh_wait+49} <ffffffffa024099a>{:gfs:disk_commit+794} Dec 10 17:31:25 gfs03 kernel: <ffffffffa0240b6b>{:gfs:log_refund+111} <ffffffffa0241082>{:gfs:log_flush_internal+510} Dec 10 17:31:25 gfs03 kernel: <ffffffff8017e756>{sync_supers+167} <ffffffff8015f20a>{wb_kupdate+36} Dec 10 17:31:25 gfs03 kernel: <ffffffff8015fcb0>{pdflush+323} <ffffffff8015f1e6>{wb_kupdate+0} Dec 10 17:31:25 gfs03 kernel: <ffffffff8015fb6d>{pdflush+0} <ffffffff8014b226>{kthread+199} Dec 10 17:31:25 gfs03 kernel: <ffffffff80110f47>{child_rip+8} <ffffffff8014b24f>{keventd_create_kthread+0} Dec 10 17:31:25 gfs03 kernel: <ffffffff8014b15f>{kthread+0} <ffffffff80110f3f>{child_rip+0}

I'll try again with 4GB memory to see if that changes anything. I'm mostly puzzled by how this is happening only on one node.

Thanks again for the help! Tom

On 12/10/06, *Wendy Cheng* <wcheng redhat com <mailto:wcheng redhat com>> wrote:

    Wendy Cheng wrote:

    > Wendy Cheng wrote:
    >> bigendian+gfs gmail com <mailto:bigendian+gfs gmail com> wrote:
    >>> I've just set up a new two-node GFS cluster on a CORAID sr1520
    >>> ATA-over-Ethernet.  My nodes are each quad dual-core Opteron CPU
    >>> systems with 32GB RAM each.  The CORAID unit exports a 1.6TB block
    >>> device that I have a GFS file system on.
    >>> I seem to be having performance issues where certain read system
    >>> calls take up to three seconds to complete.  My test app is
    >>> bonnie++, and the slow-downs appear to be happen in the
    >>> portion of the test, though I'm not sure if this is
    exclusive.  If I
    >>> watch top and iostat for the device in question, I see
    activity on
    >>> the device, then long (up to three second) periods of no apparent
    >>> I/O.  During the periods of no I/O the bonnie++ process is blocked
    >>> on disk I/O, so it seems that the system it trying to do
    >>> Network traces seem to show that the host machine is not
    waiting on
    >>> the RAID array, and the packet following the dead-period seems to
    >>> always be sent from the host to the coraid
    device.  Unfortunately, I
    >>> don't know how to dig in any deeper to figure out what the
    problem is.
    > Wait ... sorry, I didn't read carefully... now I see that 3
    seconds in
    > the strace. That doesn't look like a bonnie++ issue.... Does
    > run on single node ? Or you dispatch them on both nodes (on
    > directories) ? This is more complicated than that I originally
    > expected (since this is a network block device ?). Need to think
    > to catch the culprit... could be memory issue though. Could you
    try to
    > run bonnie++ on 4G of memory to see how whether you can see
    there are
    > 3 seconds read delay ?
    Hit send key too soon ... my words are cluttered. Note that reducing
    memory from 32G to 4G may sound funny but there are VM issues behind
    this. So it is a quick and dirty experiment.

    -- Wendy

    Linux-cluster mailing list
    Linux-cluster redhat com <mailto:Linux-cluster redhat com>

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]