SunSolve Internal

Infodoc ID   Synopsis   Date
16359   How Do You Change I/O Size Per Request to Increase Disk Throughput?   16 Dec 1998

Description Top

Customers who purchase SCSI disks with a rated 20MB/sec throughput often times
may find that they are getting about 8MB or less. One reason may be that they
are employing very low I/O size per each request of the system to the disk.

Remember that SCSI is a protocol that has quite a high overhead-- a typical
I/O requires 8 state changes on the SCSI bus. For small I/O sizes, SCSI
overhead approaches 60%. Thus a system that accesses a disk sequentially
at a rate of 2KB per request levels off at around 8MB/s as its throughput.
When you increase the size per request to 64KB, the throughput of sequential
access jumps to 18MB!

Okay, how do we increase the size per request?

This depends on your application.

If you are running a database, such as Oracle, you increase 
the DB_BLOCK_SIZE parameter value and lay out your database
after setting this parameter.  This is the size of the I/O
request to/from the disk, with each I/O request by Oracle.
Multiblock read is another Oracle-specific parameter that
can be modified.

If you are using flat files on a Unix filesystem, you can
change the newfs parameter (-C) that changes the value of
maxcontig.  The default for the filesystem is 7, meaning
that the filesystem moves 7 x 8KB = 56KB whenever it can
for every I/O request.

If you are dealing with a home-grown application, then you
can obviously change the amount of data that is written with
your read(2) system call and your write(2) system call, and
how you architect the application (asynch vs synch I/O, etc.)
Product Area Kernel
Product Performance
OS Solaris 2.x
Hardware any

Top

SunWeb Home SunWeb Search SunSolve Home Simple Search

Sun Proprietary/Confidential: Internal Use Only
Feedback to SunSolve Team