(57)【要約】  マルチプロセッササーバシステムは、各々が複数のストレージアダプタおよび複数のネットワークアダプタを用いる複数のマルチプロセッサまたはシングルプロセッサオペレーティングシステムを実行する。各オペレーティングシステムは、自身のプロセッサの全てに関する負荷情報を保持し、当該情報を他のオペレーティングシステムと共有する。オペレーティングシステムのプロセッサ負荷に変化が生じた場合、再割当て対象であるオペレーティングシステムのストレージアダプタおよびネットワークアダプタの最大負荷に既に達していなければ、性能を向上させるべくオペレーティングシステム間でプロセッサが動的に再割当てされる。プロセッサの再割当ては、シングルプロセッサオペレーティングシステムにより使用されているプロセッサの再割当てを許すべくオペレーティングシステムの停止および動的な再起動を含んでいる。更に、マルチプロセッサオペレーティングシステムのプロセススケジューラは、負荷が重いオペレーティングシステムへのプロセッサの即時再割当てを許すべく、いくつかのプロセッサを軽いプロセッサ負荷状態でアイドルに維持する。
2011529210.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
記憶システムに接続された複数の記憶システムアダプタと、
ネットワークに接続された複数のネットワークアダプタと、
各々が複数のプロセッサの一部を用いて実行される複数のオペレーティングシステムを保存するメモリと
を含むマルチプロセッサコンピュータシステムであって、
前記複数のプロセッサ、記憶システムアダプタ、およびネットワークアダプタの各々が前記複数のオペレーティングシステムの１個に割当てられ、
前記オペレーティングシステムが、低負荷状態にある前記オペレーティングシステムに割当てられた前記複数のプロセッサの少なくとも１個を指定し、前記指定されたプロセッサをアイドルに維持する
マルチプロセッサコンピュータシステム。
【請求項２】
前記複数のオペレーティングシステムが、前記複数のプロセッサ、前記複数の記憶システムアダプタ、および前記複数のネットワークアダプタの各々の現在負荷の情報を共有する、
請求項１に記載のマルチプロセッサコンピュータシステム。
【請求項３】
前記オペレーティングシステムが、自身の活性化プロセッサの平均負荷が増大した場合に自身のアイドルプロセッサの１個を活性化する、
請求項２に記載のマルチプロセッサコンピュータシステム。
【請求項４】
前記オペレーティングシステムが、自身のプロセッサの平均負荷が所定の閾値を超えた場合に自身のアイドルプロセッサの１個を活性化する、
請求項３に記載のマルチプロセッサコンピュータシステム。
【請求項５】
前記オペレーティングシステムが、自身のストレージアダプタの負荷および自身のネットワークアダプタの負荷がそれらの最大値を超えない場合に、自身のアイドルプロセッサの１個を活性化する、
請求項４に記載のマルチプロセッサコンピュータシステム。
【請求項６】
前記複数のオペレーティングシステムの１個が、前記オペレーティングシステムに割当てられたプロセッサの負荷が増大した場合に、別のオペレーティングシステムに割当てられていてアイドルにある前記複数のプロセッサの１個を自身に再割当てする、
請求項５に記載のマルチプロセッサコンピュータシステム。
【請求項７】
前記オペレーティングシステムが、自身のプロセッサの平均負荷が所定の閾値を超えた場合に、プロセッサの再割当てを実行する、
請求項６に記載のマルチプロセッサコンピュータシステム。
【請求項８】
前記オペレーティングシステムが、自身のストレージアダプタの負荷および自身のネットワークアダプタの負荷がそれらの最大値を超えない場合に、プロセッサの再割当てを実行する、
請求項７に記載のマルチプロセッサコンピュータシステム。
【請求項９】
前記オペレーティングシステムが、自身のストレージアダプタの負荷および自身のネットワークアダプタの負荷がそれらの最大値を超えた場合に、前記ネットワークを介したクライアント要求を拒否する、
請求項８に記載のマルチプロセッサコンピュータシステム。
【請求項１０】
前記オペレーティングシステムが、前記複数のプロセッサ、前記複数の記憶システムアダプタ、および前記複数のネットワークアダプタの各々の現在負荷情報を定期的に更新する、
請求項２に記載のマルチプロセッサコンピュータシステム。
【請求項１１】
複数のプロセッサと、
記憶システムに接続された複数の記憶システムアダプタと、
ネットワークに接続された複数のネットワークアダプタと、
前記複数のオペレーティングシステムの一部を用いて実行される少なくとも一個のマルチプロセッサオペレーティングシステム、および前記複数のプロセッサの１個を用いて実行される少なくとも一個のシングルプロセッサオペレーティングシステムを保存するメモリと
を含むマルチプロセッサコンピュータシステムであって、
前記複数のプロセッサ、記憶システムアダプタ、およびネットワークアダプタの各々が前記マルチプロセッサオペレーティングシステムまたは前記シングルプロセッサオペレーティングシステムの１個に割当てられ、
前記マルチプロセッサオペレーティングシステムが、低負荷状態にある前記マルチプロセッサオペレーティングシステムに割当てられた前記複数のプロセッサの少なくとも１個を指定し、前記指定されたプロセッサをアイドルに維持する
マルチプロセッサコンピュータシステム。
【請求項１２】
前記マルチプロセッサオペレーティングシステムおよび前記シングルプロセッサオペレーティングシステムが、前記複数のプロセッサ、前記複数の記憶システムアダプタ、および前記複数のネットワークアダプタの各々の現在負荷の情報を共有する、
請求項１１に記載のマルチプロセッサコンピュータシステム。
【請求項１３】
前記マルチプロセッサオペレーティングシステムが、自身のプロセッサ負荷が閾値を超えて増大した場合に、アイドルであるシングルプロセッサオペレーティングシステムの実行を停止し、前記停止されたシングルプロセッサオペレーティングシステムに割当てられた前記プロセッサ、ストレージアダプタ、およびネットワークアダプタを自身に再割当てする、
請求項１２に記載のマルチプロセッサコンピュータシステム。
【請求項１４】
前記マルチプロセッサオペレーティングシステムが、自身のストレージアダプタおよびネットワークアダプタの負荷がそれらの最大値を超えない場合に、アイドルであるシングルプロセッサオペレーティングシステムの前記プロセッサ、ストレージアダプタ、およびネットワークアダプタを自身に再割当てする、
請求項１３に記載のマルチプロセッサコンピュータシステム。
【請求項１５】
前記マルチプロセッサオペレーティングシステムが、自身の活性化プロセッサの負荷が低閾値未満に低下した場合に、自身のプロセッサの１個をアイドルにし、前記アイドルにされたプロセッサを用いて、停止されたシングルプロセッサオペレーティングを再起動する、
請求項１３に記載のマルチプロセッサコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、複数のオペレーティングシステムを実行するマルチプロセッササーバに関する。
【背景技術】
【０００２】
最新のオペレーティングシステム（ＯＳ）の大多数は、対称型マルチプロセッシング（ＳＭＰ）、すなわち使用可能なプロセッサ間でプロセスの実行を自動的に分散させて、時分割技術を用いてプロセスを実行することによりアプリケーションに使用可能なプロセッサの個数を隠蔽する技術をサポートしている。その種のオペレーティングシステムを用いることにより、いくつかの中央演算処理装置（ＣＰＵ）またはマルチコアＣＰＵを用いてアプリケーションプロセスの実行に使用可能なプロセッサの個数を増やすだけでサーバシステムの性能を向上させることができる。
【０００３】
しかし、いくつかの場合において、マルチプロセッササーバシステム上でＳＭＰ対応オペレーティングシステムの単一のインスタンス例を実行することが必ずしも高性能サーバシステムを実装する最も有効な方法ではない。実際、多くのオペレーティングシステムが特定の種類の仕事量を対象とすることなく汎用的に設計されている。そのような設計方針の結果、高性能な処理は、サーバシステムで生じ得る仕事量のごく一部に対して実現できるに過ぎない。典型的な例は、サーバに備えられた記憶システムに保存されたファイルへのリモートアクセスを実装するファイルサーバである。汎用オペレーティングシステムを用いるマルチプロセッササーバは、小さいファイルへのベストエフォート型アクセスの場合に受容可能な性能が発揮される可能性が高いが、ビデオファイル等の大きなファイルへのリアルタイムアクセスに負荷が変化した場合に性能が低下する恐れがある。
【０００４】
この問題に対する効率的な解決策は、サーバシステム上で数種類のオペレーティングシステムを実行してサーバに対する各種の負荷を効率的に扱うことである。各オペレーティングシステムには、それらの仕事量を処理すべく使用可能なプロセッサの一部が割当てられる。米国特許第６６４７５０８Ｂ２号明細書のような方法がこれまで開示されており、単一のマルチプロセッササーバシステム上で複数のオペレーティングシステムを実行する方法が提案されている。米国特許第６９３１６４０Ｂ２号明細書や米国特許出願公開第２００２／００８７６１１Ａ１号明細書等の他の方法もまた、サーバの各オペレーティングシステム上で実行されるアプリケーションにより実現可能な最大性能を調整すべく、オペレーティングシステムに物理リソース、例えばメモリおよびＣＰＵを動的に再割当てする方法を紹介している。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上述した方法は、主として再割当ての決定をサーバシステムの各オペレーティングシステムに見られるＣＰＵおよびメモリの使用（または論理分割）だけに基づいて行なっている。ファイルサーバの場合、実現される性能は受信または転送されるファイルデータの量（スループット）に関して測定されるため、そのような尺度は効率的なリソース再割当て決定の実装に適していない。また、ＳＭＰ対応オペレーティングシステムを使用することで、別のオペレーティングシステムへのＣＰＵ再割当て動作が困難になる。アプリケーションプロセスの実行が当初から使用可能なプロセッサ間で均一に分散されるため、常に全てのプロセッサがプロセス実行のためビジー状態であり得る。負荷が軽いオペレーティングシステムが自身のプロセッサの１個を別のオペレーティングシステムに解放できるようにする方法は、オペレーティングシステムのプロセススケジューラの変更を要する。また、プロセッサの再割当てにより性能が向上するか否かを推定する新たな方法が必要とされている。
【課題を解決するための手段】
【０００６】
本明細書に開示する本発明の主な特徴は以下の通りである。すなわち、複数のプロセッサ、記憶システムに接続された複数の記憶システムアダプタ、ネットワークに接続された複数のネットワークアダプタ、および各々が複数のプロセッサの一部を用いて実行される複数のオペレーティングシステムを格納するメモリを含むマルチプロセッサコンピュータシステムである。複数のプロセッサ、記憶システムアダプタ、およびネットワークアダプタの各々は、複数のオペレーティングシステムの１個に割当てられ、オペレーティングシステムは、低負荷状態にあるオペレーティングシステムに割当てられた複数のプロセッサの少なくとも１個を指定し、指定されたプロセッサをアイドルに維持する。
【発明の効果】
【０００７】
本発明は、異なるオペレーティングシステムにより処理される異なる種類のクライアント要求をより多く処理するファイルサーバの能力を向上させることができる。高負荷状態のオペレーティングシステムにアイドルプロセッサを動的に再割当てすることにより、当該オペレーティングシステムが自身のネットワークアダプタおよび記憶システムアダプタの両方を最大性能で使用できる能力が向上する。すなわち、当該オペレーティングシステムにより処理される種類のクライアント要求に対するファイルサーバのスループットを最大化する。
【図面の簡単な説明】
【０００８】
【図１】典型的ＳＭＰマルチプロセッサシステムの一例を示すブロック図である。
【図２】２個の異なるオペレーティングシステムを使用する際の図１に示すシステムの初期設定の一例を示すブロック図である。
【図３】負荷モニタが保持するデータの一例を示す。
【図４】負荷モニタが保持するデータの別の例を示す。
【図５】負荷モニタが保持するデータの別の例を示す。
【図６】プロセッサの再割当ておよび／または活性化が必要且つ可能であるか否かを判定すべく各オペレーティングシステムにより実行されるプロセスを示すフロー図である。
【図７】プロセッサのアイドルが可能か否か判定すべく各オペレーティングシステムにより実行されるプロセスを示すフロー図である。
【図８】ＳＭＰ対応オペレーティングシステムと複数のシングルプロセッサオペレーティングシステムの組合せを使用する際の図１に示すシステムの初期設定の一例を示すブロック図である
【図９】シングルプロセッサオペレーティングシステムにより使用されるプロセッサを自身に再割当てすべくＳＭＰオペレーティングシステムにより実行されるプロセスを示すフロー図である。
【符号の説明】
【０００９】
１００  サーバ
１２０  メモリ
２００  オペレーティングシステム
２０１  オペレーティングシステム
２３０  負荷モニタ
【発明を実施するための形態】
【００１０】
ウェブサーバまたはＮＦＳサーバ等のファイルサーバシステムは、マルチメディアコンテンツアクセスまたは配信等の先進機能をサポートすべく進化している。そのような特徴を従来のサーバシステムで提供する結果、様々な仕事量が混在してしまう。すなわち、ウェブページの実装に典型的に用いられるテキストまたは画像ベースのコンテンツファイルがベストエフォート（極力高速）でアクセスおよび配信されるのに対し、ビデオや音声ファイルのマルチメディアコンテンツはクライアント側で滑らかに再生できるようにすべくリアルタイムデータのアクセスおよび配信を必要とする。汎用オペレーティングシステムは往々にしてマルチメディアコンテンツを効率的に扱うために必要なリアルタイム性能を欠いている結果、汎用オペレーティングシステム上に構築された単一のサーバシステムにより両方の仕事量がサービスを受けたならばサービスの品質が低下してしまう。
【００１１】
また、汎用オペレーティングシステムは、一般に、オペレーティングシステムが制御するメモリ内へのファイルデータのキャッシングの利用を通じて小さいファイルへのアクセスを高速化すべく設計されている。一方、マルチメディアファイルは平均的にサイズがより大きく、それらへの逐次アクセスの特性に起因してデータキャッシングが非効率となるため、従来の汎用オペレーティングシステムによる処理が非効率的になってしまう。
【００１２】
マルチプロセッササーバ上でいくつかの異なるオペレーティングシステムを実行することにより、リアルタイムアクセスのサービス品質を大幅に向上させることができる。例えばビデオファイル配信用に最適化された専用オペレーティングシステムを、ベストエフォート型ファイルデータの取り扱いに用いる従来のオペレーティングシステムと同時に実行できるため、結果的に全体的なサーバ性能の維持および向上も可能になる。本方法はまた、物理的に異なるサーバシステムを使用する従来方式と比較して、専ら単一サーバだけを使用する結果、保守、収納、および電力消費コストが下がる点でより好ましいであろう。
【００１３】
単一サーバの異なるプロセッサ上で複数のオペレーティングシステムを実行することは新規な方法でない。しかし、各種の負荷に専用のオペレーティングシステムを用いて様々な仕事量が混在しているファイルサーバにこれを効率的に実装するには、全体的なシステム効率を最大化するためにプロセッサの動的な再割当て方式が必要とされる。実際、リアルタイムファイル処理に対するベストエフォート型ファイル処理の負荷比率がクライアント要求に応じて変化するにつれて、実行されるオペレーティングシステム間でのプロセッサの再割当ては、プロセッサの静的割当てが必ずしも全ての種類の仕事量の効率的な処理につながらないのに比べて、全体的な性能を向上させることができる。
【００１４】
オペレーティングシステムへのプロセッサの動的な再割当てはいくつかの課題に直面する。第一に、従来のオペレーティングシステムのプロセススケジューラは、一般に、各プロセスに割当て可能なプロセッサ時間を増やすべくオペレーティングシステムにより制御されるプロセッサ間でプロセスを均一に分散するため、プロセスの完了に要する処理時間が短縮される。この方法では、オペレーティングシステムのプロセッサがアイドルに入らない、すなわちＣＰＵ負荷がゼロにならないようにプロセッサが頻繁に使用される。複数のオペレーティングシステム間で動的にプロセッサの再割当てを行なう場合、アイドルプロセッサが存在しなければ効率的な再割当ての決定が妨げられる恐れがある。
【００１５】
次に、ファイルサーバにより実現可能な最大性能は、自身のプロセッサ負荷だけに依存する訳ではない。すなわち、記憶装置へのアクセススループットおよびネットワークへのアクセススループットが既に最大であるならば、プロセッサの数を増やしてもファイルサーバのオペレーティングシステムにより実現される性能は向上しない。オペレーティングシステムのプロセッサ負荷だけに基づいて決定すれば、結果的にプロセッサの非効率的な分散が生じる恐れがある。
【００１６】
最後に、ベストエフォートとリアルタイムの間の仕事量比率は両極端な２通りの可能性のいずれかに偏る恐れがある。すなわち、一種類の仕事量が存在して、システムはオペレーティングシステムを完全に停止させて、仕事量比率が変化した際に再起動することにより、全てのプロセッサを１種類のオペレーティングシステムだけに完全に割当てることができる筈である。
【００１７】
本発明のいくつかの実施形態は、プロセッサの動的割当て管理への異なるアプローチを用いることにより性能問題を解決する。本発明の特定の実施形態は、各オペレーティングシステムにおけるプロセスのスケジューリングを強化して、異なるオペレーティングシステムにプロセッサを再割当てすることが可能ならばアイドルに保つことにより、プロセッサの再割当ての待ち時間が減少する。
【００１８】
以下により詳しく述べるように、一実施形態において、本システムは複数の通信ポートからアクセス可能なデータ記憶装置、複数のネットワークアダプタ、およびサーバの１個以上のプロセッサに実行される少なくとも２個の異なるオペレーティングシステムを含んでいる。各オペレーティングシステムは、どのプロセッサでプロセスを実行すべきかを決定するプロセススケジューラを含んでいる。スケジューラの決定は、使用されるプロセッサの現在負荷、使用する記憶装置ポートの現在のスループット、および使用するネットワークアダプタに基づいている。これらのパラメータは、各オペレーティングシステムにより測定され、サーバ上で実行される全てのオペレーティングシステム間で共有されていて、各オペレーティングシステムが、アイドルプロセッサを別のオペレーティングシステムに再割当てすべく要求できるようにする。
【００１９】
各オペレーティングシステムのプロセススケジューラは、現在使用されているプロセッサの負荷が、プロセッサの過負荷の危険性を示すプログラム可能な閾値を超えるまで、プロセスを実行するためのアイドルプロセッサの選択を保留する。閾値を超えたならば、プロセススケジューラは１個以上のプロセスを実行すべくアイドルプロセッサを選択することができる。アイドルプロセッサが利用できない場合、オペレーティングシステムは、記憶装置へのアクセスに使用されているポートの現在のスループットまたはそのネットワークアダプタの現在のスループットが最大値に達しない限り、別のオペレーティングシステムのアイドルプロセッサの再割当てを要求することができる。
【００２０】
本明細書に開示する本発明をベストエフォートおよびリアルタイムのファイルアクセスの仕事量が混在する状態にあるファイルサーバについて記述しているが、本発明はアプリケーションサーバ等、他の種類のシステムおよび他の種類のサービスに適用可能であって、依然として本発明の趣旨および範囲に含まれる。
【００２１】
図１は、本発明の技術を実装可能な典型的ＳＭＰアーキテクチャサーバシステムの一例を示すブロック図である。図１に示すサーバ１００は、メモリバス１２１を介して共通の共有メモリ１２０にアクセスする４個のプロセッサ１１０、１１１、１１２、および１１３を含んでいる。メモリバスに接続されたブリッジ１２２を用いて、全てのプロセッサもまた入出力バス１２３に接続された装置にアクセスすることができる。サーバ１００は、スイッチ１３３を介してネットワーク１３４にアクセスする３個のネットワークアダプタ１３０、１３１、および１３２を備えている。当該サーバは、ファイバーチャネルスイッチ１４３に接続された３個のファイバーチャネルアダプタ１４０、１４１、および１４２を用いて記憶システム１４４にアクセスすることができる。サーバ１００共通メモリ１２０は、少なくとも２種類のオペレーティングシステムを格納している。共通メモリ１２０は全てのプロセッサから等しく物理的にアクセス可能であるが、サーバ上で実行されるオペレーティングシステムのメモリ管理および保護は、単一のオペレーティングシステムだけにアクセスできるメモリ領域を実装すべく使用可能なメモリを分割する場合がある。同様に、全てのオペレーティングシステムにより共有されるメモリ領域もまた実装可能である。本発明は、プロセッサ、ネットワークアダプタ、および本システムに存在するファイバーチャネルアダプタの最大数により制約されない。通常、プロセッサ、ネットワークアダプタ、およびサーバシステムで見つかるファイバーチャネルアダプタの最大数は、使用可能なプロセッサスロット（コネクタ）および入出力バス１２３上のコネクタの数により制約される。クライアント１５０は、ネットワーク１３４を介してサーバ１００により提供されるサービスを利用することができる。提供されるサービスは、ビデオリアルタイム配信（ストリーミング）またはサーバの記憶システム１４４に保存されたファイルへの直接アクセスをサービスする（ウェブサーバ機能）ウェブページを含んでいてよい。
【００２２】
図２は、２種類の異なるオペレーティングシステムを使用する場合のサーバ１００の論理構成を示すブロック図である。例えば、あるオペレーティングシステム２００は記憶システム１４４に保存されたファイルへのクライアントによる直接アクセスの効率的な処理およびウェブページのサービス提供のために最適化されている一方、他のオペレーティングシステム２０１はビデオファイルのリアルタイムストリーミングのために最適化されていてよい。ＳＭＰ対応オペレーティングシステム２００、２０１の各々が２個の異なるプロセッサを用いて実行される。オペレーティングシステム２００は、プロセッサ２１０、２１１を使用する一方、オペレーティングシステム２０１はプロセッサ２１２、２１３を使用する。オペレーティングシステム２００、２０１の両方が、アプリケーションの実行およびシステムレベルのプロセスおよびタスクの制御に用いるプロセススケジューラ（各々２２０および２２１）を含んでいる。負荷モニタ２３０は、オペレーティングシステム２００、２０１の両方が共有するメモリ領域であって、各オペレーティングシステムの負荷情報を保存すべく用いられる。負荷モニタを用いて保存された負荷情報データを全てのオペレーティングシステムが用いて、プロセッサの再割当てが必要且つ可能か否かを判定する。各オペレーティングシステムは、例えばシステム管理者により決定されるサーバ構成に従いサーバ１００に含まれる入出力装置のいくつかを排他的に使用する権限が与えられる。図２の例において、オペレーティングシステム２００はネットワークアダプタ２４０およびファイバーチャネルアダプタ２５０の排他的使用権限を有する。同様に、オペレーティングシステム２０１はネットワークアダプタ２４１、２４２およびファイバーチャネルアダプタ２５１、２５２への排他的アクセス権限を有する。全てのネットワークアダプタはスイッチ２４３を介してネットワーク２４４に接続されている。全てのファイバーチャネルアダプタは、ファイバーチャネルスイッチ２５３を介して記憶システム２５４へのアクセスを実装する。
【００２３】
各オペレーティングシステム２００、２０１のプロセススケジューラは、負荷モニタ２３０に保存されている負荷データ情報を周期的に更新する。
【００２４】
図３は、負荷モニタを用いて保存される情報データを示す。負荷モニタデータは、３個のテーブルの組として編成されている。第１のテーブルは、システム内の各プロセッサおよび当該プロセッサが割当てられているオペレーティングシステムの現在の平均負荷を示すＣＰＵ負荷テーブル３００である。図２のシステムの場合、ＣＰＵ負荷テーブルは各々が図２のプロセッサ２１０、２１１、２１２、および２１３に対応している４個のエントリ３０１、３０２、３０３、および３０４を有している。第２のテーブル３１０を用いて、システムの各ネットワークアダプタおよび各装置を用いるオペレーティングシステムの現在の平均負荷を示す。このテーブルは、各々が図２のネットワークアダプタ２４０、２４１、および２４２の状態に対応している３個のエントリ３１１、３１２、および３１３を有する。ここに示す例では、ネットワークアダプタの現在負荷は単に最大性能の百分率、すなわち実現可能な最大スループットの百分率として保存される。例えば、最大１０００Ｍｂｐｓ対応アダプタに対して最大毎秒１００メガビット（Ｍｂｐｓ）の負荷は、テーブル３１０において値１０という結果を与える。最後に、負荷モニタの第３のテーブル３２０を用いて、サーバの全てのファイバーチャネルアダプタの負荷平均および所有者オペレーティングシステムを示す。３個のエントリ３２１、３２２、および３２３は各々図２のファイバーチャネルアダプタ２５０、２５１、および２５２に対応している。ネットワークアダプタ負荷テーブル３１０に関して、テーブル３２０内のファイバーチャネルアダプタの現在負荷は、アダプタの最大性能の百分率として表すことができる。
【００２５】
本発明の好適な実施形態によれば、サーバで実行される各オペレーティングシステムは負荷モニタに保存された自身のプロセッサ、ネットワークアダプタ、およびファイバーチャネルアダプタの負荷情報を周期的に更新する。低負荷状態において、オペレーティングシステムの不必要なプロセッサはプロセススケジューラによりアイドル（プロセッサ上でプロセスまたはタスクが一切実行されていない）に維持される。更新後、負荷モニタの負荷情報を解析し、オペレーティングシステム負荷の増大を検出してプロセッサの再割当てが必要か否かを判断する。図３に、オペレーティングシステム２００、２０１が極めて低いＣＰＵ負荷の下で動作している状況を示す。オペレーティングシステム０（２００）の場合、ＣＰＵ負荷テーブル３００のエントリ３０１は、ＣＰＵ０に対する２５％のＣＰＵ負荷を示し、エントリ３０２はＣＰＵ１が未使用（アイドル）であることを示す。オペレーティングシステム１（２０１）の場合、エントリ３０３はＣＰＵ２に対する５０％のＣＰＵ負荷を示し、エントリ３０４はＣＰＵ３が未使用（アイドル）であることを示す。
【００２６】
図４に、両方のオペレーティングシステムによる更新後の負荷情報の新たな状態を示す。ＣＰＵ２のＣＰＵ負荷が最大値（テーブル４００のエントリ４０３）付近まで増大したため、例えばＣＰＵ３がオペレーティングシステムプロセススケジューラにより活性化され、ＣＰＵ３の負荷が非ゼロ（テーブル４００のエントリ４０４）になる。一方、オペレーティングシステム０のＣＰＵ０のＣＰＵ負荷が顕著に変化しなかった（テーブル４００のエントリ４０１）ため、オペレーティングシステム０の第２のプロセッサは活性化されず、アイドル（テーブル４００のエントリ４０２）に保たれる。オペレーティングシステム１のアイドルプロセッサの活性化は、自身のネットワークおよびファイバーチャネルアダプタの負荷が最大値（テーブル４１０のエントリ４１２、４１３、およびテーブル４２０のエントリ４２２、４２３）であるという条件の下、すなわち追加的プロセッサを使用することによりネットワークおよびファイバーチャネルアダプタスループット（それらの負荷）が向上し、そのためオペレーティングシステム１の性能が向上しそうな場合に実行された。
【００２７】
オペレーティングシステム１の負荷が更に増大する、すなわち自身の第２プロセッサ（ＣＰＵ３）のＣＰＵ負荷が増大する場合を考慮すれば、プロセッサの再割当てが生じる可能性がある。この状況を図５に示す。ネットワークおよびファイバーチャネルアダプタの負荷が依然として許容される最大値（テーブル５１０のエントリ５１２、５１３、およびテーブル５２０のエントリ５２２、５２３）未満であるが、ＣＰＵ３の負荷が最大値（テーブル５００のエントリ５０４）に近づいたため、プロセッサの再割当てが開始された結果、オペレーティングシステム０のアイドルなＣＰＵ１がオペレーティングシステム１（テーブル５００のエントリ５０２）に再割当てされる。
【００２８】
各オペレーティングシステムにより実行される、プロセッサの再割当てが必要且つ可能か否かを判定する完全なアルゴリズムを図６に示す。
【００２９】
第１のステップ６００において、オペレーティングシステムのタスクは、負荷モニタの負荷情報の更新（ステップ６１０）を実行すべくタイマーの満了を待つ。負荷情報の更新完了後、ステップ６２０においてオペレーティングシステムが活性化プロセッサの全体的なＣＰＵ負荷を調べて、高閾値（例えば７５％）を超えるか否かを検出する。オペレーティングシステムに割当てられた全ての活性化プロセッサの全体的なＣＰＵ負荷は、式（１）に示す負荷モニタのＣＰＵ負荷テーブルの情報を用いて簡単に計算することができる。
【数１】
2011529210.tif 000003
【００３０】
全ての活性化プロセッサの全体的な負荷が所定の高閾値未満である場合、ステップ６２１においてオペレーティングシステムは次に、活性化ＣＰＵをアイドルにしようと試みる。これに対して、活性化ＣＰＵの全体的な負荷が所定の高閾値を超えた場合、オペレーティングシステムは次に、ネットワークおよびファイバーチャネルアダプタの負荷が最大値未満であることを確認（ステップ６３０）することにより、追加ＣＰＵを活性化すれば性能が向上するか否かを調べる。これらのアダプタの負荷が最大値である場合、オペレーティングシステムにプロセッサを再割当てしてもデータのスループットは向上せず、従ってサーバの性能は向上しない。そのような場合、アルゴリズムはステップ６３１においてプロセッサの再割当てを一切実行せずに終了する。この状況が生じるのは、サーバに過度に負荷が掛かった結果、より高い性能、例えば、より高い記憶およびネットワークスループットの可能性無しにＣＰＵの負荷増大を回避するために、オペレーティングシステムが提供するサービスが一時的に新規のクライアント要求を拒否する場合だけである。ステップ６３０においてネットワークおよびストレージアダプタの負荷が最大ではないと判定されたならば、オペレーティングシステムは最初にステップ６４０において、自身に割当てられたプロセッサのうち１個がアイドルであるか否か、すなわち１個のプロセッサの現在負荷がゼロであるか否かを調べることにより追加プロセッサの活性化を試みる。アイドルプロセッサが見つかったならば、ステップ６７０において当該プロセッサを活性化する。これに対して、全てのオペレーティングシステムのプロセッサが既に活性化されている場合、オペレーティングシステムは負荷モニタＣＰＵ負荷テーブルを走査して他のオペレーティングシステムから入手可能なアイドルプロセッサを調べる（ステップ６５０）。使用可能なものがあれば、オペレーティングシステムはステップ６６０において負荷モニタＣＰＵ負荷テーブルを更新するとともに、ステップ６７０において新たに割当てられた（依然としてアイドル状態にある）プロセッサを活性化することにより、アイドルプロセッサの自身への再割当てを実行する。アイドルプロセッサの活性化はプロセッサの種類に依存するが、通常は、を動作スケジューラ内のプロセスの実行に使用可能なプロセッサのリストに当該プロセッサを追加して、当該プロセッサにリスタート信号を送信して当該プロセッサの状態（割り込みハンドラ、仮想記憶設定等）を再初期化するステップが含まれる。別のオペレーティングシステムからのアイドルプロセッサが使用可能でない場合、アルゴリズムはステップ６３１で終了し、過負荷状態に陥る。
【００３１】
プロセッサ再割当ての対称動作は、全体的な負荷が増加している他のオペレーティングシステムによりアイドルプロセッサが使用できるように、低負荷状態で活性化プロセッサをアイドルにさせようと試みている。この動作は、自身の活性化プロセッサの全体的な負荷が高閾値未満である場合、負荷モニタ情報が更新された時点でオペレーティングシステムにより試みられる（図６のステップ６２１）。
【００３２】
図７は、活性化プロセッサをアイドルにしようと試みる各オペレーティングシステムにより実行されるステップを示すフロー図である。図６のステップ６２１に対応するステップ７００から始めて、オペレーティングシステムは最初にステップ７１０において自身の活性化プロセッサの全体的な負荷が低閾値（例えば２５％）未満であるか否かを調べる。当該閾値未満ならば、オペレーティングシステムは、あるプロセッサをアイドル状態に戻すことができると仮定して、アイドルにする候補として負荷が最も低いプロセッサを選択する（ステップ７２０）。オペレーティングシステムの活性化プロセッサの全体的な負荷が低閾値を超えていればオペレーティングシステムプロセッサの状態は不変のまま処理終了する。別途極めて低い負荷状態で使われる筈であったプロセッサをアイドルにすることにより、あるオペレーティングシステムが、より高い負荷状態で動作している別のオペレーティングシステムへのプロセッサの再割当てを可能にする。この結果、当該プロセッサをアイドルにしたオペレーティングシステムの性能を低下させることなく、当該プロセッサが再割当てされるオペレーティングシステムの潜在的性能が向上する。
【００３３】
ＳＭＰ対応オペレーティングシステムは、使用可能なプロセッサが複数あるため、プロセッサの活性化／アイドル化動作を実装することができる。しかし、非ＳＭＰオペレーティングシステムの場合、オペレーティングシステムが最初に停止されるかまたは実行が保留されない限り、アイドル状態にして別のＳＭＰオペレーティングシステムに再割当てることができないシングルプロセッサしか有していない。
【００３４】
本発明の別の好適な実施形態において、ＳＭＰ対応オペレーティングシステムは、サーバ１００のシングルプロセッサ上で実行される一組の非ＳＭＰオペレーティングシステムの（以下ＵＰオペレーティングシステムと呼ぶ）と組み合わせて用いることができる。この構成を図８に示す。
【００３５】
図８は、ＳＭＰオペレーティングシステム８００を複数のシングルプロセッサ（ＵＰ）オペレーティングシステム（８０１、８０２）と組み合わせて用いる場合のサーバの論理構成を示すブロック図である。オペレーティングシステム８００はＣＰＵ０、１（８１０、８１１）使用し、且つネットワークアダプタ８４０、８４１およびファイバーチャネルアダプタ８５０、８５１の排他的使用権限が与えられている。オペレーティングシステム８０１はＣＰＵ２を使用し、且つネットワークアダプタ８４２およびファイバーチャネルアダプタ８５２の使用が許可されている。最後に、オペレーティングシステム８０２はＣＰＵ３を使用し、且つネットワークアダプタ８４３およびファイバーチャネルアダプタ８５３の使用が許可されている。全てのネットワークアダプタがスイッチ８４３を介してネットワーク８４４に接続されていて、記憶システム８５４はスイッチ８５３を用いて全てのファイバーチャネルアダプタにアクセス可能である。全てのオペレーティングシステムは、プロセススケジューラ８２０、８２１、および８２２によりデータが更新された共有負荷モニタ８３０へのアクセス権限を有する。
【００３６】
ＵＰオペレーティングシステム８０１または８０２の一方のＣＰＵ負荷が増大した場合、ＣＰＵ再割当てが生じない。これに対して、プロセッサ８１２または８１３の一方のオペレーティングシステム８００への再割当てを許すことにより、本明細書に開示する方法を用いてＳＭＰオペレーティングシステムの性能を向上させることができる。この動作は図９に示すように実行される。対象とするアイドルＣＰＵがＵＰオペレーティングシステムに割当てられる場合、図９の処理は図６のステップ６６０に対応する。この場合、オペレーティングシステムが一切クライアント要求を処理していない、すなわち一切のファイルデータをクライアントに配信していなければ、ＵＰオペレーティングシステムのプロセッサはアイドルであると考えられる。
【００３７】
第１のステップ９００において、再割当てされる予定のプロセッサ上で実行されているオペレーティングシステムが停止される。オペレーティングシステムの停止は、実行されているオペレーティングシステムに依存し、修正されたキャッシュデータがあれば記憶装置にフラッシュし、実行中のサービス（ウェブサーバ等）を停止して、全てのオペレーティングシステムコードの実行を止めるステップが含まれていてよい。次に、ステップ９１０において、プロセッサの再割当てを反映させるべく負荷モニタＣＰＵ負荷テーブルを修正する。最後に、ステップ９２０において、ＵＰオペレーティングシステムが使用するネットワークおよびファイバーチャネルでアダプタもまた当該プロセッサと同一のオペレーティングシステムに再割当てされる。
【００３８】
図７で記述したようにＳＭＰオペレーティングシステム上のプロセッサをアイドルにする対称動作もまた、ＳＭＰおよびＵＰオペレーティングシステムの組合せをサポートすべく調整することができる。実際、ステップ７２０を「ＣＰＵ負荷が最も低いＣＰＵを選択し、その上でＵＰオペレーティングシステムを再起動する」ように変更して、プロセッサがＳＭＰオペレーティングシステムに再割当てされた際に停止されたＵＰオペレーティングシステムを再起動してクライアント要求を処理させることができる。
【００３９】
本発明の例示的な実施形態に関する上の記述は、図解および説明目的で提示するものであって、網羅的であることまたは本発明の範囲を開示した実施形態に限定することは意図していない。本発明において自由な修正、各種変更、および代替を想定している。いくつかの例では、上述の他の特徴を相応に使用しなくても本発明の特徴を採用できる。
【図１】
2011529210.tif 000004
【図２】
2011529210.tif 000005
【図３】
2011529210.tif 000006
【図４】
2011529210.tif 000007
【図５】
2011529210.tif 000008
【図６】
2011529210.tif 000009
【図７】
2011529210.tif 000010
【図８】
2011529210.tif 000011
【図９】
2011529210.tif 000012
【国際調査報告】
2011529210.tif 000013
2011529210.tif 000014