[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