У меня две машины, одна с ядрами AMD Opteron 4x12 (процессор AMD Opteron (tm) 6176), одна с ядрами 2x8 Xeon (HT отключена; процессор Intel (R) Xeon (R) E5-2660 0 @ 2,20 ГГц). На обеих машинах я испытываю трудности при загрузке Linux с использованием последних ядер. Система зависает во время инициализации ядра, до или сразу, когда initramfs начал инициализацию оборудования. Последняя вещь, которая была отображена, была вот так:
CPU: 31 PID: 0 Comm: swapper/31 Tainted: G D 3.11.6-hardened #11
Hardware name: Supermicro X9DRT-HF+/X9DRT-HF+, BIOS 3.00 07/08/2013
task: ffff880854695500 ti: ffff880854695a28 task.ti: ffff880854695a28
RIP: 0010:[<ffffffff8100a82e>] [<ffffffff8100a82e>] default_idle+0x6/0xe
RSP: 0000:ffff8808546b3ec8 EFLAGS: 00000286
RAX: ffffffff8100a828 RBX: ffff880854695a28 RCX: 00000000ffffffff
RDX: 0100000000000000 RSI: 0000000000000000 RDI: ffff88107fdec690
RBP: ffff8808546b3ec8 R08: 0000000000000000 R09: ffff880854695500
R10: ffff880854695500 R11: 0000000000000001 R12: ffff880854695a28
R13: ffff880854695a28 R14: ffff880854695a28 R15: 0000000000000000
FS: 0000000000000000(0000) GS:ffff88107fde0000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000002b43256a960 CR3: 00000000016b5000 CR4: 00000000000607f0
Stack:
ffff8808546b3ed8 ffffffff8100aec9 ffff8808546b3f10 ffffffff8109ce25
334ab55852ec7aef 000000000000001f ffffffff8102d6c0 0000000000000000
0000000000000000 ffff8808546b3f48 ffffffff810276e0 ffff8808546b3f28
Call Trace:
[<ffffffff8100aec9>] arch_cpu_idle+0x20/0x2b
[<ffffffff8109ce25>] cpu_startup_entry+0xed/0x138
[<ffffffff8102d6c0>] ? flat_init_apic_ldr+0x80/0x80
[<ffffffff810276e0>] start_secondary+0x2c9/0x2f8
Я сам скомпилировал ядро, и оно отлично работает, если я загружаюсь с Nolapic. Тем не менее, используется только одно ядро. Кроме того, ядро RHEL6, кажется, работает нормально. Я подозреваю, что есть некоторые патчи, используемые, чтобы заставить вещи работать. Использование файла конфигурации ядра из RHEL6 и сборка более нового ядра приводит к тем же проблемам. На машине Xeon все стало лучше, полностью отключив Hyperthreading. Теперь машина успешно загружается как минимум 4 раза из 5. И если он загружается, многоядерные вещи работают просто отлично. Однако мне интересно, что делать с машиной AMD.
Итак, подведем итог:
- Ядро Gentoo 3.6 - 3.11 не будет надежно загружать эти машины, если вы не уменьшите количество ядер (например, через nolapic).
- Ядро RHEL6 (которое является 2.6.32) загружается просто отлично.
- Конфигурация ядра RH, используемая для сборки ядра 3.x, не даст работающего ядра.
- Не зависит от дистрибутива (кроме используемого ядра).
- Эти следы стека печатались каждую минуту или около того. Ядро, похоже, застряло в бесконечном цикле.
Тем не менее, последнее ядро необходимо по разным причинам.
Итак, вопрос:
- Что делает ядро RHEL6, чего не делают ядра vanilla или gentoo?
- Есть ли вариант загрузки, который может привести к надежной загрузке со всеми включенными ядрами?
Бест, Адам