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 an LSI Logic
driver. The LSI Logic driver that ship with Windows
can only transfer a maximum of 64KB in one SCSI command. The
ATTO driver can transfer well over a megabyte.
You can determine which driver is being used with your adapter
as follows:
a. open "My Computer"
b. open "Control Panel"
c. open "Administrative Tools"
d. open "Computer Management"
e. select "Device Manager"
f. select "SCSI & Raid Controllers"
When you examine the Driver tab for your SCSI adapter, if the
driver is not express2.sys, you should install the express2.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 LSI Logic 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 (ELT-XXX.reg) supplied
with the installation disks which can set this value to various sizes.
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.
3. 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.