目次


IBM AIX と Linux on Power の間でのプロセッサー使用率の違い ― 同一条件での比較

Comments

はじめに

まったく同じハードウェア (同一条件での比較) とワークロード構成の場合、Linux on Power OS でレポートされるプロセッサー使用率は、AIX on Power でレポートされるプロセッサー使用率を大幅に下回ります。この記事では、これら 2 つのオペレーティング・システムの間でプロセッサー使用率を比較することができない理由と、これらのオペレーティング・システムの間でプロセッサー使用率に違いがある理由、そしてそれぞれのオペレーティング・システムでの使用率メトリクスの計算方法を説明するとともに、その計算の背後にある意図と、プロセッサー使用率に差を生じさせる OS レベルの要因についても説明します。

注: この記事は、2 つのオペレーティング・システムの長所と短所を比べることを目的としているのではなく、単に IBM Power プラットフォームでの 2 つのオペレーティング・システムの間にはプロセッサー使用率に違いがある理由を説明することだけを目的としています。

事例研究

この事例研究は、IBM PowerVM ハイパーバイザー上で実行される IBM POWER7 プロセッサー・ベースのシステムで、IBM Power ハードウェアのネットワーク・パフォーマンス分析で使用される (オープンソース化された Netperf と同様の) ワークロードを利用して行いました。この事例研究では、同一のハードウェアおよびソフトウェア環境で、AIX 7.1 と RHEL (Red Hat Enterprise Linux) 7.0 のプロセッサー使用率を比較しています。

システムの詳細

  • AIX: 7.1
  • Linux: Red Hat Enterprise Linux Server 7.0 (BE)
  • プロセッサー: POWER7
  • ハイパーバイザー: PowerVM
  • コア: 8 (SMT4)
  • モデル: IBM、9179-MHC

注: 論理区画 (LPAR) は AIX および RHEL7.0 共に、同じ CEC (Central Electronics Complex) 上にあります。

完全に同じハードウェア構成 (メモリー、ネットワーク・アダプター、ワークロードなど) の 8 コア POWER7 プロセッサー・ベースのシステムで、サーバー・クライアント間の 80 の並列ソケット接続にワークロードを適用します。シナリオを再現するために、このワークロードでは意図的に 8 コアすべてのプロセッサーで使用率が 100% に達することはないようにしています。AIX でのプロセッサー使用率は 24% とレポートされた一方、Linux on Power (RHEL 7.0) でレポートされたプロセッサー使用率は約 9% でした。これは、AIX と Linux でのプロセッサー使用率の違いは、ハードウェアとワークロードを同一の条件にした場合、約 3 分の 1 であるということです。

注: この事例研究は、未加工のパフォーマンス・データに基づいています。つまり、デフォルトのインストールには、例えばワークロード・スレッドを別のコアの別の論理プロセッサーに手作業でバインドするなどといった、チューニングは一切加えていません。また、利用可能なすべてのコアでワークロードによるプロセッサー使用率が 100% に達することはないという点も、ほとんどの場合に当てはまります。

以下のネットワーク・ワークロードの結果を参照してください。これらの数値は、AIX システムおよび Linux システム上で同じネットワーク・ワークロードが生成されたときに得られた結果です。POWER7 プロセッサー・ベースのシステムには 4 つの仮想パーティションがあり、そのうちの 2 つは AIX LPAR、そして残りの 2 つは Linux LPAR です。同じホスト上の 2 つの AIX パーティションと 2 つの Linux パーティションに対してテストを行いました。

AIX でのワークロードの結果

図 1. AIX でのプロセッサー使用率の結果

ネットワーク・ワークロードとして実行したのは、2 つのパーティションの間で一定期間、サイズが 1 バイト、4 バイト、8 バイトのメッセージを 80 のソケット接続で転送する、標準的な TCP ラウンドロビン (RR) テストです。図 1 を見るとわかるように、このワークロードに対してサーバー (c700c02) はプロセッサー使用率を 24% とレポートし、クライアントは 28% とレポートしています。

図 2. AIX 上のコアに対するスレッド・スケジューリングに関する SAR の出力

ワークロードを開始してすぐにキャプチャーした図 2 には、初期ステージから開始されたスレッドを AIX のデフォルト・スケジューラーがコア間でどのように配分しているかが示されています。スレッドは、コア間で均等に配分されています。

>Linux on Power でのワークロードの結果

図 3. Linux on Power でのプロセッサー使用率の結果

図 3 に、Linux on Power での結果を示します。メッセージ転送サイズが 1 バイト、4 バイト、8 バイトという同じワークロード構成に対して、サーバー (c700c01) は 10%、クライアント (c700c03) は 7% というプロセッサー使用率をレポートしています。

Linux on Power がレポートしたプロセッサー使用率は、AIX on IBM Power プラットフォームでのプロセッサー使用率の約 3 分の 1 です。

図 4. Linux on Power 上のコア全体のスレッド・スケジューリングに関する SAR の出力

図 4 からわかるように、デフォルトの Linux スケジューラー (RE 7.0 からは deadline がデフォルトのスケジューラーになっています) は若い番号のコアからスレッド (使用可能な最初の 8 つのハードウェア・スレッド) のスケジューリングを開始し、時間とともに徐々にコア全体にワークロードを分散しています。

AIX でのプロセッサー使用率

AIX でのプロセッサー使用率レポートは、libperfstat.a ライブラリーに含まれるシステム・コール perfstat_cpu_util() によって取得されます。レポートされるプロセッサー使用率は、PURR と SPURR による計算に基づきます。

図 5. perfstat ライブラリー
図 6. IBM POWER8 での SMT のパフォーマンス

