
2 つの SLES 11 サーバーがあります。
SERVER311:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
acpi_idle
SERVER311:~ #
そして:
SERVER705:~ # cat /sys/devices/system/cpu/cpuidle/current_driver
intel_idle
SERVER705:~ #
両方:
intel_idle.max_cstate=0 processor.max_cstate=0
「/boot/grub/menu.lst」から再起動します。
質問:acpi_idleとintel_idleの違いは何ですか?
答え1
短い答え:どちらもCPUアイドルドライバを別々に実装したものです。 acpi_idle はデフォルトのドライバであり、すべての CPU アーキテクチャをサポートしますが、 intel_idle は Intel CPU 専用です。
詳しくは:CPUアイドルドライバのAPIはinclude / linux / cpuidle.hで定義されています。これは「CPUアイドル電力管理のための一般的なフレームワーク」を定義します。 acpi_idleドライバ(drivers/acpi/processor_idle.cで定義)は、すべてのCPUアーキテクチャに対してこの動作を実装します。 intel_idle(drivers/idle/intel_idle.cで定義)は、最新のIntel CPU用に設計されたアイドルドライバです(intel_idle.cヘッダーのコメントを参照)。
/ * * intel_idle.c - 最新のIntelプロセッサ用の基本ハードウェアアイドルループ* ...
/ * * intel_idleは、従来のACPI process_idleドライバの代わりに特定のIntelプロセッサに*ロードできるCPUidleドライバです。目的は、*intel_idle*がACPIについてもっと知っているので、Linuxをこれらのプロセッサでより効率的にし、LinuxをACPI BIOSのバグに免疫することです。 */
そのため、最新のIntel CPUの場合は、Intel CPUの効率を向上させるように特別に設計されたintel_idleドライバを使用する必要があります。
それでは、一部の設定がintel_idleをロードし、一部の設定がacpi_idleをロードするのはなぜですか?これは、intel_idleドライバを紹介するコミットメッセージに記載されているものです。
2671717265ae6e720a9ba5f13fbec3a718983b65送信
寄稿者: Len Brown 日付: 2010年3月8日 月曜日 14:07:30 -0500
intel_idle:最新のIntelプロセッサ用の基本ハードウェアCPUidleドライバ
この実験用ドライバは、Intel Atomプロセッサ、Intel Core i3/i5/i7プロセッサ、および関連するIntel Xeonプロセッサのacpi_idleを置き換えます。
Intel Core2以前のプロセッサはサポートされていません。
ACPI で構成されたカーネルの場合、CONFIG_INTEL_IDLE=y を使用すると、 intel_idle が ACPI プロセッサー・ドライバーの前にプローブできます。 "intel_idle.max_cstate=0" で起動すると intel_idle が無効になり、システムは ACPI の "acpi_idle" に置き換えられます。
一般的なLinuxディストリビューションはACPIプロセッサモジュールを早期にロードするため、ACPIプラットフォームではCONFIG_INTEL_IDLE = mの使いやすさが低下します。
intel_idle は module_init 中にすべてのプロセッサを調べます。後でホット追加されるプロセッサは、アイドル状態でC1を使用するように制限される。
署名者:レンブラウン
その理由は次のとおりです。
- 非Intel CPUまたはシステムの古いIntelアーキテクチャ。
- CONFIG_INTEL_IDLE=y が .config に表示されませんでした。
- cmdline で intel_idle.max_cstate=0 を使用して開始します。
両方の設定で#3を設定したと言われたので、設定の1つがintel_idleをロードする理由が問題です。 "cat /proc/cmdline"を試して、オプションが実際に設定されていることを確認してください。また、「lscpu」または「cat /proc/cpuinfo」を使用して、アーキテクチャ間の違いを確認してください。
答え2
もう一つの答えは、 intel_idle と acpi_idle の違いをすばやくまとめています。
各ドライバを有効にする方法に関する追加情報を提供します。これはカーネルがCONFIG_INTEL_IDLE = yで構築されたと仮定します。
- インテルアイドル
/sys/devices/system/cpu/cpuidle/current_driver
:カーネルブートパラメータを使用せずにプラットフォームBIOSでC-Stateを有効にしてから表示されることを確認しますintel_idle
。 - acpi_idle:プラットフォームBIOSでC-Statesを有効にし、intel_idle.max_cstate = 0カーネル起動パラメータを使用し、current_driverが存在することを確認します
acpi_idle
。 - C状態を完全に無効にします。:intel_idle.max_cstate = 0カーネル起動パラメータを含むプラットフォームBIOSでC-Stateを無効にし、current_driverが存在することを確認します
none
。