(57)【要約】【課題】負荷分散によるコンピュータシステムの性能低下を抑制する。【解決手段】複数のプロセッサと複数の入出力デバイスを備えたコンピュータシステムにおいて、所定時間ごとにプロセッサ負荷状況及び入出力デバイス負荷状況を採取する。また、入出力デバイスからの割り込みをプロセッサに分散させる負荷分散発動条件を満たすプロセッサがあったときに、入出力デバイス負荷状況を参照し、そのプロセッサに割り込みしているすべての入出力デバイスのプロセッサ使用率を算出する（Ｓ３１）。そして、算出したプロセッサ使用率に基づいて、プロセッサ負荷状況及び入出力デバイス負荷状況から負荷分散実施条件を満たすプロセッサ及び入出力デバイスを決定し（Ｓ３２〜Ｓ３４）、その入出力デバイスの割り込み先プロセッサを変更する。【選択図】図９
2010055296.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと複数の入出力デバイスを備えたコンピュータシステムに、
第１の所定時間ごとに、各プロセッサについて、アプリケーションジョブによるプロセッサ使用率，入出力デバイスからの割り込みによるプロセッサ使用率及びプロセッサ使用率増減傾向を含むプロセッサ負荷状況を採取すると共に、各入出力デバイスについて、割り込み先プロセッサ及び割り込み回数積算値を含む入出力デバイス負荷状況を採取するステップと、
第２の所定時間ごとに、アプリケーションジョブによるプロセッサ使用率，入出力デバイスからの割り込みによるプロセッサ使用率及びプロセッサ使用率増減傾向を用いて、入出力デバイスからの割り込みをプロセッサに分散させる負荷分散発動条件及び負荷分散実施条件を定義した負荷分散ポリシーを参照し、前記プロセッサ負荷状況に基づいて負荷分散発動条件を満たすプロセッサがあるか否かを判定するステップと、
前記負荷分散発動条件を満たすプロセッサがあると判定したときに、前記プロセッサ負荷状況及び入出力デバイス負荷状況を参照し、そのプロセッサに割り込みしているすべての入出力デバイスのプロセッサ使用率を算出すると共に、算出したプロセッサ使用率に基づいて、前記負荷分散ポリシーの負荷分散実施条件を満たすプロセッサ及び入出力デバイスを決定するステップと、
前記負荷分散実施条件を満たす入出力デバイスの割り込み先プロセッサを変更するステップと、
を実現させるための負荷分散プログラム。
【請求項２】
前記負荷分散ポリシーには、適用対象となるコンピュータシステムのハードウエア構成がさらに定義され、
前記コンピュータシステムに、複数の負荷分散ポリシーの中から、ハードウエア構成に適合した負荷分散ポリシーを選択するステップをさらに実現させることを特徴とする請求項１記載の負荷分散プログラム。
【請求項３】
前記入出力デバイスのプロセッサ使用率は、該入出力デバイスの割り込み回数上昇率に応じて重み付けがなされることを特徴とする請求項１又は請求項２に記載の負荷分散プログラム。
【請求項４】
前記負荷分散実施条件を満たすプロセッサ及び入出力デバイスを決定するステップは、該負荷分散実施条件を満たすプロセッサを決定した後、前記第２の所定時間よりも長い第３の所定時間経過するまでそのプロセッサを決定対象から除外することを特徴とする請求項１〜請求項３のいずれか１つに記載の負荷分散プログラム。
【請求項５】
前記コンピュータシステムに、前記負荷分散実施条件を満たすプロセッサ及び入出力デバイスが所定回数決定できなかったときに、該負荷分散ポリシーの改善を促すメッセージを出力するステップをさらに実現させることを特徴とする請求項１〜請求項４のいずれか１つに記載の負荷分散プログラム。
【請求項６】
複数のプロセッサと複数の入出力デバイスを備えたコンピュータシステムの負荷分散装置であって、
第１の所定時間ごとに、各プロセッサについて、アプリケーションジョブによるプロセッサ使用率，入出力デバイスからの割り込みによるプロセッサ使用率及びプロセッサ使用率増減傾向を含むプロセッサ負荷状況を採取すると共に、各入出力デバイスについて、割り込み先プロセッサ及び割り込み回数積算値を含む入出力デバイス負荷状況を採取する負荷状況採取手段と、
第２の所定時間ごとに、アプリケーションジョブによるプロセッサ使用率，入出力デバイスからの割り込みによるプロセッサ使用率及びプロセッサ使用率増減傾向を用いて、入出力デバイスからの割り込みをプロセッサに分散させる負荷分散発動条件及び負荷分散実施条件を定義した負荷分散ポリシーを参照し、前記プロセッサ負荷状況に基づいて負荷分散発動条件を満たすプロセッサがあるか否かを判定する判定手段と、
前記負荷分散発動条件を満たすプロセッサがあると判定されたときに、前記プロセッサ負荷状況及び入出力デバイス負荷状況を参照し、そのプロセッサに割り込みしているすべての入出力デバイスのプロセッサ使用率を算出すると共に、算出したプロセッサ使用率に基づいて、前記負荷分散ポリシーの負荷分散実施条件を満たすプロセッサ及び入出力デバイスを決定する決定手段と、
前記負荷分散実施条件を満たす入出力デバイスの割り込み先プロセッサを変更する割り込み先変更手段と、
を含んで構成されたことを特徴とする負荷分散装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサを備えたコンピュータシステムにおいて、入出力デバイスからの割り込みをプロセッサに分散させる負荷分散技術に関する。
【背景技術】
【０００２】
マルチプロセッサを備えたコンピュータシステムでは、イーサネット（登録商標）やＳＣＳＩ（Small Computer System Interface）などの入出力デバイスからの割り込みをプロセッサに分散させる負荷分散制御が行われている。負荷分散制御方式として、プロセッサ使用率やバインドプロセス数の統計情報を保持すると共に、その統計情報を元にアプリケーション動作やＯＳ（オペレーティングシステム）状態を考慮して、割り込みをプロセッサに動的に分散させる技術が提案されている。
【特許文献１】特開平１１−７４２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来提案技術では、ある時点におけるプロセッサの負荷状況に応じて負荷分散制御が行われていたため、例えば、負荷分散後に一部のプロセッサに負荷が偏るなど適切な負荷分散効果が発揮されず、コンピュータシステムの性能が低下するおそれがあった。
【０００４】
そこで、従来の問題点に鑑み、負荷分散後におけるプロセッサ負荷を予測することで、一部のプロセッサに負荷が偏ることを回避し、コンピュータシステムの性能低下を抑制した負荷分散技術を提供することを目的とする。
【課題を解決するための手段】
【０００５】
複数のプロセッサと複数の入出力デバイスを備えたコンピュータシステムにおいて、第１の所定時間ごとに、アプリケーションジョブによるプロセッサ使用率，入出力デバイスからの割り込みによるプロセッサ使用率及びプロセッサ使用率増減傾向を含む各プロセッサの負荷状況、並びに、割り込み先プロセッサ及び割り込み回数積算値を含む各入出力デバイスの負荷状況を夫々採取する。また、第２の所定時間ごとに、入出力デバイスからの割り込みをプロセッサに分散させる負荷分散発動条件及び負荷分散実施条件を定義した負荷分散ポリシーを参照し、プロセッサ負荷状況に基づいて負荷分散発動条件を満たすプロセッサがあるか否かを判定する。そして、負荷分散発動条件を満たすプロセッサがあれば、プロセッサ負荷状況及び入出力デバイス負荷状況を参照し、そのプロセッサに割り込みしているすべての入出力デバイスのプロセッサ使用率を算出すると共に、そのプロセッサ使用率に基づいて、負荷分散実施条件を満たすプロセッサ及び入出力デバイスを決定する。その後、負荷分散実施条件を満たす入出力デバイスの割り込み先プロセッサを変更する。
【発明の効果】
【０００６】
負荷分散後のプロセッサ負荷を予測したシミュレーション結果に基づいて、負荷分散対象たるプロセッサ及び入出力デバイスが決定されるため、負荷分散後に一部のプロセッサに負荷が偏ることが回避され、コンピュータシステム性能低下を防止することができる。
【発明を実施するための最良の形態】
【０００７】
以下、添付された図面を参照して本発明を詳述する。
図１は、本発明を具現化した負荷分散装置の一実施形態を示す。
負荷分散装置１０は、複数のプロセッサＣＰＵ［０］〜ＣＰＵ［Ｍ］と複数の入出力デバイスＩ／Ｏ［０］〜Ｉ／Ｏ［Ｎ］を備えたコンピュータシステムに組み込まれる。負荷分散装置１０では、コンピュータシステムのハードディスクなどの外部記憶装置にインストールされた負荷分散プログラムを実行することで、統計処理部１２，負荷分散ポリシー選択部１４，負荷分散実行判定部１６，負荷分散予測部１８及び割り込み先ＣＰＵ変更部２０が夫々実現される。また、コンピュータシステムの共用メモリには、ＣＰＵ統計情報テーブル２２，Ｉ／Ｏ統計情報テーブル２４及び負荷分散ポリシーテーブル２６が夫々保持される。
【０００８】
ＣＰＵ統計情報テーブル２２には、図２に示すように、各プロセッサごとに、アプリケーションジョブによるＣＰＵ使用率（以下「ジョブＣＰＵ使用率」という），入出力割り込みによるＣＰＵ使用率（以下「割り込みＣＰＵ使用率」という），前回のＣＰＵ使用率，今回のＣＰＵ使用率及びＣＰＵ使用率増減傾向を関連付けた負荷状況が登録される。ジョブＣＰＵ使用率には、所定期間においてアプリケーションジョブを処理するために使用したプロセッサ使用率の平均値、即ち、アプリケーションジョブを処理するために使用したプロセッサ使用率の積算値を積算回数で除算した値が格納される。割り込みＣＰＵ使用率には、所定期間において各入出力デバイスからの割り込みを処理するために使用したプロセッサ使用率の平均値、即ち、割り込みを処理するために使用したプロセッサ使用率の積算値を積算回数で除算した値が格納される。前回のＣＰＵ使用率には、統計情報採取期間中の１回前のプロセッサ使用率（ジョブＣＰＵ使用率＋割り込みＣＰＵ使用率）が格納される。今回のＣＰＵ使用率には、統計情報採取期間中の今回のプロセッサ使用率（ジョブＣＰＵ使用率＋割り込みＣＰＵ使用率）が格納される。ＣＰＵ使用率増減傾向には、今回のＣＰＵ使用率＞前回のＣＰＵ使用率、即ち、プロセッサ使用率が増加傾向にあるときには“１”、それ以外のときには“０”が格納される。
【０００９】
Ｉ／Ｏ統計情報テーブル２４には、図３に示すように、各入出力デバイスごとに、割り込み先ＣＰＵ番号，割り込み回数積算値，前回の割り込み回数，今回の割り込み回数，割り込み回数上昇率，割り込み先ＣＰＵ変更有効フラグ（以下「ＣＰＵ変更有効フラグ」という），割り込み先ＣＰＵ変更回数及び有効フラグＯＦＦ後の負荷分散処理回数（以下「負荷分散処理回数」という）を関連付けた負荷状況が登録される。割り込み先ＣＰＵ番号には、割り込み先プロセッサを特定するプロセッサ番号が格納される。割り込み回数積算値には、統計情報の採取を開始した時点からの割り込み回数を積算した値が格納される。前回の割り込み回数には、統計情報採取期間中の１回前の割り込み回数、即ち、割り込み回数積算値が格納される。今回の割り込み回数には、統計情報採取期間中の今回の割り込み回数、即ち、割り込み回数積算値が格納される。割り込み回数上昇率には、今回の割り込み回数を前回の割り込み回数で除算した値、即ち、割り込み回数の上昇率を示す値が格納される。ＣＰＵ変更有効フラグには、割り込み先プロセッサの変更を許可するか否かを示すフラグ、即ち、変更を許可するときには“ＯＮ（１）”、変更を許可しないときには“ＯＦＦ（０）”が格納される。割り込み先ＣＰＵ変更回数には、割り込み先プロセッサを変更した回数が格納される。負荷分散処理回数には、割り込み先ＣＰＵ変更有効フラグをＯＦＦした時点からの負荷分散処理回数が設定される。
【００１０】
負荷分散ポリシーテーブル２６には、図４に示すように、適用対象構成，負荷分散発動条件及び負荷分散実施条件を定義した負荷分散ポリシーが少なくとも１つ登録される。適用対象構成には、負荷分散ポリシーを適用するコンピュータシステムのハードウエア構成、即ち、プロセッサ及び入出力デバイスの個数が格納される。負荷分散発動条件及び負荷分散実施条件には、夫々、各種プロセッサ使用率及びプロセッサ使用率増減傾向を用いて定義された負荷分散を発動及び実施する条件が格納される。なお、負荷分散ポリシーのインプリメンテーション方法としては、例えば、図５に示すような構造体を用いればよい。
【００１１】
そして、統計処理部１２は、第１の所定時間ｔ1ごとに各プロセッサ及び各入力デバイスについて、夫々、各種統計情報を採取してＣＰＵ統計情報テーブル２２及びＩ／Ｏ統計情報テーブル２４を更新する。負荷分散ポリシー選択部１４は、第２の所定時間ｔ2（ｔ2＞ｔ1）ごとに、負荷分散ポリシーテーブル２６に登録された負荷分散ポリシーの中から、コンピュータシステムのハードウエア構成に適合するものを選択する。負荷分散実行判定部１６は、負荷分散ポリシー選択部１４により選択された負荷分散ポリシーを参照し、負荷分散発動条件及び負荷分散実施条件が成立しているか否かを判定し、その判定結果に応じて割り込み先ＣＰＵ変更部２０に負荷分散指示を出力する。負荷分散予測部１８は、ＣＰＵ統計情報テーブル２２及びＩ／Ｏ統計情報テーブル２４を参照し、シミュレーションを通して、負荷分散後の各プロセッサの負荷状況を予測する。割り込み先ＣＰＵ変更部２０は、負荷分散実行判定部１６から負荷分散指示があったときに、その指示内容に応じて割り込み先プロセッサを変更する。
【００１２】
ここで、統計処理部１２により、負荷状況を採取するステップ及び負荷状況採取手段が実現される。負荷分散ポリシー選択部１４により、負荷分散ポリシーを選択するステップが実現される。負荷分散実行判定部１６により、負荷分散発動条件を満たすプロセッサがあるか否かを判定するステップ及び判定手段、並びに、負荷分散ポリシーの改善を促すメッセージを出力するステップが実現される。負荷分散予測部１８により、負荷分散実施条件を満たすプロセッサ及び入出力デバイスを決定するステップ及び決定手段が実現される。割り込み先ＣＰＵ変更部２０により、割り込み先プロセッサを変更するステップ及び割り込み先変更手段が実現される。
【００１３】
図６は、統計処理部１２において第１の所定時間ｔ1ごとに実行される統計処理内容を示す。
ステップ１（図では「Ｓ１」と略記する。以下同様）では、各プロセッサについて、例えば、システム負荷測定コマンドを使用して、ユーザモード平均ＣＰＵ使用率及びカーネルモード平均ＣＰＵ使用率を夫々取得する。
【００１４】
ステップ２では、各プロセッサのＣＰＵ統計情報テーブル２２について、ＣＰＵ使用率増減傾向を除く他のフィールドを夫々更新する。即ち、ユーザモード平均ＣＰＵ使用率及びカーネルモード平均ＣＰＵ使用率を、ジョブＣＰＵ使用率及び割り込みＣＰＵ使用率に夫々格納する。また、今回のＣＰＵ使用率を前回のＣＰＵ使用率に格納した後、ジョブＣＰＵ使用率と割り込みＣＰＵ使用率との加算値を今回のＣＰＵ使用率に格納する。
【００１５】
ステップ３では、各プロセッサのＣＰＵ統計情報テーブル２２について、今回のＣＰＵ使用率が前回のＣＰＵ使用率より大きいか否かを判定する。そして、今回のＣＰＵ使用率が前回のＣＰＵ使用率より大きければステップ４へと進み（Ｙｅｓ）、ＣＰＵ使用率増減傾向に１（増加）を格納する。一方、今回のＣＰＵ使用率が前回のＣＰＵ使用率以下であればステップ５へと進み（Ｎｏ）、ＣＰＵ使用率増減傾向に０（現状維持又は減少）を格納する。
【００１６】
ステップ６では、各入出力デバイスについて、システム情報格納域から各種システム情報を取得する。
ステップ７では、各種システム情報に基づいて、Ｉ／Ｏ統計情報テーブル２４のＣＰＵ変更有効フラグ，割り込み先ＣＰＵ変更回数及び負荷分散処理回数を除く他のフィールドを更新する。即ち、システム情報のAffinity値に基づいて割り込み先ＣＰＵ番号を設定すると共に、システム情報の割り込み回数に基づいて割り込み回数積算値を更新する。また、今回の割り込み回数を前回の割り込み回数に格納した後、システム情報の割り込み回数から割り込み回数積算値を減算した値を今回の割り込み回数に格納する。さらに、今回の割り込み回数を前回の割り込み回数で除算した値に基づいて、割り込み回数上昇率を更新する。
【００１７】
このような統計処理によれば、負荷分散装置１０の起動後第１の所定時間ｔ1ごとに、各プロセッサ及び各入出力デバイスの負荷状況を示す統計情報が採取される。これらの統計情報には、ＣＰＵ使用率の増減傾向及び割り込み回数上昇率が格納されるため、負荷分散後のプロセッサ負荷を予測するデータとして活用することができる。
【００１８】
図７及び図８は、負荷分散ポリシー選択部１４，負荷分散実行判定部１６及び割り込み先ＣＰＵ変更部２０が協働して、第２の所定時間ｔ2ごとに実行される負荷分散処理内容を示す。
【００１９】
ステップ１１では、負荷分散ポリシーテーブル２６に登録された負荷分散ポリシーの中から、コンピュータシステムのハードウエア構成に適合するものを選択する。即ち、負荷分散ポリシーの適用対象構成を順次参照し、コンピュータシステムのプロセッサ個数及び入出力デバイス個数に適合するものを選択する。
【００２０】
ステップ１２では、各入出力デバイスについて、Ｉ／Ｏ統計情報テーブル２４の負荷分散処理回数をインクリメントする。
ステップ１３では、各入出力デバイスについて、負荷分散処理回数が所定の閾値以上であるか否かを判定する。ここで、閾値は、入出力デバイスが割り込むプロセッサが頻繁に変更されないように抑制するために用いられ、例えば、コンピュータシステムの処理能力に応じた２以上の自然数に設定される。そして、負荷分散処理回数が閾値以上であればステップ１４へと進む一方（Ｙｅｓ）、負荷分散処理回数が閾値未満であればステップ１６へと進む（Ｎｏ）。
【００２１】
ステップ１４では、負荷分散処理回数が閾値以上となった入出力デバイスについて、Ｉ／Ｏ統計情報テーブル２４のＣＰＵ変更有効フラグをＯＮ（１）に設定する。
ステップ１５では、負荷分散処理回数が閾値以上となった入出力デバイスについて、Ｉ／Ｏ統計情報テーブル２４の負荷分散処理回数をリセットする。
【００２２】
ステップ１６では、ＣＰＵ統計情報テーブル２２を参照し、負荷分散ポリシーの負荷分散発動条件を満たすプロセッサがあるか否かを判定する。そして、負荷分散発動条件を満たすプロセッサがあればステップ１７へと進む一方（Ｙｅｓ）、負荷分散発動条件を満たすプロセッサがなければ今回の負荷分散処理を終了する（Ｎｏ）。
【００２３】
ステップ１７では、負荷分散発動条件を満たすプロセッサ番号が格納されたポインタ、並びに、負荷分散を実施するプロセッサ番号及び入出力デバイス番号が格納されるポインタを引数として、負荷分散予想を行うサブルーチンをコールする。なお、負荷分散予測を行うサブルーチンでは、引数ポインタに負荷分散を実施するプロセッサ番号及び入出力デバイス番号が設定されると共に、その復帰値に負荷分散が実施可能であるか否かを示す値が設定される。
【００２４】
ステップ１８では、負荷分散予測を行うサブルーチンの復帰値に基づいて、負荷分散が実施可能であるか否かを判定する。そして、負荷分散が可能であればステップ１９へと進む（Ｙｅｓ）。一方、負荷分散が可能でなければステップ２６へと進み（Ｎｏ）、負荷分散失敗カウンタをインクリメントした後、ステップ２３へと進む。
【００２５】
ステップ１９では、引数ポインタに設定されたプロセッサ番号及び入出力デバイス番号に基づいて、割り込み先プロセッサを実際に変更する。
ステップ２０では、割り込み先プロセッサを変更した入出力デバイスについて、Ｉ／Ｏ統計情報テーブル２４の割り込み先ＣＰＵ変更回数をインクリメントする。
【００２６】
ステップ２１では、割り込み先プロセッサを変更した入出力デバイスについて、割り込み先プロセッサが頻繁に変更されることを抑制すべく、Ｉ／Ｏ統計情報テーブル２４のＣＰＵ変更有効フラグをＯＦＦ（０）に設定する。
【００２７】
ステップ２２では、割り込み先プロセッサを変更した入出力デバイスについて、Ｉ／Ｏ統計情報テーブル２４のＣＰＵ変更有効フラグ及び負荷分散回数を除く他のフィールドをすべてクリアする。
【００２８】
ステップ２３では、負荷分散発動条件を満たす他のプロセッサがないか否かを判定する。そして、負荷分散発動条件を満たす他のプロセッサがなければステップ２４へと進む一方（Ｙｅｓ）、負荷分散発動条件を満たす他のプロセッサがあればステップ１７へと戻る（Ｎｏ）。
【００２９】
ステップ２４では、負荷分散失敗カウンタが所定値（例えば１０）以上であるか否かを判定する。そして、負荷分散失敗カウンタが所定値以上であればステップ２５へと進み（Ｙｅｓ）、システムログなどに対して、負荷分散ポリシーの改善を促すメッセージを出力する。一方、負荷分散失敗カウンタが所定値未満であれば今回の負荷分散処理を終了する（Ｎｏ）。
【００３０】
図９は、負荷分散予想を行うサブルーチンを示す。
ステップ３１では、引数ポインタに設定されたプロセッサ番号により特定されるプロセッサ（以下「対象プロセッサ」という）について、ＣＰＵ統計情報テーブル２２及びＩ／Ｏ統計情報テーブル２４を参照して、これに割り込まれた各入出力デバイスのＣＰＵ使用率を算出する。即ち、Ｉ／Ｏ統計情報テーブル２４の割り込み先ＣＰＵ番号を参照し、対象プロセッサに割り込まれた入出力デバイス（以下「対象入出力デバイス」という）を特定する。また、各対象入出力デバイスについて、対象プロセッサの割り込みＣＰＵ使用率に対して、割り込み回数積算値を対象プロセッサの総割り込み回数積算値で除算した値を乗算することで、ＣＰＵ使用率を算出する。ここで、対象プロセッサの総割り込み回数積算値は、対象入出力デバイスの割り込み回数積算値をすべて加算することで求められる。なお、ＣＰＵ使用率の予測精度を向上させるべく、各対象入出力デバイスのＣＰＵ使用率に対して、割り込み回数上昇率を加味した重み付けを行うことが望ましい。
【００３１】
ステップ３２では、シミュレーションを通して、負荷分散後における対象プロセッサのＣＰＵ使用率を予測する。即ち、対象入出力デバイスの中から、ＣＰＵ使用率が最大かつＣＰＵ変更フラグがＯＮであるものを選択する。なお、２回目以降の処理においては、既に選択した入出力デバイスを除外する。また、すべてのプロセッサの中から、ジョブＣＰＵ使用率及び割り込みＣＰＵ使用率が共に最小のものを選択する。さらに、選択したプロセッサの割り込みＣＰＵ使用率に対して、選択した入出力デバイスのＣＰＵ使用率を加算する。そして、対象プロセッサの割り込みＣＰＵ使用率から、選択した入出力デバイスのＣＰＵ使用率を減算する。
【００３２】
ステップ３３では、ステップ３２でシミュレーションした負荷分散を実施した場合、負荷分散ポリシーの負荷分散実施条件が成立するか否かを判定する。そして、負荷分散実施条件が成立すればステップ３４へと進む一方（Ｙｅｓ）、負荷分散実施条件が成立しなければステップ３８へと進む（Ｎｏ）。
【００３３】
ステップ３４では、負荷分散対象として、負荷分散実施条件が成立するプロセッサ及び入出力デバイスを決定する。
ステップ３５では、負荷分散対象を特定するプロセッサ番号及び入出力デバイス番号を引数ポインタに設定する。
【００３４】
ステップ３６では、ステップ３２で予測された各プロセッサのＣＰＵ使用率に基づいて、ＣＰＵ統計情報テーブル２２の割り込みＣＰＵ使用率を更新する。
ステップ３７では、サブルーチンの復帰値として「実施可能」を設定する。
【００３５】
ステップ３８では、負荷分散を実施するプロセッサの選定が失敗したか否か、即ち、すべての対象入出力デバイスについてシミュレーションした結果、負荷分散実施条件が成立しなかったか否かを判定する。そして、プロセッサの選定が失敗したならばステップ３９へと進み（Ｙｅｓ）、サブルーチンの復帰値として「実施不可」を設定する。一方、プロセッサの選定が失敗していなければステップ３２へと戻る（Ｎｏ）。
【００３６】
このような負荷分散処理によれば、コンピュータシステムのハードウエア構成に適合した負荷分散ポリシーが選択される。また、プロセッサ及び入出力デバイスの統計情報を利用して、負荷分散ポリシーに定義された負荷分散発動条件を満たすプロセッサがあるか否かが判定される。負荷分散発動条件を満たすプロセッサがあると、シミュレーションを通して、そのプロセッサに割り込まれた各入出力デバイスについて負荷分散後のＣＰＵ使用率が予測される。そして、負荷分散後のＣＰＵ使用率に基づいて、負荷分散ポリシーに定義された負荷分散実施条件が成立するプロセッサ及び入出力デバイスが決定される。その後、プロセッサ及び入出力デバイスの統計情報が適宜更新されると共に、入出力デバイスの割り込み先プロセッサが変更される。
【００３７】
このため、負荷分散後のプロセッサ負荷を予測したシミュレーション結果に基づいて、負荷分散対象たるプロセッサ及び入出力デバイスが決定される。従って、負荷分散後に一部のプロセッサに負荷が偏ることが回避され、コンピュータシステム性能低下を防止することができる。また、負荷分散ポリシーは、コンピュータシステムのハードウエア構成に適合したものが選択されるため、これを用いた負荷分散処理によって性能向上を期待することもできる。
【００３８】
さらに、負荷分散対象たるプロセッサ及び入出力デバイスを決定した後、第２の所定時間よりも長い第３の所定時間経過するまでそのプロセッサが決定対象から除外されるため、入出力デバイスの割り込み先プロセッサが頻繁に変更されないように抑制することができる。その他、負荷分散実施条件を満たすプロセッサ及び入出力デバイスが所定回数決定できなかったときには、負荷分散ポリシーの改善を促すメッセージが出力されるため、これを契機として負荷分散ポリシーを適宜修正することができる。
【００３９】
次に、負荷分散装置１０の理解を容易ならしめるべく、２つのプロセッサ及び４つの入出力デバイスを備えたコンピュータシステムを前提とした具体例について説明する。
［第１具体例］
負荷分散処理開始時点において、ＣＰＵ統計情報テーブル２２に登録されたプロセッサ負荷状況が図１０に示す状態であると共に、Ｉ／Ｏ統計情報テーブル２４に登録された入出力デバイス負荷状況が図１１に示す状態であると想定する。また、負荷分散ポリシーテーブル２６には、図１２に示す負荷分散ポリシー１が登録されていると想定する。
【００４０】
負荷分散処理が開始されると、コンピュータシステムのハードウエア構成に適合する負荷分散ポリシー１を選択する。プロセッサ負荷状況を参照すると、プロセッサ０の今回のＣＰＵ使用率が７０％、割り込みＣＰＵ使用率が４０％かつＣＰＵ使用率増減傾向が１（増加）であるので、プロセッサ０が負荷分散発動条件を満たしている。プロセッサ０を対象として負荷分散予測を行うと、「ＣＰＵ使用率＝割り込みＣＰＵ使用率×（割り込み回数積算値／総割り込み回数積算値）」という式を用いて、次のように、プロセッサ０に割り込まれている入出力デバイス０及び２のＣＰＵ使用率を算出する。
【００４１】
入出力デバイス０のＣＰＵ使用率＝40×(100／(100＋200))≒13[%]
入出力デバイス２のＣＰＵ使用率＝40×(200／(100＋200))≒27[%]
さらに、入出力デバイス０及び２のＣＰＵ使用率について、次のように、割り込み回数上昇率を加味した重み付けを行う。ここでは、割り込み回数上昇率が５０％を越える場合、重み付けとして０．５を採用するルールを適用するものとする。
【００４２】
入出力デバイス０のＣＰＵ使用率＝13＋13×0.5≒20[%]
入出力デバイス２のＣＰＵ使用率＝27＋27×0.1≒30[%]
入出力デバイス０及び２のうち、ＣＰＵ使用率が最大かつＣＰＵ変更有効フラグがＯＮである入出力デバイス２を選択する。また、すべてのプロセッサの中から、ジョブＣＰＵ使用率及び割り込みＣＰＵ使用率が共に最小のプロセッサ１を選択する。プロセッサ１の割り込みＣＰＵ使用率（５％）に対して入出力デバイス２のＣＰＵ使用率（３０％）を加算し、入出力デバイス２の割り込み先をプロセッサ１に変更したときのプロセッサ１の割り込みＣＰＵ使用率（３５％）を予測する。一方、プロセッサ０の割り込みＣＰＵ使用率（４０％）から入出力デバイス２のＣＰＵ使用率（３０％）を減算し、入出力デバイス２の割り込み先をプロセッサ１に変更したときのプロセッサ０の割り込みＣＰＵ使用率（１０％）を予測する。プロセッサ０について、「割り込みＣＰＵ使用率１０％＜ジョブＣＰＵ使用率３０％」であるので負荷分散実施条件が成立しているが、プロセッサ１について、「割り込みＣＰＵ使用率３０％＞ジョブＣＰＵ使用率２５％」であるので負荷分散実施条件が成立していない。このため、入出力デバイス２の割り込み先をプロセッサ１に変更すると、負荷分散ポリシー１の負荷分散実施条件が成立しないので、入出力デバイスの選択をやり直す。
【００４３】
入出力デバイス０及び２のうち、２番目にＣＰＵ使用率が高くかつＣＰＵ変更有効フラグがＯＮである入出力デバイス０を選択する。プロセッサ１の割り込みＣＰＵ使用率（５％）に対して入出力デバイス０のＣＰＵ使用率（２０％）を加算し、入出力デバイス０の割り込み先をプロセッサ１に変更したときのプロセッサ１の割り込みＣＰＵ使用率（２５％）を予測する。一方、プロセッサ０の割り込み使用率（４０％）から入出力デバイス０のＣＰＵ使用率（２０％）を減算し、入出力デバイス０の割り込み先をプロセッサ１に変更したときのプロセッサ０の割り込みＣＰＵ使用率（２０％）を予測する。プロセッサ０について、「割り込みＣＰＵ使用率２０％＜ジョブＣＰＵ使用率３０％」であると共に、プロセッサ１について、「割り込みＣＰＵ使用率２５％＝ジョブＣＰＵ使用率２５％」であるため、負荷分散ポリシー１の負荷分散実施条件が成立する。このため、負荷分散対象として、プロセッサ１及び入出力デバイス０を決定し、図１３に示すように、ＣＰＵ統計情報テーブル２２のプロセッサ負荷状況に反映させる。また、入出力デバイス０の割り込み先をプロセッサ１に変更し、図１４に示すように、Ｉ／Ｏ統計情報テーブル２４における入出力デバイス０の割り込み先ＣＰＵ番号，ＣＰＵ変更有効フラグ及び割り込み先ＣＰＵ変更回数を更新する。
【００４４】
ＣＰＵ統計情報テーブル２２を再度参照し、負荷分散ポリシー１の負荷分散発動条件を満たす他のプロセッサがあるか否かを判定する。そして、負荷分散発動条件を満たす他のプロセッサがないので、負荷分散処理を終了する。
【００４５】
このような負荷分散処理が行われることで、図１５に示すような負荷分散が実施され、コンピュータシステムの性能を向上させることができる。
［第２具体例］
負荷分散処理開始時点において、ＣＰＵ統計情報テーブル２２に登録されたプロセッサ負荷状況が図１６に示す状態であると共に、Ｉ／Ｏ統計情報テーブル２４に登録された入出力デバイス負荷状況が図１７に示す状態であると想定する。また、負荷分散ポリシーテーブル２６には、図１８に示す負荷分散ポリシー１が登録されていると想定する。
【００４６】
負荷分散処理が開始されると、コンピュータシステムのハードウエア構成に適合する負荷分散ポリシー１を選択する。プロセッサ負荷状況を参照すると、プロセッサ０の今回のＣＰＵ使用率が７０％、割り込みＣＰＵ使用率が４０％かつＣＰＵ使用率増減傾向が１（増加）であるので、プロセッサ０が負荷分散発動条件を満たしている。プロセッサ０を対象として負荷分散予測を行うと、「ＣＰＵ使用率＝割り込みＣＰＵ使用率×（割り込み回数積算値／総割り込み回数積算値）」という式を用いて、次のように、プロセッサ０に割り込まれている入出力デバイス０及び２のＣＰＵ使用率を計算する。
【００４７】
入出力デバイス０のＣＰＵ使用率＝40×(100／(100＋200))≒13[%]
入出力デバイス２のＣＰＵ使用率＝40×(200／(100＋200))≒27[%]
さらに、入出力デバイス０及び２のＣＰＵ使用率について、次のように、割り込み回数上昇率を加味した重み付けを行う。ここでは、割り込み回数上昇率が５０％を越える場合、重み付けとして０．５を採用するルールを適用するものとする。
【００４８】
入出力デバイス０のＣＰＵ使用率＝13＋13×0.5≒20[%]
入出力デバイス２のＣＰＵ使用率＝27＋27×0.1≒30[%]
入出力デバイス０及び２のうち、ＣＰＵ使用率が最大かつＣＰＵ変更有効フラグがＯＮである入出力デバイス２を選択する。また、すべてのプロセッサの中から、ジョブＣＰＵ使用率及び割り込みＣＰＵ使用率が共に最小のプロセッサ１を選択する。プロセッサ１の割り込みＣＰＵ使用率（２０％）に対して入出力デバイス２のＣＰＵ使用率（３０％）を加算し、入出力デバイス２の割り込み先をプロセッサ１に変更したときのプロセッサ１の割り込みＣＰＵ使用率（５０％）を予測する。一方、プロセッサ０の割り込みＣＰＵ使用率（４０％）から入出力デバイス２のＣＰＵ使用率（３０％）を減算し、入出力デバイス２の割り込み先をプロセッサ１に変更したときのプロセッサ０の割り込みＣＰＵ使用率（１０％）を予測する。プロセッサ０について、「割り込みＣＰＵ使用率１０％＜ジョブＣＰＵ使用率３０％」であるので負荷分散実施条件が成立しているが、プロセッサ１について、「割り込みＣＰＵ使用率５０％＞ジョブＣＰＵ使用率２５％」であるので負荷分散実施条件が成立していない。このため、入出力デバイス２の割り込み先をプロセッサ１に変更すると、負荷分散ポリシー１の負荷分散実施条件が成立しないので、入出力デバイスの選択をやり直す。
【００４９】
入出力デバイス０及び２のうち、２番目にＣＰＵ使用率が高くかつＣＰＵ変更有効フラグがＯＮである入出力デバイス０を選択する。プロセッサ１の割り込みＣＰＵ使用率（２０％）に対して入出力デバイス０のＣＰＵ使用率（２０％）を加算し、入出力デバイス０の割り込み先をプロセッサ１に変更したときのプロセッサ１の割り込みＣＰＵ使用率（４０％）を予測する。一方、プロセッサ０の割り込み使用率（４０％）から入出力デバイス０のＣＰＵ使用率（２０％）を減算し、入出力デバイス０の割り込み先をプロセッサ１に変更したときのプロセッサ０の割り込みＣＰＵ使用率（２０％）を予測する。プロセッサ０について、「割り込みＣＰＵ使用率２０％＜ジョブＣＰＵ使用率３０％」であるので負荷分散実施条件が成立しているが、プロセッサ１について、「割り込みＣＰＵ使用率４０％＞ジョブＣＰＵ使用率２５％」であるので負荷分散実施条件が成立していない。
【００５０】
このように、プロセッサ０に割り込まれた入出力デバイス０及び２について負荷分散予測を行ったが、負荷分散ポリシー１の負荷分散実施要件を満たすプロセッサ及び入出力デバイスがないため、負荷分散は実施不可であると判定して負荷分散処理を終了する。
【図面の簡単な説明】
【００５１】
【図１】負荷分散装置の一実施形態を示す全体構成図
【図２】ＣＰＵ統計情報テーブルの説明図
【図３】Ｉ／Ｏ統計情報テーブルの説明図
【図４】負荷分散ポリシーの論理構成説明図
【図５】負荷分散ポリシーのインプリメンテーション方法の説明図
【図６】統計処理内容を示すフローチャート
【図７】負荷分散処理内容を示すフローチャート
【図８】負荷分散処理内容を示すフローチャート
【図９】負荷分散予想を行うサブルーチン内容を示すフローチャート
【図１０】第１具体例の前提となるプロセッサ負荷状況の説明図
【図１１】第１具体例の前提となる入出力デバイス負荷状況の説明図
【図１２】第１具体例の前提となる負荷分散ポリシー１の説明図
【図１３】負荷分散処理により更新されたプロセッサ負荷状況の説明図
【図１４】負荷分散処理により更新された入出力デバイス負荷状況の説明図
【図１５】負荷分散実施による効果の説明図
【図１６】第２具体例の前提となるプロセッサ負荷状況の説明図
【図１７】第２具体例の前提となる入出力デバイス負荷状況の説明図
【図１８】第２具体例の前提となる負荷分散ポリシー１の説明図
【符号の説明】
【００５２】
１０  負荷分散装置
１２  統計処理部
１４  負荷分散ポリシー選択部
１６  負荷分散実行判定部
１８  負荷分散予測部
２０  割り込み先ＣＰＵ変更部
２２  ＣＰＵ統計情報テーブル
２４  Ｉ／Ｏ統計情報テーブル
２６  負荷分散ポリシーテーブル
ＣＰＵ［０］〜ＣＰＵ［Ｍ］  プロセッサ
Ｉ／Ｏ［０］〜Ｉ／Ｏ［Ｎ］  入出力デバイス
【図１】
2010055296.tif 000003
【図２】
2010055296.tif 000004
【図３】
2010055296.tif 000005
【図４】
2010055296.tif 000006
【図５】
2010055296.tif 000007
【図６】
2010055296.tif 000008
【図７】
2010055296.tif 000009
【図８】
2010055296.tif 000010
【図９】
2010055296.tif 000011
【図１０】
2010055296.tif 000012
【図１１】
2010055296.tif 000013
【図１２】
2010055296.tif 000014
【図１３】
2010055296.tif 000015
【図１４】
2010055296.tif 000016
【図１５】
2010055296.tif 000017
【図１６】
2010055296.tif 000018
【図１７】
2010055296.tif 000019
【図１８】
2010055296.tif 000020