From owner-freebsd-hackers Mon Oct 9 12:57:57 1995 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id MAA20490 for hackers-outgoing; Mon, 9 Oct 1995 12:57:57 -0700 Received: from Sysiphos (Sysiphos.MI.Uni-Koeln.DE [134.95.212.10]) by freefall.freebsd.org (8.6.12/8.6.6) with SMTP id MAA20485 for ; Mon, 9 Oct 1995 12:57:41 -0700 Received: by Sysiphos id AA03237 (5.67b/IDA-1.5 for hackers@freebsd.org); Mon, 9 Oct 1995 20:57:10 +0100 Message-Id: <199510091957.AA03237@Sysiphos> From: se@zpr.uni-koeln.de (Stefan Esser) Date: Mon, 9 Oct 1995 20:57:09 +0100 In-Reply-To: Chuck Robey "Re: VLB Disk Controllers" (Oct 7, 22:33) X-Mailer: Mail User's Shell (7.2.6 alpha(2) 7/9/95) To: Chuck Robey Subject: Re: VLB Disk Controllers Cc: hackers@freebsd.org Sender: owner-hackers@freebsd.org Precedence: bulk On Oct 7, 22:33, Chuck Robey wrote: } Subject: Re: VLB Disk Controllers } On Sun, 8 Oct 1995, Stefan Esser wrote: } } > Something I just noticed is the big difference } > in results I get using /dev/rsd0 vs. /dev/rsd0a: } > } > # disklatency /dev/rsd0 } > Command overhead is 719 usec (time_4096 = 1198, time_8192 = 1677) } > transfer speed is 8.55617e+06 bytes/sec } > } > # disklatency /dev/rsd0a } > Command overhead is 807 usec (time_4096 = 1272, time_8192 = 1738) } > transfer speed is 8.80588e+06 bytes/sec } } I just did that 10 times in a row with my 2842, and reading differing } over a 2:1 range. I think there's some windage here that makes your } comparison suspect. Try it a few tries in a row on the same drive. # disklatency /dev/rsd0 Command overhead is 757 usec (time_4096 = 1223, time_8192 = 1688) transfer speed is 8.80391e+06 bytes/sec # disklatency /dev/rsd0 Command overhead is 758 usec (time_4096 = 1223, time_8192 = 1689) transfer speed is 8.79818e+06 bytes/sec # disklatency /dev/rsd0 Command overhead is 758 usec (time_4096 = 1222, time_8192 = 1686) transfer speed is 8.83185e+06 bytes/sec # disklatency /dev/rsd0 Command overhead is 759 usec (time_4096 = 1224, time_8192 = 1688) transfer speed is 8.81746e+06 bytes/sec # disklatency /dev/rsd0 Command overhead is 758 usec (time_4096 = 1224, time_8192 = 1690) transfer speed is 8.79682e+06 bytes/sec # disklatency /dev/rsd0a Command overhead is 833 usec (time_4096 = 1298, time_8192 = 1764) transfer speed is 8.79561e+06 bytes/sec # disklatency /dev/rsd0a Command overhead is 840 usec (time_4096 = 1302, time_8192 = 1764) transfer speed is 8.85943e+06 bytes/sec # disklatency /dev/rsd0a Command overhead is 833 usec (time_4096 = 1298, time_8192 = 1764) transfer speed is 8.80506e+06 bytes/sec # disklatency /dev/rsd0a Command overhead is 836 usec (time_4096 = 1301, time_8192 = 1766) transfer speed is 8.80913e+06 bytes/sec # disklatency /dev/rsd0a Command overhead is 794 usec (time_4096 = 1302, time_8192 = 1810) transfer speed is 8.05907e+06 bytes/sec bash# disklatency /dev/rsd0s2 Command overhead is 837 usec (time_4096 = 1302, time_8192 = 1767) transfer speed is 8.81082e+06 bytes/sec bash# disklatency /dev/rsd0s2 Command overhead is 822 usec (time_4096 = 1347, time_8192 = 1871) transfer speed is 7.8162e+06 bytes/sec bash# disklatency /dev/rsd0s2 Command overhead is 832 usec (time_4096 = 1295, time_8192 = 1759) transfer speed is 8.83431e+06 bytes/sec bash# disklatency /dev/rsd0s2 Command overhead is 829 usec (time_4096 = 1296, time_8192 = 1762) transfer speed is 8.78881e+06 bytes/sec bash# disklatency /dev/rsd0s2 Command overhead is 833 usec (time_4096 = 1297, time_8192 = 1761) transfer speed is 8.83115e+06 bytes/sec bash# disklatency /dev/rsd0s2a Command overhead is 830 usec (time_4096 = 1296, time_8192 = 1762) transfer speed is 8.7887e+06 bytes/sec bash# disklatency /dev/rsd0s2a Command overhead is 838 usec (time_4096 = 1305, time_8192 = 1772) transfer speed is 8.77165e+06 bytes/sec bash# disklatency /dev/rsd0s2a Command overhead is 836 usec (time_4096 = 1299, time_8192 = 1763) transfer speed is 8.82983e+06 bytes/sec bash# disklatency /dev/rsd0s2a Command overhead is 840 usec (time_4096 = 1306, time_8192 = 1772) transfer speed is 8.79004e+06 bytes/sec bash# disklatency /dev/rsd0s2a Command overhead is 836 usec (time_4096 = 1301, time_8192 = 1766) transfer speed is 8.81387e+06 bytes/sec Seems quite consistent over any number of tests ... /dev/rsd0 gives some 758us (thought it was 730 ??) And all other devices take some 80us longer, probably because of the slice code. Now just for fun a result of a Sparc10/41 using its built in SCSI host adapter and the standard SUN0424 system disk (well, this is Solaris 2.4, but SunOS gives nearly identical results): root@ParC04> ./a.out /dev/rdsk/c0t2d0s0 Command overhead is 13778 usec (time_4096 = 13943, time_8192 = 14108) transfer speed is 2.47918e+07 bytes/sec root@ParC04> ./a.out /dev/rdsk/c0t2d0s0 Command overhead is 13736 usec (time_4096 = 13915, time_8192 = 14094) transfer speed is 2.28589e+07 bytes/sec And using an IBM0663E15, just to show that it's not the drives fault: root@ParC04> ./a.out /dev/rdsk/c0t3d0s3 Command overhead is 13502 usec (time_4096 = 13608, time_8192 = 13715) transfer speed is 3.8454e+07 bytes/sec root@ParC04> ./a.out /dev/rdsk/c0t3d0s3 Command overhead is 13516 usec (time_4096 = 13622, time_8192 = 13727) transfer speed is 3.88213e+07 bytes/sec Well, this looks like the Sparc disables the drives' caches ??? Ok, then I'll try another way: root@ParC04> time dd if=/dev/rdsk/c0t3d0s3 of=/dev/null bs=512 count=10000 10000+0 records in 10000+0 records out real 17.2 17.2 17.1 user 0.2 0.2 0.2 sys 3.6 3.8 3.6 That's 1717 microseconds per transfer. root@ParC04> time dd if=/dev/rdsk/c0t3d0s3 of=/dev/null bs=1024 count=10000 10000+0 records in 10000+0 records out real 18.6 18.6 18.8 user 0.3 0.4 0.2 sys 4.2 4.2 3.4 Or 1867 us on average ... That's 150 us per 512 byte transfer, giving an estimate of 1567 us command overhead and 3.3MB/s transfer rate ... Now just for fun an estimate of the kernel overhead (all on my lowly 486DX/2-66 :) bash# disklatency /dev/sd0 Command overhead is 59 usec (time_4096 = 238, time_8192 = 418) transfer speed is 2.27883e+07 bytes/sec bash# disklatency /dev/sd0 Command overhead is 59 usec (time_4096 = 236, time_8192 = 413) transfer speed is 2.31233e+07 bytes/sec bash# disklatency /dev/sd0 Command overhead is 58 usec (time_4096 = 235, time_8192 = 413) transfer speed is 2.30822e+07 bytes/sec bash# disklatency /dev/zero Command overhead is 168 usec (time_4096 = 268, time_8192 = 367) transfer speed is 4.10903e+07 bytes/sec bash# disklatency /dev/zero Command overhead is 156 usec (time_4096 = 268, time_8192 = 380) transfer speed is 3.67239e+07 bytes/sec bash# disklatency /dev/zero Command overhead is 171 usec (time_4096 = 271, time_8192 = 370) transfer speed is 4.11356e+07 bytes/sec Hmmm, /dev/zero seems to have a larger statup time, but runs faster there after :) Interesting ... Would have expected /dev/zero to be faster in any way ! (BTW: Reading /dev/zero on the Sparc10 has only 54 us overhead. Seems they are good for something after all :-) STefan -- Stefan Esser, Zentrum fuer Paralleles Rechnen Tel: +49 221 4706021 Universitaet zu Koeln, Weyertal 80, 50931 Koeln FAX: +49 221 4705160 ============================================================================== http://www.zpr.uni-koeln.de/staff/esser/esser.html