On Thu, 17 Dec 1998, GOTO Masanori wrote:
> I make an experiment of the simple buffering system on HDDs(cheetah)
> controling with linux generic SCSI interface.
> But, the SCSI command which is such a 'READ6' for /dev/sgX with the generic
> interface is slower than the standard C function 'read()' for /dev/sdX.
>
> Measuring difference between 'READ6' and 'read()' is below.
> This test reads 200MByte to /dev/sda sequencially from the head of HDD.
> The machine using this test is PPro with 128MByte DRAM.
>
> Number of Data: 32k x 6400, 8k x 25600, 4k x 51200
> READ6 : 41 sec, 154 sec, 308 sec
> read() : 14 sec, 14 sec, 14 sec
The read_block() interface prefetches up to 120 sectors = 60KB at a time
by default for sd devices and stores the prefetched data into the buffer
cache. So, using read() resulted in the same actual physical IO pattern
for your 3 different logical IO patterns.
Despite the fact that the read_block() interface read-ahead is not
asynchronous (no anticipated read IO that makes the C code execution
latency overlap the IO latency), the Cheatah probably has been able
to sustaint the read since it has a large cache and performs large
prefetching.
You got about 14 MB/s. BTW, the Cheatah2 is able to sustain about 18 MB/s.
With your READ6() tests, the physical IO pattern has been exactly what you
expected it to be. This explain part of the worse results you got, but not
all, in my opinion, since a Cheetah drive should be able to tranfer data
at up to its maximum sustaint data rate when using 8 KB actual IO chunks.
Regards,
Gerard.
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]