Jump to content 日本-日本語

製品  >  ソフトウェア  >  HP- UX Developer Edge

J2EE運用の新しい常識、「パーティショニング」を検証する

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む
J2EE運用の新しい常識、「パーティショニング」を検証する J2EE運用の新しい常識、「パーティショニング」を検証する
J2EE運用の新しい常識、「パーティショニング」を検証する
J2EEに立ちふさがる「壁」
「パーティショニング」を導入せよ

「パーティショニング」を導入せよ


  コア氏は、J2EEサーバの運用において「パーティショニング」の概念を導入することが、この壁を打ち破るために不可欠であると説明する。「特に、JDBCのPreparedStatement(コンパイル済みSQL)やEJBのEntity Bean(DBアクセス用コンポーネント)のキャッシュ効率を高めるには、パーティショニングが非常に重要」(同氏)という。

パーティショニングとは、1台のサーバに備わるリソース(CPUやメモリ、ディスクなど)を論理的もしくは物理的に分割し、それぞれに別々のアプリケーションを割り当てる技術。古くはメインフレームの時代から実装されてきたものである。近年では、サーバ・コンソリデーションの浸透にともない、ハイエンドのUNIXマシンにおけるパーティショニング機能の発展が顕著である。

そこで以下、パーティショニングの具体例として、HPのItanium ® 2プロセッサー搭載サーバ「HP Integrityサーバ」において実装されているパーティショニング機能、「プロセッサー・セット(pset)」と「Cell Local Memory」について説明しよう。


psetによるCPUのパーティショニング


  psetは、CPUリソースのパーティショニングを可能にするテクノロジーであり、以下の特長を備えている。
  • サーバ上の複数のCPUを「プロセッサー・セット」にグループ分けする
  • 個々のプロセッサー・セットは指定したプロセスやスレッドによって占有される
  • プロセッサー・セットの設定は動的に変更が可能で、システム再起動は不要
  • プロセッサー・セット間は隔離されており、負荷分散は行われない

Integrityサーバ上で動作するHP-UX 11i v2オペレーティング・システムでは、このpsetを利用するためのコマンド「psrset」が用意されている。例えば、4-wayのサーバにおいて、2個のCPUからなるプロセッサー・セットを新たに定義するには、以下のコマンドを実行する。

psrset -c 1 2

これにより、CPU 1およびCPU 2からなるpsetが作成され、同セットに割り当てられたIDが戻り値として表示される。つづいて、同セット内でアプリケーションを実行するには、以下のように入力する。

psrset -e 1 <アプリケーション起動コマンド>

これにより、IDが1であるプロセッサー・セットにおいて、指定されたアプリケーションのプロセスが起動する。このように、psetの設定はコマンドレベルで容易に実行でき、システムを再起動する必要はない。

またHPでは、「Process Resource Manager(PRM)」のGUIツール(xprm)を提供しており、pset設定はこのツールでも行える。同ツールを使えば、psrsetコマンドと同様のリソース割り当て作業をドラッグ・アンド・ドロップで行える。図4は、xprmを利用し、16 CPUと8 CPUで構成される2つのプロセッサー・セットを定義し、それぞれを経理部門と販売部門のOracleサーバに占有させている例である。

図4:PRMによるpset設定
図4:xprmによるpset設定

psetを用いたCPUのパーティショニングによって、図5に示すように、J2EEサーバのプロセスやスレッドの実行を1個もしくは2個のCPUに限定することが可能だ。これにより、ロック競合時のキャッシュ・コヒーレンシー維持にかかる負担を大幅に抑えることができる。また、複数のプロセッサー・セット上で個別のJ2EEサーバのインスタンスを動作させ、それらに対して負荷分散を実施する。こうした方策により、冒頭で述べたようなロック競合によるスケーラビリティ低下は回避できるのである。

図5:CPUのパーティショニングによる効果
図5:CPUのパーティショニングによる効果

メモリ・アクセスのパーティショニングとは


次に、HPが提供するもうひとつのパーティショニング技術、「Cell Local Memory」について説明しよう。psetがCPUのパーティショニングを行うのに対し、Cell Local Memoryはメモリのパーティショニングを実現するテクノロジーである。

ではなぜ、J2EEサーバの運用において、メモリのパーティショニングが必要なのだろうか。CPUのパーティショニングについては、上述のとおり、ロック競合時のキャッシュ・コヒーレンシー維持の負担を下げるという理由があった。一方、メモリのパーティショニングには、「メモリ・アクセスのローカリティ(局所性)を高め、パフォーマンスを改善する」という目的がある。


