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

(wdc_obio.c) ata-4 improves 40% in transfer



>                                                      藤原  誠
> 
>更に話が関係ない方に飛びますが、2001/06/18 頃の kernel だと、
>iBook に入替えている 20G のものが全く動かない気がしています。

同じ kernel (20010618) を G4/AGP 350MHz + WDC WD102AA に入
れたら、iBook と違って、問題がなかったのですが、

At Fri, 29 Jun 2001 01:21:27 +0900,
Tsubai Masanari wrote:
> *** wdc_obio.c~	Sat Jun 16 02:02:41 2001
> --- wdc_obio.c	Fri Jun 29 01:13:26 2001

  何か予感がしたので :-)  patch を当てる前と、当てた後の比較を
  して見ました。

(まとめ)
・dmesg で次の字が見える
  wd0(wdc0:0:0): using .. Ultra-DMA mode 4 (Ultra/66) (using DMA data transfers)
・(簡易)読出速度が 40% 改善される 12.5M/s -> 17.6M/s
・kernel を make する時間には変化がない 
  (CPU が 100% 近かったら当然でしょうか ? 
   表示は 100% を越えていますが)
・wd0(master) の他に wd1(slave) が付いていると動かない

比較の詳細です。
○ dmesg
【前】
wdc0 at obio0 offset 0x1f000 irq 19: DMA transfer
wd0 at wdc0 channel 0 drive 0: <WDC WD102AA>
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 9787 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 20044080 sectors
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 4 (Ultra/66)
wd0(wdc0:0:0): using PIO mode 4, DMA mode 2 (using DMA data transfers)

【後】
wdc0 at obio0 offset 0x1f000 (ata-4) irq 19: DMA transfer
wd0 at wdc0 channel 0 drive 0: <WDC WD102AA>
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 9787 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 20044080 sectors
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 4 (Ultra/66)
wd0(wdc0:0:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 4 (Ultra/66) (using DMA data transfers)

○簡易読出速度
【前】
# dd if=/dev/rwd0a of=/dev/null bs=64k
2048+0 records in
2048+0 records out
134217728 bytes transferred in 10.718 secs (12522646 bytes/sec)

【後】
# dd if=/dev/rwd0a of=/dev/null bs=64k
2048+0 records in
2048+0 records out
134217728 bytes transferred in 7.635 secs (17579270 bytes/sec)

○ kernel を作って見る (make depend;time make)
【前】
compile/GENERIC-insecure-wdc_obio-0
524.262u 95.907s 10:03.41 102.7%        0+0k 29+3341io 145pf+0w

【後】
compile/GENERIC-insecure-wdc_obio-0
528.889u 96.774s 10:08.25 102.8%        0+0k 9+3327io 98pf+0w

○ ところで wd1 として MDMA が付いている時に、つまり次のような時に、
   wdc:0:0:0  WDC1022AA
   wdc:0:0:1  ST31276
wd1 at wdc0 channel 0 drive 1: <Seagate Technology 1275MB - ST31276A>
wd1: drive supports 16-sector PIO transfers, LBA addressing
wd1: 1221 MB, 2482 cyl, 16 head, 63 sec, 512 bytes/sect x 2502308 sectors
wd1: drive supports PIO mode 4, DMA mode 2

【前】
# dd if=/dev/rwd1a of=/dev/null bs=64k
519+1 records in
519+1 records out
34062336 bytes transferred in 6.741 secs (5053009 bytes/sec)
# 

○ 次のように止ってしまいます。
...
/dev/rwd0a: file system is clean; not checking
/dev/rwd0g: file system is clean; not checking
wdc0:0:1: lost interrupt
        type ata tc_bcount: 512 tc_skip: 0
panic: lockmgr: no context
Stopped at    0x2e2bf0:   lwz   r0,r1, 0x14,
db>
(入力出来ず) ... 二回試しました...

それで、
上の方に書いてある測定等は、wd1 を外した kernel を使っています。
disk を物理的(電気的)に外すのは (jumper switch の設定とかあるので)
面倒に思ってそうしました。
---
http://www.ki.nu/software/NetBSD/iBook2/
(藤原)