ハードウェアの設定項目
Linuxサーバーに限った話ではありませんが、ハードウェアの設定は、Webフロントエンド、HAクラスター、仮想化基盤など、その用途によって大きく異なります。そのため、Linuxをインストールする前に、用途に応じたハードウェア設定が必要です。標準的なインテルアーキテクチャのx86サーバーでは、様々なハードウェア設定項目がありますが、代表的なものとしては、以下があげられます。
- CPUのHyper-Threading(以下、HTと表記)
- CPUの仮想化支援機能
- 電源管理(ACPI、APM 等)、冷却、温度管理
- 性能チューニング(DMA、ノードインターリーブ、NUMA、QPI 等)
- OSの起動順序(ローカルブート、CDブート、USBブート、PXEブート等)
- RAIDコントローラー
- ファイバーチャネル
- PCIデバイス管理
- データ通信用のネットワークポート
- 遠隔管理用のネットワークポート
- シリアルポート
- 日付、時刻
- セキュリティ
- 資産管理
上記は、代表的なx86サーバーでの主な設定項目です。ベンダーのセットアップサービスを購入しない場合、上記の設定項目は、デフォルト値で出荷されるため、当然、実際に使う用途に最適な設定になっていません。そこで、Linuxサーバーの用途によってハードウェアの設定を行う必要があります。ハードウェアの具体的な設定手順を知ることも重要ですが、まずは、ハードウェア設定項目とLinuxの関係について、基礎的な内容をおさえておくことが必要です。
図1. HPE ProLiant Gen9サーバーのBIOS設定画面。様々な設定項目が存在する。Linuxサーバーの用途によって設定が異なる。通常は、ヒアリングシートに基づいて、ベンダーやユーザーのIT部門の技術者が設定を行う場合が多い。
以下では、上記の設定項目のうち、CPUのHyper-Threading(HT)機能とLinuxの関係について簡単に解説します。
CPUのHyper-Threading(HT)機能とLinuxの関係
最近は、x86サーバー向けCPU(Intel Xeonプロセッサ)やパソコン向けCPUなど、Intel社製のCPUでは、Hyper-Threading(HT)の機能が実装されています。HTは、CPUにおけるマルチタスク処理を実現するIntel社独自の技術です。このHTを有効にすると、1個の物理CPUコアで独立した2つのスレッドを実行できます。すなわち、物理CPUコアに対し論理コアが2倍に増えます。Linuxにおいては、論理コアを使うことで、システム全体の性能が向上する場合があります。
ただし、HTが有効になっていると、論理コアは、ハードウェア資源を共有しているため、共有しているハードウェア資源の取り合いが発生すると、オーバーヘッドとして性能劣化が発生する場合もあります。HTを利用すべきかどうかの判断は、稼働させるアプリケーションとサーバーの構成に大きく依存します。性能向上がみられるアプリケーションもあれば、性能が劣化するアプリケーションも存在します。
例えば、Linuxで稼働するビッグデータ分析ソフトウェアで知られるHadoop(ハドゥープ)のシステムでは、HTを有効にすると、CPU処理が多いアプリケーションで性能改善が見られる傾向があります。ヒューレット・パッカード・エンタープライズ(HPE)は、Linuxで稼働するHadoop基盤において、HPE Apolloサーバーに搭載されているCPUのHT機能を有効にすることを推奨しています。これについては、以下の技術文書に記載があります。
●HPEが提供するHadoopの技術文書:
https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA6-7444ENW.pdf
しかし、低遅延のアプリケーションが稼働するようなシステムにおいては、逆にHTを無効にすることが推奨されています。このため、本番環境でのアプリケーションの実稼働前に、テスト環境において、本番環境と同じハードウェア設定で稼働させ、HTによる性能向上を評価することが強く推奨されています。HPEでは、Linux環境で低遅延アプリケーションを稼働させる際のハードウェアの設定に関する技術文書を提供しています。
●Linux環境で低遅延アプリケーションを稼働させる際の設定に関する技術文書:
HTとハイパーバイザー型の仮想化基盤
ハイパーバイザー型の仮想化基盤やクラウド基盤では、仮想マシンにCPUリソースを割り当てます。仮想化基盤の場合、集約度を向上させるために仮想マシンの数を増やすと、その分だけ、CPUコアが必要になります。できるだけ多くのCPUコアを仮想マシンに割り当てる必要があるため、仮想化基盤では、HTを有効するのが一般的です。しかし、HTはCPUコアとみなすことはできるものの、HTによって性能を発揮できるかどうかは稼働するワークロードのシナリオによって異なるため、通常のCPUコアと同等のパフォーマンスを、HTによって提供される論理コアに100%期待することはできない点に注意が必要です。
図2. HPE ProLiantサーバーにおけるHTの設定画面
このように、ビッグデータ分析基盤や仮想化基盤では、HTを有効にしますが、逆に低遅延アプリケーションを実行する場合は、無効にするといった運用もあるため、ハードウェアの設定は、用途によって異なることを知っておく必要があります。
巷では、Linux OS側でチューニングすればある程度性能向上が期待できるため、ハードウェアの設定は気にしなくてもよいという意見が散見されますが、大規模サーバー環境や非常に高負荷なシステムにおいては、ハードウェア側での設定を誤ると、性能面で非常に不利な状況に陥るだけでなく、サーバーシステム全体の安定稼働に問題が生じる可能性が大いにあります。
また、ハードウェアの設定変更、とくにBIOSでの設定変更は、OSの再起動を伴います。そのため、計画停止などシステムの運用面でも注意が必要です。
図3. Hyper-Threading(HT)の機能と用途の関係
今回は、CPUのHyper-Threading(HT)機能とLinuxの関係や用途について簡単に解説しました。Linux OSをインストールする前段階で必要となるCPUのHTに関する基礎知識を身につけ、用途に応じたハードウェア設定を行ってみてください。
次回は、CPUの仮想化支援機能とLinuxの関係について解説します。お楽しみに。
【筆者プロフィール】
古賀政純(こが・まさずみ)
日本ヒューレット・パッカード株式会社
オープンソース・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実践入門」などがある。趣味はレーシングカートとビリヤード。