並列処理,MIMD,密結合・疎結合,マルチコアプロセッサ、デュアルシステム,デュプレックスシステム,ホットスタンバイ,クラスタコンピュータ,グリッドコンピューティング
多重化の区分
処理の高速化のため,信頼性の向上のために,プロセッサ(CPU)を多重化するシステム構成があります。それをいくつかの角度から区分して説明します。
命令とデータとの関係による区分
- SISD(Single Instruction/Single Data)
- 一つの命令で一つのデータを扱う処理方式。最も単純な方式です。
- SIMD(Single Instruction/Multiple Data)
- 一つの命令で複数のデータを扱う処理方式。
スーパーコンピュータで利用されていますが,パソコンでも,マルチメディア拡張機能に利用されています。
- MIMD(Multiple Instruction/Multiple Data)
- 1台のコンピュータに複数のプロセッサ(CPU)を搭載し,プロセッサごとに異なる命令,異なるデータを並行処理する方式。
この方式をマルチプロセッサ(multi-processor)といい,超並列コンピュータの多くが採用しています。最近はパソコンでも複数のCPUをもつものがあります。
CPUと記憶装置との結合関係による区分
- 密結合マルチプロセッサ(Tightly Coupled Multi-Processor)
- 複数のプロセッサ(CPU)が,メモリや磁気ディスクを共有する方式。一つのOSにより制御され,互いに連絡をとりながら動作します。
密結合状態のシステムでは,緊密で高速な動作が可能となるが,メモリなどの取り合いなどの競合が発生するので、多重度を上げると効率が悪くなります(アムダールの法則)。また、一方のコンポーネントが異常をきたすと,他方のコンポーネントがその影響を受けるため,保守や部品の交換などが制約を受けます。
- 疎結合マルチプロセッサ(Loosely Coupled Multi-Processor)
- プロセッサごとに独立したOSと記憶装置を持ち,独立して動作する方式です。
互いの状況を連絡して協調するには,高速なバスが必要であり,高速処理の面では密結合に劣りますが,独立性が高いため,保守や部品の交換などが容易で,非常に多数(数百~数万)のプロセッサを持つ超並列プロセッサを構築することができます。
マルチコアプロセッサ
マルチコアプロセッサとは,原理的にはマルチプロセッサと同じですが,一つのチップにマイクロプロセッサ中核部分(コア)を複数個組み込んだものです。コアが2個のものをデュアルコアプロセッサ、4個のものをクアッドコアコアプロセッサといいます。
一つのCPUのクロック数向上が,コスト的に限界に近付いていること,クロック数を上げると消費電力が非常に増大することから普及しました。
現在のパソコンでは、Core 2やCore i7などのCPUが用いられており、マルチコアプロセッサになっています。
マルチコアプロセッサでは、複数のアプリケーションや、一つのアプリケーションを複数のタスク(スレッド)に分け、それぞれの処理を複数のコアに分散させ並列実行したり、個々のコアで異なるタスクを実行させたりできます。それをマルチタスク機能あるいはマルチスレッド機能といいます。それには、マルチプロセッサ対応のOSが必要です。
WindowsやLinuxなど代表的なパソコンOSはマルチプロセッサに対応しています。
マルチコアプロセッサでの分散処理は、大きくAMPとSMPに区分されます。
- AMP(Asymmetric Multiprocessing、非対称マルチプロセッシング)
AMPでは、個々のコアがそれぞれ割り当てられたOSにより、異なるタスクを実行します。
個々のCPUやメモリはOS間で共有せず、個別のコンピュータが連携して動作するような環境です。
- SMP(Symmetric Multi-Processing、対称型マルチプロセッシング)
SMPでは、コアの役割が対等で、複数のコアで一つのAPを実行します。1つのOSがコアの稼働状況を監視して、実行を動的に割り当てます。
高速化を主目的とした多重化
シンプレックスシステム
通常の1系統のコンピュータ構成のことをシンプレックスシステムといいます。この形態では,故障が起こると業務が止まってしまいます。
ロードシェアシステム
発生したリクエストを、複数のサーバに適切に割り振ることにより、一部のサーバに負荷が集中するのを防ぎ、多数のリクエスト処理を円滑に行なう仕組みを負荷分散といい、それを実現する装置を負荷分散装置(ロードバランサ)といいます。
- ラウンドロビン型
- ラウンドロビンとは、サーバの表があり、その表の最初から順に割り振り、表の最後に達したら先頭に戻るという処理順序のことです。
・簡単な仕組みですので、ロードバランサの機能が簡素化し、処理効率がよい方式です。
・事前に設定した通りに割り振る静的な方法です。サーバの状況をみて最適に割り振ることはできません。
-
- ラウンドロビン方式
上の説明の通り。最も単純な方式です。
- 重み付けラウンドロビン方式
サーバの処理能力に違いがある場合には、サーバに(確率ばどで)重みを付け、サーバごとにリクエスト数を変えることができます。
- DNSラウンドロビン方式
ロードバランサを持たず、DNSサーバが負荷分散を行う方式です。
DNSサーバには個々のサーバのIPアドレス表があります。リクエストがDNSサーバに渡されると、DNSサーバはリクエストごとに、表の順序で選択(ラウンドロビン)した異なるIPアドレスを返して、異なるサーバにリクエストを渡します。
- アダプティブ型
- アダプティブとは「適応する能力」のこと。事前に割り振り基準を設定する静的な方法ではなく、振り分け時に最適なサーバを選択し、リクエストを振り分ける動的な方式です。
サーバの状態やサーバとの間の通信状態をリアルタイムに測定し、測定した結果を基に、振り分けを行うという複雑な機能が必要になるのでロードバランサで処理します。
振り分けの尺度には、次のようなものがあります。
- 最速応答時間
サーバからロードバランサへのレスポンスの応答時間が最も短いサーバを選択します。
- 最小接続数
待っているリクエスト数が最小のサーバを選択します。
- 最小クライアント数
各サーバが通信するクライアント数が均等になるようにリクエストを振り分ける方式です。
- 最小データ通信量
各サーバが転送するデータ量が均等になるようにリクエストを振り分ける方式です。
- 最小サーバ負荷
個々の尺度ではなく、サーバのCPU負荷・IO負荷・ディスク負荷などの状況から総合的に判断します。
- DSR(Direct Server Return)
- サーバの選択方法ではなく、ロードバランサを持つリクエスト処理効率を向上する方式です。
クライアントからサーバへのリクエスト時にはロードバランサを経由させるが、サーバからクライアントへのレスポンス時にはロードバランサを経由せずに、クライアントにパケットを直接送る仕組みです。
負荷分散クラスタ構成
負荷分散のために,複数のコンピュータを使用するシステムです。クラスタ構成でのロードシェアシステムを負荷分散クラスタ構成といいます。複数のサーバの前にロードバランサを置き、入力データをサーバに分散させることにより、効率を高めます。
・サーバはディスクを共有しており、常に整合性が保たれるようになっています。
・一つのサーバが故障しても、他のサーバに割り振るので、処理効率は下がりますが、処理は中断なく行われます。
・クラスタ方式では、サーバの追加が容易であり、将来の処理量の増大に対して拡張性が確保されます。
このように、平常時は負荷分散によってシステムが効率的に稼働し、障害発生によって片方のサーバが停止しても、もう片方のサーバが全ての処理を行う構成をアクティブ/アクティブ構成といい、性能が低下しても重要機能を存続させて稼動する(縮退運転)ことをフォールバックといいます。
タンデムシステム
タンデムとは縦列という意味でです。例えば,通信,中核処理,データベース処理をそれぞれ専門のコンピュータで行うことにより,全体としての処理性能を高めています。
マスタ/スレーブ構成
タンデムシステムの前後関係に限定せず、一つのコンピュータに全ての管理・制御を担当する「マスター」という役割をあて、複数のコンピュータをマスタの制御により個別の処理を担当する「スレーブ」とする方式です。
信頼性・可用性向上を主目的とした多重化
- デュアルシステム
- デュアルシステムは2系統のコンピュータで同じ処理を行い,結果を照合確認しつつ処理を進めます。障害が発生しても故障したほうのシステムを切り離して正常なほうのシステムで処理を続行できます。非常に高い信頼性が要求されるシステムに採用します。
- デュプレックスシステム
- HAクラスタ構成
- 2系統のシステムを用います。一方の主系(稼働系)で重要なオンライン処理などを行ない,他方の従系(待機系)では、常に待機しているか、リアルタイム性を必要としないバッチ処理などを行ないます。近年は、多数のサーバを設置して、デュプレックスシステムを構成するようになり、HA(High Availability)クラスタ構成というようになりました。
稼動系が故障したときは,処理を稼動系サーバーから待機系サーバーへと引き継がせて、重要な業務を続行します。信頼性はデュアルシステムよりも劣りますが,比較的安価に実現できます。
このように、同じ機能を持つシステムを複数用意し、そのうちのいくつかを待機状態にしておく方式をアクティブ/スタンバイ構成といいます。その待機状況から、次の3つがあります。
- ホットスタンバイ方式
- 稼働系への切り替えを迅速にするために,待機系は常に稼働系と同期をとっておき,即座に切り替える方式です。切り替えはシステムが自動的に行うのが一般的です。正常時には必要のない待機系を設置して同じ処理をさせているので費用がかかりますが、フェイルオーバー時間が非常に短かい(通常はシステムが自動的に行う)ので、業務への支障がほとんどない利点があります。重要な業務では、この方式が採用されています。
- コールドスタンバイ方式
- 待機系では稼働系とは異なる動作環境にしている,あるいは,電源が入っていない状態で待機している状態です。待機系は独立した系だといえるので、実際の費用は小さくてすみますが、切替時間が非常に長くなり、その間の業務に大きな影響を与えます。
- ウォームスタンバイ方式
- 両者の中間です。待機系は稼働系と同じ動作環境になっていますが,他の業務を行っていることもあり,稼働系の業務を起動させるなど切替時間がかかります。
- フォールトトレラントシステム
- 1台のコンピュータですが,重要な部分を二重化することにより,その構成部品の一部が故障しても正常に処理を続行するようにしたコンピュータです。
-
なお、稼働系から待機系に切り替えることをフェイルオーバー、復旧後に元の稼動系・待機系の構成へと戻す機能をフェイルバックといいます。
CSS環境でのシステム構成に関するトピックス
汎用コンピュータ時代では、多重化とはいえ、せいぜい2台か3台の多重化でした。現在では、パソコン(CPU)を数十・数百台束ねた多重化になっています。
クラスタコンピュータ
多数のパソコン(CPUやメモリ)を結合して,あたかも1台の大型コンピュータのように利用できる技術が発展しました(一つの筺体に格納したものもあります)。その技術をクラスタリング,それによるコンピュータをクラスタコンピュータといいます。
前述の負荷分散クラスタ構成やHAクラスタ構成がこれにあたります。
クラスタ構成にすると,対象業務の拡大や処理データの増加により,サーバにより大きな性能が必要になったとき,それを構成する機器の性能向上や機器台数の増加で対応します。また、サーバに余裕が生じたときは、これとは逆の手段によりコスト削減をします。
- スケールアップ
サーバの性能向上のために、構成するパソコンのCPUやメモリを高性能化することです。機器の価格性能比が向上しているときには大きなコスト抑制になります。
- スケールダウン
構成機器をより安価なものにすることによりコストダウンを図ります。
- スケールアウト
構成する安価なCPUやメモリを追加するだけで対応することです。システム全体に影響を与えることが少なく全体の性能を上げることができます。
- スケールイン
構成機器の台数を減らすことにより、無駄なコストを削減します。
グリッドコンピューティング
インターネットなどのネットワークで非常に多数のコンピュータを接続することにより,使っていないコンピュータの資源を活用して,大規模な処理能力を実現する形態です。インターネットに接続している不特定多数のパソコンを利用して,宇宙人からの通信の解析処理を分担しようというボランティアのプロジェクトなどから始まりましたが,現在ではLAN接続のパソコンを活用した企業内での利用が注目されています。
クラウドコンピューティング
近年,プロバイダが業務の一部分(サービス)を提供するSaaSが注目されています。また,表計算ソフトやグループウェアなどをインターネットで利用できるサービスもあります。このような環境では,ユーザ企業は,ソフトウェアもサーバも所有せず,クライアントだけをもてば,業務システムを運用することができます。すなわち,インターネットの側で情報処理を行うことから,クラウドコンピューティングといわれています。
NAS(Network Attached Storage)
ファイルサーバの形態の一つで,大容量の記憶装置をネットワークに直接接続したものです(高速なネットワークが必要で,そのネットワークを特にSAN(Storage Area Network)ということがあります)。
NASを構築するためのプロトコルにNFS(Network File System)があります。
NFS自体で転送されるデータの重複や欠除,順序管理などを行ないます。
仮想化技術
仮想化とは,物理的なハードウェア構成を論理的な構成にすることです。
LANやインターネットには,データサーバやWebサーバなど多様なサーバ機能があります。それらの機能ごとに物理的なパソコンや記憶装置を設定したのでは,一方では資源不足なのに他方では余裕があるといったアンバランスが生じます。また,ある機能を他のサーバに移し替えたり,データを保管機器を変更するときには,システムを変更したり,利用者に通知する必要が生じます。
物理的なハードウェアではなく,論理的なディレクトリのような体系にして,それらを変更するだけでよいようにできれば,資源の有効利用にもなりますし,サービスレベルの向上にも役立ちます。このような仮想化技術は,汎用コンピュータ環境ではかなり確立していたのですが,オープン環境では遅れていました。分散環境での運用の重要性が高まるのに伴い,オープン環境での仮想化技術が急速に発展してきました。
利用者が用いるパソコンをシンクライアントにし、それをサーバと接続して処理を行う分野での仮想化技術には、大きく3つの方式があります。いずれもシンクライアントはブラウザ画面のような表示部を担当し、演算部(処理機能)はセンターに設置したサーバが担当します。それにより、利用者や利用頻度の増加への対応を容易にしています。
- サーバーベース方式
複数のシンクライアントが1台のサーバに接続します。サーバの余力資源は相互に有効利用できます。
- 仮想PC方式
専用のソフトを使ってサーバ上に仮想的に複数のパソコンを形成し、このパソコンをシンクライアントから操作します。すなわち、物理的には「1対多」の接続ですが、論理的には「1対1」の接続になります。
- ブレードPC方式
ブレードPCとは、パソコンの本体構成部品(CPU、メモリ、内蔵ディスクなど)を「ブレード」という基板に取りつけ、複数のブレードを専用筐体に集積して搭載したパソコンのことです。ブレードPC方式では、サーバがブレードPC構成になっており、シンクライアントがサーバに接続すると1枚のブレードが独占的に割り当てられます。同時接続中のシンクライアント数だけのプレートがあればよいので経済的です。また、この方式はOSやアプリケーションを通常のパソコンと同じものを使用するため、パソコンからシンクライアント・システムへ移行が容易にできる利点があります。