Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Oct 1995 20:57:09 +0100
From:      se@zpr.uni-koeln.de (Stefan Esser)
To:        Chuck Robey <chuckr@eng.umd.edu>
Cc:        hackers@freebsd.org
Subject:   Re: VLB Disk Controllers
Message-ID:  <199510091957.AA03237@Sysiphos>
In-Reply-To: Chuck Robey <chuckr@eng.umd.edu> "Re: VLB Disk Controllers" (Oct  7, 22:33)

next in thread | previous in thread | raw e-mail | index | archive | help
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	  <se@ZPR.Uni-Koeln.DE>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199510091957.AA03237>