RAID1 oddity on 2.4.17+

From: Francois Romieu (romieu@cogenit.fr)
Date: Mon Jan 07 2002 - 18:39:53 EST


Greetings,

hda: IC35L060AVER07-0, ATA DISK drive
hdc: IC35L060AVER07-0, ATA DISK drive
hde: IC35L060AVER07-0, ATA DISK drive
hdg: IC35L060AVER07-0, ATA DISK drive

$ lspci
00:00.0 Host bridge: Intel Corporation 82845 845 (Brookdale) Chipset Host Bridge
(rev 03)
00:01.0 PCI bridge: Intel Corporation 82845 845 (Brookdale) Chipset AGP Bridge
(rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801BAM PCI (rev 12)
00:1f.0 ISA bridge: Intel Corporation 82801BA ISA Bridge (ICH2) (rev 12)
00:1f.1 IDE interface: Intel Corporation 82801BA IDE U100 (rev 12)
01:00.0 VGA compatible controller: ATI Technologies Inc Rage 128 PF
02:06.0 Ethernet controller: Standard Microsystems Corp [SMC] 83C170QF (rev 09)
02:07.0 Ethernet controller: Winbond Electronics Corp W89C940
02:0a.0 Ethernet controller: 3Com Corporation 3c905C-TX [Fast Etherlink] (rev
78)
02:0d.0 Multimedia audio controller: C-Media Electronics Inc CM8738 (rev 10)
02:0e.0 Unknown mass storage controller: Promise Technology, Inc. 20265 (rev 02)

$ cat /proc/interrupts
           CPU0
  0: 89814 XT-PIC timer
  1: 4 XT-PIC keyboard
  2: 0 XT-PIC cascade
  5: 190 XT-PIC eth2
  7: 1884 XT-PIC eth0
  8: 1 XT-PIC rtc
  9: 20487 XT-PIC ide2, ide3
 10: 3851 XT-PIC eth1
 12: 20 XT-PIC PS/2 Mouse
 14: 21445 XT-PIC ide0
 15: 22279 XT-PIC ide1
NMI: 0
LOC: 89777
ERR: 0
MIS: 0

$ cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hdc1[0] hda1[1]
      1052160 blocks [2/2] [UU]
      
md1 : active raid1 hdc2[0] hda2[1]
      2104448 blocks [2/2] [UU]
      
md2 : active raid1 hdc3[1] hda3[0]
      56894080 blocks [2/2] [UU]
      
md3 : active raid1 hdg3[1] hde3[0]
      56894080 blocks [2/2] [UU]
      
unused devices: <none>

$ dmesg | less
Linux version 2.4.17 (root@se4.intra.cogenit.fr) (gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #
6 Sun Jan 6 17:03:37 CET 2002

$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 1
model name : Intel(R) Pentium(R) 4 CPU 1.50GHz
stepping : 2
cpu MHz : 1513.513
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
bogomips : 3021.20

# partition table of /dev/hde
unit: sectors

/dev/hde1 : start= 63, size= 2104452, Id=fd, bootable
/dev/hde2 : start= 2104515, size= 4209030, Id=fd
/dev/hde3 : start= 6313545, size=113788395, Id=fd
/dev/hde4 : start= 0, size= 0, Id= 0

Ditto for hda, hdc, hdg.

CD-ROM present as hdb.

Output of this script (2.4.17) as first attachment
#!/bin/sh

for i in hdc hdg; do
        hdparm -i /dev/$i
        hdparm -t /dev/$i
        sleep 1
done

for i in hdc3 hdg3; do
        time mke2fs -j -O sparse_super -T largefile -m 0 -R stride=8 -v /dev/$i
        sleep 1
done

sync

for i in hdc3 hdg3; do
        mkdir /mnt/$i
        mount /dev/$i /mnt/$i
        date;
        time dd if=/dev/zero of=/mnt/$i/foo bs=1024k count=1000
        time sync
        sleep 1
done

So far, so good.

Turn hdc into hda, hdg into hde, see second attachment.

So far, so good.

Same output available on request for test-2.4.18-pre1-andrew-last-low-latency.

I issue a reboot.

Now I build RAID1 arrays as:

raiddev /dev/md2
raid-level 1
nr-raid-disks 2
chunk-size 128k
persistent-superblock 1
nr-spare-disks 0
        device /dev/hda3
        raid-disk 0
        device /dev/hdc3
        raid-disk 1

raiddev /dev/md3
raid-level 1
nr-raid-disks 2
chunk-size 128k
persistent-superblock 1
nr-spare-disks 0
        device /dev/hde3
        raid-disk 0
        device /dev/hdg3
        raid-disk 1

Please, see third attached file. Everything is fast.

/etc/fstab:
LABEL=/ / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/md0 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0

Now I run this script:
#!/bin/sh

for i in md2 md3; do
        time mke2fs -j -O sparse_super -T largefile -m 0 -R stride=8 -v /dev/$i
        sleep 1
done

sync

for i in md3 md2; do
        mkdir /mnt/$i
        mount /dev/$i /mnt/$i
        date;
        time dd if=/dev/zero of=/mnt/$i/foo bs=1024k count=1000
        time sync
        sleep 1
done

Please, see fourth attached file for output.

Question: where does the slowdown for operations on /dev/md3 come from ?

-- 
Ueimor







- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jan 07 2002 - 21:00:37 EST