(57)【要約】【課題】  性能を低下させるようなコンピュータ資源の消費を行わずにノード間メモリアクセスを削減する。【解決手段】  プログラムに含まれる１以上のプロセスのうちの各プロセスが、ｃｃＮＵＭＡアーキテクチャの何れかのノードに属するＣＰＵと何れかのノードに属するメモリを用いて実行される方式に適用されるプロセス配置装置において、各プロセス毎に、該プロセスを実行するＣＰＵが属するノードである第１ノード及び所定時間内に該ＣＰＵがアクセスする回数が最も高いメモリが属するノードである第２ノードを検出するノード検出手段と、各プロセス毎に、前記第１ノードと前記第２ノードが一致するか否かを判断するノード一致判断手段と、各プロセス毎に、前記第１ノードと前記第２ノードとが一致しない場合に、該プロセスを実行するＣＰＵを、前記第２ノードに属するＣＰＵに変更するＣＰＵ割当変更手段を備える。【選択図】        図１
2006003972.tif 000002
【特許請求の範囲】
【請求項１】
プログラムに含まれる１以上のプロセスのうちの各プロセスが、ｃｃＮＵＭＡアーキテクチャの何れかのノードに属するＣＰＵと何れかのノードに属するメモリを用いて実行される方式に適用されるプロセス配置装置において、
各プロセス毎に、該プロセスを実行するＣＰＵが属するノードである第１のノード及び所定時間内に該ＣＰＵがアクセスする回数が最も高いメモリが属するノードである第２のノードを検出するノード検出手段と、
各プロセス毎に、前記第１のノードと前記第２のノードが一致するか否かを判断するノード一致判断手段と、
各プロセス毎に、前記第１のノードと前記第２のノードとが一致しない場合に、該プロセスを実行するＣＰＵを、前記第２のノードに属するＣＰＵに変更するＣＰＵ割当変更手段と、
を備えることを特徴とするプロセス配置装置。
【請求項２】
プログラムに含まれる１以上のプロセスのうちの各プロセスが、ｃｃＮＵＭＡアーキテクチャの何れかのノードに属するＣＰＵと何れかのノードに属するメモリを用いて実行される方式に適用されるプロセス配置装置において、
各プロセス毎に、該プロセスを実行するＣＰＵが属するノードである第１のノード及び所定時間内に該ＣＰＵがアクセスする回数が最も高いメモリが属する第２のノードを検出するノード検出手段と、
各プロセス毎に、前記第１のノードと前記第２のノードが一致するか否かを判断するノード一致判断手段と、
前記第１のノードと前記第２のノードが一致しない各プロセス毎に、該プロセスを実行するＣＰＵから前記第１のノードに属するメモリへの前記所定時間内のアクセス回数である第１のアクセス回数と、該プロセスを実行するＣＰＵから前記第２のノードに属するメモリへの前記所定時間内のアクセス回数である第２のアクセス回数とを検出するアクセス回数検出手段と、
前記第１のノードと前記第２のノードが一致しない各プロセス毎に、前記第２のアクセス回数から前記第１のアクセス回数を減じて得られる差分が所定のしきい値よりも大きいか否かを判断するアクセス回数差分判断手段と、
前記第１のノードと前記第２のノードが一致しない各プロセス毎に、前記差分が所定のしきい値よりも大きい場合に、該プロセスを実行するＣＰＵを、前記第２のノードに属するＣＰＵに変更するＣＰＵ割当変更手段と、
を備えることを特徴とするプロセス配置装置。
【請求項３】
プログラムに含まれる１以上のプロセスのうちの各プロセスが、ｃｃＮＵＭＡアーキテクチャの何れかのノードに属するＣＰＵと何れかのノードに属するメモリを用いて実行される方式に適用されるプロセス配置方法において、
各プロセス毎に、該プロセスを実行するＣＰＵが属するノードである第１のノード及び所定時間内に該ＣＰＵがアクセスする回数が最も高いメモリが属するノードである第２のノードを検出するノード検出ステップと、
各プロセス毎に、前記第１のノードと前記第２のノードが一致するか否かを判断するノード一致判断ステップと、
各プロセス毎に、前記第１のノードと前記第２のノードとが一致しない場合に、該プロセスを実行するＣＰＵを、前記第２のノードに属するＣＰＵに変更するＣＰＵ割当変更ステップと、
を備えることを特徴とするプロセス配置方法。
【請求項４】
プログラムに含まれる１以上のプロセスのうちの各プロセスが、ｃｃＮＵＭＡアーキテクチャの何れかのノードに属するＣＰＵと何れかのノードに属するメモリを用いて実行される方式に適用されるプロセス配置方法において、
各プロセス毎に、該プロセスを実行するＣＰＵが属するノードである第１のノード及び所定時間内に該ＣＰＵがアクセスする回数が最も高いメモリが属する第２のノードを検出するノード検出ステップと、
各プロセス毎に、前記第１のノードと前記第２のノードが一致するか否かを判断するノード一致判断ステップと、
前記第１のノードと前記第２のノードが一致しない各プロセス毎に、該プロセスを実行するＣＰＵから前記第１のノードに属するメモリへの前記所定時間内のアクセス回数である第１のアクセス回数と、該プロセスを実行するＣＰＵから前記第２のノードに属するメモリへの前記所定時間内のアクセス回数である第２のアクセス回数とを検出するアクセス回数検出ステップと、
前記第１のノードと前記第２のノードが一致しない各プロセス毎に、前記第２のアクセス回数から前記第１のアクセス回数を減じて得られる差分が所定のしきい値よりも大きいか否かを判断するアクセス回数差分判断ステップと、
前記第１のノードと前記第２のノードが一致しない各プロセス毎に、前記差分が所定のしきい値よりも大きい場合に、該プロセスを実行するＣＰＵを、前記第２のノードに属するＣＰＵに変更するＣＰＵ割当変更ステップと、
を備えることを特徴とするプロセス配置方法。
【請求項５】
コンピュータを請求項１又は２に記載のプロセス配置装置として機能させるためのプロセス配置プログラム。
【請求項６】
コンピュータに請求項３又は４に記載のプロセス配置方法を実行させるためのプロセス配置プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス配置装置、プロセス配置方法及びプロセス配置プログラムに関し、特に、ｃｃＮＵＭＡ(cache coherent Non-Uniform Memory Access)アーキテクチャに適用されるプロセス配置装置、プロセス配置方法及びプロセス配置プログラムに関する。
【背景技術】
【０００２】
ｃｃＮＵＭＡ(cache coherent Non-Uniform Memory Access)アーキテクチャにおいては、システムは複数のノードを備え、各ノードは、ＣＰＵ、メモリ、入出力インターフェース等を備える。あるノードのＣＰＵは自ノードのメモリのみならず他ノードのメモリにもアクセスできるが、自ノードのメモリへのアクセス時間に対して、他ノードのメモリへのアクセス時間が長い。
【０００３】
従って、あるノードから他のノードへのアクセス回数を減らすことが性能を上げるために必要である。
【０００４】
しかし、従来のｃｃＮＵＭＡアーキテクチャ上で動作するオペレーティングシステムでは、あるノードに属するＣＰＵから他のノードに属するメモリへのアクセスであるノード間メモリアクセスを動的に削減するプロセス配置は行われていなかった。
【０００５】
そのため、最初に他のノードからメモリを割り当てられると、プログラム終了までノード間メモリアクセスを行ってしまい、性能の低下やバラツキがあるという欠点があった。
【０００６】
この問題に対処するための一例が、特許文献１に記載されている。
【０００７】
特許文献１に記載された手法は、ページ単位でノード間メモリアクセスを監視し、ノード間メモリアクセスがしきい値を越えた場合にページを移動させるものである。
【特許文献１】特表平１０−５０３３１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、この技術には次のような問題点があった。
【０００９】
第１の問題点は、ページ移動に伴うオーバヘッドが大きいという点である。
【００１０】
第２の問題点は、ＣＰＵ−メモリ間の帯域の多くをページ移動のために消費してしまう点である。
【００１１】
性能を低下させるようなコンピュータ資源の消費を行わずにノード間メモリアクセスを削減することを可能とするプロセス配置装置、プロセス配置方法及びプロセス配置プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の観点によれば、プログラムに含まれる１以上のプロセスのうちの各プロセスが、ｃｃＮＵＭＡアーキテクチャの何れかのノードに属するＣＰＵと何れかのノードに属するメモリを用いて実行される方式に適用されるプロセス配置装置において、各プロセス毎に、該プロセスを実行するＣＰＵが属するノードである第１のノード及び所定時間内に該ＣＰＵがアクセスする回数が最も高いメモリが属するノードである第２のノードを検出するノード検出手段と、各プロセス毎に、前記第１のノードと前記第２のノードが一致するか否かを判断するノード一致判断手段と、各プロセス毎に、前記第１のノードと前記第２のノードとが一致しない場合に、該プロセスを実行するＣＰＵを、前記第２のノードに属するＣＰＵに変更するＣＰＵ割当変更手段と、を備えることを特徴とするプロセス配置装置が提供される。
【００１３】
本発明の第２の観点によれば、プログラムに含まれる１以上のプロセスのうちの各プロセスが、ｃｃＮＵＭＡアーキテクチャの何れかのノードに属するＣＰＵと何れかのノードに属するメモリを用いて実行される方式に適用されるプロセス配置装置において、各プロセス毎に、該プロセスを実行するＣＰＵが属するノードである第１のノード及び所定時間内に該ＣＰＵがアクセスする回数が最も高いメモリが属する第２のノードを検出するノード検出手段と、各プロセス毎に、前記第１のノードと前記第２のノードが一致するか否かを判断するノード一致判断手段と、前記第１のノードと前記第２のノードが一致しない各プロセス毎に、該プロセスを実行するＣＰＵから前記第１のノードに属するメモリへの前記所定時間内のアクセス回数である第１のアクセス回数と、該プロセスを実行するＣＰＵから前記第２のノードに属するメモリへの前記所定時間内のアクセス回数である第２のアクセス回数とを検出するアクセス回数検出手段と、前記第１のノードと前記第２のノードが一致しない各プロセス毎に、前記第２のアクセス回数から前記第１のアクセス回数を減じて得られる差分が所定のしきい値よりも大きいか否かを判断するアクセス回数差分判断手段と、前記第１のノードと前記第２のノードが一致しない各プロセス毎に、前記差分が所定のしきい値よりも大きい場合に、該プロセスを実行するＣＰＵを、前記第２のノードに属するＣＰＵに変更するＣＰＵ割当変更手段と、を備えることを特徴とするプロセス配置装置が提供される。
【発明の効果】
【００１４】
第１の効果は、プログラムにおけるノード間メモリアクセスを削減できることである。
【００１５】
その理由は、各プロセスを実行するＣＰＵを該プロセスにおいて最も多くアクセスされるメモリが属するＣＰＵに動的に変更するためである。
【００１６】
第２の効果は、各プロセスが高速なメモリアクセスを行えることである。
【００１７】
その理由は、第１の効果についての理由と同様である。
【００１８】
第３の効果は、性能を低下させるようなコンピュータ資源の消費を行わないことである。
【００１９】
その理由は、メモリのページ移動を行わないからである。
【００２０】
第４の効果は、プログラムの高速化が容易になることである。
【００２１】
その理由は、ユーザがプロセスのメモリアクセス特性をノード間メモリアクセス履歴貯蔵装置から取得できるためである。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
【００２３】
本発明は、ｃｃＮＵＭＡアーキテクチャを持つ計算機上で動作するオペレーティングシステムに対して投入された並列プログラムの性能を向上さノードプロセス配置機構を提供するものである。
【００２４】
図１において、オペレーティングシステムによって管理されるユーザプログラム４中のプロセス４−１は、ＣＰＵ２−１のいずれかとメモリ３−１のいずれかによって実行される。
【００２５】
各ＣＰＵ２−１と各メモリ３−１はノード１に分割されており、各ＣＰＵから同一ノード内のメモリへのアクセス速度は、ノード外のメモリへのアクセス速度よりも高速である。
【００２６】
各ＣＰＵ２−１はＣＰＵ群管理装置２によって管理されており、各メモリ３−１はメモリ群管理装置３によって管理されている。
【００２７】
ＣＰＵ群管理装置２とメモリ群管理装置３は、スケジューリング装置５の指示に従い、プロセス４−１に対して何れかのＣＰＵ２−１と何れかのメモリ３−１の割り当てを行う。
【００２８】
スケジューリング装置５内のノード間メモリアクセス情報解析装置５−１は、まずユーザプログラム４中のノード間メモリアクセス履歴貯蔵装置４−２からプロセスごとのノード間メモリアクセス情報を抽出する。
【００２９】
次に、ノード間メモリアクセス情報解析装置５−１は、各プロセスを所定時間のメモリアクセス回数が最も多いノード内のＣＰＵに割り当てるように、スケジューリング指示装置５−２を介してＣＰＵ群管理装置２に指示する。
【００３０】
ノード間メモリアクセス履歴制御装置６は、ノード間メモリアクセス履歴収集装置６−１を用いてＣＰＵ群管理装置２、メモリ群管理装置３、プロセス４−１、スケジューリング装置５からプロセスごとの動作情報を収集し、それをノード間メモリアクセス履歴変更装置６−２を介してノード間メモリアクセス履歴貯蔵装置４−２に記録する。
【００３１】
一般にｃｃＮＵＭＡアーキテクチャ上で並列プログラムを効率良く動作させるためには、ノード間メモリアクセスを削減することが重要であるため、メモリアクセスの多いプログラムの場合には、より高速なメモリアクセスが可能となる。
【００３２】
図１を参照すると、本実施形態は、ユーザプログラム４とユーザプログラムを解釈して実行するＣＰＵ２−１、ユーザプログラムや実行時のデータを配置するためのメモリ３−１、複数のＣＰＵ２−１を管理しユーザプログラムへのＣＰＵ割り当てを行うＣＰＵ群管理装置２、複数のメモリ３−１を管理しユーザプログラムへのメモリ割り当てを行うメモリ群管理装置３、ＣＰＵ群管理装置２やメモリ群管理装置３と協調してユーザプログラムへのＣＰＵ、メモリの割り当てを制御するスケジューリング装置５、ユーザプログラムの動作情報を収集し、次回のＣＰＵ割り当てに利用するために情報を還元するノード間メモリアクセス履歴制御装置６を含む。
【００３３】
ユーザプログラム４は、複数のプロセス４−１と、各プロセスが動作した際の以下の情報を貯蔵するためのノード間メモリアクセス履歴貯蔵装置４−２を含む。
−各プロセスに割り当てられたＣＰＵ
−各プロセスに割り当てられたＣＰＵが属するノード
−各プロセスにおける、所定時間内の各ノード毎のメモリアクセス回数（ＣＰＵが属するノード以外の各メモリへのアクセス回数及びＣＰＵが属するノード内のメモリへのアクセス回数）
−ノード毎のノード間アクセス率
＝当該ノード外メモリへのアクセス回数×１００／全メモリアクセス回数
＝当該ノード外メモリへのアクセス回数×１００／（全ノード外メモリへのアクセス回数＋ノード内メモリへのアクセス回数）
スケジューリング装置５は、ノード間メモリアクセス履歴貯蔵装置４−２から得られるノード間メモリアクセス情報を解析するノード間メモリアクセス情報解析装置５−１と、その解析結果を元にＣＰＵ群管理装置２にプロセス４−１へのＣＰＵ２−１の割り当てを指示するスケジューリング指示装置５−２を含む。
【００３４】
ノード間メモリアクセス履歴制御装置６は、プロセスごとに上記情報を収集するノード間メモリアクセス履歴収集装置６−１と、上記情報をノード間メモリアクセス履歴貯蔵装置４−３に記録するノード間メモリアクセス履歴変更装置６−２を含む。
【００３５】
次に、図１及び２を参照して本実施形態の動作について詳細に説明する。
【００３６】
起動されたプログラムは、スケジューリング装置５によって制御される。
【００３７】
スケジューリング装置５は一定の間隔で起動され、その度に以下の動作を行う。
【００３８】
ノード間メモリアクセス情報解析装置５−１は、プロセス毎のノード間メモリアクセス情報をノード間メモリアクセス履歴貯蔵装置４−２から収集する（ステップＡ１）
ノード間メモリアクセス情報解析装置５−１は、各プロセスについて、所定時間内にアクセスされる回数が最も多いメモリが属するノードを選定する（ステップＡ２）
スケジューリング指示装置５−２は、ノード間メモリアクセス情報解析装置５−１から各プロセスについての最多メモリアクセスノード情報を取得し、そのノードとプロセスが現在割り当てられているＣＰＵの属するノードが同一ノードでない場合（ステップＡ３でＮＯ）、ＣＰＵ群管理装置２にプロセスへのＣＰＵ割り当て変更を指示する（ステップＡ２）。ＣＰＵ群管理装置２は、当該プロセスに割り当てるＣＰＵを、ステップＡ２で検出された、アクセスされる頻度が最も多いメモリが属するメモリに属するＣＰＵに変更する。
【００３９】
その後、ノード間メモリアクセス履歴制御装置６は、ノード間メモリアクセス履歴収集装置６−１を用いてＣＰＵ群管理装置２、メモリ群管理装置３、プロセス４−１、スケジューリング装置５からプロセスごとの以下の情報を収集する（ステップＡ５）。
−割り当てられたＣＰＵ
−割り当てられたＣＰＵが属するノード
−ノードごとのメモリアクセス回数
得られた情報からノード間アクセス率を計算し（ステップＡ６）、ノード間メモリアクセス履歴変更装置６−２を介して上記情報とともにノード間メモリアクセス履歴貯蔵装置４−２に記録する（ステップＡ７）。
【００４０】
次に、本発明の他の実施形態について図面を参照して詳細に説明する。
【００４１】
図３を参照すると、本実施形態は、図１の実施形態に加えてユーザプログラム４がプロセス移動しきい値４−３を持つ点が異なる。
【００４２】
プロセス移動しきい値４−３には、プロセスを他のノードに移動する際のしきい値Ｘが各プロセス毎に格納されている。
【００４３】
本実施形態の動作を図３、図４を参照して詳細に説明する。
【００４４】
ノード間メモリアクセス情報解析装置５−１は、各プロセス毎に、該プロセスにおいて所定時間内の最も多くアクセスされるメモリが属するノードについての最多メモリアクセスノード情報の他に、その最多メモリアクセスノードへのメモリアクセス回数と、現在該プロセスが割り当てられているＣＰＵが属するノードに属するメモリへのメモリアクセス回数を、スケジューリング指示装置５−２に渡す（ステップＢ１）。
【００４５】
スケジューリング指示装置５−２は、各プロセス毎に、最多メモリアクセスノードと現在のＣＰＵ割り当てノードが同一ノードであるか否かを判断し（ステップＢ２）、両ノードが同一でない各プロセス毎に、最多メモリアクセスノードに属するメモリへのアクセス回数から現在ＣＰＵが割り当てられているノードに属するメモリへのアクセス回数を減じることにより、両者の差分を計算する（ステップＢ３）。
【００４６】
その差分が、ユーザプログラム４から得られるプロセス移動しきい値４−３以上であるか否かを判断し（ステップＢ５）、そうである場合には、スケジューリング指示装置５−２は、ＣＰＵ群管理装置２に対してプロセスを最多メモリアクセスノード内のＣＰＵへ割り当てるように指示する（ステップＢ３）。ＣＰＵ群管理装置２は、当該プロセスに割り当てるＣＰＵを、ステップＢ１で検出された、アクセスされる頻度が最も多いメモリが属するメモリに属するＣＰＵに変更する。
【００４７】
ステップＢ７乃至Ｂ９は、ステップＡ５乃至Ａ７と同様であるので、説明を省略する。
【００４８】
以上により、プロセス移動しきい値４−３をユーザが自由に設定することにより、プロセス移動にユーザの意図を反映できるようになる。
【００４９】
なお、ノード間メモリアクセス履歴制御装置６及びスケジューリング装置５は、ハードウェアによって実現することもできるが、コンピュータを当該装置として機能させるためのプログラムをコンピュータが読み込んで実行することもできる。また、ノード間メモリアクセス履歴制御装置６及びスケジューリング装置５が行う方法は、ハードウェアによって実現することもできるが、コンピュータに当該方法を行わせるためのプログラムをコンピュータが読み込んで実行することもできる。
【産業上の利用可能性】
【００５０】
本発明はｃｃＮＵＭＡアーキテクチャのコンピュータにおいて実行されるプログラムの実行速度を高めるために利用することができる。
【図面の簡単な説明】
【００５１】
【図１】本発明の実施形態１によるｃｃＮＵＭＡアーキテクチャのコンピュータ及びこれに適用されるプロセス配置装置の構成を示すブロック図である。
【図２】本発明の実施形態１によるｃｃＮＵＭＡアーキテクチャのコンピュータに適用されるプロセス配置方法を示すフローチャートである。
【図３】本発明の実施形態２によるｃｃＮＵＭＡアーキテクチャのコンピュータ及びこれに適用されるプロセス配置装置の構成を示すブロック図である。
【図４】本発明の実施形態２によるｃｃＮＵＭＡアーキテクチャのコンピュータに適用されるプロセス配置方法を示すフローチャートである。
【符号の説明】
【００５２】
１  ノード
２  ＣＰＵ群管理装置
２−１  ＣＰＵ
３  メモリ群管理装置
３−１  メモリ
４  ユーザプログラム
４−１  プロセス
４−２  ノード間メモリアクセス履歴貯蔵装置
４−３  プロセス移動しきい値
５  スケジューリング装置
５−１  ノード間メモリアクセス情報解析装置
５−２  スケジューリング指示装置
６  ノード間メモリアクセス履歴制御装置
６−１  ノード間メモリアクセス履歴収集装置
６−２  ノード間メモリアクセス履歴変更装置
【図１】
2006003972.tif 000003
【図２】
2006003972.tif 000004
【図３】
2006003972.tif 000005
【図４】
2006003972.tif 000006