emx - Device Driver for the Emulex Fibre Channel Host
Adapter
bus emx0 at pci? controller scsiX at emx0 bus emx1 at pci?
controller scsiY at emx1
.
.
. bus emxN at pci? controller scsiZ at emxN
The emx driver controls and manages the Emulex Fibre Channel
Host Adapter. The emx driver is fully integrated with
the CAM SCSI I/O subsystem to provide connectivity to FCP
(Fibre Channel Protocol, such as SCSI) devices attached
via the Fibre Channel adapter. In addition to acting as an
FCP initiator, the emx driver also functions as an FCP
target. CAM target mode peripheral drivers are also supported.
The emx driver currently provides Class 3 operation in a
switch-based fabric configuration.
Tuning the EMX Driver [Toc] [Back]
Some Fibre Channel configurations become busy dealing with
QUEUE FULL responses that are generated by busy devices.
When this occurs, not enough I/O requests are completed
successfully and the host CPU can fail the busy devices.
If such problems occur, you can tune the performance of
the emx driver by manipulating the values of the following
kernel configuration attributes, which are part of the I/O
subsystem: NPort_Max_IOs (default value 256) NPort_Min_IOs
(default value 20) NPort_IORamp_Delay (default value 1)
NPort_IORamp_Percent (default value 10)
Configure these attributes at run time, without rebooting
the system by using the /sbin/sysconfig -r command. If you
want custom settings to persist across a reboot, ensure
that the values are written in the system configuration
file. To write the values into the system configuration
file, create a stanza file and use the /sbin/sysconfigdb
command.
These system configuration attributes enable you to limit
I/O via an N_Port. An N_Port is a hardware entity
attached to the end of a Fibre Channel link. It manages
the transmission and reception of Fibre Channel I/O in the
form of primitives and frames. Each N_Port is identified
by a 64-bit worldwide name (WWN) known as the port name.
In a Point-to-Point topology, an N_Port connects to
another N_Port via a link. In a fabric topology, the
N_Port connects to an F_Port via a link.
The attributes enable an I/O limiting feature, allowing
you to tune I/O when devices become too busy to cope with
the I/O rate. When I/O is limited to the correct rate,
the emx driver allows only the value of NPort_Max_IOs commands
to be outstanding to an N_Port at one time during
normal use. If the device becomes too busy to accept
commands the host responds with a QUEUE FULL status message.
The QUEUE FULL response triggers an internal temporary
maximum I/O limit. This limit is equal to the volume
of commands presently outstanding to the N_Port to which
the device is attached.
The internal temporary maximum I/O limit is never less
than the value that you specify for NPort_Min_IOs. The
limit increases by the percentage value specified for
NPort_IORamp_Percent. This percentage increase repeats
for the time value (in seconds) that you specify for
NPort_IORamp_Delay. The process continues until the
internal temporary maximum I/O limit is equivalent to the
value of NPort_Max_IOs or when another QUEUE FULL response
is received from the device. This logic limits the volume
of commands sent to a busy device while maximizing the
volume of I/O in a busy system. See the EXAMPLES section
for some typical usage scenarios.
Note
Do not attempt to set the value of NPort_Max_IOs to less
than the value of NPort_Min_IOs.
Due to the way sense data is handled in FCP, CAM SCSI I/O
CCBs that have AUTOSENSE disabled (CAM_DIS_AUTOSENSE) will
be rejected with a CAM_PROVIDE_FAIL status.
Direct connections without an intervening switch or hub
are not supported.
Due to the SCSI-2 limitations inherent in the design of
target mode operation in the CAM specification, specifically
in the area of sense data handling, tagged command
queuing is not supported in the target mode portion of the
emx driver.
To turn off I/O limiting, use the following run-time configuration
command: # /sbin/sysconfig -r io NPort_Max_IOs
= 0xFFFFFFFF
Using the default values of the attributes, assume the emx
driver has 30 commands outstanding to an N_Port. When the
driver tries to send another command, the command is
rejected with QUEUE FULL status from the device. This
event triggers the emx driver to decrease the internal I/O
limit from NPort_Max_IOs to a value of 30. The decreased
limit prevents the emx driver from sending new commands
until an outstanding command completes successfully. The
emx driver continues to send and receive commands with
only 30 commands outstanding to the N_Port at one time.
This status continues until the time value of
NPort_IORamp_Delay (by default, one second) has elapsed.
At this point the internal I/O limit increases by the
absolute value calculated from the following equation:
(NPort_Max_IOs * NPort_IORamp_Percent)/100
For example: (256 * 10)/100 = 25
The value of the internal I/O limit then becomes 30 + 25 =
55. In this scenario, the internal I/O limit increases
every one second, which is the current time value set for
the NPort_IORamp_Delay attribute. The procedure repeats
until the internal I/O limit is equivalent to 256, the
current value of NPort_Max_IOs.
Assume that the emx driver has only five commands outstanding
to an N_Port and it receives a QUEUE FULL
response from one of the outstanding I/Os. The emx driver
automatically decreases its internal I/O limit from the
value of NPort_Max_IOs to be equivalent to 20, the current
value of NPort_Min_IOs. This decrease occurs because the
emx driver cannot limit the outstanding I/Os to less than
the current value of NPort_Min_IOs.
The device driver module
SCSI(7), rz(7)
hwmgr(8), sys_attrs_io(5), sysconfig(8), sysconfigdb(8)
Hardware Management
emx(7)
[ Back ] |