遇到级别 6 I/O 中断不足时,Oracle 建议将其中一个驱动程序分配给中断级别 5 或 4。
中断级别 5 优先。
接下来是中断级别 4。
下表显示了八插槽系统中的 I/O 设备、端口和中断。
|
此时将显示引导消息。
本过程中的示例显示了 ixgbe 和 igb 都位于默认中断级别 6 的系统。在本系统中,ixgbe 需要 24 个中断,igb 需要 16 个中断,共需要 40 个。然而,级别 6 仅提供 31 个。
在控制台上:
Feb 25 15:45:04 mpk12-3214-189-156 pcplusmp: WARNING: No interrupt vector: pciex8086,10f7 instance 1 Feb 25 15:45:04 mpk12-3214-189-156 pcplusmp: WARNING: Sharing vectors: pciex8086,10f7 instance 1 and SCI Feb 25 15:45:06 mpk12-3214-189-156 pcplusmp: WARNING: No interrupt vector: pciex8086,10f7 instance 5 Feb 25 15:45:06 mpk12-3214-189-156 pcplusmp: WARNING: Sharing vectors: pciex8086,10f7 instance 1 and pciex8086,10f7 instance 5
在 /var/adm/messages 中:
Feb 25 15:44:53 mpk12-3214-189-156 ixgbe: [ID 611667 kern.info] NOTICE: ixgbe7: Insufficient interrupt handles available: 1 Feb 25 15:44:53 mpk12-3214-189-156 ixgbe: [ID 611667 kern.info] NOTICE: ixgbe7: Allocate MSI-X failed, trying MSI interrupts... Feb 25 15:44:53 mpk12-3214-189-156 ixgbe: [ID 611667 kern.info] NOTICE: ixgbe7: MSI-X not used, force rx and tx queue number to 1
查看 /var/adm/messages 中的消息,以确定需要多于现有可用中断的驱动程序。在本示例中,此驱动程序为 ixgbe。
以下输出显示了 ixgbe 需要 24 个中断,igb 需要 16 个中断(均位于级别 6)的系统。要满足两者的需求需要 40 个中断;然而只有 31 个中断可用。显示屏中显示了分配的 31 个中断。
另请注意,仅向中断级别 (interrupt level, IPL) 5 分配了一个中断,剩余 30 个可用于其他设备。
# devfsadm -C # mdb -k Loading modules: [ unix krtld genunix specfs dtrace cpu.generic uppc pcplusmp ufs ip hook neti sctp arp usba uhci s1394 nca fcp fctl lofs emlxs qlc zfs nfs random sppp md cpc crypto fcip logindmux ptm ] > ::interrupts > IRQ Vector IPL Bus Type CPU Share APIC/INT# ISR(s) 4 0xb0 12 ISA Fixed 9 1 0x0/0x4 asyintr 9 0x81 9 PCI Fixed 1 1 0x0/0x9 acpi_wrapper_isr 11 0xd1 14 PCI Fixed 2 1 0x0/0xb hpet_isr 16 0x88 9 PCI Fixed 12 1 0x0/0x10 uhci_intr 18 0x86 9 PCI Fixed 10 2 0x0/0x12 uhci_intr, ehci_intr 19 0x8a 9 PCI Fixed 14 3 0x0/0x13 ahci_intr, uhci_intr, uhci_intr 21 0x89 9 PCI Fixed 13 1 0x0/0x15 uhci_intr 23 0x87 9 PCI Fixed 11 2 0x0/0x17 uhci_intr, ehci_intr 28 0x40 5 PCI Fixed 4 1 0x1/0x4 mrsas_isr 32 0x20 2 IPI ALL 1 - cmi_cmci_trap 120 0x82 7 MSI 3 1 - pepb_intr_handler 121 0x30 4 MSI 5 1 - pepb_intr_handler 122 0x31 4 MSI 5 1 - pepb_intr_handler 123 0x84 7 MSI 6 1 - pepb_intr_handler 124 0x85 7 MSI 6 1 - pepb_intr_handler 125 0x32 4 MSI 7 1 - pepb_intr_handler 126 0x83 7 MSI 8 1 - pepb_intr_handler 127 0x33 4 MSI 15 1 - pepb_intr_handler 128 0x8c 7 MSI 16 1 - pepb_intr_handler 129 0x8d 7 MSI 16 1 - pepb_intr_handler 130 0x34 4 MSI 17 1 - pepb_intr_handler 131 0x35 4 MSI 17 1 - pepb_intr_handler 132 0x8b 7 MSI 18 1 - pepb_intr_handler 133 0x36 4 MSI 19 1 - pepb_intr_handler 134 0x8e 7 MSI 20 1 - pepb_intr_handler 135 0x38 4 MSI 21 1 - pepb_intr_handler 136 0x39 4 MSI 21 1 - pepb_intr_handler 137 0x60 6 MSI-X 22 1 - ixgbe_intr_legacy 138 0x61 6 MSI-X 23 1 - igb_intr_rx 139 0x62 6 MSI-X 24 1 - igb_intr_tx_other 140 0x63 6 MSI-X 25 1 - igb_intr_rx 141 0x64 6 MSI-X 26 1 - igb_intr_tx_other 142 0x65 6 MSI-X 27 1 - igb_intr_rx 143 0x66 6 MSI-X 28 1 - 0 144 0x67 6 MSI-X 29 1 - igb_intr_rx 145 0x68 6 MSI-X 30 1 - ixgbe_intr_msix 146 0x69 6 MSI-X 31 1 - ixgbe_intr_msix 147 0x6a 6 MSI-X 32 1 - ixgbe_intr_msix 148 0x6b 6 MSI-X 33 1 - ixgbe_intr_msix 149 0x6c 6 MSI-X 34 1 - ixgbe_intr_msix 150 0x6d 6 MSI-X 35 1 - ixgbe_intr_msix 151 0x6e 6 MSI-X 36 1 - ixgbe_intr_msix 152 0x6f 6 MSI-X 37 1 - ixgbe_intr_msix 153 0x70 6 MSI-X 38 1 - ixgbe_intr_msix 154 0x71 6 MSI-X 39 1 - ixgbe_intr_msix 155 0x72 6 MSI-X 40 1 - igb_intr_tx_other 156 0x73 6 MSI-X 41 1 - igb_intr_rx 157 0x74 6 MSI-X 42 1 - igb_intr_tx_other 158 0x75 6 MSI-X 43 1 - igb_intr_rx 159 0x76 6 MSI-X 44 1 - igb_intr_tx_other 160 0xa0 0 IPI ALL 0 - poke_cpu 161 0x77 6 MSI-X 45 1 - igb_intr_rx 162 0x78 6 MSI-X 46 1 - igb_intr_tx_other 163 0x79 6 MSI-X 47 1 - igb_intr_rx 164 0x7a 6 MSI-X 48 1 - ixgbe_intr_msix 165 0x7b 6 MSI-X 49 1 - ixgbe_intr_msix 166 0x7c 6 MSI-X 50 1 - ixgbe_intr_msix 167 0x7d 6 MSI-X 51 1 - ixgbe_intr_msix 168 0x7e 6 MSI 53 1 - ixgbe_intr_msi 192 0xc0 13 IPI ALL 1 - xc_serv 208 0xd0 14 IPI ALL 1 - kcpc_hw_overflow_intr 209 0xd3 14 IPI ALL 1 - cbe_fire 210 0xd4 14 IPI ALL 1 - cbe_fire 240 0xe0 15 IPI ALL 1 - xc_serv 241 0xe1 15 IPI ALL 1 - apic_error_intr
使用 Control D 返回到 shell。
本示例通过向 /kernel/drv/igb.conf 添加以下行,将 igb 驱动程序重新分配至级别 5。
interrupt-priorities = 5;
服务器将显示 POST 消息,中断将被分配到新的级别。
如果未显示任何错误消息,则该过程成功。
以下示例显示已将 igb 重新分配至中断级别 (interrupt level, IPL) 5 后的步骤 3 中的系统。因此,该系统能够将 24 个中断分配给 ixgbe。
# devfsadm -C # mdb -k Loading modules: [ unix krtld genunix specfs dtrace cpu.generic uppc pcplusmp ufs ip hook neti sctp arp usba uhci s1394 nca fcp fctl lofs emlxs qlc zfs nfs random sppp md cpc crypto fcip logindmux ptm ] > ::interrupts > IRQ Vector IPL Bus Type CPU Share APIC/INT# ISR(s) 4 0xb0 12 ISA Fixed 9 1 0x0/0x4 asyintr 9 0x81 9 PCI Fixed 1 1 0x0/0x9 acpi_wrapper_isr 11 0xd1 14 PCI Fixed 2 1 0x0/0xb hpet_isr 16 0x88 9 PCI Fixed 12 1 0x0/0x10 uhci_intr 18 0x86 9 PCI Fixed 10 2 0x0/0x12 uhci_intr, ehci_intr 19 0x8a 9 PCI Fixed 14 3 0x0/0x13 ahci_intr, uhci_intr, uhci_intr 21 0x89 9 PCI Fixed 13 1 0x0/0x15 uhci_intr 23 0x87 9 PCI Fixed 11 2 0x0/0x17 uhci_intr, ehci_intr 28 0x40 5 PCI Fixed 4 1 0x1/0x4 mrsas_isr 32 0x20 2 IPI ALL 1 - cmi_cmci_trap 120 0x82 7 MSI 3 1 - pepb_intr_handler 121 0x30 4 MSI 5 1 - pepb_intr_handler 122 0x31 4 MSI 5 1 - pepb_intr_handler 123 0x84 7 MSI 6 1 - pepb_intr_handler 124 0x85 7 MSI 6 1 - pepb_intr_handler 125 0x32 4 MSI 7 1 - pepb_intr_handler 126 0x83 7 MSI 8 1 - pepb_intr_handler 127 0x33 4 MSI 15 1 - pepb_intr_handler 128 0x8c 7 MSI 16 1 - pepb_intr_handler 129 0x8d 7 MSI 16 1 - pepb_intr_handler 130 0x34 4 MSI 17 1 - pepb_intr_handler 131 0x35 4 MSI 17 1 - pepb_intr_handler 132 0x8b 7 MSI 18 1 - pepb_intr_handler 133 0x36 4 MSI 19 1 - pepb_intr_handler 134 0x8e 7 MSI 20 1 - pepb_intr_handler 135 0x38 4 MSI 21 1 - pepb_intr_handler 136 0x39 4 MSI 21 1 - pepb_intr_handler 137 0x41 5 MSI-X 22 1 - igb_intr_tx_other 138 0x42 5 MSI-X 23 1 - igb_intr_rx 139 0x43 5 MSI-X 62 1 - igb_intr_tx_other 140 0x44 5 MSI-X 63 1 - igb_intr_rx 141 0x45 5 MSI-X 64 1 - igb_intr_tx_other 142 0x46 5 MSI-X 65 1 - igb_intr_rx 143 0x47 5 MSI-X 66 1 - igb_intr_tx_other 144 0x48 5 MSI-X 67 1 - igb_intr_rx 145 0x60 6 MSI-X 68 1 - ixgbe_intr_msix 146 0x61 6 MSI-X 69 1 - ixgbe_intr_msix 147 0x62 6 MSI-X 70 1 - ixgbe_intr_msix 148 0x63 6 MSI-X 71 1 - ixgbe_intr_msix 149 0x64 6 MSI-X 72 1 - ixgbe_intr_msix 150 0x65 6 MSI-X 73 1 - ixgbe_intr_msix 151 0x66 6 MSI-X 74 1 - ixgbe_intr_msix 152 0x67 6 MSI-X 75 1 - ixgbe_intr_msix 153 0x68 6 MSI-X 76 1 - ixgbe_intr_msix 154 0x69 6 MSI-X 77 1 - ixgbe_intr_msix 155 0x49 5 MSI-X 78 1 - igb_intr_tx_other 156 0x4a 5 MSI-X 79 1 - igb_intr_rx 157 0x6a 6 MSI-X 80 1 - ixgbe_intr_msix 158 0x6b 6 MSI-X 81 1 - ixgbe_intr_msix 159 0x4b 5 MSI-X 82 1 - igb_intr_tx_other 160 0xa0 0 IPI ALL 0 - poke_cpu 161 0x4c 5 MSI-X 83 1 - igb_intr_rx 162 0x4d 5 MSI-X 84 1 - igb_intr_tx_other 163 0x4e 5 MSI-X 85 1 - igb_intr_rx 164 0x4f 5 MSI-X 86 1 - igb_intr_tx_other 165 0x50 5 MSI-X 87 1 - igb_intr_rx 166 0x6c 6 MSI-X 88 1 - ixgbe_intr_msix 167 0x6d 6 MSI-X 89 1 - ixgbe_intr_msix 168 0x6e 6 MSI-X 90 1 - ixgbe_intr_msix 169 0x6f 6 MSI-X 91 1 - ixgbe_intr_msix 170 0x70 6 MSI-X 92 1 - ixgbe_intr_msix 171 0x71 6 MSI-X 93 1 - ixgbe_intr_msix 172 0x72 6 MSI-X 94 1 - ixgbe_intr_msix 173 0x73 6 MSI-X 95 1 - ixgbe_intr_msix 174 0x74 6 MSI-X 96 1 - ixgbe_intr_msix 175 0x75 6 MSI-X 97 1 - ixgbe_intr_msix 176 0x76 6 MSI-X 98 1 - ixgbe_intr_msix 177 0x77 6 MSI-X 99 1 - ixgbe_intr_msix 192 0xc0 13 IPI ALL 1 - xc_serv 208 0xd0 14 IPI ALL 1 - kcpc_hw_overflow_intr 209 0xd3 14 IPI ALL 1 - cbe_fire 210 0xd4 14 IPI ALL 1 - cbe_fire 240 0xe0 15 IPI ALL 1 - xc_serv 241 0xe1 15 IPI ALL 1 - apic_error_intr
使用 Ctrl-D 组合键返回到 shell。