Download User Manual
Transcript
3. Configuration FC/FCoE Driver Performance Tuning When multiple I/O channels are in use, I/Os can be scheduled to an I/O channel in a round-robin fashion, or by determining which CPU is running when the I/O is submitted. The default value (0) configures the driver for round-robin scheduling. A value of 1 configures scheduling by CPU. lpfc_fcp_imax The lpfc_fcp_imax can be configured at driver load time. It can also be set dynamically as an sysfs entry. This parameter defines the maximum number of interrupts per second that each adapter port will support. Note: This parameter is only applicable for OneConnect adapters and LPe16000 and LPe15000-series adapters. Considerations The lower the value set, the more completions are coalesced by the adapter, which causes the driver to handle multiple completions under the context of one interrupt. The higher the value, the faster an interrupt is generated for a completed command. Therefore, a balanced or “tuned” system must be found. A lower value equals higher interrupt latency; a higher value equals lower interrupt latency. Faster completions consume more system resources and CPU cycles, as the overhead of one interrupt completes fewer commands. The value is divided by the number of I/O channels, and each I/O channel is separately configured for its own interrupt latency. By default, the module parameter is configured for 50,000 interrupts per second per adapter port. Older driver versions have a default value of 10,000. lpfc_vector_map.sh The lpfc_vector_map.sh script uses kernel sysfs entry points to map a specific I/O channel (MSI-X vector-EQ/CQ/WQ tuple) to a specific CPU. The script should be run immediately after the driver is loaded. This script resides in /usr/sbin/lpfc. The Emulex recommends running this script by adding the following line to /etc/modprobe.d/lpfc.conf and through /etc/rc.d for the initial boot: install lpfc /sbin/modprobe --ignore-install lpfc; /usr/sbin/lpfc/lpfc_vector_map.sh The script maps each interrupt vector allocated by the driver to a CPU, thereby spreading the interrupt load of the ports across multiple CPUs. Each vector, with its associated I/O channel, is sequentially mapped to a CPU in a round-robin fashion. The number of vectors assigned to each adapter port is defined by the lpfc_fcp_io_channel module parameter. I/O channels, which correspond to vectors, are typically mapped to unique CPUs to enhance the ability of the driver to run multiple FCP commands in parallel. In addition, Emulex Drivers Version 10.4 for Linux User Manual P011043-01A Rev. A 82