레벨 6에서 I/O 인터럽트가 부족하면 드라이버 중 하나를 인터럽트 레벨 5 또는 4로 지정하는 것이 좋습니다.
인터럽트 레벨 5가 첫 번째 우선 순위입니다.
인터럽트 레벨 4는 그 다음입니다.
다음 표에서는 8소켓 시스템의 I/O 장치, 포트 및 인터럽트를 보여 줍니다.
|
부트 메시지가 나타납니다.
이 절차의 예에서는 ixgbe 및 igb가 모두 기본값인 인터럽트 레벨 6에 있는 시스템을 보여 줍니다. 이 시스템에서는 총 40개 중에서 ixgbe에는 24개의 인터럽트가 필요하고 igb에는 16개의 인터럽트가 필요합니다. 그러나 레벨 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와 igb가 모두 레벨 6에 있으며 ixgbe에는 24개의 인터럽트가 필요하고 igb에는 16개가 필요한 시스템을 보여 줍니다. 모두의 요구 사항을 충족하려면 40개의 인터럽트가 필요하지만 31개만 사용 가능합니다. 화면에는 지정된 31개만 표시됩니다.
또한 인터럽트 하나만 인터럽트 레벨(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
Ctrl+D 키를 사용하여 쉘로 돌아갑니다.
이 예에서는 다음 줄을 /kernel/drv/igb.conf에 추가하여 igb 드라이버를 레벨 5로 다시 지정합니다.
interrupt-priorities = 5;
서버에 POST 메시지가 표시되고 인터럽트가 새 레벨에 지정됩니다.
오류 메시지가 표시되지 않으면 절차가 성공한 것입니다.
다음 예에서는 3단계에서 igb가 인터럽트 레벨(IPL) 5로 다시 지정된 후의 시스템을 보여 줍니다. 결과적으로 시스템은 ixgbe에 24개의 인터럽트를 지정할 수 있습니다.
# 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 키를 사용하여 쉘로 돌아갑니다.