acpi_idle vs. intel_idle

Clash Royale CLAN TAG#URR8PPP
up vote
2
down vote
favorite
There are two SLES 11 servers:
SERVER311:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
acpi_idle
SERVER311:~ #
and:
SERVER705:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
intel_idle
SERVER705:~ #
Both having the:
intel_idle.max_cstate=0 processor.max_cstate=0
in the: "/boot/grub/menu.lst", were rebooted.
The question: what is the difference between acpi_idle and intel_idle ?
cpu sles
add a comment |Â
up vote
2
down vote
favorite
There are two SLES 11 servers:
SERVER311:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
acpi_idle
SERVER311:~ #
and:
SERVER705:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
intel_idle
SERVER705:~ #
Both having the:
intel_idle.max_cstate=0 processor.max_cstate=0
in the: "/boot/grub/menu.lst", were rebooted.
The question: what is the difference between acpi_idle and intel_idle ?
cpu sles
This question and its answer contain a deep dive into theintel_idledriver and also compare its behavior to theacpi_driver.
â vallismortis
Aug 13 at 16:59
add a comment |Â
up vote
2
down vote
favorite
up vote
2
down vote
favorite
There are two SLES 11 servers:
SERVER311:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
acpi_idle
SERVER311:~ #
and:
SERVER705:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
intel_idle
SERVER705:~ #
Both having the:
intel_idle.max_cstate=0 processor.max_cstate=0
in the: "/boot/grub/menu.lst", were rebooted.
The question: what is the difference between acpi_idle and intel_idle ?
cpu sles
There are two SLES 11 servers:
SERVER311:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
acpi_idle
SERVER311:~ #
and:
SERVER705:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
intel_idle
SERVER705:~ #
Both having the:
intel_idle.max_cstate=0 processor.max_cstate=0
in the: "/boot/grub/menu.lst", were rebooted.
The question: what is the difference between acpi_idle and intel_idle ?
cpu sles
asked Nov 20 '17 at 13:40
Peter
6612
6612
This question and its answer contain a deep dive into theintel_idledriver and also compare its behavior to theacpi_driver.
â vallismortis
Aug 13 at 16:59
add a comment |Â
This question and its answer contain a deep dive into theintel_idledriver and also compare its behavior to theacpi_driver.
â vallismortis
Aug 13 at 16:59
This question and its answer contain a deep dive into the
intel_idle driver and also compare its behavior to the acpi_driver.â vallismortis
Aug 13 at 16:59
This question and its answer contain a deep dive into the
intel_idle driver and also compare its behavior to the acpi_driver.â vallismortis
Aug 13 at 16:59
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
Short Answer: Both are different implementations of CPU idle drivers. acpi_idle is the default driver, supports all CPU architectures, while intel_idle is Intel CPUs specific.
More details:
The API for a CPU idle driver is defined in include/linux/cpuidle.h. It defines the "generic framework for CPU idle power management". acpi_idle driver (defined in drivers/acpi/processor_idle.c) implements this behaviour for all CPU architectures. intel_idle (defined in drivers/idle/intel_idle.c) is an idle driver designed specifically for modern Intel CPUs (from the comments in the intel_idle.c header):
/* * 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. */
So for modern Intel CPUs you should use the intel_idle driver since it is designed specifically for increasing Intel CPUs' efficiency.
So why would some setups load with intel_idle and some with acpi_idle? This is what stated in the commit message introducing the intel_idle driver:
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
So the reasons are:
- Non-Intel CPU on the system or older Intel architectures.
- Not marked CONFIG_INTEL_IDLE=y in .config
- Booting with intel_idle.max_cstate=0 in cmdline
Since you said you set #3 on both setups the question is why one of them loaded with intel_idle. Try 'cat /proc/cmdline' and make sure the option is really set. Also, check the differences between the architectures with 'lscpu' or 'cat /proc/cpuinfo'
Hope this helps.
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
Short Answer: Both are different implementations of CPU idle drivers. acpi_idle is the default driver, supports all CPU architectures, while intel_idle is Intel CPUs specific.
More details:
The API for a CPU idle driver is defined in include/linux/cpuidle.h. It defines the "generic framework for CPU idle power management". acpi_idle driver (defined in drivers/acpi/processor_idle.c) implements this behaviour for all CPU architectures. intel_idle (defined in drivers/idle/intel_idle.c) is an idle driver designed specifically for modern Intel CPUs (from the comments in the intel_idle.c header):
/* * 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. */
So for modern Intel CPUs you should use the intel_idle driver since it is designed specifically for increasing Intel CPUs' efficiency.
So why would some setups load with intel_idle and some with acpi_idle? This is what stated in the commit message introducing the intel_idle driver:
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
So the reasons are:
- Non-Intel CPU on the system or older Intel architectures.
- Not marked CONFIG_INTEL_IDLE=y in .config
- Booting with intel_idle.max_cstate=0 in cmdline
Since you said you set #3 on both setups the question is why one of them loaded with intel_idle. Try 'cat /proc/cmdline' and make sure the option is really set. Also, check the differences between the architectures with 'lscpu' or 'cat /proc/cpuinfo'
Hope this helps.
add a comment |Â
up vote
2
down vote
accepted
Short Answer: Both are different implementations of CPU idle drivers. acpi_idle is the default driver, supports all CPU architectures, while intel_idle is Intel CPUs specific.
More details:
The API for a CPU idle driver is defined in include/linux/cpuidle.h. It defines the "generic framework for CPU idle power management". acpi_idle driver (defined in drivers/acpi/processor_idle.c) implements this behaviour for all CPU architectures. intel_idle (defined in drivers/idle/intel_idle.c) is an idle driver designed specifically for modern Intel CPUs (from the comments in the intel_idle.c header):
/* * 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. */
So for modern Intel CPUs you should use the intel_idle driver since it is designed specifically for increasing Intel CPUs' efficiency.
So why would some setups load with intel_idle and some with acpi_idle? This is what stated in the commit message introducing the intel_idle driver:
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
So the reasons are:
- Non-Intel CPU on the system or older Intel architectures.
- Not marked CONFIG_INTEL_IDLE=y in .config
- Booting with intel_idle.max_cstate=0 in cmdline
Since you said you set #3 on both setups the question is why one of them loaded with intel_idle. Try 'cat /proc/cmdline' and make sure the option is really set. Also, check the differences between the architectures with 'lscpu' or 'cat /proc/cpuinfo'
Hope this helps.
add a comment |Â
up vote
2
down vote
accepted
up vote
2
down vote
accepted
Short Answer: Both are different implementations of CPU idle drivers. acpi_idle is the default driver, supports all CPU architectures, while intel_idle is Intel CPUs specific.
More details:
The API for a CPU idle driver is defined in include/linux/cpuidle.h. It defines the "generic framework for CPU idle power management". acpi_idle driver (defined in drivers/acpi/processor_idle.c) implements this behaviour for all CPU architectures. intel_idle (defined in drivers/idle/intel_idle.c) is an idle driver designed specifically for modern Intel CPUs (from the comments in the intel_idle.c header):
/* * 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. */
So for modern Intel CPUs you should use the intel_idle driver since it is designed specifically for increasing Intel CPUs' efficiency.
So why would some setups load with intel_idle and some with acpi_idle? This is what stated in the commit message introducing the intel_idle driver:
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
So the reasons are:
- Non-Intel CPU on the system or older Intel architectures.
- Not marked CONFIG_INTEL_IDLE=y in .config
- Booting with intel_idle.max_cstate=0 in cmdline
Since you said you set #3 on both setups the question is why one of them loaded with intel_idle. Try 'cat /proc/cmdline' and make sure the option is really set. Also, check the differences between the architectures with 'lscpu' or 'cat /proc/cpuinfo'
Hope this helps.
Short Answer: Both are different implementations of CPU idle drivers. acpi_idle is the default driver, supports all CPU architectures, while intel_idle is Intel CPUs specific.
More details:
The API for a CPU idle driver is defined in include/linux/cpuidle.h. It defines the "generic framework for CPU idle power management". acpi_idle driver (defined in drivers/acpi/processor_idle.c) implements this behaviour for all CPU architectures. intel_idle (defined in drivers/idle/intel_idle.c) is an idle driver designed specifically for modern Intel CPUs (from the comments in the intel_idle.c header):
/* * 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. */
So for modern Intel CPUs you should use the intel_idle driver since it is designed specifically for increasing Intel CPUs' efficiency.
So why would some setups load with intel_idle and some with acpi_idle? This is what stated in the commit message introducing the intel_idle driver:
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
So the reasons are:
- Non-Intel CPU on the system or older Intel architectures.
- Not marked CONFIG_INTEL_IDLE=y in .config
- Booting with intel_idle.max_cstate=0 in cmdline
Since you said you set #3 on both setups the question is why one of them loaded with intel_idle. Try 'cat /proc/cmdline' and make sure the option is really set. Also, check the differences between the architectures with 'lscpu' or 'cat /proc/cpuinfo'
Hope this helps.
answered Nov 20 '17 at 21:02
Tgilgul
21127
21127
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f405775%2facpi-idle-vs-intel-idle%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
This question and its answer contain a deep dive into the
intel_idledriver and also compare its behavior to theacpi_driver.â vallismortis
Aug 13 at 16:59