> NOTICE: IRQ22 is being shared by drivers with different interrupt levels.
> This may result in reduced system performance.
> ...
To find out which device drivers are sharing interrupts,
from a 'root' shell, run:
echo ::interrupts | mdb -k
or
echo ::interrupts -d | mdb -k
> Can anyone explain what these IRQ messages mean and
> what impact they might have for me?
Whenever one device sharing the same interrupt
vector signals an interrupt, the operating system
must call all device drivers sharing that vector, so
that each one can check it it's hardware was
responsible for the interrupt. That might burn a
few extra cpu cycles, because most of the devices
sharing the interrupt vector haven't signaled an
interrupt.
You can use the "intrstat" utility to measure kernel
cpu usage by device drivers.
One way to avoid interrupt sharing is to enable
MSI (message signaled interrupts). Quite a few
solaris device drivers are currently updated to
support MSI interrupts (or fix issues when the driver
is configured to use MSI interrupts). Problem is that
most drivers have been used with (and default to
use) fixed PCI interrupts, and the MSI interrupt support
isn't that well tested at this time.
E.g. the nvidia ethernet device that is present in your
machine might support MSI interrupts, and there is
a tunable in the Solaris nge driver to enable use of
MSI interrupts with nge:
http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/nge/nge_main.c#227
227 /*
228 * NGE MSI tunable:
229 */
230 boolean_t nge_enable_msi = B_FALSE;
231
(To experiment with this, add this line to /etc/system
set nge:nge_enable_msi = 1
and reboot)
--
This message posted from opensolaris.org