(57)【特許請求の範囲】
【請求項１】
処理を構成する処理単位の優先度を含む処理要求であって、生起した前記処理単位の処理を要求する処理要求に応じて動作し、前記処理単位をそれぞれ実行する複数の処理装置と、
プログラムを有するコンピュータと
を備え、
前記コンピュータは、前記プログラムによって、
前記複数の処理装置それぞれの資源の使用状態を示す使用率を取得する使用率取得手段と、
前記生起した処理単位の優先度が所定の値より低い場合、複数の処理装置の内、前記取得された使用率が最も低いものを除いたいずれかを選択する選択手段と、
前記選択された処理装置に前記生起した処理単位を割り当てて、当該割り当てられた処理単位を実行させるように制御する制御手段と
として機能する
処理制御装置。
【請求項２】
前記選択手段は、前記生起した処理単位の優先度が所定の値より低いときには、複数の処理装置の内、その使用率が所定の範囲内のもののいずれかを選択する
請求項１に記載の処理制御装置。
【請求項３】
前記コンピュータは、前記プログラムによって、
前記処理装置それぞれの資源の使用率が、前記生起した処理単位を実行させる処理装置の資源の使用率の基準である第１の基準を満たす場合に、前記第１の基準を満たす使用率の処理装置を、前記生起した処理単位を実行させる処理装置の候補として抽出する抽出手段
としてさらに機能する
請求項１に記載の処理制御装置。
【請求項４】
前記処理装置それぞれは、
１つ以上の演算処理装置と、
記憶装置と
を含む
請求項１に記載の処理制御装置。
【請求項５】
前記第１の基準は、前記演算処理装置の使用率を示す基準、および、前記記憶装置の残り記憶量を示す基準の少なくともいずれかを含み、
前記資源の使用率は、前記演算処理装置の使用率、および、前記記憶装置の残量の少なくともいずれかを含む
請求項３に記載の処理制御装置。
【請求項６】
前記選択手段は、
前記抽出された処理装置それぞれの資源の量が、前記生起した処理単位の処理要求に含まれる第２の基準であって前記生起した処理単位を実行させる処理装置の資源の量の基準である第２の基準を満たす場合に、前記抽出された処理装置から、前記第２の基準を満たす資源の処理装置を選択する
請求項１に記載の処理制御装置。
【請求項７】
前記生起した処理単位が、前記選択された処理装置のうちの１つに以前に割り当てられていた場合、前記選択手段は、当該１つの以前に割り当てられていた処理装置を選択する
請求項１に記載の処理制御装置。
【請求項８】
処理を構成する処理単位の優先度を含む処理要求であって、生起した前記処理単位の処理を要求する処理要求に応じて、前記処理単位をそれぞれ実行する複数の処理装置に、前記生起した処理単位を割り当てて実行させる処理制御方法であって、当該処理制御方法は、コンピュータによって実行され、
前記複数の処理装置それぞれの資源の使用状態を示す使用率を取得する使用率取得ステップと、
前記生起した処理単位の優先度が所定の値より低い場合、複数の処理装置の内、前記取得された使用率が最も低いものを除いたいずれかを選択する選択ステップと、
前記選択された処理装置に前記生起した処理単位を割り当てて当該割り当てられた処理単位を実行させるように制御する制御ステップと
を含む処理制御方法。
【請求項９】
処理を構成する処理単位の優先度を含む処理要求であって、生起した前記処理単位の処理を要求する処理要求に応じて、前記処理単位をそれぞれ実行する複数の処理装置に、前記生起した処理単位を割り当てて実行させる処理制御プログラムであって、
前記複数の処理装置それぞれの資源の使用状態を示す使用率を取得する使用率取得ステップと、
前記生起した処理単位の優先度が所定の値より低い場合、複数の処理装置の内、前記取得された使用率が最も低いものを除いたいずれかを選択する選択ステップと、
前記選択された処理装置に前記生起した処理単位を割り当てて当該割り当てられた処理単位を実行させるように制御する制御ステップと
をコンピュータに実行させる処理制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の処理装置の１つ以上に、生起した処理を選択的に実行させるように制御する処理制御装置およびその方法に関する。
【背景技術】
【０００２】
例えば、特許文献１は、マルチプロセッサシステムにおける資源管理方法を開示する。
また、特許文献２は、非均一メモリアクセス（ＮＵＭＡ; Non-uniform Memory Access）形式のコンピュータシステムにおけるタスクのディスパッチ方法を開示する。
また、非特許文献１は、ＮＵＭＡ形式のコンピュータの構成、および、複数のプロセッサそれぞれに、対称的にＯＳ(Operating System)の処理を実行させる対称型マルチプロセッサ(Symmetric Multiprocessor;ＳＭＰ)を開示する。
このようなマルチプロセッサシステムにおいては、システムを構成する複数の処理装置に、効率的に処理を割り当てて実行させると、その処理能力を高めることができる。
【特許文献１】特開平６−２５９３８６
【特許文献２】特表２００５−５０８５４５
【非特許文献１】モダンオペレーティングシステム・原著第２版，pp.512 - p.523（Ａ・Ｓ・タンネンバウム著（水野他訳），Pearson Education Japan刊，2004年10月，ISBN4-89471-537-6）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明は、上述した背景からなされたものであって、マルチプロセッサシステムに含まれる複数のデータ処理装置に、効率的に処理を割り当てて、実行させるように制御する改良された処理制御装置およびその方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記目的を達成するために、本発明にかかる処理制御装置は、処理を構成する処理単位の優先度を含み、生起した前記処理単位の処理を要求する処理要求に応じて動作し、前記処理単位をそれぞれ実行する複数の処理装置に、前記生起した処理単位を割り当てて実行させる処理制御装置であって、前記生起した処理単位の処理要求の優先度が所定の値より低い場合、複数の処理装置の内、使用率が最も低いものを除いたいずれかを選択する選択手段と、前記選択されたデータ処理装置を制御して、前記生起した処理単位を実行させるように制御する制御手段とを有する。
【０００５】
好適には、前記選択手段は、前記生起した処理単位の処理要求の優先度が所定の値より低いときには、複数の処理装置の内、その使用率が所定の範囲内のもののいずれかを選択する
【０００６】
好適には、前記選択手段は、前記複数の処理装置それぞれの情報に基づいて、前記生起した処理単位を実行させる処理装置の１つ以上を抽出する抽出手段と、前記生起した処理単位の情報に基づいて、前記抽出された処理装置から、前記生起した処理単位を実行させる処理装置を選択する選択手段とを有する。
【０００７】
好適には、前記複数の処理装置は、前記処理のために用いられるデータを伝送する伝送路をさらに有し、前記処理装置それぞれは、１つ以上の演算処理装置と、記憶装置とを含み、前記処理装置それぞれの記憶装置は、他の前記処理装置それぞれから、前記伝送路を介してアクセスされる。
【０００８】
好適には、前記抽出手段は、前記生起した処理単位を実行させる処理装置を選択するための第１の基準と、前記処理装置それぞれを構成する資源の情報とを比較して、前記第１の基準を満たすデータ処理装置を、前記処理単位に割り当てられる処理装置の候補として抽出する。
【０００９】
好適には、前記第１の基準および前記資源の情報は、それぞれ、前記演算処理装置の使用率を示す基準、および、前記記憶装置の残り記憶量を示す基準のいずれかを含む。
【００１０】
好適には、前記生起した処理単位の処理要求は、この処理単位を実行させる処理装置を選択するための第２の基準を含み、前記選択手段は、前記抽出された処理装置から、前記生起した処理単位の処理要求に含まれる第２の基準を満たす処理装置を選択する。
【００１１】
好適には、前記制御手段は、前記生起した処理単位を、前記選択された処理装置によってのみ実行させるように制御する。
【００１２】
また、本発明にかかる処理制御方法は、処理を構成する処理単位の優先度を含み、生起した前記処理単位の処理を要求する処理要求に応じて、前記処理単位をそれぞれ実行する複数の処理装置に、前記生起した処理単位を割り当てて実行させる処理制御方法であって、前記生起した処理単位の処理要求の優先度が所定の値より低い場合、複数の処理装置の内、使用率が最も低いものを除いたいずれかを選択する選択ステップと、前記選択されたデータ処理装置を制御して、前記生起した処理単位を実行させるように制御する制御ステップとを含む。
【００１３】
また、本発明にかかる処理制御プログラムは、処理を構成する処理単位の優先度を含み、生起した前記処理単位の処理を要求する処理要求に応じて、前記処理単位をそれぞれ実行する複数の処理装置に、前記生起した処理単位を割り当てて実行させる処理制御プログラムであって、前記複数の処理装置は、全体として１つの構成されるコンピュータを構成し、前記生起した処理単位の処理要求の優先度が所定の値より低い場合、複数の処理装置の内、使用率が最も低いものを除いたいずれかを選択する選択ステップと、前記選択されたデータ処理装置を制御して、前記生起した処理単位を実行させるように制御する制御ステップとを前記コンピュータに実行させる。
【発明の効果】
【００１４】
本発明によれば、マルチプロセッサシステムに含まれる複数のデータ処理装置に、効率的に処理を割り当てて、実行させるように制御する改良された処理制御装置およびその方法が提供される。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態を説明する。
ＮＵＭＡ形式などのマルチプロセッサシステムにおいては、システムを構成する複数の処理装置（ノード）に、プロセスを構成し、処理の単位となるスレッドの処理を、効率的に行わせるためには、予め、各ノードの資源の構成や、処理実行中の各ノードの演算処理装置（ＣＰＵ）およびメモリの使用率（平均使用率あるいは各時点における使用率）などの情報を集めておき、その情報を利用して、各ノードに処理を割り当てて実行させるとよい。
また、他よりも高い優先度が付されたスレッドを、確実に実行するためには、複数のノードの一部のＣＰＵ・メモリの使用率を低く保って、処理能力に余裕を残したノードを確保しておくことが望ましい。
また、さらに、スレッドの処理時間を短縮するためには、あるスレッドの処理が、あるノードに閉じて行われるように制御するとよい。
【００１６】
以下に説明する本発明にかかる処理制御方法は、これらのような観点から改良が加えられている。
なお、本発明にかかる処理制御方法は、ＮＵＭＡ型のコンピュータだけでなく、広く、マルチプロセッサ一般に応用可能であるが、以下、説明の具体化、および、明確化のために、本発明にかかる処理制御方法が、ＮＵＭＡ型のコンピュータに応用される場合を具体例とする。
【００１７】
［コンピュータ１］
図１は、本発明にかかる処理制御方法が適用されるコンピュータ１のハードウエア構成を例示する図である。
図１に示すように、コンピュータ１は、ＮＵＭＡ型のマルチプロセッサシステムであって、ｎ個のノード３−１〜３−ｎ（ｎは、２以上の整数、但し、ｎが常に同じ数であるとは限らない）には、一意な識別子が付されており、クロスバスイッチなどから構成されるノード間ネットワーク１０を介して、相互に選択的なデータの読み出しおよび書き込みが可能なように接続されて構成される。
ノード間ネットワーク１０には、必要に応じて、さらに、表示装置・キーボードなどの入出力装置、通信装置、および、ＨＤＤ・ＣＤ装置などの記録装置などの周辺装置１００が接続される。
なお、以下、ノード３−１〜３−ｎなど、複数ある構成部分のいずれかを示すときには、単に、ノード３などと略記することがある。
【００１８】
［ノード３］
図２は、図１に示したノード３のハードウエア構成を例示する図である。
図２に示すように、ノード３は、それぞれキャッシュ３０４を備えたｎ個（例えば４個）のＣＰＵ３０２と、ディレクトリ管理部３０６と、メモリ３１０とが、ローカルバス３００を介して接続されて構成される。
ローカルバス３００と、図１に示したノード間ネットワーク１０とは、ネットワークインターフェース３０８を介して接続される。
【００１９】
図３は、図１に示したコンピュータ１において用いられるメモリアドレスを例示する図であり、図４は、図２に示したノード３におけるメモリ３１０のディレクトリを例示する図である（なお、図３，図４は、上記非特許文献１からの引用）。
図３に示すように、コンピュータ１においては、３２ビットのメモリアドレスが用いられ、これら３２ビットの内、第０ビット〜第７ビット（８ビット）は、ノードを識別するために用いられ、第８ビット〜第２５ビット（１８ビット）は、ノード３のメモリ３１０内のブロックを識別するために用いられ、第２６ビット〜第３１ビットは、ブロック内のオフセットを識別するために用いられる。
【００２０】
図４に示すように、ノード３のメモリ３１０は、それぞれ、図３に示したメモリアドレスの第８〜第２５ビットにより識別される第０ブロック〜第２１８−１ブロックに分割され、各ブロックの中は、メモリアドレスの第２６ビット〜第３１ビットにより識別される。
メモリ３１０の各ブロックには、さらに、ミューティクス制御のためのビットが付加される。
あるノード３（アクセス元のノード３）が、図３に示したメモリアドレスを、ノード間ネットワーク１０に対して出力すると、ノード間ネットワーク１０は、アクセス元のノード３と、メモリアドレスの第０〜第７ビットにより識別されるアクセス先のノード３との間を接続する。
【００２１】
アクセス先のノード３とノード間ネットワーク１０を介して接続されたアクセス元のノード３は、アクセス先のノード３のメモリ３１０からのデータの読み出し、および、メモリ３１０のデータの書き込みを行うことができる。
ディレクトリ管理部３０６は、メモリ３１０の各ブロックに設けられたミューティクス制御用のビットを用いて、メモリ３１０に対するアクセス制御を行う。
つまり、コンピュータ１において、ノード３は、互いに、ノード間ネットワーク１０を介して、メモリ３１０内のデータに対してアクセスすることができる。
【００２２】
なお、図２では、ディレクトリ管理部３０６を用いて、各ノード内のメモリに対するアクセス制御をするとしたが、プローブ方式を採用すれば、ディレクトリ管理部３０６を用いなくてもよい。
プローブ方式では、すべてのメモリアクセスにおいて、ＣＰＵ３０２に内蔵されたメモリコントローラが、全ノードに対して、メモリの番地の問い合わせを実施する。
すなわち、メモリコントローラが内蔵されたＣＰＵを用いれば、ディレクトリ管理部３０６を用いなくても、メモリコントローラが全ノードに対して、そのノード内のメモリのアドレスの問い合わせをすることにより、各ノード内のメモリに対するアクセス制御をすることも可能である。
【００２３】
［ソフトウエア］
図５は、図１に示したコンピュータ１において実行されるソフトウエア（システムソフトウエア２）を、コンピュータ１のシステム全体の観点から見た図である。
図５に示すように、コンピュータ１には、例えば、記録媒体（図示せず）を介して、周辺装置１００の記憶装置から、システムＯＳ２０およびプロセス２２がロードされ、コンピュータ１のハードウエア資源を具体的に利用して実行される（以下、各プログラムについて同様）。
コンピュータ１は、対称型マルチプロセッサ（ＳＭＰ）として動作し、システム全体の観点からは、ノード３およびノード間ネットワーク１０が、全体として、１つのシステムＯＳ２０の機能を実現するための処理を行う。
このシステムＯＳ２０の上で、それぞれ処理の単位として１つ以上のスレッド２２０（図５）を含む１つ以上のプロセス２２の処理が実行される。
図７を参照して後述するスレッド割り当てプログラム４は、１つ以上のプロセス２２を含む。
【００２４】
図６は、図１に示したコンピュータ１において実行されるソフトウエア（ノードソフトウエア３２）を、ノード３それぞれの観点から見た図である。
ノード３は、それぞれ、ノードＯＳ３２０を実行し、各ノード３のノードＯＳ３２０は、全体として、システムＯＳ２０（図５）の機能を実現する。
ノード３は、ノードＯＳ３２０の上で、プロセス２２（図５）を構成するスレッド２２０は、それぞれ、識別子などにより一意に識別され、スレッド２２０の内、スレッド割り当てプログラム４によって割り当てられたスレッド３２２を実行する。
つまり、原理的には、プロセス２２を構成するスレッド２２０は、任意のノード３に、スレッド３２２として割り当てられ、ノードＯＳ３２０の上で実行されうる。
このとき、スレッド割り当てプログラム４を構成するプロセス２２に含まれるスレッド２２０もまた、ノード３により、ノードＯＳ３２０上で、スレッド２２０として実行される。
【００２５】
図５，図６に示すように、プロセス２２は、その実行が開始されるとき、および、その実行中に、新たなスレッド２２０を生起させる必要が生じたときには、そのスレッド２２０の生起および実行を要求するＡＰＩ(Application Program Interface)２００を、システムＯＳ２０に対して発行する。
システムＯＳ２０は、新たなスレッド２２０のＡＰＩ２００を、スレッド割り当てプログラム４に対して出力する。
【００２６】
システムＯＳ２０は、スレッド割り当てプログラム４などのプロセス２２に対して、ノード３それぞれの以下の情報を、ノード３それぞれの識別子と対応付けて提供する。
但し、以下の情報は、コンピュータ１の構成・用途によって、いずれかのみが選択的にシステムＯＳ２０から提供されうる。
（１）ノード３それぞれの資源を示す情報（資源情報）：
ＣＰＵ３０２を示す情報（ＣＰＵ３０２の種類および個数・クロック周波数など）およびメモリ３１０を示す情報（記憶容量・動作速度・冗長構成など）。
（２）ノード３それぞれの使用状態を示す情報（使用率情報）：
ＣＰＵ３０２およびメモリ３１０の使用率。
【００２７】
新たなスレッド２２０の処理を要求するＡＰＩ２００には、以下の情報が含まれる。
但し、以下の情報の内、識別子以外の情報は、コンピュータ１の構成・用途によって、いずれかのみが選択的にＡＰＩ２００に含まれうる。
（１）新たなスレッド２２０の識別子。
（２）新たなスレッド２２０のために割り当てられるべきノード３が満たすべき資源およびその使用状態の条件（選択基準情報）。
（３）新たなスレッド２２０が、他のスレッド２２０と比べてどの程度、優先的に実行されるべきかを示す優先度。
なお、以下、説明の具体化および明確化のために、優先度が「高」と「低」の２種類である場合を具体例とする。
【００２８】
［スレッド割り当てプログラム４］
図７は、図５に示したスレッド割り当てプログラム４の構成を示す図である。
図８は、図７に示した候補ノード抽出部４２の構成を示す図である。
図９は、図７に示したノード選択部４６の構成を示す図である。
図７に示すように、スレッド割り当てプログラム４０は、ユーザインターフェース（ＵＩ）部４００、要求受付部４０２、候補ノード抽出部４２、ノード選択部４６および割当制御部４１０から構成される。
スレッド割り当てプログラム４は、これらの構成部分により、システムＯＳ２０から入力されるＡＰＩ２００に含まれる情報、ノード３の資源を示す情報、および、ノード３の資源の使用率などを用いて、新たなスレッド２２０（図５）を実行させるノード３のいずれかを選択する。
図８に示すように、候補ノード抽出部４２は、構成取得部４２０、使用率取得部４２２、メモリ残量取得部４２４、基準取得部４２６およびノード抽出部４３０から構成される。
図９に示すように、ノード選択部４６は、ＣＰＵ条件取得部４６０、メモリ条件取得部４６２、優先度取得部４６４、ノード選択部４６６および割当情報記憶部４６８から構成される。
スレッド割り当てプログラム４は、選択したノード３に、新たなスレッド２２０を、スレッド３２２として割り当てるためのＡＰＩ３２４を、システムＯＳ２０（ノードＯＳ３２０）に対して発行し、実行させる。
【００２９】
［候補ノード抽出部４２］
候補ノード抽出部４２（図７，図８）のＵＩ部４００は、コンピュータ１の周辺装置１００（図１）に対して入力されるユーザの操作などを受け入れ、受け入れた操作を示す情報を、スレッド割り当てプログラム４の他の構成部分に対して出力し、それらの動作を制御する。
構成取得部４２０は、システムＯＳ２０から、ノード３それぞれの資源を示す情報を受けて、ノード抽出部４３０に対して出力する。
【００３０】
使用率取得部４２２は、システムＯＳ２０から、ノード３それぞれの資源の使用率の内、ＣＰＵ３０２の使用率を示す情報（ＣＰＵ使用率情報）を受けて、ノード抽出部４３０に対して出力する。
メモリ残量取得部４２４は、システムＯＳ２０から、ノード３それぞれの使用率を示す情報の内、メモリ３１０の使用率を示す情報（メモリ残量情報）を受けて、ノード抽出部４３０に対して出力する。
基準取得部４２６は、生起したスレッド２２０のＡＰＩ２００から選択基準情報を取得し、あるいは、周辺装置１００に対する操作により、ユーザが特定のＡＰＩ２００について設定する選択基準情報を受け入れる。
基準取得部４２６は、これらの選択基準情報、あるいは、これらのいずれかの選択基準情報を、ノード抽出部４３０に対して出力する。
【００３１】
ノード抽出部４３０は、構成取得部４２０から入力されるノード３それぞれの資源情報、および、使用率取得部４２２およびメモリ残量取得部４２４から入力されるノード３それぞれの使用率情報と、基準取得部４２６から入力される新たなスレッド２２０の選択基準情報とを比較する。
ノード抽出部４３０は、資源とその使用率が、スレッド２２０に含まれるノード３の選択基準を満たすノード３を１つ以上、候補ノードとして抽出し、候補ノードを示す情報を、ノード選択部４６に対して出力する。
【００３２】
図１０は、図８に示したノード抽出部４３０が、生起したスレッド２２０に割り当てるノード３を抽出する処理（Ｓ１０）を示すフローチャートである。
図１０を参照して、ノード抽出部４３０の処理をさらに説明する。
図１０に示すように、ステップ１０２（Ｓ１０２）において、基準取得部４２６は、生起したスレッド２２０（図５）の処理を要求するＡＰＩ２００から、そのスレッド２２０の選択基準情報を取得する。
ステップ１０４（Ｓ１０４）において、構成取得部４２０、使用率取得部４２２およびメモリ残量取得部４２４は、システムＯＳ２０から、次に処理の対象とするノード３の資源情報および使用率情報を取得し、ノード抽出部４３０に対して出力する。
【００３３】
ステップ１０６（Ｓ１０６）において、ノード抽出部４３０は、使用率取得部４２２から入力されるＣＰＵ使用率情報が、ＡＰＩ２００に含まれる選択基準情報が示す基準を満たすか否かを判断する。
ノード抽出部４３０は、ＣＰＵ使用率情報が基準を満たすときにはＳ１０８の処理に進み、これ以外のときにはＳ１１２の処理に進む。
ステップ１０８（Ｓ１０８）において、ノード抽出部４３０は、メモリ残量取得部４２４から入力されるメモリ残量情報が、ＡＰＩ２００に含まれる選択基準情報が示す基準を満たすか否かを判断する。
ノード抽出部４３０は、メモリ残量情報が基準を満たすときにはＳ１１０の処理に進み、これ以外のときにはＳ１１２の処理に進む。
【００３４】
ステップ１１０（Ｓ１１０）において、ノード抽出部４３０は、処理対象のノード３を、候補ノードとする。
ステップ１１２（Ｓ１１２）において、ノード抽出部４３０は、処理対象のノード３を、候補ノードから除外する。
ステップ１１４（Ｓ１１４）において、ノード抽出部４３０は、全てのノード３に対する処理を終了したか否かを判断する。
ノード抽出部４３０は、全てのノード３に対する処理を終了したときには、候補ノードとされたノード３を、ノード選択部４６に通知して処理を終了し、これ以外のときにはＳ１０４の処理に戻る。
【００３５】
［ノード選択部４６］
ノード選択部４６（図７，図９）のＣＰＵ条件取得部４６０は、新たなスレッド２２０（図５）のＡＰＩ２００から、これに含まれる資源情報の内、ＣＰＵ３０２の個数の基準を指定する情報（ＣＰＵ個数情報）を取得し、ノード選択部４６６に対して出力する。
メモリ条件取得部４６２は、新たなスレッド２２０のＡＰＩ２００から、これに含まれる資源情報の内、メモリ３１０の記憶容量を示す情報（メモリ容量情報）を取得し、ノード選択部４６６に対して出力する。
優先度取得部４６４は、新たなスレッド２２０のＡＰＩ２００から、その優先度を示す情報を取得し、ノード選択部４６６に対して出力する。
【００３６】
ノード選択部４６６は、ＣＰＵ条件取得部４６０、メモリ条件取得部４６２および優先度取得部４６４から入力されるＣＰＵ個数情報、メモリ容量情報および優先度に基づいて、候補ノード抽出部４２により抽出されたノード３から、新たなスレッド２２０を割り当てて実行させるいずれかを選択し、選択結果を、割当情報記憶部４６８および割当制御部４１０に対して出力する。
割当情報記憶部４６８は、いずれのノード３に、いずれのスレッド２２０が割り当てられたかを示す情報（割り当て情報）として、スレッド２２０の識別子とノード３の識別子とを対応付けて記憶する。
【００３７】
図１１を参照して、ノード選択部４６６の処理をさらに説明する。
図１１は、図９に示したノード選択部４６６が、候補ノードの中から、新たなスレッド２２０に割り当てるいずれかを選択する処理（Ｓ２０）を示すフローチャートである。
図１１に示すように、ステップ２００（Ｓ２００）において、ノード選択部４６６は、割当情報記憶部４６８に記憶された割り当て情報を処理し、新たに生起したスレッド２２０（図５）に、それ以前に、いずれかのノード３が割り当てられたか否かを判断する。
ノード選択部４６６は、新たに生起したスレッド２２０に、それ以前に、いずれかのノード３が割り当てられていたときにはＳ２０２の処理に進み、これ以外のときにはＳ２０４の処理に進む。
【００３８】
ステップ２０２（Ｓ２０２）において、ノード選択部４６６は、新たに生起したスレッド２２０に割り当てられるべきノード３として、それ以前にこのスレッド２２０に割り当てられたことがあるノード３を選択する。
ステップ２０４（Ｓ２０４）において、ノード選択部４６６は、候補ノード抽出部４２から入力された候補ノードの内、そのＣＰＵ３０２の個数およびメモリ３１０の容量が、新たなスレッド２２０の基準を満たす１つ以上を選択する。
ステップ２０８（Ｓ２０８）において、ノード選択部４６６は、新たなスレッド２２０の優先度を判定する。
ノード選択部４６６は、新たなスレッド２２０の優先度が所定の値より高いときにはＳ２１２の処理に進み、これ以外のときには、Ｓ２１０の処理に進む。
【００３９】
ステップ２１０（Ｓ２１０）において、ノード選択部４６６は、候補ノードの内、ＣＰＵ３０２およびメモリ３１０の使用率が、候補ノードの中で中位（ＣＰＵ３０２およびメモリ３１０の使用率が所定の範囲内）のノード３のいずれかを選択する。
ステップ２１２（Ｓ２１２）において、ノード選択部４６６は、ＣＰＵ３０２およびメモリ３１０の使用率が、候補ノードの中で最低のいずれかを選択する。
【００４０】
図１２，図１３は、図１１に示したノード選択部４６６の処理の特徴を示す第１の図および第２の図である。
図１２に示すように、あるスレッド２２０（例えばスレッド２２０−１）が、あるノード３（例えばノード３−１）に割り当てられ、実行されると、そのノード３−１のメモリ３１０ー１には、そのスレッド２２０−１に対応するスレッド３２２−１の処理のために、メモリ領域３１２−１が割り当てられる。
ここで、図１３に示すように、その後、スレッド２２０−１が、例えば、スレッド３２２−１として、ノード３−ｎに割り当てられ、実行されると、そのノード３−ｎのメモリ３１０ーｎには、そのスレッド２２０−１に対応するスレッド３２２−１の処理のために、さらに、メモリ領域３１２−ｎが割り当てられる。
【００４１】
つまり、図１１に示したＳ２００，Ｓ２０２の処理により、同じスレッド２２０（３２０）の処理のために、複数のノード３わたって、複数のメモリ領域３１２が割り当てられてしまうという不具合が回避される。
また、ノード選択部４６６の処理により、優先度の低いスレッド２２０（３２２；図５，図６）は、その資源の使用率が低くないノード３に割り当てられ、実行されるので、その資源の使用率が低いノード３は、優先度が高いスレッド２２０の生起まで温存され、優先度の高いスレッド２２０（３２２）の高速実行が常に保証される。
【００４２】
割当制御部４１０（図７）は、システムＯＳ２０に対してＡＰＩ３２４を発行し、ノード選択部４６により選択されたノード３に対して、新たに生起したスレッド２２０を、スレッド３２２として割り当てて実行させる。
つまり、割当制御部４１０は、新たなスレッド２２０が、選択されたノード３において、スレッド３２２として実行されるために必要なプログラムおよびデータなどを、選択されたノード３に対してロードし、選択されたノード３において、スレッド３２２として実行させる。
【００４３】
［コンピュータ１の全体的な動作］
以下、コンピュータ１（図１，図２）の全体的な動作を説明する。
コンピュータ１においては、システム全体としては、図５に示したように、１つ以上のプロセス２２（スレッド割り当てプログラム４を含む）が実行され、適宜、プロセス２２により新たなスレッド２２０が生起させられ、その処理が、システムＯＳ２０に対するスレッド２２０として要求される。
スレッド割り当てプログラム４において、要求受付部４０２（図７）が、システムＯＳ２０を介して、新たなスレッド２２０のＡＰＩ２００を受け取ると、候補ノード抽出部４２（図７，図８）は、ＡＰＩ２００に含まれる選択基準を満たすノード３を、候補ノードとして抽出する（図１０）。
【００４４】
ノード選択部４６（図７，図９）は、候補ノード抽出部４２により抽出された候補ノードから、新たなスレッド２２０を割り当てて実行させるいずれかを選択し、選択されたノード３を、割当制御部４１０（図７）に対して出力する（図１１）。
割当制御部４１０は、ノード選択部４６により選択されたノード３に対して、スレッド２２０（図５）を、スレッド３２２（図６）として割り当て、ノードＯＳ３２０上で実行させる。
【００４５】
なお、ノード選択部４６によるノード３の選択は、以下のように行われる。
図１１およびここでは、まず、新たなスレッド２２０が、それ以前に割り当てられたことがあるか否かによりノード３が選択され、その次に、新たなスレッド２２０の優先順位が考慮されてノード３が選択される場合が例示されているが、コンピュータ１の用途および構成などに応じて、まず、優先順位を考慮したノード３の選択が行われ、次に、それ以前に割り当てられたことがあるか否かを考慮したノード３の選択が行われてもよい。
（１）新たなスレッド２２０が、既に候補ノードのいずれかに割り当てられたことがあるときには、そのノード３を選択する。
（２）スレッド２２０の優先度が高いときには、候補ノードの内、ＣＰＵ３０２およびメモリ３１０の使用率が最低のノード３を選択する。
（３）スレッド２２０の優先度が低いときには、候補ノードの内、ＣＰＵ３０２およびメモリ３１０の使用率が中位のノード３を選択する。
【００４６】
以上、プロセス割り当てプログラム４が、あるプロセスに実装され、システムＯＳ２０に呼び出される形態について記載したが、スレッド割り当てプログラム４の実施形態については、たとえば、図１４〜図１８を用いて後述するように、適宜、変更可能である。
図１４は、スレッド割り当てプログラム４が、ＤＬＬ（Dynamic Link Library)２４を用いて実現される場合の形態を示す図である。
図１４に示すように、スレッド割り当てプログラム４は、ＤＬＬ２４を用いて実現されうる。
スレッド割り当てプログラム４は、プロセス２２から、スレッド２２０の生起および実行をするための要求を受け取る。
このスレッド割り当てプログラム４がプロセス２２から受け取る要求には、前述したＡＰＩ２００に含まれるスレッド２２０の情報と同じ情報が含まれる。
【００４７】
また、スレッド割り当てプログラム４は、前述したように、システムＯＳ２０から、ノード３それぞれの情報を、ノード３それぞれの識別子と対応付けて提供される。
スレッド割り当てプログラム４は、図７〜図１１を用いて前述した処理を行い、プロセス２２に結果情報を送る。
プロセス２２は、システムＯＳ２０に対してＡＰＩ３２４を発行し、選択されたノード３に対して、新たに生起したスレッド２２０を、スレッド３２２として割り当てて実行させる。
【００４８】
図１５は、スレッド割り当てプログラム４が、プロセス２２自身の機能を用いて実現される場合の形態を示す図である。
図１５に示すように、スレッド割り当てプログラム４は、プロセス２２自身の機能を用いて実現されうる。
スレッド割り当てプログラム４は、プロセス２２内の既に生成しているスレッド２２０から、別のスレッド２２０の生起および実行をするための要求を受け取る。
このスレッド割り当てプログラム４がスレッド２２０から受け取る要求には、前述したＡＰＩ２００に含まれるスレッド２２０の情報と同じ情報が含まれる。
【００４９】
また、スレッド割り当てプログラム４は、前述したように、システムＯＳ２０から、ノード３それぞれの情報を、ノード３それぞれの識別子と対応付けて提供される。
スレッド割り当てプログラム４は、図７〜図１１を用いて前述した処理を行い、プロセス２２内の既に生成しているスレッド２２０に結果情報を送る。
プロセス２２内の既に生成しているスレッド２２０は、システムＯＳ２０に対してＡＰＩ３２４を発行し、選択されたノード３に対して、新たに生起したスレッド２２０を、スレッド３２２として割り当てて実行させる。
【００５０】
図１６は、スレッド割り当てプログラム４が、ＯＳ２０に実装される場合の形態を示す図である。
図１６に示すように、スレッド割り当てプログラム４は、ＯＳ２０に実装されて、実現されうる。
スレッド割り当てプログラム４は、プロセス２２から、スレッド２２０の生起および実行をするための要求を受け取る。
このスレッド割り当てプログラム４がプロセス２２から受け取る要求には、前述したＡＰＩ２００に含まれるスレッド２２０の情報と同じ情報が含まれる。
【００５１】
また、スレッド割り当てプログラム４は、前述したように、システムＯＳ２０から、ノード３それぞれの情報を、ノード３それぞれの識別子と対応付けて提供される。
スレッド割り当てプログラム４は、図７〜図１１を用いて前述した処理を行い、プロセス２２に結果情報を送る。
プロセス２２は、システムＯＳ２０に対してＡＰＩ３２４を発行し、選択されたノード３に対して、新たに生起したスレッド２２０を、スレッド３２２として割り当てて実行させる。
【００５２】
図１７は、スレッド割り当てプログラム４がＯＳ２０に実装され、プロセス２２自身は制御に関わらない場合の形態を示す図である。
図１７に示すように、スレッド割り当てプログラム４は、ＯＳ２０に実装されて、プロセス２２が制御に関わることなく実現されうる。
スレッド割り当てプログラム４は、プロセス生成プログラム２６から、スレッド２２０の生起および実行をするための要求を受け取る。
このスレッド割り当てプログラム４がプロセス生成プログラム２６から受け取る要求には、前述したＡＰＩ２００に含まれるスレッド２２０の情報と同じ情報が含まれる。
【００５３】
また、スレッド割り当てプログラム４は、前述したように、システムＯＳ２０から、ノード３それぞれの情報を、ノード３それぞれの識別子と対応付けて提供される。
スレッド割り当てプログラム４は、図７〜図１１を用いて前述した処理を行い、プロセス生成プログラム２６に結果情報を送る。
プロセス生成プログラム２６は、システムＯＳ２０に対してＡＰＩ３２４を発行し、選択されたノード３に対して、新たに生起したスレッド２２０を、スレッド３２２として割り当てて実行させる。
【産業上の利用可能性】
【００５４】
本発明は、マルチプロセッサシステムの各プロセッサに対するスレッドの割り当てなどに利用可能である。
【図面の簡単な説明】
【００５５】
【図１】本発明にかかる処理制御方法が適用されるコンピュータのハードウエア構成を例示する図である。
【図２】図１に示したノードのハードウエア構成を例示する図である。
【図３】図１に示したコンピュータにおいて用いられるメモリアドレスを例示する図である。
【図４】図２に示したノードにおけるメモリのディレクトリを例示する図である。
【図５】図１に示したコンピュータにおいて実行されるソフトウエア（システムソフトウエア）を、コンピュータのシステム全体の観点から見た図である。
【図６】図１に示したコンピュータにおいて実行されるソフトウエア（ノードソフトウエア）を、ノードそれぞれの観点から見た図である。
【図７】図５に示したスレッド割り当てプログラムの構成を示す図である。
【図８】図７に示した候補ノード抽出部の構成を示す図である。
【図９】図７に示したノード選択部の構成を示す図である。
【図１０】図８に示したノード抽出部が、生起したスレッドに割り当てるノード３を抽出する処理（Ｓ１０）を示すフローチャートである。
【図１１】図９に示したノード選択部が、候補ノードの中から、新たなスレッドに割り当てるいずれかを選択する処理（Ｓ２０）を示すフローチャートである。
【図１２】図１１に示したノード選択部４６６の処理の特徴を示す第１の図である。
【図１３】図１１に示したノード選択部４６６の処理の特徴を示す第２の図である。
【図１４】スレッド割り当てプログラムが、ＤＬＬを用いて実現される場合の形態を示す図である。
【図１５】スレッド割り当てプログラムが、プロセス自身の機能を用いて実現される場合の形態を示す図である。
【図１６】スレッド割り当てプログラムが、ＯＳに実装される場合の形態を示す図である。
【図１７】スレッド割り当てプログラムがＯＳに実装され、プロセス自身は制御に関わらない場合の形態を示す図である。
【符号の説明】
【００５６】
１・・・コンピュータ，
１０・・・ノード間ネットワーク，
１００・・・周辺装置，
３・・・ノード，
３００・・・ローカルバス，
３０２・・・ＣＰＵ，
３０４・・・キャッシュ，
３０６・・・ディレクトリ管理部，
３０８・・・ネットワークインターフェース，
３１０・・・メモリ，
２・・・システムソフトウエア，
２０・・・システムＯＳ，
２２・・・プロセス，
２４・・・ＤＬＬ，
２６・・・プロセス生成プログラム，
２２０，３２２・・・スレッド，
２００，３２４・・・ＡＰＩ，
３２・・・ノードソフトウエア，
３２０・・・ノードＯＳ，
３２２・・・スレッド，
４・・・スレッド割り当てプログラム，
４００・・・ＵＩ部，
４０２・・・要求受付部，
４２・・・候補ノード抽出部，
４２０・・・構成取得部，
４２２・・・使用率取得部，
４２４・・・メモリ残量取得部，
４２６・・・基準取得部，
４３０・・・ノード抽出部，
４６・・・ノード選択部，
４６０・・・ＣＰＵ条件取得部，
４６２・・・メモリ条件取得部，
４６４・・・優先度取得部，
４６６・・・ノード選択部，
４６８・・・割当情報記憶部，
【図１】
0004773835.tif 000002
【図２】
0004773835.tif 000003
【図３】
0004773835.tif 000004
【図４】
0004773835.tif 000005
【図５】
0004773835.tif 000006
【図６】
0004773835.tif 000007
【図７】
0004773835.tif 000008
【図８】
0004773835.tif 000009
【図９】
0004773835.tif 000010
【図１０】
0004773835.tif 000011
【図１１】
0004773835.tif 000012
【図１２】
0004773835.tif 000013
【図１３】
0004773835.tif 000014
【図１４】
0004773835.tif 000015
【図１５】
0004773835.tif 000016
【図１６】
0004773835.tif 000017
【図１７】
0004773835.tif 000018