目次
サーバーの電源管理、電力管理とLinuxの関係
今回は、サーバーの電源管理、電力管理とLinuxの関係についての話題です。「電源なんて、Linuxと何も関係ないのでは?」と思われるかもしれませんが、実は、電源管理・電力管理は、OSとの関わりも強く、Linuxサーバー導入において、運用面の観点でも詳細な検討が必要になります。以下では、電源管理に関する非常に基礎的な内容をご紹介し、Linuxとの関係について解説します。
運用面の利便性に関わるACPI
みなさんは、パソコンのシャットダウンをどのような操作で行っていますか?最近のパソコンでは、電源ボタンを押すと、OSのシャットダウン処理(または、サスペンドやハイバネーション)が始まり、電源がオフになるように設定されているものがほとんどです。この電源ボタンを押すと、シャットダウン処理が行われるのは、OSとハードウェアの電源管理機能が連携することで実現しています。この電源管理機能は、ACPIと呼ばれます。
ACPIは、Advanced Configuration and Power Interfaceの略で、電源管理を制御するインタフェースを提供します。ハードウェア側でACPIの機能を有効にすると、Linux OSでシャットダウン時に電源を自動的にオフすることが可能です。ACPIによる自動電源断機能により、Linuxのシャットダウン時に、管理者がリモートにあるサーバーの電源ボタンを物理的に操作することなく電源をオフにすることができるため、管理者による電源断の管理の手間を省くことができます。
また、シャットダウンだけでなく、Wake On LAN(通称WOL)と呼ばれるLAN経由で電源をオンする場合にも、このACPIが利用されています。サーバーのハードウェア設定において、WOLを使って電源をオンする場合は、ACPIの設定を適切に行っておく必要があります。
Linux環境では、WOLを使った電源オンを行うためのパケットを送信するツール(ether-wakeなどが有名)が存在します。WOLを行うツールでは、電源オンを行うサーバーのNICのMACアドレスを指定しますが、電源オンを行うサーバー側のACPIが正しく設定されていないと、いくらWOLを行うツールでパケットを送信しても、サーバーの電源がオンにならないといった運用上の問題を引き起こします。
図1. ACPIとLinuxサーバーの運用
ACPI SLITとLinuxの関係
最近のサーバーでは、Advanced Configuration and Power Interface System Locality Information Table(通称、ACPI SLIT)を設定できます。ACPI SLITは、CPU、メモリ、入出力装置(I/Oサブシステム)間の相対アクセス時間を定義します。ACPI SLIT をサポートするLinux OSにおいて、この情報を使ってワークロードの割り当てを効率化し、パフォーマンスを改善できる可能性があります。
ほとんどのHPE ProLiant Gen8サーバー、および、HPE ProLiant Gen9サーバーでは、デフォルトで無効になっています。しかし、一般に、低遅延アプリケーションを稼働させるLinux環境の場合は、ACPI SLITの設定を有効にすることが推奨されています。
図2. HPE ProLiant Gen9サーバーでのACPI SLITの設定
電力管理の仕組みとLinux OSの関係
パワーレギュレーターは HPE が開発した電力管理の仕組みで、HPE ProLiantサーバーに搭載されています。CPUの電力使用状況と性能を制御します。Intel社、あるいは、AMD社のCPUを搭載したHPE ProLiantサーバーの場合は、ファームウェア内にパワーレギュレーターが実装されています。
また、HPEが開発したパワーキャッピング(消費電力上限)と呼ばれる、消費電力の上限値を管理者側で制限できる機能などがあります。パワーレギュレーターとパワーキャッピングは、連携動作しますが、Linux環境でパワーキャッピングが利用できるようにするため、Linuxとサーバーのファームウェア間で双方向の通信メカニズムが提供されています。
この通信メカニズムは、「Collaborative Power Control」(通称CPC)と呼ばれています。さらに、パワーキャッピングよりも迅速に電力消費量を監視し、サーバーの消費電力の上限値を維持するダイナミックパワーキャッピング(動的消費電力上限)と呼ばれる仕組みも存在します。
電力管理の仕組み | 説明 |
---|---|
パワーレギュレーター | CPUの電力消費と性能を制御、静的制御と動的制御が存在 |
消費電力上限 | 管理者がサーバーの消費電力を制限 |
動的消費電力上限 | 消費電力上限よりも短いサイクルで電力監視を行う |
パワーレギュレーターの種類とLinux OSの関係
インテル社とAMD社が提供するサーバー用のCPUには、電力の情報を保持するレジスタが搭載されているのですが、このレジスタを使って、P-stateと呼ばれるCPUの周波数と電圧の状態を切り替えることができます。P-stateは、特定の動作周波数と動作電圧の組み合わせ(セット)が複数定義されています。
CPUの動作周波数と電圧が最大の状態を「P0」と呼び、消費電力は最大になります。一方、動作周波数と電圧レベルが低いP-stateを設定すれば、当然、消費電力を低減できます。P-stateは、サーバーに搭載されたファームウェア、あるいは、Linux OSのいずれかで制御を行います。
通常、x86サーバーでは、ファームウェアでP-stateを管理するか、あるいは、Linux OSで行うかどうかのオプションを選択が可能です。サーバーにインストールされたLinux OSからP-state で電力管理を行う場合、ドライバーのインストールが必要です。一方、ファームウェアを使用する方法では、システムの起動時にP-state を制御し、OS非依存であるため、P-state による電力管理をサポートしていない OS 環境にも対応できます。
一般に、CPUの動作周波数と電圧が最大の状態である「P0」あるいは、その逆の最小の状態は、ファームウェアがP-Stateを制御し、CPUのP-Stateは、固定されます。この場合は、一般にCPCを無効にすることが推奨されています。
図3. CPUのP-stateの制御(Linuxによる制御とROMによる制御)
HPE ProLiantサーバーでは、パワーレギュレーターとして、以下の4種類が存在します。
- ダイナミックパワーセービングモード
- スタティックローパワーモード
- スタティックハイパワーモード
- OSコントロールモード
ダイナミックパワーセービングモードでは、CPCを無効に設定すると、ファームウェアでP-stateを制御します。CPCを有効に設定すると、Linuxとファームウェアの連携動作でCPUの動作周波数を変更します。スタティックローパワーモードとスタティックハイパワーモードは、いずれもファームウェアがP-stateを制御するため、OS非依存でCPUの動作周波数を固定で設定します。最後のOSコントロールモードは、Linux OSがP-stateを制御しますので、OS管理者のオペレーションによって、CPUの動作周波数が変更できます。
図4. HPE ProLiantサーバーのパワーレギュレーターの設定は、オンボードの管理チップ「iLO4」が提供するWeb管理画面で変更ができる
今回は、Linuxサーバーを導入する際のサーバーのCPUや電源管理の勘所を簡単にご紹介しました。システムを正常に稼働させるには、ハードウェアの設定以外にもLinux OS上での設定も必要ですが、まずは、OSをインストールする前段階でのハードウェアの設定を正しく行う必要があります。
通常は、システム要件のヒアリングシートを使って、専門の技術者が工場出荷時に設定を行います。ご紹介した以外にも様々な設定がありますが、用途に応じた設定のベストプラクティスは、技術文書として公開されているものも少なくありません。ベンダーが提供するベストプラクティスの技術文書をチェックしておくようにしましょう。
【筆者プロフィール】
古賀政純(こが・まさずみ)
日本ヒューレット・パッカード株式会社
オープンソース・Linuxテクノロジーエバンジェリスト
兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国ヒューレット・パッカードからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。
現在は、日本ヒューレット・パッカードにて、Hadoop、Spark、Docker、OpenStack、Linux、FreeBSDなどのサーバー基盤のプリセールスSE、文書執筆を担当。日本ヒューレット・パッカードが認定するオープンソース・Linuxテクノロジーエバンジェリストとして、メディアでの連載記事執筆、講演活動なども行っている。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「Mesos実践ガイド」「Docker 実践ガイド」「CentOS 7実践ガイド」「OpenStack 実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード。