(57)【要約】      （修正有）【課題】情報処理装置において特定の種別の処理による資源の占有を回避する。【解決手段】演算処理装置１は、複数の演算処理部３−１〜３−ｍと、複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得する処理状況情報取得部と、処理状況情報取得部が取得した処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、特定の種別の処理の全てを、複数の演算処理部の少なくとも１つで実行させる処理移動部と、をそなえる。【選択図】図１
2015176218.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理部と、
前記複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得する処理状況情報取得部と、
前記処理状況情報取得部が取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、前記複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、前記特定の種別の処理の全てを、前記複数の演算処理部の少なくとも１つで実行させる処理移動部と、
をそなえることを特徴とする演算処理装置。
【請求項２】
前記処理状況情報取得部が取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値以下になり、かつ、前記処理移動部が前記複数の演算処理部の少なくとも１つで実行させるように設定した処理が存在する場合に、前記処理移動部が前記複数の演算処理部の少なくとも１つで実行させるように設定した前記特定の種別の処理を、前記複数の演算処理部の任意の演算処理部で実行されるようにする移動解除部
をさらにそなえることを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記演算処理装置は、前記複数の演算処理部が実行する処理とは異なる演算処理をそれぞれ実行する複数の第２の演算処理部をさらにそなえ、
前記処理は、複数の第２の演算処理部が前記演算処理部に対して実行を要求する処理である
ことを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
前記複数の第２の演算処理部が複数のグループにグループ分けされており、
前記複数のグループのそれぞれに対して、前記複数の演算処理部のいずれかと別個のキャッシュメモリとが割り当てられている
ことを特徴とする請求項３記載の演算処理装置。
【請求項５】
複数の演算処理部を有する演算処理装置の制御方法であって、
前記複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得し、
取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、前記複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、前記特定の種別の処理の全てを、前記複数の演算処理部の少なくとも１つで実行させる
ことを特徴とする演算処理装置の制御方法。
【請求項６】
複数の演算処理部を有する演算処理装置の制御プログラムであって、
前記複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得し、
取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、前記複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、前記特定の種別の処理の全てを、前記複数の演算処理部の少なくとも１つで実行させる
処理を前記演算処理部に実行させることを特徴とする演算処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、演算処理装置、演算処理装置の制御方法、及び演算処理装置の制御プログラムに関する。
【背景技術】
【０００２】
近年、１つのCentral Processing Unit（ＣＰＵ）内にコアを複数有するマルチコアＣＰＵが情報処理装置に広く採用されている。
コアとは、ＣＰＵの中核をなし、演算処理を行なうための論理回路などが実装されている部分である。
このようなマルチコア構成のＣＰＵにおいては、一般に、各コアは同様の構成を有する。
【０００３】
マルチコアＣＰＵにおいては、ＣＰＵ内部に設けられているコアの個数と等しい数のプロセスを同時に実行することができる。
ところで、スーパーコンピュータに代表されるHigh Performance Computing（ＨＰＣ）システムでは、演算速度の高速化が最も優先される。情報処理装置の動作にはOperating System（ＯＳ）が必須であるものの、ＯＳの実行にＣＰＵのパワーの一部が割かれるため、演算の高速化を実現する上で、ＯＳは演算速度を低下させる要因となる。
【０００４】
そこで、近年、ＨＰＣ用のＣＰＵとして、計算を実行するコア（以下、計算コアと呼ぶ）と、ＯＳが動作するコア（以下、ＯＳコアと呼ぶ）との、複数種別のコアが複数そなえられているＣＰＵが登場している。計算を実行する計算コアでは、ユーザが情報処理装置に実行させる計算処理のみを実行する。一方、ＯＳが動作するＯＳコアでは、計算コアによる計算に必要なファイルへのリード／ライトや通信といった入出力（Input/Output；ＩＯ）動作、システムの動作監視、計算資源管理などのシステムのハウスキーピング処理を実行する。
【０００５】
このようなＣＰＵに実装される各コアの個数は、ＣＰＵによって異なるが、例えば計算コアが１６個、ＯＳコアが２個である。
計算コアがディスクアクセスを行なう場合、当該計算コアがＩＯリクエストを発行する。そして、計算コアからのＩＯリクエストは、ＯＳのロードバランサーによって、ＯＳコアに適宜振り分けられる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−２０４６６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、計算コアが大量のＩＯ（ディスクアクセス等）を発生させる場合を考える。このような場合、ＯＳコアでは、発生したＩＯを処理するために、複数のＯＳコアがＩＯプロセスに占有されてしまい、全てのＩＯプロセスの処理が完了するまで、ＩＯプロセス以外のプロセスは待たされる。すなわち、ＩＯプロセス以外のプロセスは待機状態となる。
しかしながら、待機状態のプロセスのなかには、ＯＳやシステムの動作に必須であり、長時間待たされると情報処理装置の動作に悪影響が生じるものがある。
【０００８】
このようなプロセスを、なるべく待ち時間を発生させずに実行させるために、ＩＯプロセスなど、特定の種別のプロセスによる、ＯＳコア（資源）の処理時間の占有を回避することが必要となる。
上記課題に鑑みて、１つの側面では、本発明は、情報処理装置において特定の種別の処理による資源の占有を回避することを目的とする。
【０００９】
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１０】
このため、演算処理装置は、複数の演算処理部と、前記複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得する処理状況情報取得部と、前記処理状況情報取得部が取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、前記複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、前記特定の種別の処理の全てを、前記複数の演算処理部の少なくとも１つで実行させる処理移動部と、をそなえる。
【００１１】
又、複数の演算処理部を有する演算処理装置の制御方法は、前記複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得し、取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、前記複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、前記特定の種別の処理の全てを、前記複数の演算処理部の少なくとも１つで実行させる。
【００１２】
さらに、複数の演算処理部を有する演算処理装置の制御プログラムは、前記複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得し、取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、前記複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、前記特定の種別の処理の全てを、前記複数の演算処理部の少なくとも１つで実行させる処理を前記演算処理部に実行させる。
【発明の効果】
【００１３】
開示の技術によれば、情報処理装置において特定の種別の処理による資源の占有を回避することができる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態の一例としての情報処理装置のハードウェア構成を模式的に示す図である。
【図２】第１実施形態の一例としてのプロセス再配置部の機能構成を示す図である。
【図３】第１実施形態の一例としてのプロセス再配置部による処理前の状態を例示する図である。
【図４】第１実施形態の一例としてのプロセス再配置部による処理後の状態を例示する図である。
【図５】第１実施形態の一例としてのプロセス再配置部の動作を示すフローチャートである。
【図６】第２実施形態の一例としてのプロセス再配置部の機能構成を示す図である。
【図７】第２実施形態の一例としてのプロセス再配置部の動作を示すフローチャートである。
【図８】第３実施形態の一例としての情報処理装置のハードウェア構成を模式的に示す図である。
【図９】第３実施形態の一例としてのプロセス再配置部の機能構成を示す図である。
【図１０】第３実施形態の一例としてのプロセス再配置部による処理前の状態を例示する図である。
【図１１】第３実施形態の一例としてのプロセス再配置部による処理後の状態を例示する図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本実施形態の一例としての演算処理装置、演算処理装置の制御方法、及び演算処理装置の制御プログラムを説明する。
（Ａ）第１実施形態
最初に、図１〜図５を参照して、情報処理装置（演算処理装置）１の構成について説明する。
【００１６】
図１は、第１実施形態の一例としての情報処理装置１のハードウェア構成を示す図である。
情報処理装置１は、ＯＳコア２−１〜２−ｎ（ｎは２以上の整数）、計算コア（演算処理部）３−１〜３−ｍ（ｍは２以上の整数）、キャッシュメモリ４、及びメインメモリ５をそなえる。
【００１７】
ＯＳコア２−１〜２−ｎは、後述する計算コア３−１〜３−ｍによる計算に必要なファイルへのリード／ライトや通信といったＩＯ動作、システムの動作監視、計算資源管理などのシステムのハウスキーピング処理を実行する。
又、ＯＳコア２−１〜２−ｎは、不図示の記憶装置に記憶されている制御プログラムを実行することにより、後述するプロセス再配置部１１として機能する。
【００１８】
計算コア３−１〜３−ｍは、情報処理装置１において実行される演算処理を行なう。計算コア３−１〜３−ｍは、自身が実行する演算処理以外の処理（ＩＯ処理や管理処理）は、リクエストを発行することにより、ＯＳコア２−１〜２−ｎに実行させる。計算コア３−１〜３−ｍからのリクエストは、情報処理装置１の不図示のＯＳのロードバランサーによって、ＯＳコア２−１〜２−ｎの不図示の実行キューに、適宜振り分けられる。ＯＳコア２は、この実行キューに登録されたリクエストを順次実行する。
【００１９】
メインメモリ５は、ＯＳコア２−１〜２−ｎや計算コア３−１〜３−ｍが実行するプログラムや種々のデータ、ＯＳコア２−１〜２−ｎや計算コア３−１〜３−ｍの動作により得られたデータ等を一時的に格納する記憶装置である。メインメモリ５としては、Random Access Memory（ＲＡＭ）などを使用することができる。
キャッシュメモリ４は、ＯＳコア２−１〜２−ｎや計算コア３−１〜３−ｍがメインメモリ５からデータやプログラムを読み出す際に、メインメモリ５に記憶されているデータやプログラムを一時的に記憶する高速のメモリである。キャッシュメモリ４としては、Static RAM（ＳＲＡＭ）などを用いることができる。
【００２０】
なお、以下、ＯＳコアを示す符号としては、複数のＯＳコアのうち１つを特定する必要があるときには符号２−１〜２−ｎを用いるが、任意のＯＳコアを指すときには符号２を用いる。
又、以下、計算コアを示す符号としては、複数の計算コアのうち１つを特定する必要があるときには符号３−１〜３−ｍを用いるが、任意の計算コアを指すときには符号３を用いる。
【００２１】
一例として、ＯＳコア２は、２つ（ｎ＝２）設けられ、計算コア３は１６（ｍ＝１６）設けられ、ＯＳコア２−１，２−２と計算コア３−１〜３−１６とが、１つのＣＰＵ（不図示）上に実装されている。
図２は、第１実施形態の一例としてのプロセス再配置部１１の機能構成を示す図である。
【００２２】
プロセス再配置部１１は、ＯＳコア２のプロセスの実行待ち時間が長くなり、かつ特定の種別のプロセスが、情報処理装置１の全てのＯＳコア２で実行中か又は実行待機中である場合に、その種別の全プロセスが、少なくとも１つの特定のＯＳコア２で実行されるようにする。その際、プロセス再配置部１１は、各ＯＳコア２の不図示の実行キューにキューイングされているエントリを変更することで、その種別の全プロセスが、少なくとも１つの特定のＯＳコア２で実行されるようにする。
【００２３】
なお、以下、特定のプロセスが、特定のＯＳコア２で実行されるようにすることを、「プロセスをＯＳコア２に移動させる」或いは「プロセスの移動」という。
以下、図３，図４を用いて、プロセス再配置部１１によるプロセス移動処理について説明する。
図３は、第１実施形態の一例としてのプロセス再配置部１１による処理前の状態を例示する図である。図４は、プロセス再配置部１１による処理後の状態を例示する図である。
【００２４】
図３，図４には、ＯＳコア２−１，２−２と、対応するプロセス一覧７−１，７−２とが図示されている。
ここで、プロセス一覧７−１，７−２は、ＯＳコア２−１，２−２が実際に作成するものではなく、説明の便宜上図示されている。
プロセス一覧７−１，７−２において、一番上のプロセスは、ＯＳコア２−１，２−２でそれぞれ実行中のプロセスである。２番目以降のプロセスは実行待機中のプロセスであり、プロセスの作成日時の古い順に上から下に並んでいる。
【００２５】
図３の状態では、ＯＳコア２−１（ＯＳコア＃１）ではＩＯプロセスが３つ、ＯＳコア２−２（ＯＳコア＃２）ではＩＯプロセスが３つ、それぞれ実行中又は実行待機中である。
このような場合、プロセス再配置部１１は、図４に示すように、少なくとも１つの特定のＯＳコア２（図４の例ではＯＳコア＃１）にＩＯプロセスを移動させる。この結果、ＩＯプロセス以外のプロセスが、他のＯＳコア２で待機されることなく実行されるようになる。
【００２６】
プロセス再配置部（負荷分散部）１１は、プロセスリスト取得部（リスト取得部）１２、待機時間判定部１３、移動判定部１４、及びプロセス移動部（処理移動部）１５をそなえる。
プロセスリスト取得部１２は、情報処理装置１の全てのＯＳコア２に存在する（ＯＳコア２で実行中か又は実行待機中の）全プロセスのリスト（処理状況情報）を取得する。このリストには、プロセスＩＤ、作成日時、プロセスのステータス等に関する情報が記録されている。
【００２７】
例えば、情報処理装置１で実行されているＯＳがＵＮＩＸ（登録商標）である場合、プロセスリスト取得部１２は、「ｐｓ」コマンドを実行することによりプロセスのリストを取得することができる。他のＯＳの場合も、プロセスリスト取得部１２は、同様の手法により、プロセスリストを取得することができる。
なお、プロセスリスト取得部１２は、プロセスリストを、ＯＳコア２毎に取得しても、全ＯＳコア２について取得してもよい。
【００２８】
待機時間判定部１３は、プロセスリスト取得部１２が取得したプロセスリスト内のプロセス作成時間に基づいて、ＯＳコア２の全プロセスのうち、待ち時間が最大のプロセスの待ち時間が、所定の閾値（例えば１０分）を超えているかどうかを判定する。この閾値は、情報処理装置１の実装や運用状況に応じて、システム管理者等によって適宜設定される。
【００２９】
待機時間判定部１３は、プロセスの待ち時間を、例えば、現在時刻とプロセスの作成日時とを比較することによって特定する。
移動判定部１４は、プロセスリスト取得部１２が取得したプロセスリストに基づいて、同一種別のプロセスが、全てのＯＳコア２に存在するかどうかを判定する。
本第１実施形態の一例においては、プロセスの種別として「ＩＯプロセス」、「管理プロセス」、及び「その他のプロセス」の３つの種別が使用される。
【００３０】
移動判定部１４は、各プロセスのプロセス種別を、後述のプロセス種別定義ファイル２１に基づいて判定する。
ＩＯプロセスは、情報処理装置１外部の別の情報処理装置との通信処理や、不図示のディスクへのアクセスなどのＩＯ処理を実行するプロセスである。
管理プロセスは、システム管理用のプロセスであり、ＯＳコア２や、計算コア３、キャッシュメモリ４、メインメモリ５（ノード）の生存確認を行ない、ＯＳの監視部分に各ノードの状態を伝達する生存確認プロセスなどがある。
【００３１】
その他のプロセスは、クロック割り込みプロセスや、ＯＳコア２間通信を行なうためのプロセス、ユーザ定義プロセスなどである。又、後述のプロセス種別定義ファイル２１に定義されていないプロセスもその他のプロセスに分類される。
又、本明細書で用いる「プロセス」には、デーモンなどのバックグラウンドで実行される管理用プロセスも含まれる。
【００３２】
プロセス移動部１５は、移動判定部１４によって、同一種別のプロセスが、全てのＯＳコア２に存在すると判定された場合に、その種別の全プロセスが、少なくとも１つの特定のＯＳコア２で実行されるようにする。
プロセスの移動時に、プロセス移動部１５は、移動させる総プロセス数が少なくなるように、プロセスの移動先のＯＳコア２を選択する。移動させる総プロセス数が等しいプロセスの移動先候補のＯＳコア２が複数存在する場合には、例えば、プロセス移動部１５は、例えばＩＤが最小のＯＳコア２（図１の例ではＯＳコア２−１）を移動先として選択する。
【００３３】
なお、プロセス移動部１５は、ＯＳコア２間でのプロセスの移動を、ＯＳコア２用の不図示の実行キューにキューイングされているエントリを変更することによって行なう。
プロセス種別定義ファイル２１は、ＯＳコア２で実行されるプロセス毎に、そのプロセスのプロセス種別を定義しているファイルである。
プロセス種別定義ファイル２１には、例えば、プロセス名（例えばｐｒｉｎｔ）と、そのプロセスに対応するプロセス種別（例えば「ＩＯプロセス」）とが一覧形式で記録されている。
【００３４】
プロセス種別定義ファイル２１は、例えば、情報処理装置１のシステム管理者等によって事前に作成され、不図示のHard Disk Drive（ＨＤＤ）に格納される。
次に、図５のフローチャートを用いてプロセス再配置部１１による処理をより詳細に説明する。
図５は、第１実施形態の一例としてのプロセス再配置部１１による処理前の状態を例示するフローチャート（ステップＳ１〜Ｓ４）である。
【００３５】
ステップＳ１において、プロセスリスト取得部１２が、情報処理装置１の全てのＯＳコア２で実行中又は実行待機中の全プロセスのリストを取得する。
次に、ステップＳ２において、待機時間判定部１３が、ステップＳ２でプロセスリスト取得部１２が取得したプロセスリスト内のプロセス作成時間に基づいて、ＯＳコア２の全プロセスのうち、待ち時間が最大のプロセスの待ち時間が、所定の閾値を超えているかどうかを判定する。
【００３６】
待ち時間が所定の閾値を超えない場合（ステップＳ２のＮＯルート参照）、処理がステップＳ１に戻る。
一方、最長待ち時間が所定の閾値を超えている場合（ステップＳ２のＹＥＳルート参照）、ステップＳ３において、移動判定部１４が、ステップＳ２でプロセスリスト取得部１２が取得したプロセスリストに基づいて、同一種別のプロセスが、全てのＯＳコア２に存在する（全てのＯＳコア２で実行中又は実行待機中である）かどうかを判定する。
【００３７】
同一種別のプロセスが、全てのＯＳコア２には存在しない場合（ステップＳ３のＮＯルート参照）、処理がステップＳ１に戻る。
一方、同一種別のプロセスが、全てのＯＳコア２に存在する場合（ステップＳ３のＹＥＳルート参照）、ステップＳ４において、プロセス移動部１５が、その種別の全プロセスを、少なくとも１つの特定のＯＳコア２に集中するように移動させる。
【００３８】
その後処理がステップＳ１に戻り、上記ステップＳ１〜Ｓ４の処理が繰り返される。
このように、本第１実施形態の一例としてのプロセス再配置部１１は、同一種別のプロセスが、全てのＯＳコア２に存在する場合に、その種別の全プロセスを、少なくとも１つの特定のＯＳコア２に移動させる。
これにより、ＯＳコア２がＩＯ処理等によって占有され続けることを避けることができ、それ以外の他のプロセスの動作に必要な資源（ＯＳコア２の利用時間）を確保することができる。又、特定の種別のプロセスの処理待ちによる遅延の発生を阻止することができる。
【００３９】
図３に例示した状態において、仮に、ＩＯプロセスにより、管理プロセスの処理が遅延する場合を考える。
前述のように、管理プロセスとして、ＯＳコア２や、計算コア３、キャッシュメモリ４、メインメモリ５（ノード）の生存確認を行ない、ＯＳの監視部分に各ノードの状態を伝達する生存確認プロセスが存在する。この生存確認プロセスの実行が長時間待機されると、ＯＳの監視部分は、ノードが生存していないとみなしてしまう。
【００４０】
本第１実施形態の一例においては、プロセス再配置部１１が、ＩＯプロセスを少なくとも１つの特定のＯＳコア２に移動させる。これにより、他のＯＳコア２において、生存確認プロセスが待機されることなく実行されるので、ＯＳの監視部分は、ノードの状態を正確に把握することができる。
（Ｂ）第２実施形態
上記第１実施形態の一例においては、プロセス移動部１５によって移動されたプロセスは、その実行が完了するまで移動先のＯＳコア２で動作し続ける。
【００４１】
しかし、デーモンのように継続的に実行されるプロセスについては、例えばプロセスの処理待ち時間が短縮されたタイミングで、特定のＯＳコア２に移動させたプロセスを、他のＯＳコア２でも実行できるようにすることが有利であると考えられる。
このため、第２実施形態の一例としてのプロセス再配置部１１′は、上記第１実施形態の一例としてのプロセス再配置部１１の機能に加えて、移動させたプロセスを、他のＯＳコア２でも実行できるようにするという機能もそなえる。
【００４２】
第２実施形態の一例としての情報処理装置のハードウェア構成は、前述の第１実施形態の一例としての情報処理装置１と同様であるため、その図示並びに説明を省略する。
図６は、第２実施形態の一例としてのプロセス再配置部１１′の機能構成を示す図である。
第２実施形態の一例としてのプロセス再配置部１１′は、解除判定部１６、及び移動解除部１７がそなえられている点、及びコア移動リスト２２が使用される点を除き、前述の第１実施形態の一例としてのプロセス再配置部１１と同様の機能及び構成を有する。プロセス再配置部１１′において、既述の第１実施形態の一例としてのプロセス再配置部１１と同一の符号を有する構成要素は、プロセス再配置部１１の対応する構成要素と同様の機能もしくは構成を示すので、その説明を省略する。
【００４３】
コア移動リスト２２は、プロセス移動部１５がＯＳコア２間で移動させたプロセスの情報を記憶している。
コア移動リスト２２には、例えば、移動させたプロセスのＩＤや、移動前のＯＳコア２、移動後のＯＳコア２が記憶される。
コア移動リスト２２は、例えば、メインメモリ５（図１参照）に格納される。
【００４４】
解除判定部１６は、コア移動リスト２２に基づいて、プロセス移動部１５が別のＯＳコア２に移動させたプロセスが存在するかどうかを判定する。
移動解除部１７は、待ち時間が最長のプロセスの待ち時間が所定の閾値を下回り、かつ、プロセス移動部１５が別のＯＳコア２に移動させたプロセスが存在すると判定された場合に、プロセス移動部１５が移動させたプロセスを、他のＯＳコア２でも実行が可能となるように設定する。ＯＳが、現在広く利用されているＬｉｎｕｘ（登録商標）である場合、プロセスを他のＯＳコア２でも実行可能となるように設定するためのコマンドとして、プロセスの動作コアを指定するｔａｓｋｓｅｔコマンドや、割り込み先を決定するｓｍｐ＿ａｆｆｉｎｉｔｙ（ｓｅｔ＿ａｆｆｉｎｉｔｙ）が広く知られている。例えば、移動解除部１７は、「ｔａｓｋｓｅｔ」コマンドを実行することにより、プロセス移動部１５が移動させたプロセスを、他のＯＳコア２でも実行が可能となるように設定する。
【００４５】
例えば、移動解除部１７は、「ｔａｓｋｓｅｔ」コマンドを、プロセスを実行させたいＯＳコア２を示す２ビットのパラメータを指定して実行する。この２ビットのパラメータの値としては、例えば、００（どのＯＳコア２もプロセスを実行不可に設定）、０１（ＯＳコア２−１のみに実行を許可）、１０（ＯＳコア２−２のみに実行を許可）、及び１１（どのＯＳコア２にも実行を許可）を使用することができる。
【００４６】
この処理を行なうことにより、少なくとも１つの特定のＯＳコア２に集めた同じ種別のプロセスが、他のＯＳコア２でも実行されるようになる。
次に、図７のフローチャートを用いてプロセス再配置部１１′による処理をより詳細に説明する。
図７は、第２実施形態の一例としてのプロセス再配置部１１′の動作を示すフローチャート（ステップＳ２１〜Ｓ２８）である。
【００４７】
ステップＳ２１において、プロセスリスト取得部１２が、情報処理装置１の全てのＯＳコア２で実行中又は実行待機中の全プロセスのリストを取得する。
次に、ステップＳ２２において、待機時間判定部１３が、ステップＳ２２でプロセスリスト取得部１２が取得したプロセスリスト内のプロセス作成時間に基づいて、ＯＳコア２の全プロセスのうち、待ち時間が最大のプロセスの待ち時間が、所定の閾値を超えているかどうかを判定する。
【００４８】
最長待ち時間が所定の閾値を超えている場合（ステップＳ２２のＹＥＳルート参照）、ステップＳ２３において、移動判定部１４が、ステップＳ２２でプロセスリスト取得部１２が取得したプロセスリストに基づいて、同一種別のプロセスが、全てのＯＳコア２に存在する（全てのＯＳコア２で実行中又は実行待機中である）かどうかを判定する。
同一種別のプロセスが、全てのＯＳコア２には存在しない場合（ステップＳ２３のＮＯルート参照）、処理がステップＳ２１に戻る。
【００４９】
一方、同一種別のプロセスが、全てのＯＳコア２に存在する場合（ステップＳ２３のＹＥＳルート参照）、ステップＳ２４において、プロセス移動部１５が、その種別の全プロセスを、少なくとも１つの特定のＯＳコア２に集中するように移動させる。
ステップＳ２５において、プロセス移動部１５は、ステップＳ２４で移動させたプロセスをコア移動リスト２２に記録し、処理がステップＳ２１に戻る。
【００５０】
一方、ステップＳ２２で待ち時間が所定の閾値を超えない場合（ステップＳ２２のＮＯルート参照）、ステップＳ２６において、解除判定部１６が、コア移動リスト２２に基づいて、プロセス移動部１５が別のＯＳコア２に移動させたプロセスが存在するかどうかを判定する。
別のＯＳコア２に移動済みのプロセスが存在しない場合（ステップＳ２６のＮＯルート参照）、処理がステップＳ２１に戻る。
【００５１】
一方、別のＯＳコア２に移動済みのプロセスが存在する場合（ステップＳ２６のＹＥＳルート参照）、ステップＳ２７において、移動解除部１７は、ステップＳ２４でプロセス移動部１５が移動させたプロセスを、他のＯＳコア２でも実行が可能となるように設定を変更する。
次に、ステップＳ２８において、移動解除部１７は、ステップＳ２７で設定を変更したプロセスを、コア移動リスト２２から削除する。その後、処理がステップＳ２１に戻る。
【００５２】
本第２実施形態の一例においては、待ち時間が最長プロセスの待ち時間が閾値を下回り、かつプロセス移動部１５が別のＯＳコア２に移動させたプロセスが存在する場合に、プロセス移動部１５が移動させたプロセスを、他のＯＳコア２でも実行が可能となるように設定する。
これにより、移動させた特定のタイプのプロセスの処理負荷が軽くなった場合に、当該プロセスを全ＯＳコア２で動作させることができる。これにより、処理を高速化することができる。
【００５３】
これにより、第２実施形態の一例においては、上記第１実施形態の一例としての情報処理装置１の作用・効果に加えて、ＯＳコア２という資源の利用時間をより有効に活用できるようになるという効果を奏する。
（Ｃ）第３実施形態
上記の第１及び第２実施形態の一例においては、計算コア３は、同一の構成を有し、メインメモリ５とキャッシュ４とが全計算コア３間で共有されている。
【００５４】
ところで、情報処理装置においては、一般に、コアの数の増加に伴い、多くのコアが１つのキャッシュメモリを利用すると、キャッシュメモリに対するバンド幅やキャッシュのヒットなどにより、情報処理装置の性能が低下することが知られている。
これに対処する構成として、計算コアをグループ化してグループごとにキャッシュメモリを設けるNon-Uniform Memory Access（ＮＵＭＡ）という構成が存在する。
【００５５】
本第３実施形態の一例は、計算コア３が利用するキャッシュメモリ４が分離されている構成に対応している。
図８は、第３実施形態の一例としての情報処理装置１″のハードウェア構成を模式的に示す図である。
情報処理装置１″は、ＯＳコア２−１，２−２、計算コア３−１〜３−１６、キャッシュメモリ４−１，４−２、及び不図示のメインメモリをそなえる。
【００５６】
第３実施形態の一例としての情報処理装置１″は、キャッシュメモリ４−１，４−２が２つ設けられている点、及び計算コア３−１〜３−１６がグループ化されている点を除き、前述の第１実施形態の一例としての情報処理装置１と同様の機能及び構成を有する。情報処理装置１″において、既述の第１実施形態の一例としての情報処理装置１と同一の符号を有する構成要素は、情報処理装置１の対応する構成要素と同様の機能もしくは構成を示すので、その説明を省略する。
【００５７】
計算コア３−１〜３−８（計算コアａ１〜ａ８）は、計算コアグループ８−１（グループａ）に属しており、計算コア３−９〜３−１６は、計算コアグループ８−２（グループｂ）に属している。以下の説明及び図面では、各計算コア３の属するグループが明確となるように、計算コア３−１〜３−８を、計算コアａ１〜ａ８と、計算コア３−９〜３−１６を、計算コアｂ９，ｂａ〜ｂｇと、それぞれ呼ぶこともある。
【００５８】
又、計算コアグループ８−１に対してはキャッシュメモリ４−１が、計算コアグループ８−２に対してはキャッシュメモリ４−２が、それぞれ割り当てられている。
なお、以下、ＯＳコアを示す符号としては、複数のＯＳコアのうち１つを特定する必要があるときには符号２−１，２−２を用いるが、任意のＯＳコアを指すときには符号２を用いる。
【００５９】
又、以下、計算コアを示す符号としては、複数の計算コアのうち１つを特定する必要があるときには符号３−１〜３−１６を用いるが、任意の計算コアを指すときには符号３を用いる。
又、以下、キャッシュメモリを示す符号としては、複数のキャッシュメモリのうち１つを特定する必要があるときには符号４−１，４−２を用いるが、任意のキャッシュメモリを指すときには符号４を用いる。
【００６０】
ＯＳコア２−１（ＯＳコアａ０）は、計算コア３−１〜３−８とキャッシュメモリ４−１を共有している。計算コア３−１〜３−８が実行を要求したプロセス（ＩＯプロセス等）は、ＯＳコア２−１用の不図示のキューにキューイングされる。
ＯＳコア２−２（ＯＳコアｂ０）は、計算コア３−９〜３−１６とキャッシュメモリ４−２を共有している。計算コア３−９〜３−１６が実行を要求したプロセス（ＩＯプロセス等）は、ＯＳコア２−２用の不図示のキューにキューイングされる。
【００６１】
通常は、プロセスの実行を要求した計算コア３とキャッシュメモリ４を共有しているＯＳコア２が、当該プロセスを実行する。例えば、計算コア３−１が要求したプロセスは、計算コア３−１とキャッシュメモリ４−１を共有するＯＳコア２−１が実行する。しかし、ＯＳコア２で処理を待機しているプロセスの待ち時間が長くなり、かつ特定の種別のプロセスが全ＯＳコア２に存在する場合、第３実施形態の一例としてのプロセス再配置部１１″が、特定の種別のプロセスを、少なくとも１つの特定のＯＳコア２に移動させる。
【００６２】
図９は、第３実施形態の一例としてのプロセス再配置部１１″の機能構成を示す図である。
第３実施形態の一例としてのプロセス再配置部１１″は、前述の第１実施形態の一例としてのプロセス再配置部１１と同様の機能及び構成を有するので、その説明を省略する。
以下、図１０，図１１を用いて、プロセス再配置部１１″によるプロセス移動処理について説明する。
【００６３】
図１０は、第３実施形態の一例としてのプロセス再配置部１１″による処理前の状態を例示する図である。図１１は、プロセス再配置部１１″による処理後の状態を例示する図である。
図１０，図１１には、ＯＳコア２−１，２−２と、対応するプロセス一覧７−１，７−２とが図示されている。
【００６４】
ここで、プロセス一覧７−１，７−２は、ＯＳコア２−１，２−２が実際に作成するものではなく、説明の便宜上図示されている。
プロセス一覧７−１，７−２において、一番上のプロセスは、ＯＳコア２−１，２−２でそれぞれ実行中のプロセスである。２番目以降のプロセスは実行待機中のプロセスであり、古い順に上から下に並んでいる。
【００６５】
図１０，図１１の例では、プロセス再配置部１１″により、計算コアグループｂに属する計算コア３−１１（計算コアｂｂ）及び計算コア３−１５（計算コアｂｆ）が要求したＩＯプロセス（図１１中、○を付す）が、ＯＳコア２−１に移動されている。
プロセス移動部１５は、プロセスの移動先のＯＳコア２を判定する。例えば、プロセス移動部１５は、動作しているプロセスの数が多い方のＯＳコア２を、プロセスの移動先のＯＳコア２として選択する。
【００６６】
図１０の例では、ＯＳコア２−１でＩＯプロセスが３つ動作し、ＯＳコア２−２でＩＯプロセスが２つ動作しているので、プロセス移動部１５は、ＯＳコア２−１をＩＯプロセスの移動先として選択する（すなわち、ＯＳコア２−２のＯＳプロセスを移動させる）。
第３実施形態の一例においては、上記第１及び第２実施形態の一例としての情報処理装置１，１″の作用・効果に加えて、ＮＵＭＡ構成にも本手法を採用できるという利点も奏する。
【００６７】
なお、図１０，図１１の例では、ＩＯプロセスを移動させた計算コア３（ｂｂ，ｂｆ）はキャッシュメモリ４−２を使用し、ＯＳコア２−１（ａ０）が使用するキャッシュメモリ４−１とは異なるため、移動によりキャッシュ性能が多少低下する可能性がある。しかし、実行待機中のプロセスがＯＳコア２−２（ｂ０）で待機されることなく実行されるようになるため、キャッシュ性能の低下を上回るような情報処理装置１″全体の性能向上効果を図ることができる。
【００６８】
（Ｄ）その他
なお、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上記第１〜第３実施形態の一例においては、プロセスの種別として、「ＩＯプロセス」、「管理プロセス」、及び「その他のプロセス」の３つの種別を用いたが、他のプロセス種別を用いることもできる。
【００６９】
又、上記第２実施形態の一例と第３実施形態の一例とを組み合わせてもよい。
なお、上述したプロセス再配置部１１，１１′，１１″、プロセスリスト取得部１２、待機時間判定部１３、移動判定部１４、プロセス移動部１５、解除判定部１６、及び移動解除部１７としての機能を実現するためのプログラム（制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータ（情報処理装置１，１″）はその記録媒体から不図示の媒体リーダーを介してプログラムを読み取って内部記録装置又は外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の不図示の記憶装置に記録しておき、その記憶装置から通信経路を介してコンピュータ（情報処理装置１，１″）に提供してもよい。
【００７０】
上述したプロセス再配置部１１，１１′，１１″、プロセスリスト取得部１２、待機時間判定部１３、移動判定部１４、プロセス移動部１５、解除判定部１６、及び移動解除部１７としての機能を実現する際には、内部記憶装置（情報処理装置１，１″の不図示のＨＤＤ等）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態では情報処理装置１，１″のＯＳコア２）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータ（本実施形態では情報処理装置１，１″）が読み取って実行してもよい。
【００７１】
（Ｅ）付記
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
複数の演算処理部と、
前記複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得する処理状況情報取得部と、
前記処理状況情報取得部が取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、前記複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、前記特定の種別の処理の全てを、前記複数の演算処理部の少なくとも１つで実行させる処理移動部と、
をそなえることを特徴とする演算処理装置。
【００７２】
（付記２）
前記処理状況情報取得部が取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値以下になり、かつ、前記処理移動部が前記複数の演算処理部の少なくとも１つで実行させるように設定した処理が存在する場合に、前記処理移動部が前記複数の演算処理部の少なくとも１つで実行させるように設定した前記特定の種別の処理を、前記複数の演算処理部の任意の演算処理部で実行されるようにする移動解除部
をさらにそなえることを特徴とする付記１記載の演算処理装置。
【００７３】
（付記３）
前記演算処理装置は、前記複数の演算処理部が実行する処理とは異なる演算処理をそれぞれ実行する複数の第２の演算処理部をさらにそなえ、
前記処理は、複数の第２の演算処理部が前記演算処理部に対して実行を要求する処理である
ことを特徴とする付記１又は２記載の演算処理装置。
【００７４】
（付記４）
前記複数の第２の演算処理部が複数のグループにグループ分けされており、
前記複数のグループのそれぞれに対して、前記複数の演算処理部のいずれかと別個のキャッシュメモリとが割り当てられている
ことを特徴とする付記３記載の演算処理装置。
【００７５】
（付記５）
複数の演算処理部を有する演算処理装置の制御方法であって、
前記複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得し、
取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、前記複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、前記特定の種別の処理の全てを、前記複数の演算処理部の少なくとも１つで実行させる
ことを特徴とする演算処理装置の制御方法。
【００７６】
（付記６）
取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値以下になり、かつ、前記処理移動部が前記複数の演算処理部の少なくとも１つで実行させるように設定した処理が存在する場合に、前記処理移動部が前記複数の演算処理部の少なくとも１つで実行させるように設定した前記特定の種別の処理を、前記複数の演算処理部の任意の演算処理部で実行されるようにする
ことを特徴とする付記５記載の演算処理装置の制御方法。
【００７７】
（付記７）
複数の演算処理部を有する演算処理装置の制御プログラムであって、
前記複数の演算処理部のそれぞれにおいて実行中又は実行待機中の処理の処理状況情報を取得し、
取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値を超え、かつ、前記複数の演算処理部の全てにおいて、特定の種別の処理が実行中又は実行待機中である場合に、前記特定の種別の処理の全てを、前記複数の演算処理部の少なくとも１つで実行させる
処理を前記演算処理部に実行させることを特徴とする演算処理装置の制御プログラム。
【００７８】
（付記８）
取得した前記処理状況情報に基づき、実行待機中の処理のうち待ち時間が最大の処理の待ち時間が所定値以下になり、かつ、前記処理移動部が前記複数の演算処理部の少なくとも１つで実行させるように設定した処理が存在する場合に、前記処理移動部が前記複数の演算処理部の少なくとも１つで実行させるように設定した前記特定の種別の処理を、前記複数の演算処理部の任意の演算処理部で実行されるようにする
処理を前記演算処理部に実行させることを特徴とする付記７記載の演算処理装置の制御プログラム。
【符号の説明】
【００７９】
１，１″        情報処理装置（演算処理装置）
２−１〜２−ｎ，２    ＯＳコア
３−１〜３−ｍ，４    計算コア（演算処理部）
３                    キャッシュメモリ
５                    メインメモリ
８                    計算コアグループ（グループ）
１１，１１′，１１″  プロセス再配置部（負荷分散部）
１２                  プロセスリスト取得部（リスト取得部）
１３                  待機時間判定部
１４                  移動判定部
１５                  プロセス移動部（処理移動部）
１６                  解除判定部
１７                  移動解除部
２１                  プロセス種別定義ファイル
２２                  コア移動リスト
【図１】
2015176218.tif 000003
【図２】
2015176218.tif 000004
【図３】
2015176218.tif 000005
【図４】
2015176218.tif 000006
【図５】
2015176218.tif 000007
【図６】
2015176218.tif 000008
【図７】
2015176218.tif 000009
【図８】
2015176218.tif 000010
【図９】
2015176218.tif 000011
【図１０】
2015176218.tif 000012
【図１１】
2015176218.tif 000013