(57)【特許請求の範囲】
【請求項１】
複数の中央処理装置と、
前記複数の中央処理装置それぞれについて温度を検出し、前記温度を示す温度情報を出力する温度検出手段と、
前記複数の中央処理装置それぞれについて、個々のタスクの割り当てに応じて予測される負荷率を示す負荷率情報を記憶する第１の記憶手段と、
前記複数の中央処理装置それぞれについて、０個以上のタスクの割り当てによって生じる合計負荷率と現在の温度とに応じて予測される将来の温度を表す温度特性情報を記憶する第２の記憶手段と、
実行する対象の複数のタスクを前記複数の中央処理装置に割り当てる負荷制御指示手段とを備え、
前記負荷制御指示手段は、
前記複数のタスクの前記複数の中央処理装置への割り当て方の複数のパターンを作成し、
作成した前記複数のパターンのそれぞれについて、前記複数の中央処理装置それぞれの温度を、
当該中央処理装置について前記温度検出手段が出力した前記温度情報により示される前記温度を、前記現在の温度に当てはめるとともに、
当該パターンにおいて当該中央処理装置に割り当てられるタスクがない場合は、０を前記合計負荷率に当てはめ、当該パターンにおいて当該中央処理装置に１個以上のタスクが割り当てられる場合は、当該１個以上のタスクの各々について前記負荷率情報により示される各負荷率の合計を前記合計負荷率に当てはめて、
前記温度特性情報を用いて予測し、
前記複数の中央処理装置についてそれぞれ予測した前記温度のうちの最高温度が、予め定められた基準に適合する１つの適合パターンを、前記複数のパターンの中から選択し、
前記適合パターンにしたがって前記複数のタスクを前記複数の中央処理装置に割り当てる、
ことを特徴とする情報処理システム。
【請求項２】
前記負荷制御指示手段は、前記複数のタスクの割り当てを行う際にさらに、前記温度情報が表す前記複数の中央処理装置の実際の温度変化に基づいて前記温度特性情報を更新することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記温度特性情報は、所定の期間における前記合計負荷率と前記所定の期間の開始時点の温度である前記現在の温度とに応じて、前記所定の期間の経過後に予測される温度を、前記複数の中央処理装置それぞれについて示す情報であることを特徴とする請求項１または２に記載の情報処理システム。
【請求項４】
複数の中央処理装置、前記複数の中央処理装置それぞれの温度を示す温度情報を出力する温度検出器、および記憶装置を含む情報処理システムに備えられた負荷制御装置が、
前記温度検出器から出力された前記温度情報を読み取り、
前記複数の中央処理装置それぞれについて、個々のタスクの割り当てに応じて予測される負荷率を示す負荷率情報を、前記記憶装置から読み取り、
前記複数の中央処理装置それぞれについて、０個以上のタスクの割り当てによって生じる合計負荷率と現在の温度とに応じて予測される将来の温度を表す温度特性情報を、前記記憶装置から読み取り、
実行する対象の複数のタスクの前記複数の中央処理装置への割り当て方の複数のパターンを作成し、
作成した前記複数のパターンのそれぞれについて、前記複数の中央処理装置それぞれの温度を、
当該中央処理装置について前記温度検出器が出力した前記温度情報により示される前記温度を、前記現在の温度に当てはめるとともに、
当該パターンにおいて当該中央処理装置に割り当てられるタスクがない場合は、０を前記合計負荷率に当てはめ、当該パターンにおいて当該中央処理装置に１個以上のタスクが割り当てられる場合は、当該１個以上のタスクの各々について前記負荷率情報により示される各負荷率の合計を前記合計負荷率に当てはめて、
前記温度特性情報を用いて予測し、
前記複数の中央処理装置についてそれぞれ予測した前記温度のうちの最高温度が、予め定められた基準に適合する１つの適合パターンを、前記複数のパターンの中から選択し、
前記適合パターンにしたがって前記複数のタスクを前記複数の中央処理装置に割り当てる、
ことを特徴とする負荷制御方法。
【請求項５】
複数の中央処理装置、前記複数の中央処理装置それぞれの温度を示す温度情報を出力する温度検出器、および記憶装置を含む情報処理システムに備えられた負荷制御装置に、
前記温度検出器から出力された前記温度情報を読み取るステップと、
前記複数の中央処理装置それぞれについて、個々のタスクの割り当てに応じて予測される負荷率を示す負荷率情報を、前記記憶装置から読み取るステップと、
前記複数の中央処理装置それぞれについて、０個以上のタスクの割り当てによって生じる合計負荷率と現在の温度とに応じて予測される将来の温度を表す温度特性情報を、前記記憶装置から読み取るステップと、
実行する対象の複数のタスクの前記複数の中央処理装置への割り当て方の複数のパターンを作成するステップと、
作成した前記複数のパターンのそれぞれについて、前記複数の中央処理装置それぞれの温度を、
当該中央処理装置について前記温度検出器が出力した前記温度情報により示される前記温度を、前記現在の温度に当てはめるとともに、
当該パターンにおいて当該中央処理装置に割り当てられるタスクがない場合は、０を前記合計負荷率に当てはめ、当該パターンにおいて当該中央処理装置に１個以上のタスクが割り当てられる場合は、当該１個以上のタスクの各々について前記負荷率情報により示される各負荷率の合計を前記合計負荷率に当てはめて、
前記温度特性情報を用いて予測するステップと、
前記複数の中央処理装置についてそれぞれ予測した前記温度のうちの最高温度が、予め定められた基準に適合する１つの適合パターンを、前記複数のパターンの中から選択するステップと、
前記適合パターンにしたがって前記複数のタスクを前記複数の中央処理装置に割り当てるステップと、
を実行させることを特徴とする負荷制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを有する情報処理システムにおける負荷分散を制御する技術に関する。
【背景技術】
【０００２】
近年、複数のプロセッサを有するマルチプロセッサシステムが広く使われている。例えば、複数のＣＰＵ（Central Processing Unit；中央処理装置）を有するマルチプロセッサ型の情報システムは、航空機の搭載型コンピュータやサーバ機など、高信頼性が要求される分野でも数多く採用されている。
【０００３】
複数のＣＰＵを有する情報システムでは、複数のＣＰＵ間での負荷分散を工夫することにより、情報システム全体の可用性を改善することができる。高信頼性が要求される情報システムでは特に、情報システム全体の可用性の向上が求められる。
【０００４】
例えば、複数のＣＰＵを使用する、ある従来のシステムは、各ＣＰＵの負荷率が均一になるよう予め設計されている。そして、アプリケーションは、静的な設計にしたがって複数のＣＰＵに分散されて実行される。
【０００５】
しかし、このような制御により負荷分散を行う場合、過去の利用状態を考慮した制御を行うことができない。つまり、頻繁に使用されるＣＰＵと使用頻度の低いＣＰＵの間で使用状況のばらつきが発生している場合は、制御が適切でないことがある。このような従来のシステムでは、頻繁に使用される特定のＣＰＵの故障発生率が増加することにより、システム全体の平均故障間隔が縮まり、システム全体の可用性が低下する状況が起こりうる。
【０００６】
また、複数のＣＰＵに動的にアプリケーションを分散する方法も存在する。例えば、複数のコンピュータと複数のソフトウェアとを管理し、次のように動作する管理システムが知られている。
【０００７】
管理システムは、コンピュータによるソフトウェアの実行状況を表す稼動データと、温度分布を表す温度データとを含む配置先選定データを用いて、他のコンピュータに比べて放熱が多いと想定される過熱コンピュータと、他と比べて放熱が少ないと想定される過疎コンピュータとを抽出する。そして、管理システムは、過熱コンピュータに割り当てられたソフトウェアの少なくとも一部を、過疎コンピュータに移動させる命令を生成する。
【０００８】
このような管理システムによれば、特定のＣＰＵの温度が高い状態となった場合、温度の高いＣＰＵから温度の低いＣＰＵに負荷を移動させることが可能である。
【特許文献１】特開２００７−１７９４３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
一般に、ＣＰＵは温度上昇につれて故障率が高くなることが知られている。よって、ＣＰＵの温度に注目して動的に負荷分散を行うことは、情報システム全体の可用性を向上させる効果を持つと期待される。
【００１０】
しかしながら、特定の低温のＣＰＵと特定の高温のＣＰＵを組にして、前者から後者への負荷の移動を行うだけでは、情報システム全体としては最適な負荷の分散が達成されな
い場合がある。
【００１１】
そこで本発明は、情報システム全体としてより適切な負荷の分散を達成し、ひいては複数のＣＰＵを有する情報システム全体の可用性を向上させることを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一態様によれば、情報処理システムが提供される。該情報処理システムは、複数の中央処理装置と、温度検出手段と、第１および第２の記憶手段と、負荷制御指示手段とを備える。
【００１３】
前記温度検出手段は、前記複数の中央処理装置それぞれについて温度を検出し、前記温度を示す温度情報を出力する。
前記第１の記憶手段は、前記複数の中央処理装置それぞれについて、個々のタスクの割り当てに応じて予測される負荷率を示す負荷率情報を記憶する。前記第２の記憶手段は、前記複数の中央処理装置それぞれについて、タスクの割り当てによって生じる負荷率と現在の温度とに応じて予測される将来の温度を表す温度特性情報を記憶する。
【００１４】
前記負荷制御指示手段は、実行すべき複数のタスクを前記複数の中央処理装置に割り当てる。
すなわち、前記負荷制御指示手段は、前記複数のタスクの前記複数の中央処理装置への割り当て方の複数のパターンを作成する。そして、前記負荷制御指示手段は、作成した前記複数のパターンのそれぞれについて、前記温度情報と前記負荷率情報と前記温度特性情報に基づいて、前記複数の中央処理装置それぞれの温度を予測する。そして、前記負荷制御指示手段は、前記複数の中央処理装置についてそれぞれ予測した前記温度のうちの最高温度が、予め定められた基準に照らして低いと見なされるために前記基準に適合する１つの適合パターンを、前記複数のパターンの中から選択する。さらに、前記負荷制御指示手段は、前記適合パターンにしたがって前記複数のタスクを前記複数の中央処理装置に割り当てる。
【００１５】
本発明の別の態様によれば、上記情報処理システムにおいて行われる負荷制御方法が提供され、また、該負荷制御方法を実現するためのプログラムが提供される。
【発明の効果】
【００１６】
開示の技術によれば、複数の中央処理装置を備える情報システム全体として、より適切にタスクが割り当てられ、より適切に負荷が分散される。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図１は、第１実施形態の情報処理システムの構成図である。
図１の情報処理システム１２は、ｎを２以上の整数として、ｎ個のＣＰＵ＃１〜＃ｎと、ｎ個の温度センサ＃１〜＃ｎと、負荷制御指示部１０と、記憶部１１とを備える。ＣＰＵ＃１〜＃ｎは、ｎ個すべてが同じ種類でもよく、複数の異なる種類のＣＰＵが混在していてもよい。
【００１８】
負荷制御指示部１０は、ＣＰＵ＃１〜＃ｎと類似の、ＡＬＵ（Arithmetic Logic Unit）やレジスタなどを備えたプロセッサにより実現される。負荷制御指示部１０は、例えば不図示の不揮発性メモリに予め格納されたプログラムに従って動作することにより、後述のように複数のタスクをＣＰＵ＃１〜＃ｎに割り当てる処理を実行する。なお、負荷制御指示部１０が実行するプログラムは、ネットワークあるいはコンピュータ読み取り可能な可搬型記憶媒体を介してプログラム提供者から提供されてもよい。
【００１９】
記憶部１１は、第１実施形態では、不揮発性で書き換え可能な半導体メモリにより実現される。ただし、記憶部１１は、ハードディスク装置などの磁気記憶装置とＲＡＭ（Random Access Memory）の組み合わせにより実現されてもよく、その他の種類の記憶装置によって実現されてもよい。
【００２０】
第１実施形態では、図１に示したすべての要素が１枚の基板上に実装されているが、図１の各要素が複数の基板に分かれて実装される実施形態も可能である。また、第１実施形態では、ＣＰＵ＃１〜＃ｎと温度センサ＃１〜＃ｎと負荷制御指示部１０はバスで互いに接続されており、負荷制御指示部１０と記憶部１１の間もバスで接続されている。
【００２１】
なお、ＣＰＵ＃１〜＃ｎの接続されたバスにさらに記憶部１１が接続される実施形態も可能である。いずれにしても、負荷制御指示部１０は、直接または間接にＣＰＵ＃１〜＃ｎおよび記憶部１１に接続可能であり、温度センサ＃１〜＃ｎから温度情報を直接受け取るか、または記憶部１１もしくはＣＰＵ＃１〜＃ｎを介して間接的に温度情報を受け取ることができる。
【００２２】
なお、記憶部１１の一部が情報処理システム１２の共有メモリとして使われてもよく、あるいは、記憶部１１とは別の不図示の共有メモリとして用いられるＲＡＭを情報処理システム１２がさらに備えていてもよい。情報処理システム１２はさらに、図１には不図示の入力装置、出力装置、通信インターフェイスなどを備えていてもよい。
【００２３】
ＣＰＵ＃１〜＃ｎはそれぞれ自分自身の活動を監視しており、ＣＰＵ使用率を「負荷率」としてバスを介して負荷制御指示部１０に出力する。多くのＯＳ（Operating System）において、ＣＰＵで実行されるタスクごとにＣＰＵ使用率を出力するコマンドが用意されているので、そのような既存のコマンドを利用することができる。負荷制御指示部１０は、バスを介してＣＰＵ＃１〜＃ｎから負荷率を取得する。
【００２４】
ここで、整数ｊを１≦ｊ≦ｎとすると、各ｊについて、温度センサ＃ｊはＣＰＵ＃ｊの温度を検出し、ＣＰＵ＃ｊの温度を示す温度情報を、バスを介して負荷制御指示部１０に出力する。よって、ｎ個の温度センサ＃１〜＃ｎが全体として、ＣＰＵ＃１〜＃ｎそれぞれに関する温度情報を出力する温度検出手段または温度検出器として機能する。
【００２５】
負荷制御指示部１０は、温度センサ＃１〜＃ｎからバスを介して温度情報を取得し、取得した温度情報を監視する。そして、負荷制御指示部１０は、実行すべき複数のタスクを、温度情報および記憶部１１に記憶されたその他の情報に基づいてＣＰＵ＃１〜＃ｎに割り当てる。
【００２６】
記憶部１１は、負荷制御指示部１０がタスクの割り当て方を決定するのに必要な各種の情報を記憶している。内容の詳細は第１実施形態をさらに具体化した第２実施形態において後述するが、記憶部１１が記憶する情報は、負荷制御指示部１０によって参照され、更新される。
【００２７】
負荷制御指示部１０によるタスクの割り当ての概要は以下のとおりである。
負荷制御指示部１０は、複数のタスクの割り当て方の複数のパターンについて、それぞれＣＰＵ＃１〜＃ｎの将来の温度を予測し、複数のパターンの中でＣＰＵ＃１〜＃ｎの温度分布がより均一なパターンを選択する。以下、複数のタスクのＣＰＵ＃１〜＃ｎへの割り当て方のパターンを「配置パターン」という。
【００２８】
負荷制御指示部１０は、好ましくは、複数の配置パターンの中でＣＰＵ＃１〜＃ｎの温
度の均一性が最も高い配置パターンを選択する。なお、実行すべきタスクの数が多い場合や、ＣＰＵの数ｎが多い場合には、すべての配置パターンを調べ尽くすことは非現実的である。よって、負荷制御指示部１０は、組み合わせ最適化問題の解法として知られる適切なアルゴリズムを利用して、限定された数の配置パターンの中でＣＰＵ＃１〜＃ｎの温度の均一性が最も高い配置パターンを最適な配置パターンとして選択してもよい。
【００２９】
負荷制御指示部１０は、選択した配置パターンにしたがって複数のタスクのそれぞれをＣＰＵ＃１〜＃ｎのいずれかに割り当てる負荷制御指示を行う。このような割り当てを負荷制御指示部１０が繰り返すことで、定期的に、または不定期にタスクの再配置が行われるので、恒常的に適切な負荷の分散が実現され、情報処理システム１２全体としての可用性が高まる。
【００３０】
ここで、ＣＰＵ＃１〜＃ｎの温度が均一であるとは、換言すれば、ＣＰＵ＃１〜＃ｎの温度のばらつきが少ないことである。また、多くの場合、ＣＰＵ＃１〜＃ｎの温度が均一であるほど、ＣＰＵ＃１〜＃ｎのうちの最高温度は低い。したがって、ＣＰＵの温度上昇につれてＣＰＵの故障率が上昇することを考慮すると、次のことが成り立つ。
【００３１】
すなわち、ＣＰＵ＃１〜＃ｎのうちの最高温度が低いほど、ＣＰＵ＃１〜＃ｎのいずれかに故障が発生する確率が下がり、情報処理システム１２全体としての故障発生率が低下し、情報処理システム１２全体としての可用性が高まる。
【００３２】
つまり、負荷制御指示部１０は、ＣＰＵ＃１〜＃ｎのうちの最高温度が低いことを温度の均一性の指標として用いて、ＣＰＵ＃１〜＃ｎの温度がなるべく均一になるように、複数のタスクを分散させてＣＰＵ＃１〜＃ｎに配置する。その結果、局所的な最適化ではなく、情報処理システム１２全体としての負荷分散の最適化が行われると期待される。よって、ＣＰＵ＃１〜＃ｎのすべてについて過熱を避けることができ、情報処理システム１２全体の可用性が高まる。
【００３３】
このように、第１実施形態によれば、ＣＰＵの温度情報を用いることによって情報処理システム１２の可用性が改善される。よって、高信頼性を求められる情報処理システムや、故障の発生したＣＰＵを取り替えることが容易でない情報処理システムに適用するのに第１実施形態は好適である。例えば、航空機に搭載される情報処理システムは、高信頼性が求められ、しかも故障したＣＰＵなどのハードウェアの取り替えが容易ではないので、高可用性が求められる。図１の情報処理システム１２は、航空機に搭載されて利用されてもよい。
【００３４】
続いて、図１の第１実施形態においてｎ＝４である場合を、第２実施形態として、図２〜図８を参照しながら説明する。
図２は、第２実施形態のある時点での情報処理システムの状態を示す図である。第２実施形態では、予め指定された間隔Ａで定期的に、第１実施形態と同様にして負荷制御指示部１０がタスクの割り当てを実行する。この間隔Ａを以下では「周期時間Ａ」という。周期時間Ａの長さは、タスクの実行によってＣＰＵの温度が変化する速さ、タスクを異なるＣＰＵに移動させるために必要なコスト、タスク実行要求の発生頻度などを考慮して、実施形態に応じて適宜定めることができる。
【００３５】
図２に示した「ある時点」とは、周期時間Ａを単位とした第ｍ周期の終了時点である（ｍは１以上の整数）。つまり、図２は、第（ｍ＋１）周期の始めに負荷制御指示部１０がタスクの割り当てを行うための負荷制御を実行する直前の状態を示している。
【００３６】
具体的には、図２は、情報処理システム１２の構成と、第ｍ周期の終了時点におけるタ
スクの配置パターンと、第ｍ周期の終了時点における記憶部１１内の温度・負荷率情報データベースの内容を例示している。図２の情報処理システム１２の構成は、図１においてｎ＝４である場合と同じなので説明を省略する。
【００３７】
図２では、７個のタスクＡ〜ＧがＣＰＵ＃１〜＃４に分散して割り当てられている。すなわち、具体的には、ＣＰＵ＃１にはタスクＡ、Ｂ、Ｃ、Ｄが割り当てられ、ＣＰＵ＃２にはタスクＥ、Ｆが割り当てられ、ＣＰＵ＃３にはタスクＧが割り当てられ、ＣＰＵ＃４には何もタスクが割り当てられていない。タスクの割り当ては、記憶部１１内の温度・負荷率情報データベースに記憶されている。
【００３８】
温度・負荷率情報データベースは、各ＣＰＵの番号に、割り当てられたタスクの識別子と、ＣＰＵの温度と、ＣＰＵの負荷率とを対応づけて管理するデータベースである。図２では、「ＣＰＵ番号」、「タスク」、「温度」、「負荷率」という４列を有する表形式で温度・負荷率情報データベースを表現しているが、温度・負荷率情報データベースの形式は任意である。
【００３９】
上記のとおり現在が第ｍ周期の終了時点であるとすると、温度・負荷率情報データベースの内容は、第ｍ周期の開始時点で負荷制御指示部１０により登録された内容である。すなわち、「タスク」列は、第ｍ周期の開始時点で負荷制御指示部１０が各ＣＰＵに割り当てたタスクを示す。「温度」列は、第ｍ周期の開始時点で各温度センサが検出した各ＣＰＵの温度の実測値を示す。「負荷率」列は、「タスク」列に示されるタスクの割り当てによって各ＣＰＵにおいて第ｍ周期に生じると予測された負荷率を示す。詳しくは後述するが、負荷率の予測は、負荷制御指示部１０が記憶部１１内の情報を参照して第ｍ周期の開始時点に行っている。
【００４０】
図２の例では、ＣＰＵ＃１は、タスクＡ〜Ｄが割り当てられたことによって負荷率が１００％になると予測された。同様に、ＣＰＵ＃２はタスクＥ〜Ｆによって負荷率が７０％になると予測され、ＣＰＵ＃３はタスクＧによって負荷率が５０％になると予測された。また、ＣＰＵ＃４に割り当てられたタスクはないので、ＣＰＵ＃４は負荷率が０％になると予測された。これらの予測された負荷率が温度・負荷率情報データベースに登録され、記憶されている。
【００４１】
ＣＰＵ＃１〜＃４は、第ｍ周期の開始時点で負荷制御指示部１０に割り当てられたタスクを、それぞれ第ｍ周期において実行する。割り当てられたタスクの実行により、ＣＰＵ＃１〜＃４それぞれの負荷率は変化する。
【００４２】
ＣＰＵ＃１〜＃４は、上記のとおりそれぞれ自分自身の活動を監視しており、第ｍ周期における負荷率を第ｍ周期の終了時点に負荷制御指示部１０にそれぞれ出力する。予測に含まれる誤差のため、第ｍ周期におけるＣＰＵ＃１〜＃４の実際の負荷率は、第ｍ周期の開始時点に予測されて温度・負荷率情報データベースに記憶された負荷率とは異なることもある。
【００４３】
第ｍ周期が終了すると、第（ｍ＋１）周期の開始時点において、負荷制御指示部１０がタスクの割り当てを行う。タスクの割り当ての結果の状態について図３を参照して先に説明し、割り当てに関する具体的な動作は図４とともに後述する。
【００４４】
図３は、第２実施形態においてタスクの割り当てが行われた後の情報処理システムの状態を示す図である。具体的には、図３は、図２と同様の形式で、情報処理システム１２の構成と、再割り当て後の第（ｍ＋１）周期におけるタスクの配置パターンと、第（ｍ＋１）周期の開始時点でタスクの再割り当てが行われた後の温度・負荷率情報データベースの内容を例示している。
【００４５】
図２と図３で異なる点は、タスクの配置パターンと、温度・負荷率情報データベースの内容である。なお、図２と図３に示すとおり、第ｍ周期の開始時点でのＣＰＵ＃１〜＃４の温度と、第（ｍ＋１）周期の開始時点でのＣＰＵ＃１〜＃４の温度は同じであるが、これは偶然である。
【００４６】
第（ｍ＋１）周期の開始時点において、負荷制御指示部１０は、タスクＢとＤがＣＰＵ＃１からＣＰＵ＃４へと移動し、タスクＣがＣＰＵ＃１からＣＰＵ＃３へと移動し、タスクＦがＣＰＵ＃２からＣＰＵ＃４へと移動するように、タスクの割り当てを行う。その結果、図３に示すように、第（ｍ＋１）周期においては、ＣＰＵ＃１にはタスクＡのみが割り当てられ、ＣＰＵ＃２にはタスクＥのみが割り当てられ、ＣＰＵ＃３にはタスクＣとＧが割り当てられ、ＣＰＵ＃４にはタスクＢ、Ｄ、Ｆが割り当てられる。この割り当てにしたがって予測されるＣＰＵ＃１〜＃４の負荷率は、図３の温度・負荷率情報データベースに示したとおり、それぞれ２５％、４０％、６０％、９５％である。
【００４７】
このようなタスク割り当ては、第（ｍ＋１）周期の開始時点において負荷制御指示部１０がＣＰＵ＃１〜＃４の温度がなるべく均一になるような配置パターンを選択した結果である。ＣＰＵ＃１〜＃４の温度が均一であるほど、特定のＣＰＵの温度が突出して高いという状況は減るので、特定のＣＰＵが過熱により故障するという事態の発生確率も減り、情報処理システム１２全体としての故障発生率も減る。すなわち、ＣＰＵ＃１〜＃４の温度が均一であるほど、情報処理システム１２全体としての可用性が高い。
【００４８】
また、図２と図３の例から理解されるとおり、負荷制御指示部１０は、特定の２つのＣＰＵ間でのみタスクを移動させるのではない。負荷制御指示部１０は、例えば、最高温のＣＰＵ＃１と最低温のＣＰＵ＃４という特定の組み合わせだけを考慮して、前者から後者へのタスクの移動のみを指示するわけではない。負荷制御指示部１０は、複数のタスクの配置パターン同士の比較に基づいて、ＣＰＵ＃１〜＃４が全体として均一な温度になるように、任意のＣＰＵから任意のＣＰＵへのタスクの移動を指示する。
【００４９】
続いて、上記で説明したようなタスクの割り当てが具体的にどのように行われるかを、図４のフローチャートと、図５〜図８の各種情報を参照しながら説明する。
図４は、第２実施形態における負荷制御指示部１０による処理の流れを示すフローチャートである。負荷制御指示部１０による負荷の割り当て制御は、周期時間Ａごとに繰り返し行われる。
【００５０】
ステップＳ１０１において、周期時間Ａが経過したか否かを負荷制御指示部１０が判断し、経過していれば処理はステップＳ１０２に進む。周期時間Ａが経過していなければステップＳ１０１が繰り返される。以下、説明の便宜上、第ｍ周期においてステップＳ１０１が繰り返され、周期時間Ａが経過して第（ｍ＋１）周期の開始時点になったため、ステップＳ１０２に処理が移行したものとして説明を続ける。
【００５１】
ステップＳ１０２において、負荷制御指示部１０は、温度センサ＃１〜＃４から、ＣＰＵ＃１〜＃４の温度を示す温度情報を取得する。負荷制御指示部１０はさらに、ＣＰＵ＃１〜＃４から、第ｍ周期におけるタスクの割り当てによって実際に生じたタスクごとの負荷率を取得する。実際に生じたタスクごとの負荷率は、上記のとおり、ＯＳが提供する周知のコマンドにより取得することもできる。
【００５２】
続いてステップＳ１０３において、負荷制御指示部１０は、ステップＳ１０２で取得した情報を記憶部１１に登録する。ここで、ステップＳ１０３の処理に関係する情報につい
て図５と図６を参照して説明する。
【００５３】
図５は、処理量情報データベースの例を示す図である。処理量情報は、タスクの種類ごとに、タスクの実行に必要な処理量を示す情報であり、記憶部１１内の処理量情報データベースに記憶されている。図５の処理量情報は、Ａ〜Ｇという７種類のタスクそれぞれの処理量を示す。処理量は、個々のＣＰＵの性能に依存しない共通の単位で表される数値である。
【００５４】
図６は、処理能力情報データベースの例を示す図である。処理能力情報は、情報処理システム１２に含まれるすべてのＣＰＵ＃１〜＃４について、それぞれの処理能力を数値で表した情報であり、記憶部１１内の処理能力情報データベースに記憶されている。処理能力情報は、ＣＰＵの製品仕様などから定まる。
【００５５】
第２実施形態では、図６に示すように、すべてのＣＰＵ＃１〜＃４の処理能力が等しいが、実施形態によっては、ＣＰＵ＃１〜＃４の処理能力が互いに異なっていてもよい。また、第２実施形態のようにすべてのＣＰＵ＃１〜＃４の処理能力が等しいことが予め判明している場合は、同じ処理量のタスクをどのＣＰＵが実行しても負荷率は同じなので、処理能力情報データベースを省略することも可能である。
【００５６】
なお、図２と図３に示した温度・負荷率情報データベースにおける負荷率は、以下のようにして負荷制御指示部１０が計算した値である。
例えば、図２において、ＣＰＵ＃１にはタスクＡ、Ｂ、Ｃ、Ｄが割り当てられており、それぞれの処理量は、図５によれば、２５、２５、１０、４０である。また、図６によれば、ＣＰＵ＃１の処理能力は１００である。したがって、負荷制御指示部１０は、記憶部１１から処理量情報と処理能力情報を読み取り、割り当てられたタスクの処理量の和を処理能力で割り、パーセンテージを求めるために１００を掛ける。具体的には、負荷制御指示部１０は式（１）の計算を行う。
【００５７】
（２５＋２５＋１０＋４０）／１００×１００＝１００（％）        （１）
式（１）の計算により、図２の温度・負荷率情報データベースにおけるＣＰＵ＃１の負荷率として、１００（％）なる値が算出される。すなわち、記憶部１１は、各ＣＰＵについてこのように算出された、個々のタスクの割り当てに応じて予測される負荷率を示す負荷率情報を記憶する前記第１の記憶手段として機能する。
【００５８】
ここで図４のステップＳ１０３の説明に戻ると、負荷制御指示部１０は、後の処理のために温度・負荷率情報データベースの「温度」の列の内容、すなわち第ｍ周期の開始時点における各ＣＰＵの温度を示す温度情報を退避する。そして、負荷制御指示部１０は、ステップＳ１０２で取得した温度情報の値を、温度・負荷率情報データベースの「温度」の列に書き込み、さらに、必要に応じて図５の処理量情報データベースを更新する。
【００５９】
例えば、図２の例では、第ｍ周期においてＣＰＵ＃１にはタスクＡ、Ｂ、Ｃ、Ｄが割り当てられている。よって、ステップＳ１０２において負荷制御指示部１０は、タスクＡ、Ｂ、Ｃ、Ｄそれぞれによって生じた負荷率を、ＣＰＵ＃１から取得している。例えば、タスクＡに関する負荷率は、図５および図６から２５％と予測されていたわけだが、ステップＳ１０２では実際には２３％という値が取得されるかもしれない。
【００６０】
このように、予測値と実測値に差がある場合、あるいは、その差が予め決められた許容範囲よりも大きい場合、負荷制御指示部１０は、図５の処理量情報データベースを更新する。すなわち、処理能力は変化しないという前提のもとでは、予測値と実測値の差は処理量の見積もりの誤差に起因すると考えられる。第ｍ周期における実際の処理量は、ステッ
プＳ１０２で取得した負荷率の実測値（パーセンテージで表されている場合は実測値を１００で割って割合に換算した値）と処理能力の積である。
【００６１】
よって、負荷制御指示部１０はステップＳ１０３において、タスクごとに、第ｍ周期における実際の処理量を計算し、処理量情報データベースの値と計算した実際の処理量との差を算出する。そして、算出した差が予め決められた許容範囲よりも大きい場合、負荷制御指示部１０は、処理量情報データベースにおける当該タスクの処理量の値を更新する。
【００６２】
更新後の値は、計算した実際の処理量でもよく、計算した実際の処理量と更新前の処理量情報データベースの値との加重平均などでもよい。負荷制御指示部１０は、同じ種類のタスクが実行されるたびに、実際の処理量を履歴として蓄積し、履歴を加味して処理量情報データベースを更新してもよい。例えば、履歴に基づいて過去の平均的な処理量を処理量情報データベースが保持してもよい。
【００６３】
こうしてステップＳ１０３において温度・負荷率情報データベースの「温度」と処理量情報データベースへの情報の登録が行われると、処理はステップＳ１０４に移行する。ここで、ステップＳ１０４の処理に使われる相関表について図７を参照して説明する。
【００６４】
図７は、温度特性情報を表す相関表の第１の例を示す図である。温度特性情報は、タスクの割り当てによって生じる負荷率と現在の温度とに応じて予測される将来の温度、すなわち温度特性を表し、記憶部１１に格納される。つまり、記憶部１１は、温度特性情報を記憶する第２の記憶手段としても機能する。
【００６５】
第１実施形態と同様に第２実施形態でも、負荷制御指示部１０は、配置パターンを決定するために、複数の配置パターンについて、ＣＰＵ＃１〜＃４の温度変化を予測する。図７の相関表は、この予測に利用される。予測の結果に基づいて、負荷制御指示部１０は、複数の配置パターンの中で、ＣＰＵ＃１〜＃４の最高温度が最も低いと予測された配置パターンにしたがってタスクの割り当てを行う。
【００６６】
第２実施形態では、温度特性情報は、予測される温度を直接表す値（温度予測値）により表され、さらに、図７のような相関表の形式で記憶されている。しかし、負荷率と現在の温度から将来の温度を予測する式に用いられる１つ以上の係数により温度特性情報が表される実施形態も可能である。
【００６７】
また、第２実施形態では、すべてのＣＰＵ＃１〜＃４が同じ温度特性を有することを仮定している。よって、１枚の相関表だけが記憶部１１に記憶され、１枚の相関表によって、４個のＣＰＵ＃１〜＃４すべての温度特性情報が表される。しかし、個々のＣＰＵ＃１〜＃４が異なる温度特性を有するという仮定のもとで、個々のＣＰＵ＃１〜＃４にそれぞれ対応する４枚の相関表を記憶部１１が記憶する実施形態も可能である。いずれの仮定の方が実情に即しているかは、実施形態による。
【００６８】
図７において、各行は現在のＣＰＵの温度に対応し、各列はＣＰＵの負荷率に対応する。また、例えば、３０℃の行の２０％の列のセルの値は３１℃なので、このセルは、「ある周期の開始時点で３０℃のＣＰＵに、合計で２０％の負荷率が予測される１個以上のタスクを割り当てると、周期の終了時点にはＣＰＵが３１℃になっているだろう」という予測を示す。なお、負荷率０％の列は、タスクを割り当てない場合の予測を示す。
【００６９】
このように、図７の相関表は、負荷率の離散的な値と現在の温度の離散的な値との組み合わせに、周期時間Ａの経過後に予測される温度を対応づけた情報からなっている。したがって負荷率や現在の温度に端数がある場合は、相関表を用いた予測には適当な補間が必
要である。
【００７０】
例えば、現在のＣＰＵの温度が３５℃で、割り当てようとするタスクによって生じると予測された負荷率が合計で２５％のとき、負荷制御指示部１０は、例えば、下記の（２）〜（５）に示す隣接する４つのセルの値ｘ１〜ｘ４を用いた補間を行うことにより、周期の終了時点でのＣＰＵの温度を予測する。
【００７１】
ｘ１＝３１℃（３０℃の行、２０％の列のセルＺ１の値）        （２）
ｘ２＝３３℃（３０℃の行、３０％の列のセルＺ２の値）        （３）
ｘ３＝３９℃（４０℃の行、２０％の列のセルＺ３の値）        （４）
ｘ４＝４１℃（４０℃の行、３０％の列のセルＺ４の値）        （５）
補間の具体的な方法は任意であり、線形補間でもよく、上記４個のセルＺ１〜Ｚ４以外のセルの値をさらに用いて非線形の補間をしてもよい。以下、説明の便宜上、特に断らない限り、温度の予測は隣接する４つのセルの値を用いた線形補間によるものとする。
【００７２】
ここで図４の説明に戻ると、以上のように利用される相関表が、ステップＳ１０４において更新される。すなわち、ステップＳ１０４で負荷制御指示部１０は、ステップＳ１０３で更新した、図５の処理量情報データベースと図３の温度・負荷率情報データベースの更新内容を、図７の相関表に反映させる。
【００７３】
例えば、第ｍ周期の開始時点でＣＰＵ＃１の温度が３０℃であり、第ｍ周期でのＣＰＵ＃１の負荷率の実測値が３０％であると第（ｍ＋１）周期のステップＳ１０２で判明していた、と仮定する。この場合、「３０℃」と「３０％」という値に完全に一致する値の行と列が図７の相関表に存在するので、負荷制御指示部１０は、ステップＳ１０４において相関表の３０℃の行の３０％のセルＺ２を更新する。
【００７４】
更新の方法は実施形態によって異なる。例えば、負荷制御指示部１０は、セルＺ２の値を、ステップＳ１０２で取得した第（ｍ＋１）周期の開始時点におけるＣＰＵ＃１の温度Ｘに更新してもよい。あるいは、負荷制御指示部１０は、現在の相関表のセルＺ２の値ｘ２（＝３３℃）と、実測値である上記温度Ｘとの加重平均などを計算し、計算した値にセルＺ２を更新してもよい。
【００７５】
また、例えば、第ｍ周期の開始時点でＣＰＵ＃１の温度が３５℃だったとして、第ｍ周期でのＣＰＵ＃１の負荷率の実測値が２５％であり、第（ｍ＋１）周期の開始時点でＣＰＵ＃１の温度が３６℃であるとステップＳ１０２で判明していた、と仮定する。このように、直前の周期（この例では第ｍ周期）の開始時点における温度または直前の周期における負荷率の少なくとも一方に端数がある場合、負荷制御指示部１０は、ステップＳ１０４において相関表の複数のセルを更新する。
【００７６】
この例の場合、温度（３５℃）と負荷率（２５％）の双方に端数があるので、温度と負荷率の組み合わせに対応するセルは、上記と同じ４つのセルＺ１〜Ｚ４である。そこで、第（ｍ＋１）周期におけるステップＳ１０４では、これら４つのセルＺ１〜Ｚ４の値を負荷制御指示部１０が更新する。
【００７７】
更新の方法は実施形態によって異なる。例えば、負荷制御指示部１０は、次のようにしてセルＺ１〜Ｚ４を更新する。すなわち、負荷制御指示部１０は、セルＺ１の周囲の８個のセルと、いずれも実測値である温度（３５℃）と負荷率（２５％）の組み合わせに対応づけられる変化後の温度（３６℃）とを利用して、適当な補間を行う。そして、負荷制御指示部１０は、セルＺ１を、補間により算出した値に更新する。負荷制御指示部１０は、セルＺ２〜Ｚ４についても同様にして、更新すべきセルの周囲の８個のセルと実測値とを
用いた補間を行って、更新する。
【００７８】
なお、上記の例において、相関表の更新に利用される実測値は、以下のようにして取得されたものである。
・第ｍ周期の開始時点における温度（３５℃）は、ステップＳ１０２で退避されている。
【００７９】
・第ｍ周期の負荷率（２５％）は、ステップＳ１０２でＣＰＵ＃１から取得されている。
・第（ｍ＋１）周期の開始時点における温度、すなわち、第ｍ周期でのタスクの実行によって変化したＣＰＵ＃１の温度（３６℃）は、ステップＳ１０２で温度センサ＃１から取得されている。
【００８０】
また、図５の処理量データベースは、第ｍ周期の負荷率に応じてステップＳ１０３で更新されているので、見方を変えれば、第ｍ周期の負荷率に基づくステップＳ１０４の相関表の更新は、処理量データベースの更新内容を相関表にも反映させることである。
【００８１】
以上のようにして、負荷制御指示部１０は、ステップＳ１０４においてＣＰＵ＃１に関して相関表の更新を行う。
なお、第２実施形態では、ＣＰＵ＃１〜＃４の温度特性が同じであると仮定しているため、記憶部１１は１枚の相関表のみを記憶している。したがって、ステップＳ１０４において負荷制御指示部１０は、同じ図７の１枚の相関表に対して、上記と同様にしてさらにＣＰＵ＃２〜＃４に関しても更新を行う。
【００８２】
なお、ＣＰＵ＃１〜＃４の温度特性が異なるという仮定を採用する実施形態では、記憶部１１は、各ＣＰＵに対応する４枚の相関表を記憶している。したがって、そのような実施形態では、ステップＳ１０４において負荷制御指示部１０は、各ＣＰＵ＃ｊに関して当該ＣＰＵ＃ｊの相関表を更新する（１≦ｊ≦４）。
【００８３】
このように、第２実施形態では相関表が随時更新されるため、経時変化による温度特性の変化にも対応可能である。例えば、情報処理システム１２の提供者は、出荷時のＣＰＵ＃１〜＃４の温度特性を予め調査し、調査結果を初期状態の相関表として記憶部１１に記憶させておく。情報処理システム１２の運用につれてＣＰＵ＃１〜＃４の温度特性が変化すると、変化につれて相関表も随時更新され、相関表は最新の温度特性を反映した状態に保たれる。
【００８４】
こうしてステップＳ１０４における相関表の更新が完了すると、処理はステップＳ１０５に移行する。ステップＳ１０５では負荷制御指示部１０が、第ｍ周期で実行されたが未完了のタスクと新たに第（ｍ＋１）周期で実行を開始すべきタスクとを、第（ｍ＋１）周期で実行すべき全体の所要負荷として認識する。
【００８５】
情報処理システム１２において、タスクの実行要求は、タスクの割り当てを制御する負荷制御指示部１０に対してなされる。また、ＣＰＵ＃１〜＃４は、タスクが完了すると負荷制御指示部１０に対して完了を報告する。したがって、負荷制御指示部１０は、未完了のタスクと開始すべきタスクを把握することができる。
【００８６】
続いて、ステップＳ１０６からステップＳ１１１において、負荷制御指示部１０は、第（ｍ＋１）周期における配置パターンを決定するための処理を実行し、決定した配置パターンに基づいてステップＳ１１２でＣＰＵ＃１〜＃４にタスクを割り当てる。
【００８７】
配置パターンの組み合わせの数は、ＣＰＵの個数と実行すべきタスクの数に応じて爆発的に増えるため、最適な配置パターンを探索するために全配置パターンを調べ尽くすことは多くの場合において非現実的である。そこで、第２実施形態では、組み合わせ最適化問題への解法として利用される遺伝的アルゴリズムを利用する。ステップＳ１０６からステップＳ１１１の処理は、遺伝的アルゴリズムによる処理である。
【００８８】
ステップＳ１０６において、負荷制御指示部１０は、タスクの配置パターンの初期集団を生成する。例えば、Ｓを所定の正整数として、負荷制御指示部１０はステップＳ１０６において（Ｓ−１）個のランダムな配置パターンを生成し、さらに第ｍ周期における実際の配置パターンを加えて、全部でＳ個の配置パターンを含む初期集団を生成する。以下、初期集団の世代を第１世代とする。
【００８９】
なお、集団の大きさを規定する所定の数Ｓは、実施形態に応じて適宜決めることができる。また、配置パターンの遺伝子型、すなわち各配置パターンを具体的にどのようなデータ形式で表現するか、ということも、実施形態に応じて任意である。
【００９０】
続いて、ステップＳ１０７において、現世代の集団に含まれるＳ個の配置パターンのそれぞれについて、負荷制御指示部１０は、適応度を計算する。
すなわち、負荷制御指示部１０は、各配置パターンについて、当該配置パターンを第（ｍ＋１）周期で採用した場合の、第（ｍ＋１）周期の終了時点における各ＣＰＵの温度を予測する。そして、負荷制御指示部１０は、各ＣＰＵに対して予測した温度のうちの最高温度Ｍを取得する。取得した最高温度Ｍが低いほど、ＣＰＵ＃１〜＃４の温度は均一であり、好ましい配置パターンである。
【００９１】
第２実施形態では簡単のため、各配置パターンの適応度として、最高温度Ｍそのものを利用する。最高温度Ｍの値が小さいほど、適応度が高いと評価される。なお、最高温度Ｍの値が小さいほど適応度を高く評価する任意の評価関数を適応度として利用する実施形態も可能である。
【００９２】
なお、例えばランダムに生成された配置パターンの中には、あるＣＰＵにおいて負荷率が１００％を超えるようなものが存在するかもしれない。よって、負荷制御指示部１０は、負荷率が１００％を超えるＣＰＵを含む配置パターンに対しては、例外処理として、実際のＣＰＵの温度としてはあり得ない極端に高い温度を適応度の値として与える。その結果、負荷率が１００％を超えるＣＰＵを含む配置パターンは極端に低く評価されるので、以後の処理において、そのような配置パターンの存在を無視しても差し支えない。
【００９３】
温度の予測については、図７とともに既に説明したが、ここで別の例を用いてステップＳ１０７における計算を簡単に例示する。
図８は、温度特性情報を表す相関表の第２の例と２つの配置パターンを示す図である。相関表の形式は図７の第１の例と同様なので説明を省略する。なお、図８は、３つのＣＰＵ＃１〜＃３を備えた情報処理システムにおける例である。
【００９４】
配置パターン２０は、第ｍ周期における実際の配置パターンであり、初期集団にも含まれる。配置パターン２０においては、ＣＰＵ＃１にタスクＡとＢが、ＣＰＵ＃２にタスクＣが、ＣＰＵ＃３にタスクＤが、それぞれ割り当てられている。タスクＡ〜Ｄによって生じる負荷率は、図示のとおり、それぞれ２０％、３０％、４０％、５０％である。また、配置パターン２１は、現世代の集団に含まれるある１つの配置パターンであり、ＣＰＵ＃１にタスクＡとＤが、ＣＰＵ＃２にタスクＣが、ＣＰＵ＃３にタスクＢが、それぞれ割り当てられている。
【００９５】
なお、簡単のため、ＣＰＵ＃１〜＃３の処理能力は等しく、処理能力情報データベースは誤差を含まず、第ｍ周期と第（ｍ＋１）周期のいずれも、実行すべきタスクはタスクＡ〜Ｄの４つであると仮定する。
【００９６】
また、第（ｍ＋１）周期の開始時点でのＣＰＵ＃１〜＃３の温度は、それぞれ５０℃、５５℃、６０℃であったとする。これらの温度は、ステップＳ１０２で取得され、ステップＳ１０３で温度・負荷率情報データベースに温度情報として書き込まれているので、ステップＳ１０７において負荷制御指示部１０が参照することができる。
【００９７】
また、図５と同様の処理量情報データベースおよび図６と同様の処理能力データベースから、負荷制御指示部１０は、ステップＳ１０７においてタスクＡ〜ＤそれぞれがＣＰＵ＃１〜＃３それぞれに生じさせる負荷率を算出することができる。
【００９８】
よって、現世代の集団に配置パターン２０と２１が含まれる場合、ステップＳ１０７において負荷制御指示部１０は、以下の（１）〜（３）の処理を行って各配置パターンの適応度を計算する。
（１）配置パターン２０の適応度の計算
（１−１）負荷制御指示部１０は、ＣＰＵ＃１に関して、タスクＡとＢにより生じる負荷率（５０％＝２０％＋３０％）を計算し、図８の相関表において温度５０℃の行と負荷率５０％の列が交叉するセルの値５３℃を取得する。
【００９９】
（１−２）同様にして、負荷制御指示部１０は、ＣＰＵ＃２に関して相関表から値５５℃を取得し、ＣＰＵ＃３に関して相関表から値５９℃を取得する。
（１−３）取得した値５３℃、５５℃、５９℃のうちの最大温度は５９℃なので、負荷制御指示部１０は、配置パターン２０の適応度として値５９℃を取得する。
（２）配置パターン２１の適応度の計算
（２−１）負荷制御指示部１０は、上記と同様にして、ＣＰＵ＃１〜＃３に関して、それぞれ相関表から値５７℃、５５℃、５６℃を取得する。
【０１００】
（２−２）負荷制御指示部１０は、最大温度５７℃を配置パターン２１の適応度として取得する。配置パターン２１の適応度の値５７℃は、配置パターン２０の適応度の値５９℃より小さいので、配置パターン２１の方が配置パターン２０よりも適応度が高く、好ましい。
（３）その他の配置パターンの適応度の計算
上記と同様にして、負荷制御指示部１０は、現世代のすべての配置パターンについて適応度を計算する。なお、図７に関して説明したように、負荷制御指示部１０は、必要に応じて補間を行う。
【０１０１】
以上、図８を参照しながら図４のステップＳ１０７の詳細について説明したので、ここで図４の説明に戻ると、続いてステップＳ１０８で、負荷制御指示部１０は、終了条件が満たされたか否かを判断する。終了条件が満たされていれば処理はステップＳ１１２に進み、満たされていなければ処理はステップＳ１０９に進む。ステップＳ１０８における終了条件とは、遺伝的アルゴリズムの世代交代を終了すべきか否かを示す条件である。
【０１０２】
具体的には、第２実施形態では、予め決めた数Ｎを用いて、負荷制御指示部１０が次のように判断する。すなわち、負荷制御指示部１０は、現世代を含む直近のＮ世代にわたって集団内で最良の適応度が変化していなければ、終了条件が満たされたと判断し、そうでなければ、終了条件が満たされていないと判断する。ここでは最高温度Ｍそのものが適応度として用いられるので、各配置パターンについて取得された最高温度Ｍのうち集団内で最低の値が直近のＮ世代にわたって変化していなければ、終了条件が満たされたと負荷制
御指示部１０は判断する。
【０１０３】
なお、解が収束しない場合の例外処理のために、世代交代が規定回数を超えた場合も、終了条件が満たされたと負荷制御指示部１０が判断するようにしてもよい。
ステップＳ１０８で終了条件が満たされていないと判断すると、負荷制御指示部１０は、ステップＳ１０９〜ステップＳ１１１で次世代の集団を生成する。
【０１０４】
すなわち、負荷制御指示部１０は、ステップＳ１０９において現世代の集団の中から、次世代の集団の親となる配置パターンを選択する。ここで、現世代の集団の大きさは初期集団の大きさＳと等しい。例えば、Ｇは０＜Ｇ＜１００なる所定の値であるとして、負荷制御指示部１０は、ステップＳ１０９において、適応度の高い順に上位Ｇ％の配置パターンを選択してもよい。ステップＳ１０９における選択すなわち淘汰の戦略は、任意である。
【０１０５】
続いて、ステップＳ１１０において、負荷制御指示部１０は、ステップＳ１０９で選択した配置パターンを親として交叉を行い、次世代のＳ個の配置パターンを生成する。例えば、負荷制御指示部１０は、適応度の高い配置パターンほど多数回の交叉をして、より多くの子供を残すように制御してもよい。交叉の方法は、配置パターンの遺伝子型などを考慮して適宜決めることができ、１点交叉その他の任意の方法を採用することができる。また、エリート戦略を採ってもよく、すなわち、現世代において適応度が特に高い一部の配置パターンそのものを次世代の配置パターンとして残してもよい。
【０１０６】
続いて、ステップＳ１１１において、負荷制御指示部１０は、ステップＳ１１０で生成した次世代のＳ個の配置パターンに、所定の確率で突然変異を起こさせる。突然変異の確率や、突然変異の方法も、実施形態に応じて任意に決めることができる。ステップＳ１１１の完了後のＳ個の配置パターンからなる集団が、次世代の集団である。ステップＳ１１１の完了後、処理はステップＳ１０７に戻り、ステップＳ１０７〜ステップＳ１１１を繰り返すことで世代交代を重ねる。
【０１０７】
他方、ステップＳ１０８で終了条件を満たすと判断された場合は、世代交代が終了し、処理がステップＳ１１２に移行する。ステップＳ１１２では、現世代の集団に含まれるＳ個の配置パターンのうち、最も適応度の高い配置パターン、すなわち、適応度として利用される最高温度Ｍの値が最低の配置パターンを、負荷制御指示部１０が選択する。そして、負荷制御指示部１０は、選択した配置パターンにしたがってＣＰＵ＃１〜＃４にタスクを割り当てる。こうして第（ｍ＋１）周期の始めにおけるタスクの割り当てが終了すると、処理はステップＳ１０１に戻る。
【０１０８】
以上、第２実施形態について説明したので、続いて、図９を参照して第３実施形態について説明する。
図９は、第３実施形態におけるタスクの割り当ての効果を示すグラフである。第３実施形態は、図１の第１実施形態においてｎ＝２の場合であり、簡単のため、同じ性能ＣＰＵ＃１〜＃２が使われる。また、負荷制御指示部１０によるタスクの割り当ての効果を明らかにするため、図９には、時刻Ｔまでは負荷制御指示部１０が何も制御をしない場合の、ＣＰＵ＃１〜＃２の温度と負荷率の推移の例を示した。
【０１０９】
図９に示したとおり、時刻Ｔまでは、ＣＰＵ＃１の温度がＣＰＵ＃２の温度よりも大幅に高い状態が続いている。
時刻Ｔに負荷制御指示部１０が制御を開始すると、ＣＰＵ＃１〜＃２へのタスクの割り当て方が変わる。時刻Ｔの直後では、楕円Ｐで囲んだ部分に示すように、温度の低いＣＰＵ＃２へ割り当てられるタスクが増え、ＣＰＵ＃２の負荷率が急増する。また、負荷率の
上昇よりも緩やかだが、ＣＰＵ＃２の温度も、時刻Ｔからはっきりと上昇し始める。
【０１１０】
図９には特に各周期を明示していないが、図４と同様に負荷制御指示部１０は周期ごとにタスクの割り当てを行う。したがって、次第にＣＰＵ＃１〜＃２の負荷率はともに、２個のＣＰＵ＃１〜＃２に平均して必要な負荷率Ｌに近づく。この「必要な負荷率Ｌ」は、実行すべきタスクに必要な処理量と、２個のＣＰＵ＃１〜＃２の処理能力により規定される。
【０１１１】
また、ＣＰＵ＃１〜＃２の負荷率がともに必要な負荷率Ｌに近づいた時点では、楕円Ｑで囲んだ部分に示すように、ＣＰＵ＃１〜＃２の温度の差は、時刻Ｔ以前と比べて小さくなっており、ＣＰＵ＃１〜＃２の温度の均一化が進んでいる。つまり、負荷制御指示部１０がタスクの割り当てを制御することにより、複数のＣＰＵの温度の均一化による情報処理システム１２全体の可用性の向上が見込まれる。
【０１１２】
以上、第１〜第３実施形態について説明したが、いずれも次の効果を有する。すなわち、複数のＣＰＵ＃１〜＃ｎの温度が不均一な状態で情報処理システム１２が使用され続ける状況が減る。換言すると、一部のＣＰＵのみが突出して高温で使用されることで過熱による故障に見舞われて故障発生間隔が短くなってしまう、という状況が減る。つまり、故障発生間隔が短いＣＰＵが減る。したがって、情報処理システム１２全体としての可用性および信頼性が向上する。
【０１１３】
また、上記のいずれの実施形態も、特定のＣＰＵの組の間でタスクを移動するのではなく、複数の配置パターン同士の比較に基づいて複数のタスクが割り当てられる。よって、上記実施形態の情報システム１２を従来のシステムと比較すると、情報システム１２全体としてより適切にタスクが割り当てられ、より適切に負荷が分散される。
【０１１４】
なお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
変形の第１の観点は、ＣＰＵの能力や温度特性が同一か否かという点に関する。
【０１１５】
例えば、すべてのＣＰＵ＃１〜＃ｎの処理能力が等しい場合には、図６の処理能力情報データベースを省略する実施形態が可能である。この場合、負荷制御指示部１０は、例えば、タスクの処理量を、パーセンテージで表される上記の負荷率の代わりに利用することができる。
【０１１６】
あるいは、上記のとおり、個々のＣＰＵにそれぞれ対応する複数の相関表を記憶部１１が記憶してもよい。複数の相関表を利用することにより、個々のＣＰＵの元々の温度特性の違いに対応することができるだけでなく、元々は同じ温度特性を有する複数のＣＰＵが、経時変化の影響で異なる温度特性を持つように変化した場合にも対応することができる。
【０１１７】
変形の第２の観点は、最適な配置パターンを探索する方法に関する。
実施形態によっては、負荷制御指示部１０は、遺伝的アルゴリズムを利用する代わりに、組み合わせ可能なすべての配置パターンを網羅的に探索して、ＣＰＵの最高温度Ｍが最も低くなる配置パターンを取得することもできる。網羅的な探索は、ＣＰＵの個数が少ない場合や、実行すべきタスクが少ない場合に特に好適である。また、遺伝的アルゴリズム以外にも、組み合わせ最適化問題の解法として知られる任意の適当なアルゴリズムを利用することが可能である。
【０１１８】
変形の第３の観点は、タスクの割り当てのために複数の配置パターンの候補の中から１
つの配置パターンを選択する基準に関する。実施形態によっては、必ずしも負荷制御指示部１０が最適な配置パターンを選択する必要はない。例えば、探索量を減らすために、何らかの基準に適合する配置パターンの中から任意の配置パターンを負荷制御指示部１０が選択してもよい。
【０１１９】
変形の第２の観点から見てどのようなアルゴリズムが使われるにしろ、負荷制御指示部１０が、第（ｍ＋１）周期のタスクの割り当て方を示す配置パターンの複数の候補の中から１つの配置パターンを選択し、選択した配置パターンにしたがってタスクの割り当てを行うことは共通である。したがって、負荷制御指示部１０は、探索範囲であるそれら複数の配置パターンを任意の順序で調べて、各ＣＰＵについて予測した温度のうちの最高温度Ｍが予め定められた基準に照らして低いと見なされるような配置パターンを、基準に適合する配置パターンとして選択してもよい。
【０１２０】
例えば、情報処理システム１２に使われるＣＰＵの仕様などから、ある閾値Ｕ以下の温度ならばＣＰＵの動作が保証されている場合がある。そのような場合、負荷制御指示部１０が利用する探索アルゴリズムによらず、負荷制御指示部１０は、第（ｍ＋１）周期の開始時点において第（ｍ＋１）周期のタスクの割り当て方を決めるために次のようにして配置パターンを選択することができる。すなわち、負荷制御指示部１０は、探索範囲に含まれる複数の配置パターンを任意の順序で調べて、最高温度Ｍが閾値Ｕ以下であるという条件を満たす、最初に見つかった配置パターンを選択してもよい。
【０１２１】
例えば、アルゴリズムとして網羅的探索を採用する場合、探索範囲は組み合わせ可能なすべての配置パターンを含む。
また、遺伝的アルゴリズムにおいては、探索範囲は、第１世代から現世代までの各世代の集団の和集合である。例えば、図４のステップＳ１０８を、「現世代の集団の中に、最高温度Ｍが閾値Ｕ以下の配置パターンがある」または「現世代を含む直近のＮ世代にわたって集団内で最良の適応度が変化していない」という条件が満たされれば「終了条件が満たされた」と負荷制御指示部１０が判断するように、第２実施形態を変形することが可能である。
【０１２２】
変形の第４の観点は、タスクの割り当てを行うタイミングに関する。
周期時間Ａの長さは実施形態に応じて様々であり、一定の周期時間Ａで繰り返しタスクの割り当てを行うのではなく、不定期にタスクの割り当てを行ってもよい。
【０１２３】
また、タスクの実行要求が生じるタイミングは様々であり、情報処理システム１２の用途などによってタスクの性格も様々である。第ｍ周期の途中で実行を要求された場合に、第（ｍ＋１）周期の開始時点まで実行開始を延期しても差し支えないタスクも存在するし、要求され次第すぐに実行すべきタスクも存在する。
【０１２４】
例えば、第ｍ周期において図２のようにタスクが割り当てられて実行されている場合に、第ｍ周期の途中で新たなタスクＨの実行要求が負荷制御指示部１０に対してなされることがある。例えば、タスクＨがバッチ処理であれば、負荷制御指示部１０は、第ｍ周期の間はタスクＨを待機状態としておき、第（ｍ＋１）周期の開始時点ではじめてタスクＨの割り当てを決定することもできる。しかし、タスクＨの性質によっては、実行要求のあった第ｍ周期の途中からすぐにタスクＨを実行すべき場合がある。
【０１２５】
この場合、負荷制御指示部１０は、例えば、以下の（１）と（２）のいずれかの方法を選んで動作してもよい。
（１）負荷制御指示部１０は、各ＣＰＵの処理能力とタスクＨの所要処理量から、各ＣＰＵについてタスクＨによって生じる負荷率ｈを計算する。そして、負荷制御指示部１０は
、「温度・負荷率情報データベースに登録された負荷率に、計算された負荷率ｈを足した合計負荷率が、１００％以下である」という条件を満たすいずれかのＣＰＵにタスクＨを割り当てる。
【０１２６】
なお、負荷制御指示部１０は、相関表を参照して、タスクＨの割り当てによる各ＣＰＵの温度変化を予測し、上記条件を満たすＣＰＵのうち予測された温度が最も低いＣＰＵにタスクＨを割り当ててもよい。あるいは、より単純に、負荷制御指示部１０は、温度・負荷率情報データベースに記憶された温度情報のみを参照して、上記条件を満たすＣＰＵのうち最も低温のＣＰＵにタスクＨを割り当ててもよい。
【０１２７】
この（１）の方法だと、第ｍ周期の間は、既存のタスクＡ〜Ｇの割り当てに変化がないので、情報処理システム１２全体としてタスクＡ〜Ｈの最適な割り当てが実現されないことがある。しかし、もしタスクＨの実行が第（ｍ＋１）周期の開始時点でも完了していなければ、第（ｍ＋１）周期の開始時点で、情報処理システム１２全体としての最適な割り当てが実現される。タスクの移動にかかるコストと、周期時間Ａの長さのバランスによっては、この（１）の方法が好ましい。
（２）負荷制御指示部１０は、すぐに実行すべきタスクＨの実行要求を受け付けると、第ｍ周期の途中であっても、実行中の既存のタスクＡ〜Ｇと新たなタスクＨとをあわせた８つのタスクＡ〜Ｈ全体の割り当てをしなおす。すなわち、この（２）の方法は、図４のステップＳ１０１を、「周期時間Ａが経過したか、または、すぐに実行すべきタスクの実行要求を受け付けた場合は、ステップＳ１０２に移行する」というステップに変更した方法である。
【０１２８】
最後に、さらに下記の付記を開示する。
（付記１）
複数の中央処理装置と、
前記複数の中央処理装置それぞれについて温度を検出し、前記温度を示す温度情報を出力する温度検出手段と、
前記複数の中央処理装置それぞれについて、個々のタスクの割り当てに応じて予測される負荷率を示す負荷率情報を記憶する第１の記憶手段と、
前記複数の中央処理装置それぞれについて、タスクの割り当てによって生じる負荷率と現在の温度とに応じて予測される将来の温度を表す温度特性情報を記憶する第２の記憶手段と、
実行すべき複数のタスクを前記複数の中央処理装置に割り当てる負荷制御指示手段とを備え、
前記負荷制御指示手段は、
前記複数のタスクの前記複数の中央処理装置への割り当て方の複数のパターンを作成し、
作成した前記複数のパターンのそれぞれについて、前記温度情報と前記負荷率情報と前記温度特性情報に基づいて、前記複数の中央処理装置それぞれの温度を予測し、
前記複数の中央処理装置についてそれぞれ予測した前記温度のうちの最高温度が、予め定められた基準に照らして低いと見なされるために前記基準に適合する１つの適合パターンを、前記複数のパターンの中から選択し、
前記適合パターンにしたがって前記複数のタスクを前記複数の中央処理装置に割り当てる、
ことを特徴とする情報処理システム。
（付記２）
前記負荷制御指示手段は、前記複数のタスクの割り当てを行う際にさらに、前記温度情報が表す前記複数の中央処理装置の実際の温度変化に基づいて前記温度特性情報を更新することを特徴とする付記１に記載の情報処理システム。
（付記３）
前記基準に適合する前記適合パターンとは、前記複数のパターンのうち前記最高温度が最低のパターンであることを特徴とする付記１に記載の情報処理システム。
（付記４）
前記基準に適合する前記適合パターンとは、予測した前記温度のうちの最高温度が予め定められた閾値よりも低いパターンであることを特徴とする付記１に記載の情報処理システム。
（付記５）
前記負荷制御指示手段は、前記複数の中央処理装置それぞれについて予測した前記温度のうちの最高温度が低いほど適応度が高いと評価する適応度を用いた遺伝的アルゴリズムにより、前記パターンの選択を行うことを特徴とする付記１に記載の情報処理システム。（付記６）
前記温度特性情報は、所定の期間における前記負荷率と前記所定の期間の開始時点の温度である前記現在の温度とに応じて、前記所定の期間の経過後に予測される温度を、前記複数の中央処理装置それぞれについて示す情報であることを特徴とする付記１に記載の情報処理システム。
（付記７）
前記負荷制御指示手段は、前記所定の期間で繰り返し、前記複数の中央処理装置への複数のタスクの割り当てを行うことを特徴とする付記６に記載の情報処理システム。
（付記８）
前記温度特性情報は、前記負荷率の離散的な値と前記現在の温度の離散的な値との組み合わせに、前記所定の期間の経過後に予測される前記温度を対応づけた情報であり、
前記負荷制御指示手段は、離散的に表された前記負荷率と前記現在の温度とを用いた補間により、前記複数のパターンのそれぞれについて前記複数の中央処理装置それぞれの温度を予測する、
ことを特徴とする付記６に記載の情報処理システム。
（付記９）
前記負荷制御指示手段は、
前記複数のタスクの割り当てを行う際にさらに、
前記温度情報が表す前記複数の中央処理装置の実際の温度変化に基づいて、
前記温度特性情報において、前記負荷率の前記値または前記現在の温度の前記値が隣接する複数の前記組み合わせに対応づけられた、それぞれの前記温度の値を更新する、
ことを特徴とする付記８に記載の情報処理システム。
（付記１０）
前記温度検出手段は、前記複数の中央処理装置それぞれの近傍に配置された複数の温度センサであることを特徴とする付記１に記載の情報処理システム。
（付記１１）
前記複数の中央処理装置のうちの１つが前記負荷制御手段を兼ねることを特徴とする付記１に記載の情報処理システム。
（付記１２）
前記負荷率情報は、各タスクにかかる処理量と各中央処理装置の処理能力とから計算された値を含むことを特徴とする付記１に記載の情報処理システム。
（付記１３）
複数の中央処理装置、前記複数の中央処理装置それぞれの温度を示す温度情報を出力する温度検出器、および記憶装置を含む情報処理システムに備えられた負荷制御装置が、
前記温度検出器から出力された前記温度情報を読み取り、
前記複数の中央処理装置それぞれについて、個々のタスクの割り当てに応じて予測される負荷率を示す負荷率情報を、前記記憶装置から読み取り、
前記複数の中央処理装置それぞれについて、タスクの割り当てによって生じる負荷率と現在の温度とに応じて予測される将来の温度を表す温度特性情報を、前記記憶装置から読
み取り、
実行すべき複数のタスクの前記複数の中央処理装置への割り当て方の複数のパターンを作成し、
作成した前記複数のパターンのそれぞれについて、前記温度情報と前記負荷率情報と前記温度特性情報に基づいて、前記複数の中央処理装置それぞれの温度を予測し、
前記複数の中央処理装置についてそれぞれ予測した前記温度のうちの最高温度が、予め定められた基準に照らして低いと見なされるために前記基準に適合する１つの適合パターンを、前記複数のパターンの中から選択し、
前記適合パターンにしたがって前記複数のタスクを前記複数の中央処理装置に割り当てる、
ことを特徴とする負荷制御方法。
（付記１４）
複数の中央処理装置、前記複数の中央処理装置それぞれの温度を示す温度情報を出力する温度検出器、および記憶装置を含む情報処理システムに備えられた負荷制御装置に、
前記温度検出器から出力された前記温度情報を読み取るステップと、
前記複数の中央処理装置それぞれについて、個々のタスクの割り当てに応じて予測される負荷率を示す負荷率情報を、前記記憶装置から読み取るステップと、
前記複数の中央処理装置それぞれについて、タスクの割り当てによって生じる負荷率と現在の温度とに応じて予測される将来の温度を表す温度特性情報を、前記記憶装置から読み取るステップと、
実行すべき複数のタスクの前記複数の中央処理装置への割り当て方の複数のパターンを作成するステップと、
作成した前記複数のパターンのそれぞれについて、前記温度情報と前記負荷率情報と前記温度特性情報に基づいて、前記複数の中央処理装置それぞれの温度を予測するステップと、
前記複数の中央処理装置についてそれぞれ予測した前記温度のうちの最高温度が、予め定められた基準に照らして低いと見なされるために前記基準に適合する１つの適合パターンを、前記複数のパターンの中から選択するステップと、
前記適合パターンにしたがって前記複数のタスクを前記複数の中央処理装置に割り当てるステップと、
を実行させることを特徴とする負荷制御プログラム。
【図面の簡単な説明】
【０１２９】
【図１】第１実施形態の情報処理システムの構成図である。
【図２】第２実施形態のある時点での情報処理システムの状態を示す図である。
【図３】第２実施形態においてタスクの割り当てが行われた後の情報処理システムの状態を示す図である。
【図４】第２実施形態における負荷制御指示部による処理の流れを示すフローチャートである。
【図５】処理量情報データベースの例を示す図である。
【図６】処理能力情報データベースの例を示す図である。
【図７】温度特性情報を表す相関表の第１の例を示す図である。
【図８】温度特性情報を表す相関表の第２の例と２つの配置パターンを示す図である。
【図９】第３実施形態におけるタスクの割り当ての効果を示すグラフである。
【符号の説明】
【０１３０】
１０  負荷制御指示部
１１  記憶部
１２  情報処理システム
２０、２１  配置パターン
【図１】
0005109799.tif 000002
【図２】
0005109799.tif 000003
【図３】
0005109799.tif 000004
【図４】
0005109799.tif 000005
【図５】
0005109799.tif 000006
【図６】
0005109799.tif 000007
【図７】
0005109799.tif 000008
【図８】
0005109799.tif 000009
【図９】
0005109799.tif 000010