[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-xfs
Subject: Re: nfs/local performance with software raid5 and xfs and SMP
From: Andrew Morton <andrewm () uow ! edu ! au>
Date: 2001-07-19 6:58:04
[Download RAW message or body]
Simon Matter wrote:
>
> ...
> Could you try RAID5/XFS with the onboard IDE controller and SMP Kernel?
> This way we could find out whether it's the 3ware / SMP / RAID5
> combination that makes the problem. I'm running several servers here
> with RAID5 on IDE and SCSI with good results but all of them are
> single CPU systems.
Some fairly significant RAID5 and RAID1 bugs were fixed in 2.4.7-pre5
or thereabouts. One of them could cause largish IO stalls.
>
> 3c905C NIC? I was having performance problems with them while the
> 3c905B were doing very fine.
905C should be in good shape nowadays. There were some problems
with the 3c905CX, but they were farily obvious - it didn't receive
anything.
Dr Huynh should run a few network tests - look at the output of
`ifconfig' for errors, ping the server from another host while
the NFS load is applied, etc.
But I would mainly be suspecting the RAID5 timing problems.
This is the magical chunk:
Index: drivers/md/raid5.c
===================================================================
RCS file: /opt/cvs/lk/drivers/md/raid5.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -u -r1.17 -r1.18
--- drivers/md/raid5.c 2001/06/21 17:50:29 1.17
+++ drivers/md/raid5.c 2001/07/10 12:34:44 1.18
@@ -66,10 +66,11 @@
BUG();
if (atomic_read(&conf->active_stripes)==0)
BUG();
- if (test_bit(STRIPE_DELAYED, &sh->state))
- list_add_tail(&sh->lru, &conf->delayed_list);
- else if (test_bit(STRIPE_HANDLE, &sh->state)) {
- list_add_tail(&sh->lru, &conf->handle_list);
+ if (test_bit(STRIPE_HANDLE, &sh->state)) {
+ if (test_bit(STRIPE_DELAYED, &sh->state))
+ list_add_tail(&sh->lru, &conf->delayed_list);
+ else
+ list_add_tail(&sh->lru, &conf->handle_list);
md_wakeup_thread(conf->thread);
} else {
if (test_and_clear_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) {
@@ -1167,10 +1168,9 @@
raid5_activate_delayed(conf);
- if (conf->plugged) {
- conf->plugged = 0;
- md_wakeup_thread(conf->thread);
- }
+ conf->plugged = 0;
+ md_wakeup_thread(conf->thread);
+
spin_unlock_irqrestore(&conf->device_lock, flags);
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic