Parameters that regulate the rate at which interrupts are delivered by the e1000g driver also affect network and system performance. Typically network packets are delivered to the upper layer of the stack by generating an interrupt for every packet. In turn the interrupt rate, by default, is automatically adjusted by the GLD layer in the kernel. However, this mode might not be desirable in all network traffic conditions. For a discussion of this issue, refer to this document (http://www.stanford.edu/class/cs240/readings/mogul.pdf) that was presented at the USENIX technical conference in 1996. Thus, in certain circumstances, setting the interrupt rate manually becomes necessary to obtain better performance.
To define the interrupt rate, you set the following parameters:
_intr_throttling_rate determines the delay between interrupt assertions regardless of network traffic conditions.
_intr_adaptive determines whether automatic tuning of the interrupt throttling rate is enabled. By default, this parameter is enabled.
On the system that has the NIC whose driver properties you want to modify, assume the System Administrator role.
The System Administrator role includes the Network Management profile. To create the role and assign the role to a user, see Chapter 9, Using Role-Based Access Control (Tasks), in System Administration Guide: Security Services.
If necessary, identify the device whose driver property you want to modify.
# dladm show-phys |
Disable automatic tuning of the interrupt throttling rate.
# dladm set-linkprop -p _intr_adaptive=0 e1000g-data-link |
When automatic tuning of the interrupt throttling rate is enabled, then any value that is set for the parameter _intr_throttling_rate is ignored.
Unplumb the network interface.
Set the value for the minimum inter interrupt level.
# dladm set-linkprop -p _intr_throttling_rate=value e1000g-data-link |
The default value of the _intr_throttling_rate parameter is 550 on SPARC® based systems and 260 on x86 based systems. Setting the minimum inter-interrupt level to 0 disables the interrupt throttling logic.
Plumb the interface and configure an IP address for the interface.
(Optional) Display the threshold's new settings.
This example uses an x86 based system with an e1000g NIC. The driver is configured with a threshold setting toggle between using DMA binding or the bcopy mode for transmitting packets. The setting for the interrupt throttling rate is also modified. Further, the e1000g data link has been renamed with a customized name. Therefore, the configuration is performed on the data link by referring to the customized name, public0.
# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE public0 ether up 100Mb full e1000g0 # dladm show-linkprop -p _tx_bcopy_threshold public0 LINK PROPERTY VALUE DEFAULT POSSIBLE public0 _tx_bcopy_threshold 512 512 -- # dladm show-linkprop -p _intr-throttling_rate LINK PROPERTY VALUE DEFAULT POSSIBLE public0 _intr-throttling_rate 260 260 -- # ifconfig public0 unplumb # dladm set-linkprop -p _tx_bcopy_threshold=1024 public0 # dladm set-linkprop -p _intr_adaptive=0 public0 # dladm set-linkprop -p _intr-throttling_rate=1024 public0 # ifconfig public0 plumb 10.10.1.2/24 up # dladm show-linkprop -p _tx_bocopy_threshold=1024 public0 LINK PROPERTY VALUE DEFAULT POSSIBLE public0 _tx_bcopy_threshold 1024 512 -- # dladm show-linkprop -p _intr_adaptive public0 LINK PROPERTY VALUE DEFAULT POSSIBLE public0 _intr-adaptive 0 1 -- # dladm show-linkprop -p _intr-throttling_rate LINK PROPERTY VALUE DEFAULT POSSIBLE public0 _intr-throttling_rate 1024 260 -- |