acpi_idle vs.

acpi_idle vs.

Existem dois servidores SLES 11:

SERVER311:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
acpi_idle
SERVER311:~ #

e:

SERVER705:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
intel_idle
SERVER705:~ #

Ambos tendo o:

intel_idle.max_cstate=0 processor.max_cstate=0

em: "/boot/grub/menu.lst", foram reinicializados.

A questão:qual é a diferença entre acpi_idle e intel_idle?

Responder1

Resposta curta: Ambas são implementações diferentes de drivers ociosos de CPU. acpi_idle é o driver padrão, suporta todas as arquiteturas de CPU, enquanto intel_idle é específico para CPUs Intel.

Mais detalhes: A API para um driver ocioso de 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 - loop inativo de hardware nativo para processadores Intel modernos * ...

/* * intel_idle é um driver cpuidle que carrega em processadores Intel específicos * no lugar do driver ACPI CPU_idle herdado. A intenção é * tornar o Linux mais eficiente nesses processadores, já que o intel_idle sabe * mais que ACPI, bem como tornar o Linux mais imune a bugs do BIOS ACPI. */

Portanto, para CPUs Intel modernas, você deve usar o driver intel_idle, pois ele foi projetado especificamente para aumentar a eficiência das CPUs Intel.

Então, por que algumas configurações seriam carregadas com intel_idle e outras com acpi_idle? Isto é o que afirma a mensagem de commit apresentando o driver intel_idle:

confirmar 2671717265ae6e720a9ba5f13fbec3a718983b65

Autor: Len Brown Data: Seg, 8 de março 14:07:30 2010 -0500

intel_idle: driver cpuidle de hardware nativo para os processadores Intel mais recentes

Este driver EXPERIMENTAL substitui acpi_idle em processadores Intel Atom, processadores Intel Core i3/i5/i7 e processadores Intel Xeon associados.

Ele não oferece suporte ao processador Intel Core2 ou anterior.

Para kernels configurados com ACPI, CONFIG_INTEL_IDLE=y permite que intel_idle teste antes do driver do processador ACPI. A inicialização com "intel_idle.max_cstate=0" desativa o intel_idle e o sistema recorrerá ao "acpi_idle" da ACPI.

Distribuições típicas do Linux carregam o módulo do processador ACPI antecipadamente, fazendo com que CONFIG_INTEL_IDLE=m não seja facilmente útil em plataformas ACPI.

intel_idle testa todos os processadores no momento module_init. Os processadores adicionados posteriormente serão limitados ao uso de C1 em modo inativo.

Assinado por: Len Brown

Então os motivos são:

  1. CPU não Intel no sistema ou arquiteturas Intel mais antigas.
  2. Não marcado CONFIG_INTEL_IDLE=y em .config
  3. Inicializando com intel_idle.max_cstate=0 no cmdline

Já que você disse que definiu o número 3 em ambas as configurações, a questão é por que uma delas carregou com intel_idle. Experimente 'cat /proc/cmdline' e certifique-se de que a opção esteja realmente definida. Além disso, verifique as diferenças entre as arquiteturas com 'lscpu' ou 'cat /proc/cpuinfo'

Responder2

A outra resposta resumiu muito bem as diferenças, intel_idle vs acpi_idle.

Fornecendo informações adicionais sobre como habilitar cada um dos drivers. Isso pressupõe que o kernel foi construído com CONFIG_INTEL_IDLE=y.

  • intel_idle: Habilite C-States no BIOS da plataforma e não use nenhum argumento de inicialização do kernel, então verifique se /sys/devices/system/cpu/cpuidle/current_drivermostra intel_idle.
  • acpi_idle: Habilite C-States no BIOS da plataforma, use o argumento de inicialização do kernel intel_idle.max_cstate=0, verifique se current_driver é acpi_idle.
  • Desative totalmente os estados C: Desative C-States no BIOS da plataforma, inclua o argumento de inicialização do kernel intel_idle.max_cstate=0, verifique se current_driver é none.

informação relacionada