図 6 に示されている、同時マルチスレッド化したとき (SMT にしたとき) のパフォーマンス特性は、IBM POWER8 仕様から抜粋したものです。この図から、POWER8 で SMT8 にしたときのパフォーマンスは、シングルスレッド化したときのパフォーマンスに比べ、2.2 倍優れていることがわかります。SMP マルチスレッド化システムでは、シングルスレッドから SMT8 まで (IBM POWER7 の場合は、シングルスレッドから SMT4 まで) 最大のパフォーマンスとして期待される値を設定するために、PURR ベースと SPURR ベースのプロセッサー使用率が導入されました。PURR と SPURR を導入したことが、CAPEX (導入費用) 計画を立てる上でも、シングルスレッド化モードと比べたときの SMT8 モードでのパフォーマンスとして期待される実際の値を設定する上でも、非常に役に立っています。

例 1: シングルスレッド化したアプリケーションを IBM POWER7 SMT4 システム上で実行するとします。このアプリケーションを実行するコアの使用率は、コアが使用された割合値 (physc) と PURR および SPURR の計算に基づき、約 63% から 65% になります。コアの使用率がどのような仕組みで 65% になるかについての詳細は、記事「Understanding CPU Utilization on AIX」を参照してください。

図 7. シングルスレッド化したときのコア 0 のパフォーマンス

使用率の違いを生み出すもう 1 つの要因は、OS スケジューリング・ポリシーです。AIX には、アプリケーション・スレッドを SMP システムのコアに均等に配分するための CPU フォールディングという機能があります。

例 2: マルチスレッド化したアプリケーションが、4 つのスレッドでジョブを完了するとします。例えば、このアプリケーションを 4 コアの POWER7 プロセッサー・ベースのシステム上で実行する場合、AIX のデフォルト・スケジューラーのポリシーにより、アプリケーションは使用可能なすべてのコアにワークロードを均等に分散し、4 つのスレッドを 4 つの異なるコアにスケジューリングします (図 8 を参照)。上記の PURR と SPURR についての理解に基づくと、4 つのコアそれぞれの physc 値は、63% から 65% のビジー率をレポートすることになり、システム全体のプロセッサー使用率は、63% から 65% のビジー率となります。

図 8. AIX でのマルチスレッド化したアプリケーションのスケジューリング

Linux on Power でのプロセッサー使用率

Linux on Power でレポートされるプロセッサー使用率は、主に時間ベースの /proc/stat 値に基づいています。しかも Linux on Power では、PURR または SPURR ベースの計算はレポートされません。

ここで先ほどと同じ例 1 を考えてみます。このシングルスレッド化したアプリケーションを AIX OS 上で実行すると、このアプリケーションを実行するコアは 63% から 65% という使用率をレポートするのに対し、Linux OS (RHEL) 上で実行した場合は 25% という使用率をレポートします。これは、SMT4 が有効にされているためです。

今度は先ほどの例 2 と同じくマルチスレッド化したアプリケーションを Linux on Power 上で実行することを考えてみましょう。この場合、コア 0 は 100% の使用率を示します。その理由は、RHEL 6.0 までの CFQ (Completely Fair Queuing) スケジューラーと RHEL 7.0 以降の deadline スケジューラーをベースとするLinux カーネル (RHEL) は、チューニングなしのデフォルトでは、まず始めに使用可能な最初の 8 つのハードウェア・スレッドにすべてのワークロードをスケジューリングしようとするからです。図 9 に、実行時の状況が示されています。このアプリケーションは 4 つにスレッド化されるため、そのタスクをコア 0 で完了します。

従って、コア 0 全体でのプロセッサー使用率は 100% になり、その他すべてのコア (コア 1 から コア 3) でのプロセッサー使用率は 0% になります。これは 4 コア・システムであるため、[(1%4)*100]= 25% という結果になるわけです。

図 9. Linux on Power 上でのマルチスレッド化したアプリケーションのスケジューリング

図 9 に示されているのは、この事例研究での Linux on Power でのデフォルトのスレッド・スケジューリング動作です。

まとめ

マルチコア SMT システムにおけるシステム全体でのプロセッサー使用率を AIX と Linux on Power とで、同じワークロード、同じ Power ハードウェア構成で比較することはできません。それは、計算方法がまったく異なるからです。Linux on Power でレポートされるシステム全体でのプロセッサー使用率は、完全に時間ベースの /proc/stat から計算されます。一方、AIX が計算のベースとする PURR と SPURR は、CAPEX 計画寄りで、SMP および SMT 環境を使用する、最も進化したプロセッサーに関して、より現実に近くて正確なプロセッサー使用率を映し出します。POWER8 でのシングルスレッド化したときと SMT8 との間の実際のパフォーマンスの違いは、2.2 倍です。時間ベースの計算では、シングルスレッド化したときのプロセッサー使用率のレポートは、それぞれの SMT スレッドと実行ユニットが、他の SMT スレッドと実行ユニットとは独立しているかのような印象を与えます。そのため、SMT8 モードでは 8 倍優れたパフォーマンスを実現できると思いがちですが、実際にはそうではありません。コアを 100% 利用するわけではない特定のワークロードの場合、Linux on Power システムでレポートされるプロセッサー使用率が AIX on Power プラットフォームの場合と比べて低くなっている理由の 1 つに、実際のプロセッサー使用率には 2.2 倍の差があることが、計算では考慮されないという要因があります。

参照資料


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=1024299
ArticleTitle=IBM AIX と Linux on Power の間でのプロセッサー使用率の違い ― 同一条件での比較
publish-date=12172015