HP というか元 Tandem の Non Stop アーキテクチャに関して調べたときのメモ
歴史的には独自 CPU による演算結果検証から、シングルコアCPUによるチェックポイント(数十命令に一つ、とか?)での演算結果照合(とvote)による判断、そしてマルチコアで手が出なくなって、ついに Itanium の内部 ECC 機構に頼るようになった。
(せいぜいレジスタやキャッシュのみで、それ以上は何もできないはず。また Itanium 2 以降はもう無いはずなので、さてどうするつもりか。)
今の Tandem Non Stop の感じが良く分かる図
http://h50146.www5.hp.com/products/servers/nonstop/technology/nonstop/
の図3. HP Integrity NonStop サーバーのMPPアーキテクチャー
ただし少し図がおかしいところもある。
http://h50146.www5.hp.com/products/servers/nonstop/hardware/NB50000c/
に前モデル?の説明があるのだけれど、そこには普通に MPP、超並列、とある。
ただし I/O は CPU 直結ではなくノード間接続網越しで、図が正確でない。(都合よく描きすぎてる)
あとクラスタ統合モデルを SMP と表現するのは無理がある。
(また無理がないように各ノードを2CPUのSMP構成にしてるけど、そういう話じゃない。クラスタこそ完全shared nothing なんだし。文章では「ディスク共有方式」とちゃんと言ってるんだし。)
メモリは独立(non-share)だけれど、デバイスは完全に shared なノード間通信網ごしの配置。
ノード間接続は Servernet と呼ぶ専用ネットで、いろいろレイアウトできる模様。 ただし4080CPU接続の形態はわからなかった。
各プロセスはチェックポイントとメモリ更新監視か何かでバックアッププロセサがある。 ただしServernetのルータチップ能力が 64GbpsとCPUのメモリ書き出し量より一桁ほど小さいのが気になる。
マルチコアになってから(CPU内部挙動監視ができなくなったので)かつてのようなCPU演算結果保障はなく、独自性は take over あたりにのみ残る。
資源を局所配置して、ノード間通信をしないようなアプリケーションモデルにすれば、Servernet は heartbeat / take over 専用となってそれほど疑問はなさそう。ただしバックアップのためのデータ転送が多そうで、ルータチップ能力が 64GbpsとCPUのメモリ書き出し量より一桁ほど小さいのが気になる。つまりメモリ I/O が大きな処理は向かない?
以下、Facebook に書き込んだメモ。(2012/4/2あたり)
もともとこの件は、HPがとても並列度が高いサーバとして出しているシステムが、シェアードナッシングだからスケーラブル、と謳っている事についての違和感から調べ始めた。
そもそも並列コンピュータで並列度を高くすることが難しいのは共有資源の管理オーバヘッドが理由だった。だから MPP(超並列)システムでシェアードナッシングなのは当たり前、で、逆に MPP 世界の人にわざわざシェアードナッシングと言う場面はちょっと無い、と思う。
が、調べ始めるとこのサーバは Tandem Nonstop そのものなので、興味はそちらへと移行した。
MPP (超並列) アーキテクチャーにより最大4,080プロセッサー(16,320コア) まで拡張可能、だそうで。。。
日本HP - HP Integrity NonStop BladeSystem NB54000c
h50146.www5.hp.com
HP Integrity NonStop BladeSystem NB54000c は、Intel Itanium プロセッサー (クアッドコア)を搭載した無停止型サーバーです。ハイパフォーマンスでありながら、メインフレームと同等以上の可用性・信頼性を実現しています。
ええっ。そんなんあったんや。どないなってんのん???
知らんかった世間は進んでるんだなあ。。
と思ったら。
「シェアードナッシング方式による、リニアなスケーラビリティー」
っておい。。(x_x!)
二度見して、中まで読んでようやく納得。
「シェアードナッシングという疎結合アーキテクチャーがゆえ、プロセッサーやディスクを増設した際にもボトルネックが無く、リニアにパフォーマンスが向上します。」
本気や。。。(@_@!)
(HP のひと済みません、、、素直に驚いたのです。。こんな風に書く、というのは僕の発想には無かったので。。)
このサーバーは、いいですよ。データベースは、OSの一部として提供されている(はず)なので、別途データベースの費用が要りません。信頼性は、過去の多くの実績からわかるように、社会基盤レベルで大丈夫。スケールアウト的アーキテクチャーなので、パフォーマンスが足りなくなったら、サーバーを追加するだけ。
いや、、shared nothing ってのは「何も共有しない」ってことなので、結局スケーラビリティが N になる(ノード数に比例する)のは当たり前なのです。。。
普通、大規模並列処理マシンは何かをshareすることが目的で、スケーラビリティ、っていうのは share しているのにこれだけ性能が下がりません、という文脈で出てくる売り文句だったりするのです。。。
何も share しないのなら単にマシンを並べるだけでいいわけで、つまり「並列処理マシン」ではなく「並べて置いたマシン」です。。。
つまり特別なアーキテクチャ上の工夫などは無い、それが売り文句になる、という状況なわけで、なんか変な話だなあ、、と。(普通は工夫によって付加価値を高め、それを売り文句にする)
それよりですね。普通に考えてこのマシンの一番のポイントは Non Stop アーキテクチャだと思うのですね。。Non Stop で無いのなら何でもかんでも当たり前、です。(4000CPU では shared nothing 当たり前、shared nothing で完全スケール当たり前(むしろ誤用に近い))
なので先に挙げた URL、つまり製品の「特徴」についてはフォールト・トレラントであることを軸に書いたら良いのに、と思った次第。
(それを「シェアードナッシング方式による、リニアなスケーラビリティー」を軸にしたところに素で驚いた、というお話でした。。)
赤井さん、この Non Stop OS の技術的な資料ってどっか良い入り口あったら教えてくださいー。
http://h50146.www5.hp.com/products/software/oe/nonstop/
日本HP - HP NonStop OS [HP Integrity NonStopサーバー専用OS]
h50146.www5.hp.com
疎結合マルチCPU構成をベースのHP NonStop OSは、無停止型超並列アーキテクチャーのための基盤ソフトウェアです。
ん?Non Stop ってほんまに Tandem の Non Stop なのかいな。。。(@_@!) そうやとしたら shared nothing どころか、どえらい share せんといかんのやけど。。。(OS が) さすがにアーキテクチャが根本的に変わったのかな。。 というわけでお勉強タイムか。
各プロセッサは約 0.7 MIPSで、それぞれにメモリとI/Oコントローラが付属しており、独自の二重化されたCPU間バス Dynabus で相互接続されている。….. 全ての処理はメッセージパッシングを使い、全ての操作でチェックポイントが設定された。….. 演算中に障害が発生したら、スタックを他のCPUにコピーして失敗した命令から処理を再開することができる。
以上 Wikipedia のタンデムコンピューターズ、から。
後にCPU競争についていけず(逆にこの当時はまだ自分たちでCPUを作ることができていた)、汎用CPUを使うようになったのだけれど、このあたりのアーキテクチャ変更を僕はよく覚えていない。。(一度どっかで聞いたんだけどなあ。。。)
最近のシステムはマイクロプロセッサを使用しているが、その内部回路を外から完全にチェックする方法は存在しない。そこで計算の正確性を保証するため、2つのマイクロプロセッサで 1つの論理プロセッサを構成し、それらがロックステップ方式で同時並行して動作するようにしている。演算結果が不一致した場合、プロセッサで障害が発生したと判断して即座に停止させる。
別の方式が Integrity シリーズで使用された。3個の冗長なCPUを搭載し、同じ命令列を同時並行して実行させる。障害が発生したとき(つまりロックステップの不一致が検出されたとき)、障害の起きたモジュールは停止させられるが、冗長モジュールはそのまま命令列を実行し続ける。
これか。。。
2008年のInteropで Stratus の x86 による FT サーバがあり、おっちゃんにどうやって異常検出するのか聞いていた筈なんだけどログを残してない。くー。
mixi 日記にもちゃんと書いてない所を見るとその人からは聞けなかったのか。。。たぶんこのような比較照合だと思うんだけど。。。
その後 Itanium に変更、、まではいいんだけど、この比較照合はそもそもシングルコアの話で、マルチコアでは一体どうするんだ??(件の4000CPUサーバはクアッドコアってあるぞ??比較照合回路がCPU内部にあるのか??)
と、思ったら残念 Wikipedia の情報はここまで。件の NB シリーズのことはちょろっと書いてあるけどマルチコア対応については機能的な事(セールストーク?)だけでアーキテクチャに関することは一切無し。
しょうがないので http://h50146.www5.hp.com/products/software/oe/nonstop/ に戻る。
ここではメモリは独立(non-share)だけれど、デバイスは完全に shared だ。。このあたりは古典的 Tandem のアイディアのままなのか。。。だとしたら「完全にリニア」な性能が出るとは限らないのだけれど。。ていうか4000CPU もどうやってつなぐんで?名前は ServerNet だけどバスっぽいぞ??(絵から行くと)
(このページが NB シリーズには当てはまらない、つまり従来的 Tandem とは異なり、本当に shared nothing なのが NB である、という、そういう売り文句があの「シェアードナッシングだからリニア」に軸を置いた説明になってるのか??)
日本HP - HP NonStop OS [HP Integrity NonStopサーバー専用OS]
h50146.www5.hp.com
疎結合マルチCPU構成をベースのHP NonStop OSは、無停止型超並列アーキテクチャーのための基盤ソフトウェアです。
というわけで Servernet を先に読む。
http://h50146.www5.hp.com/products/servers/nonstop/technology/
日本HP - HP NonStop サーバ テクノロジー
h50146.www5.hp.com
NonStop アーキテクチャは最新テクノロジーや、最先端のトレンドを採用し、連続可用性、拡張性、データ整合性という生来の HP NonStop システムの優位性を損なわずに基盤となるアーキテクチャを拡張し続けています。
違う、ここだ。
http://h50146.www5.hp.com/products/servers/nonstop/technology/servernet/
日本HP - HP Integrity NonStop サーバー ServerNet
h50146.www5.hp.com
HP Integrity NonStop サーバーの独自技術、ServerNet は最適化されたメッセージ交換システムを使用し、多数のCPUブレードとI/Oデバイスを統合し、仮想的に大きなシングルサーバーとして利用することを可能にします。
ASICでチップを作っているらしい。光接続。 「ServerNetルーターチップ(バージョン3)は、64Gbpsのデータ転送能力を持つワンチップルーターです。最大32本の全二重リンクを収容し、同時に16のデータ転送を実行します。」 32本の全二重で同時16てのは、ここも二重化されているからかな?
「このルーターチップを複数カスケード接続することで大規模なネットワークが構成でき、4,080までのプロセッサー、50万を越えるディスクドライブをサポートすることが可能」だそうで、単純カスケードなのか。
デバイス要求が全部これを通して、なので、果たしてカスケードで上の方が over subscription にならないのかちょっと怖い、、
(つまり完全 N スケールするとは限らないと思んだけど、、、ちょっと断言しすぎなのではないか、、(なんで前面に押し出してきた???))
と、思ったら、なんぢゃーこの図はー。カスケードちゃうんかいー。(^_^!)
http://h50146.www5.hp.com/products/servers/nonstop/technology/claster_solution/
日本HP - HP Integrity NonStop サーバー クラスターソリューション
h50146.www5.hp.com
HP Integrity NonStop サーバー 1ノードをHP Integrity NonStop サーバーのクラスタソリューションを使用して2つ以上のノードに分割する事はアプリケーションの可用性の向上、災害復旧機能の付加という観点からより経済的と言えます。 24時間365日無休のeビジネスの台頭により、高可用性を目的としたシステム・クラスタリングのコンセプトはますます重要になっています。
なんでもええけど http://h50146.www5.hp.com/products/software/oe/nonstop/ では「強調処理を実施」と書いてみたり(協調処理でしょう、、)、すぐ上のクラスタソリューションのところでは URL が claster だったり(cluster でしょう、、)、なんか本物(のサイト)じゃないって一瞬疑っちゃうですよ。。(ごめんなさい)
日本HP - HP NonStop OS [HP Integrity NonStopサーバー専用OS]
h50146.www5.hp.com
疎結合マルチCPU構成をベースのHP NonStop OSは、無停止型超並列アーキテクチャーのための基盤ソフトウェアです。
むむ?冒頭に
「最大16CPUを含むノードを、専用のクラスターソリューションを使用して最大255接続することができます」
とあるけど、すぐ下には
「最大8ノードまで」をフルメッシュ接続にする、とある。で、それ(ゾーンと呼ぶらしい)を 3 つ相互接続して24ゾーン、、だとすると 16 x 24 = 384 になってしまう。
255 という制限はどっから来た??
違う、ノードを255接続で4080か。
が、しかしクラスタソリューションの実体として上がっているのは 16 x 8 x 3 = 284 CPU しかない、と。
16 x 8 x 32 = 4096 だから 32 のゾーンをどう相互接続するのだ??
ちょっと放棄。
http://h50146.www5.hp.com/products/servers/nonstop/technology/architecture/
にマルチコア対応の話がある模様。
日本HP - HP Integrity NonStop サーバー アーキテクチャー
h50146.www5.hp.com
HP Integrity NonStop サーバーでは、業界標準であるインテル® Itanium® プロセッサーを搭載しつつ、他に類を見ない高い可用性と信頼性を提供するために、HP Integrity NonStop サーバーならではのCPUアーキテクチャーを採用しています。
Wikipedia で謎の記述だった LSU について説明有り。
演算結果を出力する際にその内容が合致しているかをLSU(Logical Synchronization Unit)と呼ばれる外部モジュールにてチェック
ふむふむ。
が、がーん。。。なんちゅうオチ。。
デュアルコア以降のインテル® Itanium®プロセッサーでは、内部のキャッシュ、レジスターなどに、高度な自己診断機能と訂正機能が標準で備わっており、誤った演算結果がプロセッサーから出力されないような機構になっております。これにより、単一のプロセッサーでも多重化構成と同等レベルの高い信頼性が確保されており、ミッション・クリティカル用途でも安心してご利用頂けるプロセッサー・アーキテクチャーとなっております。
プ、プロセ…ッサ任せかいな。。。遂に独自性が消えちゃった。。。 いやまあ(先に書いたように)「比較照合回路がCPU内部にある」しか解がないのは判るけどさあ、、、
てか Itanium はキャッシュやレジスタに ECC が付いたとは思う(安藤さんの記事かなにかで読んだはず)けど、演算回路にエラー検証の機能はついてない(というかどうやって付けるんだそんなの??)と思うゾ、、、確かにキャッシュやレジスタ化由来の誤った結果は出ないだろうけど、それ以外の誤り(故障)は無いのか??
停止故障はモニタが付けられるだろうけど(コアごとにも付くのか?)、ビザンチン故障(この文脈でそう言って良いのか?)の場合はどうするんよ。。。
気を取り直して続き。
「障害が起きたCPUで行っていた処理は、他のCPUに引き継がれて(テイクオーバー)業務が続行可能となります」
とあるのだけれど、これはどうやってやるのだろう。まあ普通にチェックポイント方式なのかな。。。一つのコア(あるいはスレッド?)が落ちた場合は他のコアの分もたぶん巻き添えで rollback / takeover するんだろうなあ。
ところで Itanium はもう停止する(先がない)という話をやはり安藤さんの記事で読んだ記憶あり。
その時はこのキャッシュなどの ECC を x86 系が積む予定はないだろう、、という話だったかどうだったか。でも積まないような気が無さそうなので、さてそのときこの「本当に Itanium を必要としていた」人たちはどうするのだろうか。。。
Tandem は何度もプロセッサアーキテクチャの変更に耐えている不死鳥のようなメーカーなので、今度もまたどうにかするのかなあ。。。
take over についてはここに少し。(結局全部読んだぞ。。よくできてるなあ。。)
http://h50146.www5.hp.com/products/servers/nonstop/technology/nonstop/
日本HP - HP Integrity NonStop サーバー 無停止機能
h50146.www5.hp.com
35年以上のフォールトトレラント・サーバーの実績を誇る HP NonStop サーバーは、すべてが冗長化されたハードウェア・コンポーネントと、耐障害性を持つオペレーティング・システム、ソフトウェア・コンポーネントによって、ハードウェアとソフトウェアの両面から他に類を見ない高度なフォールトトレランスを実現しています。
duplex システム、とまではいかないにせよ、かなりノード間接続網が忙しそう。 メモリ更新情報を交換するとあるけど、キャッシュやレジスタ情報はどうするんだろう。。
というわけでまとめ:
で、初心に戻って「shared nothing だから良いって言う?」なんだけど。。
やっぱり「Non Stop」であることを軸にした方が「特徴」としては素直だと思うんだけど、Non Stop シリーズのこのモデルの「特徴」としてはそうはいかない、よねえ。。
で、他のモデルと違って SMP じゃない、という事を説明するのは良いとしても、選んだ言葉が shared nothing というのはちょっと無理があったかなあ。
ホントの shared nothing つまりクラスタモデルと比べると遙かに shared で動いてますですよ。。。
普通に MPP (超並列)だ、分散メモリだ、ではあかんのやろうか。。。
http://h50146.www5.hp.com/products/servers/nonstop/hardware/NB50000c/
に前モデル?の説明があるのだけれど、そこには普通に MPP、超並列、とある。
ただし I/O は CPU 直結ではなくノード間接続網越しで、図が正確でない。(都合よく描きすぎてる)
あとクラスタ統合モデルを SMP と表現するのは無理がある。(無理がないように各ノードを2CPUのSMP構成にしてるけど、そういう話じゃないでしょう??クラスタこそ完全 shared nothing なんだから。。文章では「ディスク共有方式」とちゃんと言ってるんだし。)
日本HP - HP Integrity NonStop NB50000c BladeSystem h50146.www5.hp.com 「ミッションクリティカルな要求にNonStopというシンプルな解決」HP Integrity NonStop NB50000c BladeSystem 概要のページです。
というところでお勉強タイムおしまい。ふー。 今の Tandem Non Stop の感じが良く分かった。(@_@)
http://h50146.www5.hp.com/products/servers/nonstop/technology/nonstop/ の図3. HP Integrity NonStop サーバーのMPPアーキテクチャー が全体構造がよく見えて良い。
2012.04.18