エンタープライズ:コラム 2003/05/06 21:51:00 更新


Gartner Column:第91回 いいとこどりアーキテクチャのNUMAとRAC

NUMAとOracle9i RACは、素性こそ違うが目的は同じ。比較的安価なマシンの組み合わせによって、高価なマシンでなければ達成できないトランザクション性能を発揮しようというのだ。NUMAは古くからあるが、Windows Server 2003とLinuxによるサポートという追い風がある。

 前回のコラムで、システムの処理能力の向上には、スケールアウト(台数による拡張)とスケールアップ(マシン規模による拡張)の2種類があり、両者にはそれぞれ得手不得手があると述べた。しかし、最近になり、両者を融合したアーキテクチャに注目が集まりつつある。それが、NUMAとOracle9i RACである。

 両者は全く素性の異なるアーキテクチャだが、その目的は似ている。つまり、スケールアウトの構成(要するに、複数マシンのクラスタ構成)を取りつつ、マシンの規模を拡張した場合、つまりスケールアップと同様のトランザクション処理の向上を提供しようということである。比較的安価なマシンの組み合わせによって、高価なマシンでなければ達成できないトランザクション性能を発揮しようという、いいとこどりのアーキテクチャである。

 この目的を、NUMA(Non Uniform Memory Access)はハードウェアレベルで、そして、Oracle9i RAC(Real Application Clusters)はデータベースレベルで実現しようとしている。RACにつては既に耳にされている方も多いと思うので、まず、NUMAについて解説することとしよう。

 NUMAを敢えて直訳すれば「非均質メモリアクセス」ということになるだろうか? これはあまり適切な名称とは言えないだろう。NUMAテクノロジーのポイントは、メモリアクセスの速度が一定しない環境であっても、それをうまく隠してあたかも均質なメモリ空間があるかのように見せる点にあるからだ。

 NUMAをひと言で表現すれば、物理的にはクラスタ、論理的にはSMP(対象型マルチプロセッサ=共用メモリマルチプロセッサ)ということになる。普通のクラスタ構成であれば、4台のマシンがあれば、4個のアドレス空間があり、それぞれのアドレス空間でOSが稼働し、それぞれのOSの下で独立したアプリケーションが稼働している。つまり、1つのアプリケーションを効率的に動かそうと思えば、そのアプリケーションを人為的に4つに分割する作業が必要となるわけだ。一方、NUMAであれば、4台のマシンがあっても、アドレス空間もOSも1つである。そして、1つのアプリケーションをそのままで稼働することができる。

 しかし、当然ながら、CPUにとってみれば同じマシン内にあるメモリをアクセスするのと、別のマシン内にあるメモリをネットワークを介してアクセスするのとでは遅延が大きく異なる。単純に、NUMAを実装したのでは、その性能はメモリアクセスがボトルネックになって耐え難いものとなってしまうだろう。

 そこで、NUMAでは、システム間の接続に低遅延の専用ネットワークを使用するとともに、メモリ上のデータのキャッシュを活用することで、メモリアクセスの遅延を隠している。つまり、1回アクセスしたデータは自分のマシン内にコピーしておき、その都度、ネットワークを介して別のマシンに読みにいかないということだ。

 ここで、あるデータが複数のCPUで共用されているときの整合性をどうするのかという疑問が生じることだろう。ここが、NUMA実装の最大のポイントである。一般的には、システム間のメッセージのやり取りによりキャッシュの整合性を取るという複雑な仕組みが採用されている。

 NUMAについて最近になり耳にされた方も多いと思うが、実は古くからあるアーキテクチャであり、シークエント、シリコングラフィックス、データジェネラルなどのマシンで使われてきていた。現在では、IBMのx440とx450、NECのExpress5800/1000(AzusA)といった主流メーカーのハイエンドIAサーバでもNUMAがサポートされている。

 また、ソフトウェアのサポートの点でもNUMAには追い風がある。NUMAの実現には、ハードウェアだけではなくOSやデータベースなどのシステムソフトウェアにも変更が必要である。上記のキャッシュ整合性確保のためのメッセージのやり取りを最小化するチューニングが行われていないと必要な性能が出せないからである。

 あまり知られていないかもしれないが、先ごろ発表されたばかりのWindows Server 2003も、その新機能のひとつにNUMAサポートがある。さらには、Linuxも、カーネル2.6においてNUMAが標準サポートされる予定である。

 今まで、テクノロジーとしてNUMAがもうひとつ普及できなかったのは、ソフトウェアのサポートが不足していた点が大きいだろう。しかし、今や、WindowsとLinuxがNUMAをサポートし始めたことでこの問題は大きく改善された。

 NUMAは再度有望なアーキテクチャになったが、大規模SMPが不要になるかというと、そこまでは言えないというのは前回述べたとおりだ。しかし、今までは中規模SMPを適用せざるを得なかった分野においてNUMAが有効な代替案になるケースが増えてくるだろう。

 NUMAについて書いただけでスペースを使い切ってしまったようだ。次回は、データベースの世界における久々のブレークスルーとも言えるOracle9i RACについて解説することとしよう。

関連記事
▼IBMがx440サーバのベンチマークを公表
▼ベンチで快調に飛ばす「64ビット版Windows Server 2003」
▼ハイエンドサーバ搭載への道を切り開いたLinux

[栗原 潔,ガートナージャパン]