ATTO ExpressPCI
Maximizing Performance
---------- -----------
Congratulations on your selection of the ATTO ExpressPCI SCSI Host Bus
Adapter! This document will explain how to be sure to get the most
performance out of your new adapter.
1. If you are getting less performance than you expect, the first
thing you should do is to make sure that you are using the ATTO
driver. It is quite possible that you are running a Symbios
driver or a LSI driver. These drivers that ship with Windows
can only transfer a maximum of 64KB in one SCSI command. The
ATTO driver can transfer well over a megabyte. Furthermore, if
you wish to use ATTO's ExpressRAID, you will need to use the ATTO
driver; the LSI driver will not recognize ATTO stripe groups.
You can determine which driver is being used with your adapter
as follows:
Windows NT
open "My Computer"
open "Control Panel"
open "SCSI Adapters"
Windows 2K and Windows XP
open "My Computer"
open "Control Panel"
open "Administrative Tools"
open "Computer Management"
select "Device Manager"
select "SCSI & Raid Controllers"
When you examine the Driver tab for your SCSI adapter, if the
driver is not express.sys, you should install the express.sys
driver and either remove the old driver that was being used with
the adapter or disable it using the Devices applet. If the system
has a built in Symbios or LSI adapter then make sure you do not
disable the driver for that adapter.
2. LARGE BLOCK TRANSFERS.
If your application requires large block transfers, the first thing
you should do is to set the registry entry correctly for the
MaximumSGList keyword. There are several files supplied with the
installation disks which can set this value to any one of the
following sizes: 64Kb; 128KB; 256Kb; 512KB; 1MB; and NT default(64KB).
These files are ASCII text files and can be viewed with any suitable
editor. There are comments within the files that explain the registry
setting and how to change the setting.
The ExpressPCI adapter can have a maximum transfer size from 64KB to
1MB. If the registry value is set to a number higher than 0xff, the
driver will reduce the setting to 0xff. The driver installation
process will set the default value to 0xff.
3. If you are going to set up stripe groups, use ATTO's ExpressRAID
instead of the RAID built into Windows.
The disk striping supplied with Windows is implemented by an upper-level
filter driver. Windows uses a stripe interleave of 64KB. That means that
64KB data blocks are alternated between the two (or more) drives in
the stripe set. Since there is no facility in the Windows driver
hierarchy to pass scatter/gather information from the striping driver
to the miniport driver that controls the SCSI card, the striping
driver must break large requests into 64KB requests which can be
handled by the miniport driver.
With ATTO's disk striping, a large disk request is passed directly to
the miniport driver which then splits the request into only one
request for each drive in the stripe set. This cuts down the
overhead associated with starting many commands on the SCSI bus as
well as reducing the overhead in the driver hierarchy. There is
one less level of driver through which commands must pass, and there
are less commands passed through the driver hierarchy.
Further advantages of using ATTO's disk striping are: (1) You can
boot your system off of striped drives; (2) stripe sets created with
ExpressRAID are recognizable by not only NT but DOS and Windows 95;
and (3) you can stripe removable-media drives with ExpressRAID.
Read "Stripe.txt" for an explanation of ATTO's disk striping. This file
is included will all ATTO adapters if the striping option is purchased.
4. If you are writing an application that uses a lot of sequential
disk I/O to a contiguous area on disk, you should use as large a
transfer size as possible. This reduces system overhead, SCSI bus
overhead, and overhead within the disk drives.
You should also use Direct I/O. This is accomplished by using the
FILE_FLAG_WRITE_THROUGH and FILE_FLAG_NO_BUFFERING flags with your
CreateFile call. When you don't specify Direct I/O, reading data
causes the data to be read from the SCSI device in 4KB segments first
into the system pages, then the data is moved from the system pages
to the application's data buffers. Writing involves the reverse
of this process. This incurs the unnecessary overhead of moving
the data between system pages and application buffers and the
additional overhead of executing many SCSI commands to transfer the
data between the system pages and the device. A further side effect
is that the allocation of the system pages to the application data
will cause other valuable information to be removed from the system
pages, so it will have to be re-read again later. Using direct I/O
for such large sequential data transfers avoids the overhead of
copying data from one area of memory to another, greatly reduces
the number of SCSI commands which must be executed, and leaves the
system pages available of other valuable data. If your application
needs only to do a small amount of I/O and the transfers are rather
small, however, you may get better performance by letting the system
cache your data in the system pages.
Another approach that can increase I/O throughput is to use over-
lapped I/O. This is accomplished by using the FILE_FLAG_OVERLAPPED
option with the CreateFile call. Overlapped I/O allows the appli-
cation to send many commands to the device at once. With "normal"
I/O, the application sends one command to a device at time. While
that command is executing, the application is "blocked" and can do
nothing. The application gets control back only when the command
has been completed.
Using overlapped I/O, the work involved in the application, drivers,
SCSI bus, and even in the device, of setting up, transferring and
starting subsequent commands is done while the first command is
being executed by the device. Furthermore, many disk drives are
able to combine commands and order them so that they will complete
in the shortest possible time.
The ATTO Disk Benchmark program was designed to show the effect of
using the above I/O modes. If you turn off Direct I/O and set the
file size to a value significantly less than the amount of memory
in your computer, you will get some artificially high transfer
rates. This is because very little I/O is actually being performed
by the SCSI device; all the activity is involved in transferring
data between the application and the system pages. As you increase
the file size to a value more than the amount of memory in your
computer, you will see performance degrade markedly. Then, turning
on Direct I/O, you can see the effect of removing the system pages
from the overhead picture. Finally, by using overlapped I/O, you
will see performance improvements in the low-to-medium transfer
sizes. NOTE - Depending on the amount of memory in your computer,
you may not be able to successfully use queue depths greater than
4 or 5.
Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.