Resposta curta : Ambas são implementações diferentes de drivers ociosos da CPU. acpi_idle é o driver padrão, suporta todas as arquiteturas de CPU, enquanto intel_idle é específico das CPUs Intel.
Mais detalhes : A API para um driver ocioso da CPU é definida em include / linux / cpuidle.h. Ele define a "estrutura genérica para gerenciamento de energia ociosa da CPU". O driver acpi_idle (definido em drivers / acpi / processor_idle.c) implementa esse comportamento para todas as arquiteturas de CPU. intel_idle (definido em drivers / idle / intel_idle.c) é um driver inativo projetado especificamente para CPUs Intel modernas (a partir dos comentários no cabeçalho intel_idle.c):
/* * intel_idle.c - native hardware idle loop for modern Intel processors * ...
/* * intel_idle is a cpuidle driver that loads on specific Intel processors * in lieu of the legacy ACPI processor_idle driver. The intent is to * make Linux more efficient on these processors, as intel_idle knows * more than ACPI, as well as make Linux more immune to ACPI BIOS bugs. */
Portanto, para os modernos processadores Intel, você deve usar o driver intel_idle, pois ele foi projetado especificamente para aumentar a eficiência dos processadores Intel.
Então, por que algumas configurações são carregadas com intel_idle e outras com acpi_idle? Isto é o que declarou na mensagem de commit introduzindo o driver intel_idle:
commit 2671717265ae6e720a9ba5f13fbec3a718983b65
Author: Len Brown Date: Mon Mar 8 14:07:30 2010 -0500
intel_idle: native hardware cpuidle driver for latest Intel processors
This EXPERIMENTAL driver supersedes acpi_idle on Intel Atom Processors, Intel Core i3/i5/i7 Processors and associated Intel Xeon processors.
It does not support the Intel Core2 processor or earlier.
For kernels configured with ACPI, CONFIG_INTEL_IDLE=y allows intel_idle to probe before the ACPI processor driver. Booting with "intel_idle.max_cstate=0" disables intel_idle and the system will fall back on ACPI's "acpi_idle".
Typical Linux distributions load ACPI processor module early, making CONFIG_INTEL_IDLE=m not easily useful on ACPI platforms.
intel_idle probes all processors at module_init time. Processors that are hot-added later will be limited to using C1 in idle.
Signed-off-by: Len Brown
Então as razões são:
- CPU não Intel no sistema ou arquiteturas Intel mais antigas.
- Não marcado CONFIG_INTEL_IDLE = y no arquivo .config
- Inicializando com intel_idle.max_cstate = 0 no cmdline
Desde que você disse que definiu o # 3 em ambas as configurações, a pergunta é por que um deles foi carregado com intel_idle. Tente "cat / proc / cmdline" e verifique se a opção está realmente definida. Além disso, verifique as diferenças entre as arquiteturas com 'lscpu' ou 'cat / proc / cpuinfo'
Espero que isso ajude.