(57)【要約】  【課題】  複雑なハードウェア構成の計算機においても、プログラムの実行に最適な資源割当てを実施し、計算性能を向上させる。  【解決手段】  各マルチコアプロセッサ８０は、物理プロセッサであり、ＯＳ６０の下で複数の論理プロセッサ５３として機能する。物理プロセッサ内の演算器、キャッシュメモリなどの機構は、論理プロセッサ間で競合して使用されあるいは共有される。演算距離テーブル９０は、論理プロセッサ間での機構の競合、あるいは共有を数値化した情報を格納する。プロセス管理部６２は、新しいプロセスに論理プロセッサを割り当てる際に、演算距離テーブル９０を参照しこのプロセスとすでに論理プロセッサを割当済のプロセスとの依存関係に応じて物理プロセッサの性能を引き出すように論理プロセッサを割り当てる。【選択図】  図４
2006024180.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算器と、複数のレジスタセットと、主記憶メモリの情報を一時的に格納するキャッシュメモリとを備える物理プロセッサを複数個有し、前記物理プロセッサの各々はオペレーティングシステムの下で前記キャッシュメモリを共有する複数の論理プロセッサとして機能し、プロセスに前記論理プロセッサを割り当てる計算機の資源割当方法において、
前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がない場合には、割当済のプロセスと前記キャッシュメモリを共有しないように別の前記物理プロセッサ上の前記論理プロセッサを割り当てるステップと、
前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がある場合には、依存関係のあるプロセスと前記キャッシュメモリを共有するように同一の前記物理プロセッサ上の前記論理プロセッサを割り当てるステップとを有することを特徴とする計算機の資源割当方法。
【請求項２】
前記計算機は、同一の前記主記憶メモリを共有する複数の前記物理プロセッサをノードとして、複数の前記ノードから構成されることを特徴とする請求項１に記載の計算機の資源割当方法。
【請求項３】
前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がない場合には、割当済のプロセスと前記主記憶メモリを共有しないように別の前記ノード上の前記論理プロセッサを割り当てるステップと、
前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がある場合には、依存関係のあるプロセスと前記主記憶メモリを共有するように同一の前記ノード上の前記論理プロセッサを割り当てるステップとを有することを特徴とする請求項２に記載の計算機の資源割当方法。
【請求項４】
前記主記憶メモリにアクセスする計算を前記論理プロセッサ単独と前記論理プロセッサの組について実行して性能測定し、２つの前記論理プロセッサの間で前記キャッシュメモリを共有しているか否かの情報を取得することを特徴とする請求項１に記載の計算機の資源割当方法。
【請求項５】
前記論理プロセッサの各々から前記ノードの前記主記憶メモリの各々にアクセスする計算を実行して性能測定し、同一の前記主記憶メモリを共有する前記論理プロセッサのグループについての情報を取得することを特徴とする請求項３に記載の計算機の資源割当方法。
【請求項６】
前記物理プロセッサが使用不可となるイベントが発生したとき、該当する前記論理プロセッサを資源割当の対象から除外することを特徴とする請求項１に記載の計算機の資源割当方法。
【請求項７】
前記物理プロセッサが性能変更となるイベントが発生したとき、該当する前記論理プロセッサの性能情報を修正し、修正された性能を満足するプロセスに当該論理プロセッサを割り当てることを特徴とする請求項１に記載の計算機の資源割当方法。
【請求項８】
複数の演算器と、複数のレジスタセットと、主記憶メモリの情報を一時的に格納するキャッシュメモリとを備える物理プロセッサを複数個有し、前記物理プロセッサの各々はオペレーティングシステムの下で前記キャッシュメモリを共有する複数の論理プロセッサとして機能し、プロセスに前記論理プロセッサを割り当てる計算機に、
前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がない場合には、割当済のプロセスと前記キャッシュメモリを共有しないように別の前記物理プロセッサ上の前記論理プロセッサを割り当てる機能、及び
前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がある場合には、依存関係のあるプロセスと前記キャッシュメモリを共有するように同一の前記物理プロセッサ上の前記論理プロセッサを割り当てる機能を実現させるためのオペレーティングシステム。
【請求項９】
前記計算機は、同一の前記主記憶メモリを共有する複数の前記物理プロセッサをノードとして、複数の前記ノードから構成されることを特徴とする請求項８に記載のオペレーティングシステム。
【請求項１０】
前記計算機に、
前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がない場合には、割当済のプロセスと前記主記憶メモリを共有しないように別の前記ノード上の前記論理プロセッサを割り当てる機能、及び
前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がある場合には、依存関係のあるプロセスと前記主記憶メモリを共有するように同一の前記ノード上の前記論理プロセッサを割り当てる機能を実現させるための請求項９に記載のオペレーティングシステム。
【請求項１１】
さらに前記計算機に、前記主記憶メモリにアクセスする計算を前記論理プロセッサ単独と前記論理プロセッサの組について実行して性能測定し、２つの前記論理プロセッサの間で前記キャッシュメモリを共有しているか否かの情報を取得する機能を実現させるための請求項８に記載のオペレーティングシステム。
【請求項１２】
さらに前記計算機に、前記論理プロセッサの各々から前記ノードの前記主記憶メモリにアクセスする計算を実行して性能測定し、同一の前記主記憶メモリを共有する前記論理プロセッサのグループについての情報を取得する機能を実現させるための請求項９に記載のオペレーティングシステム。
【請求項１３】
前記計算機において、
プロセスが最低限満たすべき性能値と、性能を満足した際に最も効果がある最大の性能値の組により、必要とする性能値を明示的に指定可能なインタフェースを備え、資源割当を行うことを特徴とする請求項８又は請求項１０に記載のオペレーティングシステム。
【請求項１４】
複数の演算器と、複数のレジスタセットと、主記憶メモリの情報を一時的に格納するキャッシュメモリとを備える物理プロセッサを複数個有し、前記物理プロセッサの各々はオペレーティングシステムの下で前記キャッシュメモリを共有する複数の論理プロセッサとして機能し、プロセスに前記論理プロセッサを割り当てる計算機システムにおいて、前記計算機システムは、
前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がない場合には、割当済のプロセスと前記キャッシュメモリを共有しないように別の前記物理プロセッサ上の前記論理プロセッサを割り当て、前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がある場合には、依存関係のあるプロセスと前記キャッシュメモリを共有するように同一の前記物理プロセッサ上の前記論理プロセッサを割り当てるプロセス管理部と、
前記プロセス管理部に前記キャッシュメモリを共有する前記論理プロセッサについての情報を伝達する資源管理部とを有し、
前記プロセス管理部と前記資源管理部は、オペレーティングシステムの一部であり、前記主記憶メモリに格納され、前記論理プロセッサによって実行されることを特徴とする計算機システム。
【請求項１５】
前記計算機システムは、同一の前記主記憶メモリを共有する複数の前記物理プロセッサをノードとして、複数の前記ノードから構成されることを特徴とする請求項１４に記載の計算機システム。
【請求項１６】
前記プロセス管理部は、さらに前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がない場合には、割当済のプロセスと前記主記憶メモリを共有しないように別の前記ノード上の前記論理プロセッサを割り当て、前記プロセスがすでに前記論理プロセッサを割当済のプロセスと依存関係がある場合には、依存関係のあるプロセスと前記主記憶メモリを共有するように同一の前記ノード上の前記論理プロセッサを割り当てることを特徴とする請求項１５に記載の計算機システム。
【請求項１７】
複数の演算器と複数のレジスタセットとを備える物理プロセッサの複数個と、複数の前記物理プロセッサによって共有される主記憶メモリとを含む演算ノードと、入出力コントローラと前記入出力コントローラに接続される入出力装置とを含む入出力ノードとを有する計算機は、第１の演算ノードがアクセス速度のより速い方の第１の入出力ノードおよびアクセス速度のより遅い方の第２の入出力ノードに接続され第２の演算ノードがアクセス速度のより速い方の前記第２の入出力ノードおよびアクセス速度のより遅い方の前記第１の入出力ノードに接続されるように構成され、前記物理プロセッサの各々はオペレーティングシステムの下で複数の論理プロセッサとして機能し、プロセスに前記論理プロセッサを割り当てる計算機の資源割当方法において、
前記第１の演算ノードに属する物理プロセッサが割り当てられているプロセスが前記第２の入出力ノードに属する入出力装置を使用しかつ入出力依存のプロセスか否か判定するステップと、
前記プロセスが前記の判定条件に合う場合に、前記第２の演算ノードに属する空きの論理プロセッサが存在しかつ前記第２の演算ノードの計算負荷が所定値に達しない場合は、前記プロセスに割り当てられている論理プロセッサを前記第２の演算ノードに属する空きの論理プロセッサに割当変更するステップとを有することを特徴とする計算機の資源割当方法。
【請求項１８】
請求項１７記載の計算機の資源割当方法において、さらに前記計算機は、前記演算ノードと前記入出力ノードとの接続線に介入するノードスイッチを有し、前記ノードスイッチの切替によって前記第１の演算ノード、前記第２の演算ノードと、前記第１の入出力ノード、前記第２の入出力ノードとの間で組を作るよう構成され、
さらに前記演算ノード上で動作するプロセスの入出力依存に応じて前記演算ノードと前記入出力ノードとの組を構成するように前記ノードスイッチの設定を切り替えることを特徴とする計算機の資源割当方法。
【請求項１９】
複数の演算器と複数のレジスタセットとを備える物理プロセッサの複数個と、複数の前記物理プロセッサによって共有される主記憶メモリとを含む演算ノードと、入出力コントローラと前記入出力コントローラに接続される入出力装置とを含む入出力ノードとを有する計算機は、第１の演算ノードがアクセス速度のより速い方の第１の入出力ノードおよびアクセス速度のより遅い方の第２の入出力ノードに接続され第２の演算ノードがアクセス速度のより速い方の前記第２の入出力ノードおよびアクセス速度のより遅い方の前記第１の入出力ノードに接続されるように構成され、前記物理プロセッサの各々はオペレーティングシステムの下で複数の論理プロセッサとして機能し、プロセスに前記論理プロセッサを割り当てる計算機に、
前記第１の演算ノードに属する物理プロセッサが割り当てられているプロセスが前記第２の入出力ノードに属する入出力装置を使用しかつ入出力依存のプロセスか否か判定する機能、及び
前記プロセスが前記の判定条件に合う場合に、前記第２の演算ノードに属する空きの論理プロセッサが存在しかつ前記第２の演算ノードの計算負荷が所定値に達しない場合は、前記プロセスに割り当てられている論理プロセッサを前記第２の演算ノードに属する空きの論理プロセッサに割当変更する機能を実現させるためのオペレーティングシステム。
【請求項２０】
請求項１９記載のオペレーティングシステムにおいて、さらに前記計算機は、前記演算ノードと前記入出力ノードとの接続線に介入するノードスイッチを有し、前記ノードスイッチの切替によって前記第１の演算ノード、前記第２の演算ノードと、前記第１の入出力ノード、前記第２の入出力ノードとの間で組を作るよう構成され、
さらに前記演算ノード上で動作するプロセスの入出力依存に応じて前記演算ノードと前記入出力ノードとの組を構成するように前記ノードスイッチの設定を切り替える機能を実現させるためのオペレーティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機において、プロセッサ、メモリまたは入出力装置などの計算機の資源を管理する方法及び計算機の資源をアプリケーションプログラムに割り当てる方法に関する。
【背景技術】
【０００２】
計算機の計算能力を向上する手段として、１台の計算機上に複数のプロセッサを搭載する方法がある。
【０００３】
計算機上で複数のプロセッサを稼動させる技術の一つとして、Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇまたはハイパースレッディング(以下、ハイパースレッディング)がある。図１に示すように、ハイパースレッディングを採用するプロセッサ１０は、レジスタセット（１１―０及び１１―１）、キャッシュメモリ（１２―０及び１２―１）、およびＩ／Ｏ割り込み制御部（１４―０及び１４―１）をプロセッサ内に複数個持つ。これらのハードウェア資源が演算器１３、命令デコーダ１６及びバスインタフェース１７を共有しながら動作することによって、プロセッサが論理的に複数個存在しているようにみせる。
【０００４】
半導体技術の進歩により、１個の物理プロセッサには、従来のプロセッサを構成する回路が複数個分構成できるようになってきた。これを利用して、従来のプロセッサをコアとし、複数個分のコアを１チップに納めたチップマルチプロセッサ又はマルチコアプロセッサ（以下、マルチコアプロセッサ）が開発されている。図２に示すように、マルチコアプロセッサ２００内のコアは、キャッシュメモリ（ここでは３次キャッシュ２３０）及びバスインタフェース２４０を他のコアと共有している。
【０００５】
複数のプロセッサを搭載する計算機において、プロセッサとメモリの接続方式の一つとして対称マルチプロセッサ（以下、ＳＭＰ）がある。ＳＭＰは、すべてのプロセッサを同じメモリバスに接続する。各プロセッサは、どのメモリアドレスを参照しても等しい速度でメモリにアクセスできる。
【０００６】
複数のプロセッサを搭載する計算機において、プロセッサとメモリの別の接続方式として非均一メモリアクセス（以下、ＮＵＭＡ）がある。ＮＵＭＡでは、各プロセッサが同じメモリバスに接続される必要がない。プロセッサは、自身が接続されるメモリバスにあるメモリのアドレスを参照するときは、等しい速度でアクセスできる。しかし別のメモリバスにあるメモリを参照する場合は、自身が接続されたメモリバスにあるメモリのアクセス速度と比較して、アクセス速度が低下するか又はアドレスによっては参照できないことがある。
【０００７】
複数のプロセッサを搭載する計算機において、プロセッサとメモリの接続方式として上記のＳＭＰとＮＵＭＡを組み合わせる場合がある。この場合では、いくつかのプロセッサとメモリを接続してクラスタとし、クラスタを複数個接続したものを計算機とする。この接続方式では、クラスタ内のメモリ及びプロセッサはＳＭＰとして機能し、クラスタ外にあるメモリ及びプロセッサはＮＵＭＡとして機能する。
【０００８】
近年の計算機は、従来型のプロセッサ、ハイパースレッディング対応プロセッサ１０、マルチコアプロセッサ２００、または図３に示すハイパースレッディング対応マルチコアプロセッサ３００を、プロセッサとして１つ以上持つ。また計算機は、プロセッサとメモリをＳＭＰ、ＮＵＭＡ若しくはＳＭＰ及びＮＵＭＡの混在によって構成する。
【０００９】
上記の計算機において、プログラムが効率よく実行されるためには、プログラムの実体であるプロセスを、適切なプロセッサとメモリに割り付ける必要がある。特にＮＵＭＡではプロセスが動作するプロセッサとプログラムが置かれたメモリの場所によって計算の効率が著しく異なる。計算機のハードウェア特性による実行効率の低下を避けるため、特許文献１又は非特許文献１のようにプロセスの実行においてプロセッサとメモリを固定する手段が開発されている。また特許文献２のようにプロセスの処理の一部を特定のプロセッサに固定化する手段もある。さらに特許文献３は、プロセスが物理メモリを獲得する際に適切なメモリを割り当てている。
【００１０】
【特許文献１】特開平７―３２５７９１号公報
【特許文献２】特開２００３―２４８６６６号公報
【特許文献３】Ｕｎｉｔｅｄ  Ｓｔａｔｅｓ  Ｐａｔｅｎｔ  Ａｐｐｌｉｃａｔｉｏｎ：００４００１９８９１
【非特許文献１】「ハイパー・スレッディング・テクノロジのアーキテクチャとマイクロアーキテクチャ」、インテル社、２００２年、Ｉｎｔｅｌ  Ｔｅｃｈｎｏｌｏｇｙ  Ｊｏｕｒｎａｌ  Ｖｏｌｕｍｅ  ６  Ｉｓｓｕｅ  １、ｐ．４
【発明の開示】
【発明が解決しようとする課題】
【００１１】
近年の計算機は、ハードウェア構成が複雑化しており、ユーザ又はアプリケーションプログラムがハードウェアの性能特性を把握することが困難になっている。
【００１２】
ハイパースレッディング対応プロセッサを使用する場合、ソフトウェアが認識するのは、論理的なプロセッサであり、ＯＳ（オペレーティングシステム）はプロセスに論理プロセッサを割り付ける。論理プロセッサは、他の論理プロセッサとハードウェアを共有しているため、キャッシュの共有による性能向上が期待できる反面、演算器の競合によって性能が低下する可能性がある。性能が向上するかどうかは、１個の物理プロセッサ上に存在する各論理プロセッサがどのような処理特性を持つプロセスを実行するかに依存する。
【００１３】
マルチコアプロセッサは、１個の物理プロセッサ上に存在するキャッシュ及びＩ／Ｏ用バスをコア間で共有する。それぞれのコアで実行するプロセスの処理内容に関連がある場合、キャッシュヒットが期待できる。しかしコアで実行するプロセスの処理内容に関連がない場合、キャッシュのミスヒットを誘発し、性能が低下するという問題がある。
【００１４】
ＮＵＭＡのようなハードウェアの性能特性が非均一な計算機では、ＯＳがプロセスの実行の際に、実行プロセッサを固定し、かつ使用するメモリを特定の領域に制限する手段を持つことがある。ユーザ又はアプリケーションプログラムは、ＯＳが持つ手段を使って、プロセスを実行するプロセッサを指定し、性能向上を図ってきた。しかし上述したように、ハイパースレッディング又はマルチコアに対応したプロセッサは、ユーザまたはアプリケーションプログラムから、正確な性能情報を得る手段がないため、実行プロセスの性能要件を満たすプロセッサを特定することが困難である。
【００１５】
近年のプロセッサは、消費電力の削減又は熱暴走を回避する手段として、省電力で駆動する機構を持つものがある。プロセッサの省電力機構は、プロセッサの動作周波数を低下する、又はプロセッサ内のキャッシュメモリの一部若しくは演算器の一部に対して電力の供給を停止する、といった手段を用いて実装されている。プロセッサの省電力機構が働く場合、プロセッサは本来の性能で動作できない。複数のプロセッサを持つ計算機では、消費電力の削減又は発熱の回避を目的として、状況に応じて一部のプロセッサを省電力で動作させる又は常に一部のプロセッサを省電力で動作させる場合がある。このような環境の下でプロセスを実行する場合、ユーザ又はアプリケーションが実行に最適なプロセッサとメモリを指定してプロセスを起動するのは困難である。
【００１６】
本発明が解決しようとする課題は、複雑なハードウェア構成の計算機においても、プログラムの実行に最適な資源割当てを実施し、計算性能を向上させることである。さらに計算機の稼動中にハードウェアの構成変更及び性能特性の変更が発生しても、最適な資源割当てを保証することである。
【課題を解決するための手段】
【００１７】
本発明は、物理プロセッサを複数個有し、各物理プロセッサが複数の論理プロセッサとして機能する計算機において、新しいプロセスに論理プロセッサを割り当てる際に、このプロセスとすでに論理プロセッサを割当済のプロセスとの依存関係に応じて物理プロセッサの性能を引き出すように論理プロセッサを割り当てる。さらにプロセスが要求する実行性能で実行できるように、ＯＳが必要な資源を割り当てる。
【発明の効果】
【００１８】
本発明により、計算機が複雑なハードウェア構成となっていても、ユーザの実行するプログラムが常に最適な性能な性能で動作する。
【発明を実施するための最良の形態】
【００１９】
計算機が起動する際、ＯＳは初期化処理の中で、プロセッサの物理構成情報と論理構成情報を取得する。またＯＳは、これらの情報を使って、ハードウェアの性能特性を算出し、プロセッサについては演算距離テーブル、メモリについてはメモリ距離テーブルとしてメモリ上に保存する。またＯＳは、プロセス間の親子関係又はメモリ共有情報などからプロセスの協調関係を決めるプロセスグループ管理情報も初期化する。
【００２０】
ＯＳは、ハードウェアの性能特性とプロセスグループから、プロセスの実行に最適な資源を割り当てる。さらにＯＳは、プロセスに対して性能品質を指定する資源割当インタフェースを備え、これによりプロセスが要求する性能を実現する。
【００２１】
ここでプロセスとは、複数のプログラムを並行して実行するマルチプログラミングを行う際の基本的なプログラム単位である。またプロセスは、ＯＳが資源を割り当てて処理を行う際の仕事の単位であり、この意味ではタスクと同義に用いられる。
【００２２】
ハードウェアの構成情報の変化がある場合、ＯＳは構成の変化に応じて性能特性情報を更新する。
【実施例１】
【００２３】
本発明の実施例について、図４を用いて説明する。図４において計算機５０は、ハイパースレッディング対応のマルチコアプロセッサ８０−１及び８０−２を持つ。それぞれの物理プロセッサは、図３で説明したマルチコアプロセッサであり、８０−１は、８１−１並びに８２−１の２つのコア、３次キャッシュ８３−１及びバスインタフェース８４−１を主要な回路として備える。
【００２４】
コア８１−１は、図３におけるコア３１０と同様に、２つのレジスタセットを持つ。各レジスタセットは演算器および２次キャッシュメモリを共有する。これにより、コア８１−１は、ソフトウェアに対して２つの論理ＣＰＵ５３−０及び５３−１として機能する。他のコアである８２−１、８１−２及び８２−２についても同様であり、論理ＣＰＵ５３−２〜５３−７として機能する。コア８１−１とコア８２−１は、３次キャッシュ８３−１とバスインタフェース８４−１を共有して使用する。
【００２５】
マルチコアプロセッサ８０−１及び８０−２は、共有メモリバス５１に接続しており、メモリコントローラ５４を介して主記憶メモリ５２を共有する。さらに８０−１及び８０−２は、入出力コントローラ５５経由で、２次記憶装置５６及び入出力装置５７にアクセスできる。２次記憶装置５６には、ＯＳ６０及びアプリケーションプログラムのプロセス７１〜７４が格納されている。ここでは、プロセス７１，７２、親プロセス７３は互いに独立なプロセスであり、親プロセス７３と子プロセス７４は依存関係のあるプロセスの例を示している。
【００２６】
図４におけるＯＳ６０は、実施例の資源管理部６１を持つ。資源管理部６１は、プロセッサの性能情報を保持する演算距離テーブル９０、メモリアクセスに関する性能情報を保持するメモリ距離テーブル１１０及びプロセス間の協調関係を保持するプロセスグループ情報１２０を持つ。
【００２７】
プロセス７１〜７４から資源確保要求があると、ＯＳのプロセス管理部６２は、管理する情報を参照して、適切な資源を割り付ける。
【００２８】
資源管理部６１およびプロセス管理部６２は、ＯＳ６０の一部であり、主記憶メモリ５２に格納され、１つ又は複数の論理ＣＰＵ５３によって実行される。
【００２９】
本発明を実施する際のＯＳの初期化手順を図４及び図５を使用して説明する。ステップ１００では、計算機のＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）などが、ソフトウェアが主記憶メモリ及びプロセッサを使えるようにセットアップする。この際、計算機は、計算機の初期化を実行するためのブートプロセッサを決定する。さらにステップ１００では、ブートプロセッサが２次記憶装置５６にアクセスし、ＯＳ６０を起動するためのプログラムを主記憶メモリ５２に読み込む。このブートプロセッサは、読み込まれたＯＳ起動プログラムを実行し、ＯＳ６０の起動を開始する。
【００３０】
ブートプロセッサは、図５のステップ１０１において、演算距離テーブルを作成するためのプログラムを実行し、性能情報をメモリに格納する。ブートプロセッサは、この情報をもとに演算距離テーブルを作成する。
【００３１】
さらにブートプロセッサは、ステップ１０２において、メモリ距離テーブルを作成するためのプログラムを実行し、性能情報をメモリに格納する。ブートプロセッサは、この情報をもとにメモリ距離テーブルを作成する。ブートプロセッサは、ステップ１０３において計算機上の各種デバイスをセットアップする。具体的には、アプリケーションプログラムの起動、デバイスドライバの組込みを行う。ブートプロセッサは、ステップ１０４において、計算機稼動中に使用するプロセスグループテーブルの初期化を行う。ＯＳは、ステップ１０５において、サービスに必要なプログラムを起動する。
【００３２】
ここで図６を用いて、ステップ１０１の詳細について説明する。ステップ１１１では、ＯＳは、演算距離テーブルのメモリ領域及び演算距離テーブルの計算に使用する作業用メモリを主記憶メモリに確保する。
【００３３】
ステップ１１２では、ＯＳは、計算機上の論理プロセッサの単体性能を計算する。計算方法としては、各論理プロセッサ（論理ＣＰＵ）について、メモリ上に置いたデータの算術計算を実行する。この方法では、まず計算のためのメモリ領域を確保し、初期値を代入する。さらに計算用のレジスタを初期化する。そして次の処理を、性能指標として利用ができる十分な試行回数（例えば１００回）繰り返す。
【００３４】
（１）プロセッサのクロックカウンタを参照し、プロセッサのレジスタに保存する。（２）先に確保したメモリに対して加算などの算術演算を行う。（３）再度、プロセッサのクロックカウンタを参照し、（１）との差分を取ることによって実行クロック数を測定する。（４）（３）で求めた実行クロックと現在までの処理回数をレジスタに記録する。
【００３５】
（１）〜（４）を十分な回数（例えば１００回）繰り返した後、総クロック数と処理回数から総クロック数の平均値を求める。取得した結果は、ステップ１１１で確保している作業用メモリに保存する。
【００３６】
ステップ１１３では、ＯＳは、ステップ１１２で行ったのと同じ測定を複数のプロセッサで同時に行う。実行するプロセッサの組は、演算器の競合が考えられるプロセッサの組み合わせすべてである。計算結果は、ステップ１１２と同様に作業用メモリに保存する。
【００３７】
ステップ１１４では、ＯＳは、ステップ１１２と１１３で計算した結果を比較する。ステップ１１３で実行した論理プロセッサの組において、計算結果がステップ１１２と比較して著しく低ければ、ＯＳは、演算器が競合していると判定する。この場合、該当するプロセッサの組を表す演算距離テーブルに競合を示す数値(例えば−１)を設定する。
【００３８】
ステップ１１５では、ＯＳは、ステップ１１３と同様に複数の論理プロセッサの組について、性能測定を行う。計算に使うアルゴリズムは、ステップ１１２においてメモリ上に置くデータを１ヶ所ではなく、一定範囲（たとえば６４ＫＢごと）に分散して置いて計算する。計算結果は、作業用メモリに格納する。
【００３９】
ステップ１１６では、ＯＳは、ステップ１１５の結果を各論理プロセッサ単独のメモリアクセスを伴う性能結果と比較する。性能が向上しているか又は低下が見られない場合、プロセッサ内のキャッシュがヒットしていると判定する。この場合、該当するプロセッサの組を表す演算距離テーブルに共有を示す数値を設定する。
【００４０】
ステップ１１７では、ＯＳは、ステップ１１１からステップ１１６までで、数値が設定されなかったプロセッサの組について標準の数値を設定する。
【００４１】
ステップ１１１を図４の計算機５０で実行した場合、演算距離テーブルは、例えば図７に示すものとなる。演算距離として示される数値は例えば０を基準とする性能差を示すものであってもよい。この場合には、数値の大きい論理プロセッサは、数値０の論理プロセッサに比べて性能が低いことを示す。ステップ１１２では、すべての論理プロセッサについてほぼ等しい性能結果が得られる。ステップ１１３の実行後、ステップ１１４において、演算器を共有している論理プロセッサの組で競合を示す−１が設定される。ステップ１１５及びステップ１１６では、マルチコアプロセッサにおいて演算器の競合がなく３次キャッシュを共有できるプロセッサの組が検出され、演算距離テーブルに数値０が設定される。最後に、ステップ１１７において、残りのプロセッサの組に数値２が設定され、ステップ１０１を終了する。
【００４２】
なおステップ１０１は、ハードウェア側があらかじめプロセッサの論理構成および物理構成の対応を通知する、全てのプロセッサは同じ性能を持つ又は過去に計算した結果が使用できるなどの条件により、計算の一部を省略することが可能である。
【００４３】
図８、図９及び図１０を用いてメモリ距離テーブルについて説明する。図８は、２個の物理プロセッサをＳＭＰ構成にしたハードウェアをノードとした計算機４０である。ノード４１−０は、コア４２−１、４２−２と主記憶メモリ４４−０を有し、ノード４１−１は、コア４２−３、４２−４と主記憶メモリ４４−１を有する。ノード４１−０及びノード４１−１の２つのノードは、ノードスイッチ４５につながるノードバス４６と接続することによって、ＮＵＭＡ型計算機として構成している。
【００４４】
このような構成の場合、各プロセッサが主記憶メモリへのアクセスする速度は、参照するアドレスによって異なる。この様子を、図９を使って説明する。論理プロセッサ４３−０は、ノード４１−０に存在するため、ノード４１−０に搭載された主記憶メモリ４４−０を参照する速度は、ノード４１−１に搭載された主記憶メモリ４４−１を参照するよりも速い。本発明では、このアクセス速度の違いをメモリ距離として管理する。
【００４５】
メモリ距離を算出するステップ１０２では、ブートプロセッサは、はじめに計算機の主記憶メモリのサイズを取得し、メモリ距離の測定間隔と測定サイズを決定する。次にブートプロセッサは、論理プロセッサごとに、メモリ距離を測定する。この測定では、決定した測定間隔に基づいてメモリアクセスを行い、アクセスに要したクロック数を算出する。この際、プロセッサが提供するキャッシュ未使用命令を使うことによって、必ず主記憶メモリまでアクセスする。さらにステップ１０２では、ブートプロセッサは、測定結果をまとめて、図１０のようなメモリ距離テーブル１１０を作成する。メモリ距離として示される数値は例えば１００を基準とする性能比を示すものであってもよい。
【００４６】
図４に示す計算機５０は、すべての論理プロセッサのメモリ距離が同一となる。
【００４７】
なおステップ１０２では、上記の処理に加えて次の処理を追加することによって、キャッシュヒットを考慮したメモリ距離テーブルを作成することも可能である。具体的には、上記の処理を実行した後、キャッシュ未使用命令の代わりにキャッシュ可能命令を使用して再び同じ処理を実行する。同じメモリ領域に関して、キャッシュ未使用命令で実行した結果とキャッシュ可能命令で実行した結果を比較する。キャッシュ可能命令を使用した場合に大幅な短縮が見られる場合は、キャッシュによる効果があるとみなして、当該メモリ領域のメモリ距離をより小さな値で設定する。
【００４８】
またＯＳは、特定のメモリ空間においてスワッピングが発生している場合、当該メモリ空間のメモリ距離を一時的に大きく設定することもできる。
【００４９】
図１１は、ステップ１０４で初期化を行うプロセスグループ情報１２０を示している。ステップ１０４では、ＯＳは、プロセスグループを管理するためのテーブルを主記憶メモリ上に確保し初期化する。ここで確保するプロセスグループの管理テーブルは、プロセスグループＩＤ、当該プロセスグループが保証すべき演算距離及びメモリ距離、当該プロセスグループが期待する最大の演算距離及びメモリ距離、及び当該プロセスグループに所属するプロセスのリストを含む。この例では、親プロセス７３と子プロセス７４がプロセスグループを構成し、このプロセスグループに属するプロセスには演算距離が−１、メモリ距離が５００になるような論理ＣＰＵ５３を割り当てられないことを示している。さらにプロセスが複数のプロセスグループに所属する可能性を考慮して、プロセスＩＤをキーとして当該プロセスの性能指標とプロセスグループＩＤが検索できる逆引きテーブルを用意してもよい。
【００５０】
またステップ１０４では、必要に応じてプロセスの標準性能指標又は特定のプロセス若しくはプロセスグループの性能指標を記録したファイルを２次記憶装置から読み出し、テーブルに反映することも可能である。
【００５１】
ここで実施形態のプロセス管理について図１２を用いて説明する。ＯＳのプロセス管理部６２は、各プロセスを生成する際にプロセス管理テーブルをＯＳの記憶領域内に作成し、そのプロセスの管理に使用する。各プロセス管理テーブルはそのプロセスの実行状態を記録しているので、ＯＳは、プロセスの切換を行ったとき実行を再開始するプロセスのプロセス管理テーブルの実行状態を参照して中断されたプロセスの実行を再開始する。またＯＳは、プロセスに新たな資源（例えばメモリ、ファイル）を割り当てた際には、プロセス管理テーブル又は関連するデータ構造体にアクセスしてその資源管理情報を更新する。
【００５２】
プロセス管理テーブルには、通常のＯＳに見られるように、当該プロセスについて、プロセスＩＤ、グループＩＤ、ファイル記述子のリスト、コンテキストの格納領域、親プロセスへの参照情報、子プロセスへの参照情報、および仮想アドレス空間情報などをもつ。さらに本発明は、プロセスが割り付けられている論理プロセッサ番号、プロセスが通常使用する最小演算距離、最大演算距離、最小メモリ距離、最大メモリ距離、所属するプロセスグループＩＤのリストを格納する。
【００５３】
プロセスは、ＯＳが定めた仮想アドレス空間上で走行する。仮想アドレス空間は、コード領域、テキスト領域、ヒープ領域、スタック領域、カーネル領域など使用目的に応じたアドレス空間として管理されるとともに、共用メモリ、メモリマップドファイルといったメモリ属性単位でも異なる領域として管理される。仮想アドレス空間の管理には、アドレス構造体のリストが用いられる。アドレス構造体は、通常、管理対象となる仮想アドレスの範囲、属性、状態を格納する。本実施形態のＯＳが生成するアドレス構造体は、メモリ距離の最小値と最大値のエントリを備える。これらは、プロセスが実行される論理プロセッサに関して当該アドレス空間が満たすべきメモリ距離の範囲を示している。
【００５４】
本発明のＯＳが提供する資源管理のためのプロセスグループは、協調する資源をもつプロセス間の関係を定義する。各々のプロセスグループは、プロセスの実行時に動的に定義される場合と、ユーザおよびプログラムが指定して定義される場合がある。前者は、ＯＳがプロセスの資源割当要求を実行する際に、自動的に割り当てるプロセスグループである。後者のプロセスグループは、ユーザまたはプロクグラムが協調して動作するプロセスの性能指標を明示的に指定する際に、ＯＳが割り当てる。
【００５５】
本発明のＯＳがプロセスに提供する資源管理のインタフェースについて説明する。ここでインタフェースとは、ソフトウェアインタフェースであり、具体的にはＯＳがユーザプログラムに提供するシステムコールである。資源管理インタフェースは、３種類に分類できる。第１は、性能指定のない資源管理インタフェースである。これは従来のＯＳと同等の資源割当を行なう。このインタフェースでは、現在プロセスに設定されている性能パラメータを基にして資源の割当を要求する。例えばどのプロセスグループにも所属しないプロセスが資源の割当を要求する場合、ＯＳは、当該プロセスのプロセス管理テーブルに格納された演算距離とメモリ距離を満たす資源の割当を行なう。
【００５６】
第２は、性能指定のある資源管理インタフェースである。このインタフェースでは、プロセスが最低限満たすべき性能値と、性能を満足した際に得られる最大の性能値の組により必要とする性能値を明示的に指定する。性能値とは、ＣＰＵ資源であれば演算距離、メモリであればメモリ距離である。ＯＳは、当該プロセスに設定されている演算距離とメモリ距離、および当該プロセスが所属するプロセスグループに設定されている演算距離およびメモリ距離を加味した上で、指定された実行性能を満たす資源割当を行う。
【００５７】
第３は、すでに設定されている実行性能を変更するインタフェースである。これによりユーザ又はアプリケーションプログラムは、プロセスごとの性能指標を定義することも可能である。なお要求する演算距離の範囲及び変更する演算距離の範囲は、プロセスの実行権限に応じて制限するよう実装することも可能である。
【００５８】
ここでＯＳがプロセスへ資源の割当、解放を行うタイミングについて説明する。まずプロセスがＯＳに対して明示的にシステムコールを発行して資源の獲得、解放を要求したときには、ＯＳが要求された資源の割当、解放を行う。またＯＳは、プロセスが割り当てられたメモリにアクセスするまで当該メモリ用の物理ページを獲得しないことがある。この場合、ＯＳがプロセスによるメモリアクセスを検出した時点で非明示的に物理ページを獲得する。またＯＳは、複数のプロセスを並行して実行するためにプロセスのスケジューリングを行う。プロセススケジューリングの際には、ＯＳは、プロセスの性能品質を見直すことが可能であり、あるプロセスに割り当てられていた論理プロセッサを別の論理プロセッサに変更するといった見直しにより、プロセスへの資源割当を変更する。さらに後述するようにプロセス実行中にハードウェアが追加、削除された場合に、ＯＳはこの資源の変更に伴ってプロセスへの資源割当を動的に変更する場合がある。
【００５９】
資源を確保するときには、ＯＳは、資源確保に伴って影響の出るプロセスのリストを検索し、該当するプロセスの演算距離及びメモリ距離をチェックし、条件の合う資源を確保する。以下にこの処理の流れを示す。
【００６０】
まずＯＳは、プロセスグループ情報１２０を検索して、当該プロセスに関係のあるプロセスを求める。この結果から影響の生じる論理プロセッサを特定する。すでに設定されている演算距離、メモリ距離から対象資源の性能、確保する領域を決定する。最後に対象資源の管理機構に通知して資源を確保する。
【００６１】
ＯＳは、性能指定のないプロセスを生成するときに、親プロセスの性能指標を引き継いで新しいプロセスを生成する。またプロセスが共有メモリ又はロックなどを確保する場合は、他プロセスとの協調作業の可能性を考慮し、自動的に性能指標をあげる。
【００６２】
資源を解放する際の処理の流れを示す。まずＯＳは、解放要求のあった資源を当該プロセスに割り付けるのをやめる。次に資源の参照カウントをチェックする。他に資源を参照するプロセスがいなければ、資源を解放する。資源解放によって、アドレス構造体又はプロセスグループ情報１２０のエントリを維持する必要がなくなったときは、それらを破棄する。
【００６３】
図１３は、依存関係のないプロセスに論理プロセッサを割り当てる例を示す。図１３に示すノード４１−０は、図８で説明したＮＵＭＡ型の計算機４０の１ノード分で構成されている。図１３において、プロセス７１とプロレス７２は、実行にあたり互いに独立している。
【００６４】
このため例えばプロセス７２が資源を要求した際には、要求を受けたＯＳ６０内のプロセス管理部６２は、資源管理部６１に資源管理情報を問い合わせる。資源管理部６１は、演算距離テーブル９０にプロセッサの演算に関する情報を格納しており、かつプロセスグループ情報からプロセス７１とプロセス７２が依存関係のないプロセスであることが分かる。この情報からプロセス管理部６２は、プロセッサのキャッシュミスによる実行性能を回避するため、プロセス７２にプロセス７１とは物理的に異なるプロセッサ上の論理プロセッサを割り当てる。またメモリ距離については、プロセス管理部６２は、できればメモリ距離が遠い関係にある論理プロセッサをプロセス７２に割り当てる。
【００６５】
図１４は、依存関係のあるプロセスに論理プロセッサを割り当てる例を示す。図１４におけるノード４１−０は、図１３と同様のハードウェア特性を持つ。また図１４に示す親プロセス７３と子プロセス７４は、少なくとも子プロセス７４の生成当初は、メモリを共有している。
【００６６】
親プロセス７３からのプロセス生成要求を受けたＯＳ６０内のプロセス管理部６２は、資源管理部６１に資源管理情報を問い合わせる。資源管理部６１には、演算距離テーブル９０が存在し、キャッシュヒットの向上が見込めるプロセッサを検出できる。プロセス管理部６２は、要求内容が子プロセスの生成であること及び資源管理部６１のハードウェア構成情報から、親プロセス７３を実行している論理プロセッサに近い論理プロセッサを子プロセス７４に割り当てる。またメモリ距離については、プロセス管理部６２は、メモリ距離が親プロセス７３と近い関係にある論理プロセッサを子プロセス７４に割り当てる。
【００６７】
図１５は、プロセスグループ情報を用いたプロセス資源の割当て変更において、依存関係のないプロセスの論理プロセッサ割当を変更する例である。図１５に示す計算機４０は、図８に示す計算機４０と同一である。またプロセス７１とプロセス７２の間には、依存関係は存在しない。
【００６８】
ＯＳ６０内のプロセス管理部６２は、プロセスへの資源割当てを変更する際、資源管理部６１に情報を問い合わせる。資源管理部６１は、演算距離テーブル９０、メモリ距離テーブル１１０及びプロセスグループ情報１２０を格納する。資源管理部６２は、問合せによって、プロセス７１とプロセス７２に依存関係がないこと、両プロセスに現在割り当てているプロセッサの組は、協調処理向けであること、別ノードであるノード４１−１の資源が空いていることを認識できる。以上の情報から、プロセス管理部６１は、互いのプロセスのメモリアクセス効率を向上するため、１つのプロセス（ここではプロセス７２）の資源割当てを変更している。
【００６９】
図１６は、プロセスグループ情報を用いたプロセス資源の割当てを変更する例である。図１６に示す計算機４０は、図１５の計算機４０と同一のハードウェア特性を持つ。また図１６に示すプロセス７１は、他のプロセスＷｅｂ７５及びＷｅｂ７６とは、依存関係のないプロセスである。またここでＷｅｂ７５及びＷｅｂ７６は、協調処理を行うプロセスである。さらにＯＳ６０内の資源管理部６１のプロセスグループ情報１２０は、Ｗｅｂ７５及びＷｅｂ７６の協調に関する情報を格納する。
【００７０】
ＯＳ６０内のプロセス管理部６２は、プロセスへの資源割当を変更する際、資源管理部６１に情報に問い合わせる。この例では、先に述べたように、Ｗｅｂ７５及びＷｅｂ７６が協調処理を行うこと、プロセス７１とＷｅｂ７５が同一の物理プロセッサに割り付けられていること、３つのプロセスが主記憶メモリ０を参照しており効率が悪いこと、及びノード４１−１の資源が空いていることが分かる。このためプロセス管理部６２は、Ｗｅｂ７５及びＷｅｂ７６を現在よりも実行性能の向上が期待できるノード４１−１へ割当てを変更する。これにより実効性能を維持又は向上する資源割当ての変更が実現できる。
【００７１】
本実施例は、稼動時に性能特性が動的に変更される計算機の場合、演算距離テーブル９０及びメモリ距離テーブル１１０を複数使用して管理する。複数の演算距離テーブル９０の例について図１７を用いて説明する。マスタ演算距離テーブル９０−１は、計算機が最大の性能で動作するときの演算距離テーブル９０である。カレント演算距離テーブル９０−２は、現在の性能特性に基づく演算距離を示している。この例のカレント演算距離テーブル９０−２は、論理プロセッサ５３−６、５３−７が使用できなくなったことを示している。
【００７２】
このような計算機は、熱対策や省電力動作を目的として、一部の回路の電源を一時的に切断する機能又は動作周波数を落とす機能が動作する。この機能が動作する際に、ハードウェアの割込みが発生し、イベントがＯＳに通知される。またユーザの操作又は管理アプリケーションプログラムより、計算機の状態を変化させることもできる。この状態変化が発生した場合は、ソフトウェア割込みが入り、イベントがＯＳに通知される。
【００７３】
本発明は、上記のようなイベントの処理の一環として、演算距離テーブルの更新を行う。演算距離テーブルに関するイベント処理の手続きを図１８に示す。
【００７４】
資源管理部６１は、イベントが発生したとき、演算距離テーブル９０のロックを取得する（ステップ１３１）。次に資源管理部６１は、イベントの種類が物理プロセッサの追加又は削除であるか否か判定する（ステップ１３２）。イベントの種類が物理プロセッサの追加又は削除である場合、資源管理部６１は、必要に応じてマスタ演算距離テーブル９０−１の該当する論理プロセッサのエントリを追加又は削除し（ステップ１３３）、カレント演算距離テーブル９０−２の該当する論理プロセッサのエントリを追加又は削除する（ステップ１３４）。ステップ１３４の処理の後に処理はステップ１３７に進む。イベントの種類が物理プロセッサの追加又は削除ではない場合、資源管理部６１は、イベントの種類が物理プロセッサの状態変化か否か判定する（ステップ１３５）。イベントの種類が物理プロセッサの状態変化である場合、資源管理部６１は、カレント演算距離テーブル９０−２の状態変化に該当する論理プロセッサのエントリを更新する（ステップ１３６）。対象とする論理プロセッサの性能が低下したときには、それに応じてカレント演算距離テーブル９０−２の演算距離は増加した数値となる。また対象とする論理プロセッサが最大性能に戻ったときには、マスタ演算距離テーブル９０−１の演算距離に戻る。次に資源管理部６１は、演算距離テーブル９０のロックを解放する（ステップ１３７）。
【００７５】
プロセス管理部６２は、資源管理部６１を介してカレント演算距離テーブル９０−２を参照し、使用不可となった論理プロセッサをプロセスに割り当てない。また性能が低下した論理プロセッサについては、プロセス管理部６２は、プロセス管理テーブルに設定される最小演算距離と最大演算距離の範囲に入るプロセスがあれば、そのプロセスに当該論理プロセッサを割り当てる。
【実施例２】
【００７６】
図１９を用いて本発明の別の実施例について述べる。本発明は、ＯＳが非常に小さい核（カーネル）６００で構成され、ＯＳのサービスを実現する複数のサーバプロセスが設けられる場合でも実施することができる。この場合、演算距離テーブル９０、メモリ距離テーブル１１０及びプロセスグループ情報１２０は、資源管理を行うサーバプロセス６０１によって管理される。プロセスに資源を割り当てる際は、プロセス管理サーバ６０２の資源管理サーバ６０１にプロセス間通信で資源割当に関する問合せを行う。その他ネットワークを介する通信制御を行うネットワークプロトコルサーバ６０３、ファイルシステムの管理を行うファイルシステムサーバ６０４などが存在する。
【実施例３】
【００７７】
ＮＵＭＡ構成の計算機の中には、図２０に示すように演算に関するノードごとに入出力コントローラと入出力装置をもつ計算機構成がある。この計算機は、計算機５９−０と計算機５９−１とを有するハードウェア物理構成をとる。計算機５９−０は、演算に関するノード４１−０と入出力ノード５８−０から構成される。また計算機５９−１は、演算に関するノード４１−１と入出力ノード５８−１から構成される。演算に関するノード４１−０及び４０−１間には、メモリバス４７があり、他ノードの主記憶メモリにアクセスすることができる。ノード４１−０は、ノードバス４６を介して入出力ノード５８−０と入出力ノード５８−１に接続され、ノード４１−１は、ノードバス４６を介して入出力ノード５８−０と入出力ノード５８−１に接続される。このような構成の計算機では、通常、入出力装置を管理する演算ノードは特定のノードに固定されているため、どの演算ノードがどの入出力装置にアクセスするかによってそのアクセス速度が異なる。図２０の例では、ノード４１−０から入出力ノード５８−０へのアクセス速度又はノード４１−１から入出力ノード５８−１へのアクセス速度に比べてノード４１−０から入出力ノード５８−１へのアクセス速度又はノード４１−１から入出力ノード５８−０へのアクセス速度が遅くなる。
【００７８】
プロセスが動作するプログラムの内容によってＣＰＵ時間を多く消費するプロセス又は入出力装置を多く使用するプロセスが存在する。図２０に示す計算機構成において、入出力装置を多く使用するプロセスに対してその入出力装置を直接管理していない演算ノードに属する論理プロセッサが割り当てられると、性能が低下する。
【００７９】
実施例３は、このような傾向をもつプロセスに対して適切な資源割当を実現するものである。実施例３の資源管理部６１は、管理情報としてハードウェア構成情報１４０をもつ。ハードウェア構成情報１４０は、各演算ノードと入出力ノードとの接続関係、各入出力ノードに属する２次記憶装置や入出力装置（以下、入出力装置と総称する）の識別子、及び各演算ノードから各入出力ノードの入出力装置にアクセスするときのアクセス速度についての情報を保持する。ＯＳ６０は、ＢＩＯＳなどを介して入出力装置の構成情報を取得し、この情報を基にしてハードウェア構成情報１４０を作成する。
【００８０】
ハードウェア構成情報１４０の例を、図２２を用いて説明する。図２２は、図２０の計算機のハードウェア構成を表現している。図２２では、計算機のハードウェア構成を表現するために、演算ノード及び入出力ノードの情報を格納するデータ構造をそれぞれ持つ。
【００８１】
演算ノードのデータ構造は、当該演算ノードに搭載されているＣＰＵ及びメモリに関する構成情報、並びに、管理している入出力ノード情報へのリンクリストを設定する。
【００８２】
入出力ノード情報からは、当該入出力ノード上に搭載されている入出力コントローラ情報へのリンクリストが設定される。入出力コントローラ情報からは、当該入出力コントローラを介して接続されている装置の装置情報のリンクリストが設定される。
【００８３】
図２２のそれぞれのデータ構造は、性能情報及び統計情報を格納することができる。例えば、入出力の帯域、一定時間内における入力及び出力の量、並びにスループットがある。スループットの求め方については、ハードウェアに登録された性能情報を参照する方法、デバイスの初期化時に試験の入出力を実施しその結果を利用する方法、又は実際の入出力データから一定時間ごとにＯＳが計算する方法がある。
【００８４】
プロセス管理部６２がメモリ上に保持するプロセス構造体６２１は、図１２に示すプロセス管理テーブルの集合である。図１２に図示している通り、各プロセス管理テーブルは、そのプロセスが使用しているファイル記述子のリストを持つ。プロセス管理テーブルを参照すると、使用している入出力に関する情報がわかる。また、各入出力を実行する際に、実際の入出力頻度情報を記録することによって、入出力ごとの性能及び統計情報を計算できる。
【００８５】
図４のＯＳ６０は、プロセスが使用するファイルや入出力が、実際にどの入出力装置を使用するかを対応付けることができる。図１９のネットワークプロトコルサーバ６０３及びファイルシステムサーバ６０４、並びに図２０のＯＳ６０についても同様である。本発明では、この対応付けを入出力割当て情報と呼ぶ。またＯＳ６０は、各論理プロセッサの現在の利用率などの計算負荷についての性能情報及び各入出力装置に対して発行される単位時間当たりの入出力要求の回数についての性能情報をメモリに保持する。プロセスの性能情報を保持する別の例として、ファイルシステムを使う方法も存在する。ＯＳは、プロセスの性能情報や状態をファイルシステムと同様の木構造で表現する擬似ファイルシステムを持つ場合がある。このときＯＳは、擬似ファイルシステム上にこのような入出力の頻度情報を格納しておき、このデータを必要に応じて参照することによって各プロセスの入出力の頻度情報を知ることができる。
【００８６】
ＯＳは、これらの情報を利用して、プロセスが入出力を頻繁に行う又は入出力処理待ちが長時間発生している場合に、そのプロセスは入出力に強く依存したプロセスと決める。そうでない場合は、ＣＰＵに強く依存したプロセスと決める。
【００８７】
また図１１には図示してないが、プロセスグループ情報１２０は、各プロセスグループあるいはプロセスがＣＰＵ依存のプロセスか入出力依存のプロセスかの区分情報をもつ。この区分情報をプロセスグループ情報１２０以外のテーブルに保持し、別の決定手段としてもよい。上記のように、プロセスの実行によって得られた性能値又はプロセスに設定された情報より、ＯＳは、各プロセスが入出力に強く依存した処理を行うか、ＣＰＵに強く依存した処理を行うかを判定できる。
【００８８】
ＯＳ６０は、演算ノード４１−０に割り当てられたプロセスについて、プロセス管理テーブルと入出力割当て情報を参照し、そのプロセスに割り当てられている入出力装置を特定する。次にＯＳ６０は、その入出力装置の性能情報を参照し、その入出力装置の使用頻度が所定値以上であれば、入出力情報１４０を参照し、当該プロセスが割り当てられている演算ノード４１−０が属する計算機５９−０とは別の計算機５９−１に属する入出力ノード５８−１の入出力装置を使用しているか否か判定する。当該プロセスがアクセス速度の遅い入出力ノード５８−１の入出力装置を使用している場合に、ＯＳ６０は、ノード４１−１に空きの論理プロセッサがあるとき、演算ノード４１−１の性能情報を参照し、ノード４１−１の計算負荷が所定値以上か否か判定する。
【００８９】
ノード４１−１の計算負荷が低く所定値に達しないときは、ＯＳ６０は、当該プロセスに割り当てられている論理プロセッサを、ノード４１−０に属する論理プロセッサからノード４１−１に属する論理プロセッサに割当変更する。
【００９０】
ノード４１−１の計算負荷が高く所定値以上のときは、ＯＳ６０は、プロセス構造体６２１のプロセス管理テーブルとプロセスグループ情報１２０を検索し、ノード４１−１に属する論理プロセッサが割り当てられているプロセスの中でＣＰＵ依存のプロセスが存在するか否か判定する。ＣＰＵ依存のプロセスが存在する場合には、ＯＳ６０は、そのプロセスのプロセス管理テーブルを参照して最小演算距離、最大演算距離、最小メモリ距離および最大メモリ距離を取得する。次にＯＳ６０は、演算距離テーブル９０及びメモリ距離テーブル１１０を参照し、ノード４１−１以外のノードに属する論理プロセッサの中で演算距離及びメモリ距離の条件を満たし使用可能なノード４１及び論理プロセッサがあるか否か判定する。条件を満たすノード４１が存在する場合には、ＯＳ６０は、ノード４１−１の論理プロセッサが割り当てられていたＣＰＵ依存のプロセスを該当するノード４１の論理プロセッサに割当変更する。次にＯＳ６０は、上記処理手順に従って入出力依存のプロセスに割り当てられている論理プロセッサをノード４１−０からノード４１−１に割当変更可能か否か判定する。
【００９１】
ノード４１−１の論理プロセッサが割り当てられているプロセスの中でＣＰＵ依存のプロセスが存在しない場合、またはそのＣＰＵ依存のプロセスの条件に合う他のノード４１が見つからない場合には、ＯＳ６０は、上記の論理プロセッサの割当変更を行わない。
【００９２】
図２１は、他のＮＵＭＡ構成の計算機の構成を示す。この計算機の物理構成は、演算に関するノード４１と、入出力ノード５８とが分割されており、各ノード４１がアクセスする入出力ノード５８は、ノードスイッチ４５によって切り替えられる構成をとる。
【００９３】
この計算機は、ノード４１−０と入出力ノード５８−０、及びノード４１−１と入出力ノード５８−１は、各々組を構成する。ノード４１−０上で動作するプロセスが入出力ノード５８−１に強く依存した処理を行い、ノード４１−１上で動作するプロセスが入出力ノード５８−０に強く依存した処理をする場合には、ＯＳ６０は、ノードスイッチ４５の設定を切り替え、ノード４１−０と入出力ノード５８−１、及びノード４１−１と入出力ノード５８−０を各々組とする。逆にノード４１−０上で動作するプロセスが入出力ノード５８−０に強く依存した処理を行い、ノード４１−１上で動作するプロセスが入出力ノード５８−１に強く依存した処理をする場合には、ＯＳ６０は、ノードスイッチ４５の設定を切り替え、ノード４１−０と入出力ノード５８−０、及びノード４１−１と入出力ノード５８−１を各々組とする。このような変更によって両プロセスの処理性能を上げることができる。なお、スイッチの切替を行うとき、ＯＳは、ハードウェア構成情報１４０内のリンクの設定変更と、各入出力装置の性能情報のリセットを必要に応じて実行する。
【図面の簡単な説明】
【００９４】
【図１】ハイパースレッディング対応プロセッサの構成図である。
【図２】従来のプロセッサをコアとしたマルチコアプロセッサの構成図である。
【図３】ハイパースレッディング対応プロセッサをコアとしたマルチコアプロセッサの構成図である。
【図４】実施例１の計算機システムの構成図である。
【図５】実施例のＯＳの初期化手順を示す図である。
【図６】実施例の演算距離テーブルの作成処理手順を示すフローチャートである。
【図７】演算距離テーブルの例を示す図である。
【図８】実施例のＳＭＰ構成をもつ計算機の構成図である。
【図９】メモリのアクセス速度を説明する図である。
【図１０】メモリ距離テーブルの例を示す図である。
【図１１】プロセスグループ情報の例を示す図である。
【図１２】プロセス管理に関連するテーブルの例を示す図である。
【図１３】独立したプロセスの資源割当を説明する図である。
【図１４】依存関係のあるプロセスの資源割当を説明する図である。
【図１５】依存関係のないプロセスの資源割当て変更を説明する図である。
【図１６】プロセスグループ情報を利用した資源割当て変更を説明する図である。
【図１７】性能特性の変更に対応する演算距離テーブルの例を示す図である。
【図１８】性能特性の変更に伴って演算距離テーブルを更新する処理のフローチャート例を示す図である。
【図１９】実施例２の計算機システムの構成図である。
【図２０】実施例３の計算機システムの構成図である。
【図２１】実施例３の他の計算機システムの構成図である。
【図２２】実施例３のハードウェア構成情報のデータ構成図である。
【符号の説明】
【００９５】
４０：計算機、４１−０〜１：ノード、４２−１〜４：物理プロセッサ、４３−０〜７：論理ＣＰＵ（プロセッサ）、４４−０〜１：主記憶メモリ、５０：計算機、５２：主記憶メモリ、５３−０〜７：論理ＣＰＵ（プロセッサ）、６０：オペレーティングシステム、６１：資源管理部、６２：プロセス管理部、７１，７２：プロセス、７３：親プロセス、７４：子プロセス、８０−１〜２：マルチコアプロセッサ、８１−１〜２、８２−１〜２：コア、９０：演算距離テーブル、１１０：メモリ距離テーブル、１２０：プロセスグループ情報。
【図１】
2006024180.tif 000003
【図２】
2006024180.tif 000004
【図３】
2006024180.tif 000005
【図４】
2006024180.tif 000006
【図５】
2006024180.tif 000007
【図６】
2006024180.tif 000008
【図７】
2006024180.tif 000009
【図８】
2006024180.tif 000010
【図９】
2006024180.tif 000011
【図１０】
2006024180.tif 000012
【図１１】
2006024180.tif 000013
【図１２】
2006024180.tif 000014
【図１３】
2006024180.tif 000015
【図１４】
2006024180.tif 000016
【図１５】
2006024180.tif 000017
【図１６】
2006024180.tif 000018
【図１７】
2006024180.tif 000019
【図１８】
2006024180.tif 000020
【図１９】
2006024180.tif 000021
【図２０】
2006024180.tif 000022
【図２１】
2006024180.tif 000023
【図２２】
2006024180.tif 000024