(57)【要約】【課題】  マルチＣＰＵ環境において、特定のＣＰＵに負荷が集中することを避けることを目的としたものである。【解決手段】  ＣＰＵが、複数の他のＣＰＵから送信された各ＣＰＵの負荷状況と新規実行プロセスを実行した場合の評価値とを基に各ＣＰＵ毎の重み付けがされたＣＰＵ候補テーブルを更新し、この更新ＣＰＵ候補テーブルを基に前記新規実行プロセスを実行させるのに最も適した最適ＣＰＵを決定し、この最適ＣＰＵに処理を実行させる。【選択図】        図１
2010009288.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（Central Processing Unit）毎の重み付けがされたＣＰＵ候補テーブルと、
新たに発生した新規実行プロセスが使用するＯＳ（Operating System）機能とこの新規実行プロセスが使用する周辺機器への依存度とが記録されたプロセス情報テーブルと、
前記新規実行プロセスが発生した時に負荷状況の問い合わせをし、負荷状況が送信されるとこの負荷状況を基に前記ＣＰＵ候補テーブルを更新し、又前記プロセス情報テーブルの前記ＯＳ機能と前記周辺機器への依存度とを送信し、又送信された評価値を基に前記ＣＰＵ候補テーブルを更新し、この更新ＣＰＵ候補テーブルを基に前記新規実行プロセスを実行させるのに最も適した最適ＣＰＵを決定し、この最適ＣＰＵに処理を実行させる新規ＣＰＵ決定手段とを有するＣＰＵと、
前記新規ＣＰＵ決定手段により負荷状況の問い合わせを受けると、それぞれ自らのＣＰＵの負荷を算出し、前記ＣＰＵに負荷状況を送信する負荷状況算出手段と、
前記ＣＰＵにより送信された前記ＯＳ機能と前記周辺機器への依存度とを基に前記新規実行プロセスを実行した場合の前記評価値を算出し前記ＣＰＵに送信する情報管理手段とをそれぞれ有する複数のＣＰＵと、を備えたことを特徴とするマルチプロセッサシステム。
【請求項２】
前記負荷状況算出手段は、一定期間中の待機プロセスの動作時間又は一定期間中のＣＰＵ占有時間により自らのＣＰＵの負荷を算出することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
前記新規ＣＰＵ決定手段は、前記複数のＣＰＵの前記負荷状況算出手段により送信された前記負荷状況の中で負荷が高いＣＰＵには新規実行プロセスを実行させる比率を低くなるように、又負荷が低いＣＰＵには新規実行プロセスを実行させる比率を高くするように前記ＣＰＵ候補テーブルを更新することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項４】
前記新規ＣＰＵ決定手段は、前記複数のＣＰＵの前記情報管理手段により送信された前記評価値の中で評価値が高いＣＰＵには新規実行プロセスを実行させる比率を高くなるように、又評価値が低いＣＰＵには新規実行プロセスを実行させる比率を低くするように前記ＣＰＵ候補テーブルを更新することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項５】
前記ＣＰＵは、自ＣＰＵで動作するＯＳが保持するＯＳ機能が記録されたＯＳ機能テーブルを備え、
前記複数のＣＰＵは、それぞれ新規実行プロセスが使用するＯＳ機能が記録された第２のプロセス情報テーブルを備え、
前記情報管理手段は、前記ＯＳ機能テーブルに記録されたＯＳ機能と前記第２のプロセス情報テーブルに記録されたＯＳ機能とを基に前記新規実行プロセスを自ＣＰＵで実行可能か否か判断することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項６】
前記ＣＰＵは、前記周辺機器への論理的な距離が記録されたＩＯアクセス・コストテーブルを備え、
前記第２のプロセス情報テーブルは、それぞれ前記新規実行プロセスが使用する周辺機器への依存度が記録され、
前記情報管理手段は、前記ＩＯアクセス・コストテーブルに記録された前記周辺機器への論理的な距離と前記第２のプロセス情報テーブルに記録された前記周辺機器への依存度とを基に前記評価値を算出することを特徴とする請求項５記載のマルチプロセッサシステム。
【請求項７】
複数のＣＰＵと、新規実行プロセスが発生した時に前記複数のＣＰＵの中の最適ＣＰＵに新規実行プロセスの処理を実行させるＣＰＵと、を備えたマルチプロセッサシステムによるプログラム実行方法であって、
前記ＣＰＵは、前記新規実行プロセスが発生した時に前記複数のＣＰＵにそれぞれ負荷状況の問い合わせをする問い合わせステップと、
前記問い合わせステップに対応した負荷状況が送信されると、この負荷状況を基にＣＰＵ毎の重み付けがされたＣＰＵ候補テーブル６０１を更新する第１の更新ステップと、
前記問い合わせステップに対応した負荷状況が送信されると、前記新規実行プロセスが使用するＯＳ機能とこの新規実行プロセスが使用する周辺機器への依存度とを送信する第１の送信ステップと、
前記送信ステップに対応した評価値が送信されると前記ＣＰＵ候補テーブル６０１を更新する第２の更新ステップと、
前記第２の更新ステップにより更新された前記ＣＰＵ候補テーブル６０１を基に前記新規実行プロセスを実行させるのに最も適した最適ＣＰＵを決定する選択ステップと、
前記選択ステップにより選択された最適ＣＰＵに処理を実行させる処理実行ステップとを備え、
前記複数のＣＰＵは、前記問い合わせステップにより負荷状況の問い合わせを受けると、それぞれ自らのＣＰＵの負荷を算出する第１の算出ステップと、
前記算出ステップにより算出された負荷状況を前記ＣＰＵに送信する第２の送信ステップと、
前記第１の送信ステップにより送信された前記ＯＳ機能と前記周辺機器への依存度とを基に前記新規実行プロセスを実行した場合の前記評価値を算出する第２の算出ステップと、
前記第２の算出ステップにより算出された前記評価値を前記ＣＰＵに送信する第３の送信ステップとを備えたことを特徴とするプログラム実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵの負荷を分散するマルチプロセッサシステム及びプログラム実行方法に関するものである。
【背景技術】
【０００２】
従来、複数のＣＰＵ（Central Processing Unit）でシステムを構築する所謂マルチプロセッサシステムでは、対称型マルチプロセッサ（ＳＭＰ）でシステムを構築し、ＳＭＰ専用のオペレーティングシステム（ＯＳ）がＣＰＵの負荷を均一にする機能によりプロセスの振り分けを行っていた。
また、ＣＰＵ毎に機能を持たせて複数ＣＰＵで処理を行う非対称マルチプロセッサ（ＡＭＰ）では各ＣＰＵにプログラムを固定して実行するため、ＣＰＵ負荷の不均一が発生し、複数のＣＰＵを有効に利用することができなかった。
特許文献１の「マルチプロセッサシステム」は、上記のようなＡＭＰにおけるＣＰＵ負荷の不均一を改善することを示したもので、プロセス毎の実行負荷（処理指数）とプロセッサ毎の負荷状況（処理余力値）及び、プロセスの実行優先度から判断して、次に実行を開始するプロセス及び、割り当てるプロセッサを決定するというプログラム実行方式が用いられている。
【０００３】
【特許文献１】特開２００６−３５０６２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の技術では、ＡＭＰにおいて負荷の少ないＣＰＵが新たに投入するプロセス処理することでＣＰＵ間の負荷分散が可能であるが、ＣＰＵの負荷状況及び新たに投入するプロセスの実行負荷のみでは、各ＣＰＵが個別の機能を持った機能分散型のマルチＣＰＵでは処理できないプロセスが発生し得る等の問題があった。
【０００５】
本発明は、上記のような課題を解決するためになされたものであり、マルチＣＰＵ環境において、システム上に発生するプロセスを何れのＣＰＵに割り当てるかを決定するため、システム上の各ＣＰＵの近い将来における負荷状況から判断する手段と、各ＣＰＵで動作するＯＳが持つ機能が投入するプロセスが必要とする機能を満たしていることを判断基準とする手段と、各ＣＰＵから利用可能なＩＯアクセスの論理的距離と投入するプロセスが必要とするＩＯの依存状況を判断基準とする手段を用いることで、特定のＣＰＵに負荷が集中することを避けることを目的としたものである。
【課題を解決するための手段】
【０００６】
この発明に係るマルチプロセッサシステムは、ＣＰＵ（Central Processing Unit）毎の重み付けがされたＣＰＵ候補テーブルと、
新たに発生した新規実行プロセスが使用するＯＳ（Operating System）機能とこの新規実行プロセスが使用する周辺機器への依存度とが記録されたプロセス情報テーブルと、
前記新規実行プロセスが発生した時に負荷状況の問い合わせをし、負荷状況が送信されるとこの負荷状況を基に前記ＣＰＵ候補テーブルを更新し、又前記プロセス情報テーブルの前記ＯＳ機能と前記周辺機器への依存度とを送信し、又送信された評価値を基に前記ＣＰＵ候補テーブルを更新し、この更新ＣＰＵ候補テーブルを基に前記新規実行プロセスを実行させるのに最も適した最適ＣＰＵを決定し、この最適ＣＰＵに処理を実行させる新規ＣＰＵ決定手段とを有するＣＰＵと、
前記新規ＣＰＵ決定手段により負荷状況の問い合わせを受けると、それぞれ自らのＣＰＵの負荷を算出し、前記ＣＰＵに負荷状況を送信する負荷状況算出手段と、
前記ＣＰＵにより送信された前記ＯＳ機能と前記周辺機器への依存度とを基に前記新規実行プロセスを実行した場合の前記評価値を算出し前記ＣＰＵに送信する情報管理手段とをそれぞれ有する複数のＣＰＵと、を備えたものである。
【発明の効果】
【０００７】
この発明は、ＣＰＵが、複数の他のＣＰＵから送信された各ＣＰＵの負荷状況と新規実行プロセスを実行した場合の評価値とを基に各ＣＰＵ毎の重み付けがされたＣＰＵ候補テーブルを更新し、この更新ＣＰＵ候補テーブルを基に前記新規実行プロセスを実行させるのに最も適した最適ＣＰＵを決定し、この最適ＣＰＵに処理を実行させることにより、特定のＣＰＵに負荷が集中することを避けることができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は、本発明のマルチプロセッサシステムが利用される計算機システムの構成図である。
複数のＣＰＵ１０１〜１０３において、個別に同一のオペレーティングシステム（ＯＳ：Operating System）１２１〜１２３が動作する計算機システム１００がある。ＣＰＵ１０１〜１０３は同一アーキテクチャを持ち、それぞれ個別に周辺機器（ＩＯ：Input/Output）群１１１〜１１３が接続されている。
また、ＣＰＵ１０１〜１０３は通信路１０６で接続され、ＣＰＵ同士直接、或いは同じく通信路１０６に接続されるメモリ１０５、同じく通信路１０６に接続される記憶デバイス等のＩＯ１０４、を介して互いに情報を伝達できるように構成されている。
【０００９】
各ＣＰＵ１０１〜１０３で動作するＯＳ１２１〜１２３は、各ＣＰＵ個別の機能を実現するためＯＳ構成は異なるが同一アーキテクチャを持つＯＳとする。例えば、ＣＰＵ１０１で動作するＯＳ１２１には、表示のＩＯ１１１を制御するデバイスドライバと画面表示を行なうためのＯＳ機能は実装されるが、オーディオ入出力のための機能は搭載していない構成のＯＳであり。一方、ＣＰＵ１０２で動作するＯＳ１２２は、ＯＳ１２１の構成とは異なり、オーディオ入出力の機能は持つが、画面表示機能は無いＯＳ構成である。なお、複数個の同一構成を持つＯＳにより、システムを構成することも可能である。
全てのＣＰＵで同一アーキテクチャのＯＳを動作させることで、何れかのＣＰＵで発生するプロセスをどのＣＰＵでも実行させることが可能となる。
【００１０】
図２は、本発明のマルチプロセッサシステムを構成するＣＰＵの構成図であり、ここでは、計算機システム１００のＣＰＵ１０３を例に、ＣＰＵで動作するソフトウェアの構成を示しており、オペレーティングシステム（ＯＳ）１２３とＯＳ管理のもと動作するプロセス群（２０１、２０２）を表している。
このプロセス群のうち、ＣＰＵ１０３で実行中のものを実行中プロセス２０１、ＣＰＵ１０３で新たに発生したプロセスでシステムに未投入のものを新規投入プロセス２０２として表している。
新規投入プロセス２０２は、自身が動作中に使用するＯＳ機能の一覧及び処理において使用するＩＯデバイスの依存度をプロセス情報テーブル３１１として持つ。
【００１１】
図３は、プロセス情報テーブル３１１の説明図である。図において、プロセス情報テーブル３１１は、新規投入プロセス２０２自身が動作中に使用するＯＳ機能を列挙したＯＳ−ＡＰＩ（ＡＰＩ：Application Program Interface）リスト４１１及びプロセスが動作中に使用するＩＯへの依存度を示したＩＯデバイス依存率リスト４１２を持つ。
ここで、ＯＳ−ＡＰＩは、アプリケーションが動作する際に、利用するＯＳの機能（関数、システムコール等）を示すもので、本実施の形態で示すＯＳはシステム（ＣＰＵ）において必要な機能のみを組み合わせることが出来るＯＳを想定している。
【００１２】
図４は、ＯＳ−ＡＰＩリスト４１１の一例を示した説明図である。図において、ＯＳ−ＡＰＩリスト４１１は、新規投入プロセス２０２を作成する際に、生成されるマップファイルやデバッグシンボル情報を持つプログラムデータベースより確認できる、新規投入プロセス２０２が動作する際に使用するＯＳのＡＰＩ一覧を情報として持つ。
図５は、ＩＯデバイス依存率リスト４１２の一例を示した説明図である。図において、ＩＯデバイス依存率リスト４１２は、新規投入プロセス２０２をＯＳ１２３と共にＣＰＵ１０３へ実装する際にシステム設計者が任意に決定する依存度合いを数値として持つ。
図０５に示したIO依存率は、数値が大きいほどそのＩＯへの依存度が高いことを示す。なお、このＩＯ依存率は、単位時間中にＩＯへアクセスする頻度としてもよい。
【００１３】
図６は、図２に示したＯＳ１２３が持つ機能一覧を表したＯＳ機能テーブル３１２の説明図である。
図において、ＯＳ機能テーブル３１２は、ＯＳ１２３が持つ機能一覧を表すもので、ユーザアプリケーション（プロセス）からＯＳ機能を利用する際に、コールされるＡＰＩをテーブルとして持つものである。
また、ＯＳ機能テーブル３１２は、ＯＳ１２３を生成する際の情報から作成し、システム設計時に初期値を設定した状態で組み込み使用する。ＯＳ１２３の構成が動的に変更できるＯＳの場合には、初期値を設定したＯＳ機能テーブル３１２の内容を動的に更新して使用する。
【００１４】
図７は、図２に示したＩＯアクセス・コストテーブル３１３の説明図である。
図において、ＩＯアクセス・コストテーブル３１３は、あるＣＰＵからＩＯにアクセスを行なう際に要する各ＩＯデバイスへの論理的な距離を表し、自ＣＰＵに接続されるＩＯであればデバイスドライバ２０３を介して直接アクセスが可能であるため論理的距離は小さく、自ＣＰＵには無いＩＯに対し通信路１０６を介して他のＣＰＵ経由でアクセスする場合には論理的距離が大きいものとする。
また、ＩＯアクセス・コストテーブル３１３は、最初にシステムを構築した際に、複数のＣＰＵを組み合わせた構成において、各ＣＰＵから他ＣＰＵのＩＯへアクセスした場合のオーバヘッドを測定用ツール（ベンチマークプログラム）等で数値化し、予めテーブルとして作成したものを利用する。ＩＯアクセスに要するオーバヘッドが動的に変わるシステムでは、ＩＯアクセス・コストテーブル３１３の設定内容を更新して使用する。
【００１５】
図２に示したＣＰＵ情報マネージャ２０６は、ＯＳ機能テーブル３１２と、ＩＯアクセス・コストテーブル３１３へのアクセスおよびテーブル情報の更新を行なう情報管理手段である。
一般的に、ＣＰＵで実行するプロセスには、一度投入された後は継続的に処理を行い条件により終了するプロセスと、与えられたデータに対し決められた一連の処理を行なった後、無条件に終了するプロセスがある。以降では、後者のようなプロセスの形態をシーケンシャル実行プロセス４０１と呼ぶ。
【００１６】
図８、図９は、シーケンシャル実行プロセス４０１について示した説明図である。
図８において、シーケンシャル実行プロセス４０１は、その処理中にチェックポイントを設け、チェックポイント通過を確認することで終了が近いことを判定できる。
また、図９において、シーケンシャル実行プロセス４０１は、チェックポイントを設ける代わりに、シーケンシャル実行プロセスの実行位置をプログラムカウンタ（ＰＣ）より確認することでも進捗状況を確認できる。
【００１７】
図２に示したシステムモニタ２０４は、シーケンシャル実行プロセス４０１が無条件に終了する特性を用い、自ＣＰＵにおける近い将来における負荷状況を算出する機能を持つ、負荷状況算出手段であり、他ＣＰＵから自ＣＵＰの負荷状況に対して問合せがあった際に、将来の負荷状況を回答するように動作する。
なお、ＣＰＵの負荷状況を判断するには、優先度が一番低いＩＤＬＥ（待機）プロセスが一定期間中に動作している割合（時間）を用いるのが一般的で、ＯＳが提供している場合もある。また、動作中のプロセスが一定期間中のＣＰＵ占有時間を観測することにより、特定プロセスが占めるＣＰＵ負荷を確認することもできる。
シーケンシャル実行プロセス４０１の終了が近いことと、実行中の各プロセスのＣＰＵ負荷が分かることから、現時点より所定の時刻Ｔ後のＣＰＵ負荷状況を算出することができる。
【００１８】
図１０は、システムモニタ２０４を２つのＣＰＵ（ＣＰＵ−１，ＣＰＵ−２）に適用した場合の動作について示した説明図であり、各ＣＰＵにおけるプロセスの動作状態と対応する負荷状況について時系列で表している。
図において、ＣＰＵ−１ではプロセス１Ａ、１Ｂが、ＣＰＵ−２ではプロセス２Ａ、２Ｂが動作し、ＣＰＵ−１、ＣＰＵ−２の負荷状況を確認する要求があった時に、現時点ではＣＰＵ−１ではプロセス１Ａ，１Ｂが動作し、ＣＰＵ−２ではプロセス２Ａ，２Ｂが動作しているが、ＣＰＵ−１とＣＰＵ−２でそれぞれ動作するシステムモニタ２０４の機能を用い、時刻Ｔ後における負荷状況を予測することで、ＣＰＵ−１の負荷が近い将来低くなることが確認できることが分かる。
【００１９】
図２に示した投入プロセスマネージャ２０５は、ＣＰＵ１０３で発生する新規投入プロセス２０２を計算機システム１００の何れのＣＰＵ（１０１〜１０３）に割り当てるかを決定するもので、通信路１０６を介して、他のＣＰＵで動作するシステムモニタ２０４から得られる負荷状況、同じく他のＣＰＵで動作するＣＰＵ情報マネージャ２０６から得られる情報を元に、何れのＣＰＵへ新規投入プロセス２０２を投入するか決定する新規ＣＰＵ決定手段である。
【００２０】
図２に示したＣＰＵ情報マネージャ２０６は、投入プロセスマネージャ２０５より伝えられる新規投入プロセス２０２のプロセス情報テーブル３１１と、自ＣＰＵにおけるＯＳ機能テーブル３１２とＩＯアクセス・コストテーブル３１３を元に、自ＣＰＵで新たに新規投入プロセス２０２を実行した場合の評価値を、通信路１０６を介して新規投入プロセス２０２が発生したＣＰＵ１０３へ報告する。
【００２１】
次に、投入プロセスマネージャ２０５の処理動作について説明する。
図１１は、投入プロセスマネージャ２０５の処理動作を示すフローチャートである。
投入プロセスマネージャ２０５は、システム起動時に処理を開始し、初期状態の投入先ＣＰＵ候補テーブルを作成する（ステップＳ１）。この投入先ＣＰＵ候補テーブルは、後述の図１３に示すＣＰＵ候補テーブル６０１であり、計算機システム１００に属するＣＰＵ毎に重み付けを行い、以降示す判断基準によりＣＰＵ毎の重み付けの値を修正し、新たに発生したプロセスを投入するＣＰＵを決定するために使用するものである。
【００２２】
投入プロセスマネージャ２０５は、起動した後、自分自身が動作するＣＰＵ（以降、自ＣＰＵと記す）に新たに発生するプロセスを監視し、自ＣＰＵで新たにプロセスが発生したことを確認すると（ステップＳ２）、自ＣＰＵを含む計算機システム１００に属するＣＰＵ（１０１〜１０３）の負荷状況を各ＣＰＵで動作するシステムモニタ２０４に問い合わせをし、この問い合わせに対し各ＣＰＵのシステムモニタ２０４から応答されたＣＰＵの負荷状況を取得する（ステップＳ３）。
ここで、各ＣＰＵのシステムモニタ２０４は、投入プロセスマネージャ２０５からＣＰＵの負荷状況の問い合わせを受けると、前述の判断方式により各々、自ＣＰＵの負荷を算出し、投入プロセスマネージャ２０５にＣＰＵの負荷状況（負荷指数）として応答を返す。ＣＰＵ間の情報伝達はバス１０６或いはメモリ１０５を介した方法等で行なう。
【００２３】
投入プロセスマネージャ２０５は、各ＣＰＵから受け取ったＣＰＵの負荷状況を元に、負荷が高いＣＰＵにはプロセスを割り当てる比率を低くなるように、また負荷が低いＣＰＵにはプロセスを割り当てる比率が高くなるように投入先ＣＰＵ候補テーブル６０１を更新する（ステップＳ４）。即ち、投入プロセスマネージャ２０５は、複数のＣＰＵのシステムモニタ２０４により送信された負荷状況の中で負荷が高いＣＰＵには新規実行プロセスを実行させる比率を低くなるように、又負荷が低いＣＰＵには新規実行プロセスを実行させる比率を高くするようにＣＰＵ候補テーブル６０１を更新する。
続いて、投入プロセスマネージャ２０５は、新規投入プロセス２０２のプロセス情報テーブル３１１に含まれるＯＳ−ＡＰＩリスト４１１とＩＯデバイス依存率リスト４１２を読み出し（ステップＳ５）、自ＣＰＵを含む計算機システム１００に属するＣＰＵ（１０１〜１０３）で動作するＣＰＵ情報マネージャ２０６にこれら情報を伝達する（ステップＳ６）。
【００２４】
各ＣＰＵのＣＰＵ情報マネージャ２０６は、受け取った情報を元に、各々のＣＰＵで新規投入プロセス２０２を実行した場合の評価値を返す。なお、各ＣＰＵで動作するＣＰＵ情報マネージャ２０６の動作は後述する。
投入プロセスマネージャ２０５は、各ＣＰＵから返される前述の評価値を元に、評価値が低いＣＰＵにはプロセスを割り当てる比率を低くなるように、評価値が高いＣＰＵにはプロセスを割り当てる比率が高くなるように投入先ＣＰＵ候補テーブル６０１を更新する（ステップＳ７）。即ち、投入プロセスマネージャ２０５は、複数のＣＰＵのＣＰＵ情報マネージャ２０６により送信された評価値の中で評価値が高いＣＰＵには新規実行プロセスを実行させる比率を高くなるように、又評価値が低いＣＰＵには新規実行プロセスを実行させる比率を低くするようにＣＰＵ候補テーブル６０１を更新する。
【００２５】
投入プロセスマネージャ２０５は、以上の手順より作成した投入先ＣＰＵ候補テーブル６０１から、新規投入プロセス２０２を実行させるのに最も適したＣＰＵを決定し（ステップＳ８）、新規投入プロセス２０２の処理を担当させるＣＰＵのＯＳに対してプロセスを実行するように要求する（ステップＳ９）。
【００２６】
次に、ＣＰＵ情報マネージャ２０６の処理動作について説明する。
図１２は、ＣＰＵ情報マネージャ２０６の処理動作を示すフローチャートである。
ＣＰＵ情報マネージャ２０６は、システム起動時に処理を開始し、自ＣＰＵで動作するＯＳが持つＯＳ機能をＯＳ機能テーブル３１２として作成（ステップＳ１１）、さらに、自ＣＰＵから計算機システム１００内に存在するＩＯデバイスに対してアクセスした場合のアクセスに要する手間の度合い（オーバヘッド）を表として持つＩＯアクセス・コストテーブル３１３を作成する（ステップＳ１２）。
【００２７】
ＣＰＵ情報マネージャ２０６は、ＯＳ機能テーブル３１２とＩＯアクセス・コストテーブル３１３を作成した後、自ＣＰＵ或いは他のＣＰＵで動作する投入プロセスマネージャ２０５からのリクエストを待ち、投入プロセスマネージャ２０５から、新規投入プロセス２０２の情報（プロセス情報テーブル３１１に含まれるＯＳ−ＡＰＩリスト４１１及びＩＯデバイス依存率リスト４１２）と共に、リクエストがあり（ステップＳ１３）、新規投入プロセス２０２の評価依頼と共に送られる投入プロセスの情報（ＯＳ−ＡＰＩリスト４１１及びＩＯデバイス依存率リスト４１２）を取得し（ステップＳ１４）、新規投入プロセス２０２を自ＣＰＵで動作した場合の評価を以下の手順で行なう。
【００２８】
ＣＰＵ情報マネージャ２０６は、新規投入プロセス２０２のＯＳ−ＡＰＩリスト４１１と、ＯＳ機能テーブル３１２に含まれる自ＣＰＵで動作するＯＳが持つＯＳ機能とを比較し（ステップＳ１５）、新規投入プロセス２０２が自ＣＰＵで動作するＯＳで実行可能か判断する。
ＯＳ−ＡＰＩリスト４１１は、新規投入プロセス２０２が実行するために必要なＯＳ機能の一覧を示したもので、このリストにある機能全てが、ＯＳ機能テーブル３１２に含まれている場合は、実行可能と判定し、ＯＳ−ＡＰＩリスト４１１に或る機能のうちＯＳ機能テーブル３１２に含まれないものが有る場合にはこのＯＳでは実行できないと判定する（ステップＳ１６）。
【００２９】
前述の判定において実行可能と判断した場合、ＣＰＵ情報マネージャ２０６は、ＯＳ機能テーブル３１２とＩＯアクセス・コストテーブル３１３を用いてＩＯアクセス・コストの算出を行なう。
ＩＯアクセス・コストの算出は、新規投入プロセス２０２が実行中に使用するＩＯデバイスのアクセス頻度からなる重み付けを表すＩＯデバイス依存率リスト４１２に対し、自ＣＰＵから参照可能な計算機システム１００中の各種ＩＯへのアクセスに要するオーバヘッドからなるＩＯアクセス・コストテーブル３１３を掛け合わせ、評価値を算出する（ステップＳ１７）。
【００３０】
なお、前述のＯＳ機能テーブル３１２とＯＳ−ＡＰＩリスト４１１の比較結果から、自ＣＰＵで動作するＯＳでは実行不可と判断した場合には、自ＣＰＵへは新規投入プロセス２０２の割り当て不可という評価値とする（ステップＳ１８）。
ＣＰＵ情報マネージャ２０６は、以上の評価値を当ＣＰＵ情報マネージャ２０６の結果として、ステップ１３でリクエストされたＣＰＵに対してリクエストに対する応答として返す（ステップＳ１９）。
【００３１】
図１３は、前述の処理手順に基づき、新規投入プロセス２０２を実行するＣＰＵを決定する場合のＣＰＵ候補テーブル６０１の更新状況を示した説明図であり、新規投入プロセス２０２がＣＰＵ１で発生した場合を想定したものである。
（ａ）の初期値に対して、（ｂ）に示すような、各ＣＰＵのシステムモニタ２０４から回答された各ＣＰＵの負荷状況（負荷指数）に従いＣＰＵ負荷判定を行い、（ｃ）に示すようにＣＰＵ候補テーブル６０１の更新が行なわれる。この例では、各ＣＰＵのシステムモニタ２０４から回答された各ＣＰＵの負荷状況は、ＣＰＵ１は負荷指数８で負荷状況が高い状態で、その他のＣＰＵは負荷が低い状況である場合を示している。
【００３２】
次に、（ｄ）に示すようなＯＳ−ＡＰＩリスト４１１とＯＳ機能テーブル３１２の比較結果に従い、（ｃ）のＣＰＵ候補テーブル６０１を（ｅ）のＣＰＵ候補テーブル６０１に更新する。ここで、（ｄ）のＯＳ−ＡＰＩリスト４１１とＯＳ機能テーブル３１２の比較で、ＣＰＵ３は搭載されているＯＳの機能が新規投入プロセス２０２の必要とする機能と一致しないため、（ｅ）のＣＰＵ候補テーブル６０１におけるＣＰＵ３は評価値が０となる。
続いて、（ｆ）に示すようなＩＯデバイス依存リスト４１２とＩＯアクセス・コストテーブル３１３の比較結果を（ｅ）のＣＰＵ候補テーブル６０１に反映させ、最終的な結果としてＣＰＵ２で新規投入プロセス２０２を実行させることを決定したことを表している。
【００３３】
なお前述の処置手順の他に、各ＣＰＵにおける実行中のプロセス群２０１が使用するＯＳ機能及び使用するＩＯデバイスの頻度をＣＰＵ情報マネージャ２０６が監視し、ＯＳ機能テーブル３１２の重み付けやＩＯアクセス・コストテーブル３１３における各ＩＯの重み付けを動的に変更して、新規投入プロセス２０２との競合を考慮した形で判定を行なうことも可能である。
【００３４】
以上のように本実施の形態によれば、複数のＣＰＵからなる計算機システムにおいて、複数あるＣＰＵ同士が互いの負荷状態を確認しながら、システム全体の負荷を均一化するように、処理を分担し合うことができるようにしたので、特定のＣＰＵに負荷が集中することを避けることができ、この複数のＣＰＵにより構成された計算機システムのスループットを向上させることができると共に、応答性能を向上させることができる。
また、複数あるＣＰＵ同士が互いの負荷状態を確認する際に、現時点での負荷状態の他に、近い将来に処理が完了することを判断する方式を用いることで、より効率的な負荷分散を実現することができる。
【００３５】
さらに、ある処理をあるＣＰＵに割り当て実行させようとした場合、そのＣＰＵで動作するＯＳの持つ機能が、割り当てられる予定であった処理が必要とする機能を搭載しない場合に、割り当てを取りやめる機能を搭載することにより、実行時に発生するシステム例外や、実行できなかったことによる、担当ＣＰＵの再検索を行なう手間を省くことができ、手戻りの無い有効な処理分散方式を提供することができる。
また、ある処理を何れかのＣＰＵに割り当て実行させる際に、その処理が動作中に利用するＩＯの利用頻度を、その処理自身が情報として持つことにより、実行させる処理が最適に動作できる状態で実行できる機能を提供することができる。
【００３６】
さらにまた、ある処理を複数ＣＰＵ環境の何れのＣＰＵに割り当てるか判断する方法として、前述の判定方法を組合せ、さらに判定に用いるパラメータ（近い将来として使用する時間間隔、処理が必要とするＩＯの利用頻度等）をシステム動作中に動的に変更することにより、さらに効率的な処理分散を提供することができる。
また、ある処理を実行するためのＯＳ機能が、担当するＣＰＵに無い場合、その機能を持つ他のＣＰＵへ遠隔処理要求（ＲＰＣやＤＣＯＭ等を利用）することで、特定の処理は特定のＣＰＵでのみ実行できる状態を回避することができ、更なる処理分散を実現することができる。
また、ＯＳ機能への依存度を処理自身が情報として持ち、各ＣＰＵが提供できるＯＳ機能群の処理能力をパラメータとして提供することで、処理を担当するＣＰＵを決定する判断基準を拡張することができる。
【図面の簡単な説明】
【００３７】
【図１】本発明のマルチプロセッサシステムが利用される計算機システムの構成図。
【図２】本発明の実施の形態のマルチプロセッサシステムを構成するＣＰＵの構成図。
【図３】本発明の実施の形態におけるプロセス情報テーブル３１１の説明図。
【図４】本発明の実施の形態におけるＯＳ−ＡＰＩリスト４１１の説明図。
【図５】本発明の実施の形態におけるＩＯデバイス依存率リスト４１２の説明図。
【図６】本発明の実施の形態におけるＯＳ機能テーブル３１２の説明図。
【図７】本発明の実施の形態におけるＩＯアクセス・コストテーブル３１３の説明図。
【図８】本発明の実施の形態におけるシーケンシャル実行プロセス４０１の説明図。
【図９】本発明の実施の形態におけるシーケンシャル実行プロセス４０１の説明図。
【図１０】本発明の実施の形態においてシステムモニタ２０４をＣＰＵ−１、ＣＰＵ−２に適用した場合の動作説明図。
【図１１】本発明の実施の形態における投入プロセスマネージャ２０５の処理動作を示すフローチャート。
【図１２】本発明の実施の形態におけるＣＰＵ情報マネージャ２０６の処理動作を示すフローチャート。
【図１３】本発明の実施の形態において新規投入プロセス２０２を実行するＣＰＵを決定した場合のＣＰＵ候補テーブル６０１の更新状態説明図。
【符号の説明】
【００３８】
１００  計算機システム、１０１、１０２、１０３  ＣＰＵ、１０４  ＩＯ、１０５  メモリ、１０６  通信路、１１１、１１２、１１３  ＩＯ、２０１  実行中プロセス、２０２  新規投入プロセス、２０３  デバイスドライバ、２０４  システムモニタ、２０５  投入プロセスマネージャ、２０６  ＣＰＵ情報マネージャ、３１１  プロセス情報テーブル、３１２  ＯＳ機能テーブル、３１３  ＩＯアクセス・コストテーブル、４０１  シーケンシャル実行プロセス、４１１  ＯＳ−ＡＰＩリスト、４１２  ＩＯデバイス依存率リスト、６０１  ＣＰＵ候補テーブル。
【図１】
2010009288.tif 000003
【図２】
2010009288.tif 000004
【図３】
2010009288.tif 000005
【図４】
2010009288.tif 000006
【図５】
2010009288.tif 000007
【図６】
2010009288.tif 000008
【図７】
2010009288.tif 000009
【図８】
2010009288.tif 000010
【図９】
2010009288.tif 000011
【図１０】
2010009288.tif 000012
【図１１】
2010009288.tif 000013
【図１２】
2010009288.tif 000014
【図１３】
2010009288.tif 000015