我正在用使用 SuperMicro X11SBA-LN4F 构建的新路由器替换我的(Gentoo)Linux 路由器。
我使用现有的 Gentoo Linux 路由器的配置作为起点(包括内核配置),在完成系统安装并启动新内核后,我注意到接触 SSD 的任何东西都慢得令人难以忍受(在二进制文件进入磁盘缓存之前执行它们、grub-mkconfig、尝试编译内核等)。
当我重新启动安装介质并 chroot 到安装时,一切都正常;这使我相信 I/O 问题是由安装介质内核和系统内核的不同引起的。
我注意到,在启动系统内核时,dmesg 中有一个内核 oops,而当我从安装媒体启动时它并没有出现:
[ 14.325720] irq 19: nobody cared (try booting with the "irqpoll" option)
[ 14.325728] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.19.23-gentoo #3
[ 14.325731] Hardware name: Supermicro SYS-E200-9B/X11SBA-LN4F, BIOS 1.1a 01/23/2018
[ 14.325733] Call Trace:
[ 14.325742] <IRQ>
[ 14.325755] dump_stack+0x5a/0x6f
[ 14.325766] __report_bad_irq+0x32/0xa9
[ 14.325776] note_interrupt+0x1cb/0x219
[ 14.325786] handle_irq_event_percpu+0x4d/0x6c
[ 14.325793] handle_irq_event+0x30/0x4e
[ 14.325797] handle_fasteoi_irq+0x7a/0xdf
[ 14.325803] handle_irq+0x19/0x1c
[ 14.325810] do_IRQ+0x3b/0xae
[ 14.325819] common_interrupt+0xf/0xf
[ 14.325825] </IRQ>
[ 14.325834] RIP: 0010:cpuidle_enter_state+0x12b/0x17d
[ 14.325841] Code: ff 45 84 ff 74 1d 9c 58 0f 1f 44 00 00 0f ba e0 09 73 09 0f 0b fa 66 0f 1f 44 00 00 31 ff e8 0a a4 c6 ff fb 66 0f 1f 44 00 00 <48> 89 d8 b9 e8 03 00 00 4c 29 e8 48 99 48 f7 f9 ba ff ff ff 7f 48
[ 14.325844] RSP: 0018:ffff947af50dfea8 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffde
[ 14.325850] RAX: ffff947af551f1c0 RBX: 0000000355e105c5 RCX: 000000000000001f
[ 14.325853] RDX: 0000000355e105c5 RSI: 0000000050000000 RDI: 0000000000000000
[ 14.325856] RBP: ffff947af5527070 R08: 0000000000000000 R09: 000000000001ea80
[ 14.325858] R10: ffff947af50dfe88 R11: 00000011bcaf990c R12: 0000000000000001
[ 14.325861] R13: 0000000355e0df64 R14: ffffffff9f05c538 R15: 0000000000000000
[ 14.325869] ? cpuidle_enter_state+0x102/0x17d
[ 14.325874] do_idle+0x191/0x214
[ 14.325883] cpu_startup_entry+0x6b/0x6d
[ 14.325890] start_secondary+0x18f/0x1ab
[ 14.325897] secondary_startup_64+0xa4/0xb0
[ 14.325902] handlers:
[ 14.325911] [<00000000f3c0e1a3>] ahci_single_level_irq_intr
[ 14.325915] Disabling IRQ #19
这似乎是 AHCI 子系统中的某种故障,可能与控制 X11SBA-LN4F 板上的 Intel SATA 芯片组有关。我花了一些时间查看内核配置(并尝试启用/禁用各种 AHCI/libata 位)。我还尝试将“irqpoll”添加到内核启动参数中,但没有成功。此时我陷入了困境;Google 没有找到任何有用的信息来解决 ahci_single_level_irq_intr 的 IRQ 冲突,而且我对内核的了解还不够,不知道现在该去哪里查找。
任何见解都将不胜感激!