ccNUMAとローカリティ


CPU数が10を超えるハイエンドのマルチプロセッサー・サーバの多くは、ccNUMA(Cache Coherent Non-Uniform Memory Architecture)と呼ばれるアーキテクチャを採用している。ccNUMAとは、おおざっぱに言えば、4-wayや8-wayのSMPシステムを複数セット用意し、高速なインターコネクトで相互接続したアーキテクチャである。この相互接続により、互いのローカル・メモリに自由にアクセス可能となり、それらのメモリを統合して1つの巨大なメモリ空間を構成する仕組みだ。例えばHP Integrityサーバのハイエンド・モデル「Superdome」の場合、8個のCPUを搭載した「セル(Cell)」と呼ばれるモジュールを16セットまで搭載できる。これらのセルはクロスバースイッチで結ばれており、最大で128-way/1 TBまで拡張できる大規模なマルチプロセッサー・サーバを構成している。

ccNUMAベースのサーバでは、メモリ・アクセスのローカリティが重要な意味を持つ。図6は、HP Integrityサーバにおけるメモリ・アーキテクチャを示した図である。ここで、セル内のローカル・メモリへのアクセス速度が243 nsであるのに対し、別のセル上のローカル・メモリへのアクセス速度は423〜479 nsと倍近くかかる点に注目していただきたい。セル間で透過的なメモリ共有が可能とはいえ、ccNUMAのパフォーマンスを最大限に引き出すには、やはり物理的なプロセッサー構成を意識したローカリティの維持が必要なのである。

図6:ccNUMAにおけるメモリ・アクセス
図6:ccNUMAにおけるメモリ・アクセス

そこで、メモリ・アクセスのローカリティを高めるために用意されたテクノロジーが、Cell Local Memoryである。具体的には、コマンド「mpsched」を実行することで、プロセスやスレッドが1つのセル上でのみ動作するよう指定できる。例えば、以下のような具合だ。

mpsched -T PACKED -P PACKED <アプリケーション起動コマンド>

ここで指定されている「PACKED」というフラグは、アプリケーション・プロセスの動作ポリシーを指定するためのもので、アプリケーションの全てのスレッドを単一のセル内でのみ実行することを意味する。このような設定によって、アプリケーションによるメモリ利用をセル内のローカル・メモリに限定させることが可能だ。


J2EEにおけるパーティショニングの必要性


コア氏は、ハイエンドのJ2EEシステムであるほど、psetとCell Local Memoryによるパーティショニングは不可欠であると説明する。冒頭に述べたようなスケーラビリティの劣化を回避できるだけでなく、パフォーマンスについても、「4 CPU構成では30 %、より多数のCPU利用時には50 %以上のパフォーマンス向上をもたらす」(同氏)という。

実際、コア氏が知るある顧客では、上述のSuperdomeを4台設置したきわめて大規模なミッション・クリティカル・システムを運用している。同システムはJ2EEおよびJMSにより構築されているが、psetとCell Local Memoryによるパーティショニングをフルに利用し、パフォーマンスとスケーラビリティを可能な限り引き出しているとのことだ。

また、パフォーマンス面に限らず、パーティショニングには可用性やセキュリティを高める効果もある。例えば、あるWebアプリケーションがDoS攻撃などによりCPUを使い果たしてしまうような状況を想定してみよう。この場合、CPUのパーティショニングによって他のアプリケーションへの影響を回避でき、サイト全体のダウンを免れるのである。

CPUのデュアルコア化、そしてサーバ・コンソリデーションの動きが加速するにしたがい、パーティショニングの重要性はJ2EEサーバの運用においてこれから一層高まるとみられる。


関連リンク

 
JVMに関するFAQ
HP-UX 11i プロセッサー・セット
  HP-UX processor sets(pset)は、HP-UX 11i v1、v2 で無償提供される機能です。企業内での複数のワークロードやユーザ、部門などに対するプロセッサー・リソースの効果的な割り当てを支援します。
HP-UX WorkLoad Manager(WLM)
  Process Resource Manager (PRM) 全機能を含む上位製品として提供されており、SLO (例えばある処理のレスポンスタイム3秒以内、など)を指定された定義に従って設定することにより、CPUリソース等の動的な再配分を自動的に実行することが可能です。
  HP-UX 11i v2リリースのサポートする機能がご覧いただけます。
 
最初に戻る 戻る  

その他のコラム(特集)もお読み下さい

 
 

本ページの内容は執筆時の情報に基づいており、異なる場合があります。
印刷用画面へ
プライバシー ご利用条件・免責事項