Supermicro H12SSL MoBo 上的 Solaris 11.4.42.111.0 配备 16 核 Epyc,5 个 PCIe16v4/NVMe 卡,每个卡有 4 个 NVMe 插槽,总共 20 个 NVMe 插槽,另加 MBoard 上的 2 个。
这个想法是填充所有 22 个 NVMe 插槽,以构建具有原生 ZFS 和轻量级容器(非内核区域)的低功耗文件服务器。但是,Solaris 不允许我使用超过 13 个插槽,并抱怨“无中断向量:pciex...”。
我查看了 mdb -k 中的 ::interrupts,确实,对于级别 5,ahci 驱动程序占用了 4 个向量,nvme 占用了 28 个向量 - 每个填充插槽 2 个向量。
我编辑了 /kernel/drv/ahci.conf,明确告知使用级别 6(其中只有 bge 和 nge 驱动程序),因此在级别 5 中释放了 4 个向量,这使我可以使用另外 2 个插槽,总共 16 个 NVMe。仍然不是我想要的。
我已经很久没接触过内核了。是否可以将 nvme 扩展到 2 个中断级别?nvme.conf 中的正确语法是什么?
中断优先级=5,6;
似乎没有任何效果 - 添加第 17 个 NVMe 棒会导致启动时出现同样的问题
答案1
搞清楚了 )) 按照 /kernel/drv/oce.conf 和 /kernel/drv/bnxe.conf 注释中的说明操作。我找到了适用于 nvme.conf 的父级/实例组合,并能够将最快的 5 个 NVME 从默认级别 5 移动到优先级 6。
名称 = “pciex111d,80d0” 父级 = “/pci@0,0/pci1022,1483@3,3” 单元地址 = “0” 中断优先级 = 6; 名称 = “pciex111d,80d0” 父级 = “/pci@1,0/pci1022,1483@3,1” 单元地址 = “0” 中断优先级 = 6; 名称 = “pciex111d,80d0” 父级 = “/pci@2,0/pci1022,1483@3,3” 单元地址 = “0” 中断优先级 = 6; 名称 = “pciex111d,80d0” 父级 = “/pci@3,0/pci1022,1483@3,1” 单元地址 = “0” 中断优先级 = 6;名称 = “pciex111d,80d0” 父级 = “/pci@3,0/pci1022,1483@3,3” 单元地址 = “0” 中断优先级 = 6;