JPWO2003083693A1 - 分散処理システムにおけるタスクスケジューリング装置 - Google Patents
分散処理システムにおけるタスクスケジューリング装置 Download PDFInfo
- Publication number
- JPWO2003083693A1 JPWO2003083693A1 JP2003581048A JP2003581048A JPWO2003083693A1 JP WO2003083693 A1 JPWO2003083693 A1 JP WO2003083693A1 JP 2003581048 A JP2003581048 A JP 2003581048A JP 2003581048 A JP2003581048 A JP 2003581048A JP WO2003083693 A1 JPWO2003083693 A1 JP WO2003083693A1
- Authority
- JP
- Japan
- Prior art keywords
- task
- temperature
- processing
- power consumption
- tasks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/20—Cooling means
- G06F1/206—Cooling means comprising thermal management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Power Sources (AREA)
Abstract
本発明は,複数のタスクを分散して処理する複数の処理装置を有する分散処理システムのタスクスケジューリング装置を提供する。このタスクスケジューリング装置は,第1のタスクスケジューリング方法として,温度の最も低い処理装置にタスクを割り当てる。また,タスクスケジューリング装置は,第2のタスクスケジューリング方法として,各処理装置の温度と,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値とに基づいて,タスクを選択し,選択したタスクを処理装置に割り当てる。たとえば,第2のタスクスケジューリング方法として,温度の低い処理装置には,温度上昇の度合いの大きなタスク(たとえば単位時間当たりに処理される命令数の多いタスク)が割り当てられる。このようなスケジューリング方法により,各処理装置の温度を均一にすることができる。
Description
技術分野
本発明は,タスクスケジューリング装置およびタスクスケジューリング方法に関し,特に,複数のタスクを分散して処理する複数の処理装置を有する分散処理システムのタスクスケジューリング装置およびタスクスケジューリング方法に関する。また,本発明は,タスクスケジューリングをコンピュータに実行させるプログラムに関する。
背景技術
近年,CPU,MPU等のプロセッサの著しい性能向上に伴い,プロセッサの消費電力が増大し,これによりプロセッサの発熱量が増加している。その結果,プロセッサの温度上昇が問題となっている。
このため,プロセッサの温度上昇を防ぐために,プロセッサにファンを装着したり,プロセッサを格納した筐体内の風流を最適化したりする等の熱対策が講じられている。しかし,プロセッサの性能向上に伴う最大TDP(Thermal Design Power:熱設計電力)の増加により,ファンの大型化,消費電力の増大,および筐体容積の増加を招いており,その結果,装置全体のコストが増加し,また装置が大型化するという問題が発生している。
また,プロセッサの電圧または周波数を制御する機構を設け,この機構により,プロセッサの電圧や周波数を,必要に応じて低減する熱対策も講じられている。しかし,この対策によると,プロセッサの処理能力が低下し,好ましくない。
一方で,プロセッサやプロセッサを有するコンピュータ等の処理装置を複数設けて,タスクを複数の処理装置に分散して処理させることにより,処理の負荷分散または機能分散を行い,処理の高速化を図る分散処理システムないしは並列処理システムが実用化されてきている。
このようなシステムでは,複数の処理装置が稼動するので,熱対策はより重要となるが,複数の処理装置が存在するために,特有の問題も生じている。すなわち,ある特定のプロセッサまたはプロセッサ群の温度上昇が他のプロセッサに対して大きくなる場合があり,しかも,そのようなプロセッサ(群)は,その時々の処理において変化し一定でないために,結果的に,全プロセッサに対して上記のようなファンを取り付ける必要があり,大幅なコストの増加を招く。また,電圧や周波数を低減させる方法では,処理の高速化を図るために,複数の処理装置を設けたマルチプロセッサ構成や分散コンピューティング環境の意味がなくなる。
発明の開示
本発明は,このような状況に鑑みなされたものであり,その目的は,複数の処理装置を有する分散処理システムにおいて,各処理装置の温度をほぼ均等にするためのタスクスケジューリング装置およびタスクスケジューリング方法を提供することにある。
前記目的を達成するために,本発明の第1の側面によるタスクスケジューリング装置は,複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムの前記各処理装置へのタスクスケジューリングを実行するタスクスケジューリング装置であって,前記計測装置により計測された各処理装置の温度または消費電力を比較する比較部と,前記比較部の比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てるタスク割り当て部と,を備えている。
本発明の第1の側面によるタスクスケジューリング方法は,複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムにおける前記複数の処理の少なくとも1つにより,または,前記複数の処理装置とは別個に設けられた制御装置により実行されるタスクスケジューリング方法であって,前記計測装置により計測された各処理装置の温度または消費電力を比較し,前記比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てるものである。
本発明の第1の側面によるプログラムは,前記第1の側面によるタスクスケジューリング方法を,複数のタスクを分散して処理する処理装置の少なくとも1つまたは前記複数の処理装置とは別個に設けられた制御装置に設けられたコンピュータに実行させるものである。
また,本発明の第1の側面による分散処理システムは,複数のタスクを分散して処理する複数の処理装置を有する分散処理システムであって,前記複数の処理装置のそれぞれの温度または消費電力を計測する計測装置と,前記複数の処理装置とは別装置として設けられ,または,前記複数の処理装置の少なくとも1つに設けられ,前記計測装置により計測された各処理装置の温度または消費電力を比較し,前記比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てるタスクスケジューリング装置と,を備えている。
ここで,前記タスクスケジューリング装置は,前記複数の処理装置の少なくとも1つが備えていてもよいし,前記複数の処理装置とは別個の装置として設けられてもよい。
本発明の第1の側面によると,温度または消費電力の最も低い処理装置にタスクが割り当てられるので,温度または消費電力の最も低い処理装置はタスクの処理に伴い発熱し,温度が上昇する一方,温度または消費電力の高い他の処理装置は,タスクが割り当てられないことにより,発熱量が減少する。その結果,各処理装置の温度を均一にさせて行くことができる。
本発明の第2の側面によるタスクスケジューリング装置は,複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムの前記各処理装置へのタスクスケジューリングを実行するタスクスケジューリング装置であって,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値をタスクごとに記憶する記憶部と,タスクの割り当て対象となる処理装置についての,前記計測装置により計測された温度または消費電力と,前記記憶部に記憶された前記特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択し,該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てるタスク割り当て部と,を備えている。
本発明の第2の側面によるタスクスケジューリング方法は,複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムにおける前記複数の処理の少なくとも1つにより,または,前記複数の処理装置とは別個に設けられた制御装置により実行されるタスクスケジューリング方法であって,タスクの割り当て対象となる処理装置についての,前記計測装置により計測された温度または消費電力と,内部のメモリまたは外部の共有メモリに記憶され,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択し,該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てるものである。
本発明の第2の側面によるプログラムは,前記第2の側面によるタスクスケジューリング方法を,複数のタスクを分散して処理する処理装置の少なくとも1つまたは前記複数の処理装置とは別個に設けられた制御装置に設けられたコンピュータに実行させるものである。
本発明の第2の側面による分散処理システムは,複数のタスクを分散して処理する複数の処理装置を有する分散処理システムであって,前記複数の処理装置のそれぞれの温度または消費電力を計測する計測装置と,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値をタスクごとに記憶する記憶装置と,タスクの割り当て対象となる処理装置についての,前記計測装置により計測された温度または消費電力と,前記記憶装置に記憶された前記特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択し,該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てるタスク割り当て部と,を備えている。
ここで,前記タスクスケジューリング装置は,前記複数の処理装置の少なくとも1つが備えていてもよいし,前記複数の処理装置とは別個の装置として設けられてもよい。
本発明の第2の側面によると,各処理装置の温度または消費電力と,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値とに基づいて,たとえば温度または消費電力の大きな処理装置には,温度上昇または消費電力増加の度合いが小さいことを示す特性値を有するタスクを割り当て,温度または消費電力の小さな処理装置には,この逆を行うことにより,各処理装置の温度を均一にさせて行くことができる。
発明を実施するための最良の形態
<第1の実施の形態>
図1は,本発明の第1の実施の形態による分散処理システム1の構成例を示すブロック図である。この分散処理システム1は,たとえば1つの筐体に収納されるマルチプロセッサシステムであり,n個(nは2以上の整数,以下同じ。)のプロセッサP1〜Pn,n個の温度センサH1〜Hn,共有メモリ2,バス3,タイマ4,および通信インタフェース装置(I/F)5を備えている。
プロセッサP1〜Pn,共有メモリ2,タイマ4,およびI/F5は,バス3に接続されている。プロセッサP1〜Pnは,バス3を介して,共有メモリ2に記憶されたプログラムまたはデータを読み出し,また,処理により生成されたデータまたはプログラムを共有メモリ2に書き込むことができるようになっている。
プロセッサP1〜Pnは,たとえばCPU,MPU等,または,CPU,MPU等とその周辺のハードウェア回路とを備えた装置(たとえばプロセッサボード)により構成される。このプロセッサP1〜Pnは,内部にメモリ(キャッシュメモリを含む。)を有し,共有メモリ2に記憶されているOS(OSプログラム)およびアプリケーションプログラム(実行待ちタスクキューにあるタスクに対応するタスクプログラム)を実行する。
また,プロセッサP1〜Pnは,性能モニタリング機能を有する。この性能モニタリング機能を使用することにより,プロセッサP1〜Pnは,実行した命令数,タスクの処理に要した時間またはクロック数,メモリへのアクセス回数,単位時間当たりに実行した命令数,単位時間当たりのメモリへのアクセス回数,これらの組み合わせ(たとえば単位時間当りに実行される命令数とメモリアクセス回数の合計値)等の性能に関する数値を計測することができる。いずれの数値を計測するかを,各プロセッサにあらかじめ指定しておくことができる。
タイマ4には,プロセッサP1〜Pnのいずれかにより時間が設定され,タイマ4は,設定された時間が経過すると,タイマ割り込み信号をバス3に出力する。出力された割り込み信号は,プロセッサP1〜Pnのいずれかにより受信され処理される。このタイマ4は,たとえば,所定の時間の間,タスクをスリープ状態に置き,所定の時間の経過後,このスリープ状態のタスクを目覚めさせ(ウェイクアップさせ),プロセッサにより実行させる場合に利用される。
I/F5は,この分散処理システム1の外部の装置(コンピュータ等)に接続され,この外部装置との間で通信インタフェースの処理(プロトコルの処理等)を実行する。このI/F5は,外部装置からデータを受信すると,割り込み信号をバス3に出力する。出力された割り込み信号は,いずれかのプロセッサにより受信され処理される。
温度センサH1〜Hnは,それぞれプロセッサP1〜Pnの温度を計測するセンサである。プロセッサPi(iは1〜nのいずれかの整数,以下同じ。)は,対応する温度センサHiの温度をあらかじめ定められた一定時間間隔で読み出し,読み出した温度を共有メモリの所定の領域(後述)に書き込む。
温度センサH1〜Hnは,図1に示すように,プロセッサP1〜Pnとは別に設けられてもよいし,プロセッサP1〜Pnのハードウェア回路に内蔵されていてもよい。温度センサH1〜HnがプロセッサP1〜Pnと別に設けられる場合には,プロセッサP1〜Pnの表面に接触して取り付けられるか,あるいは,プロセッサP1〜Pnの近傍に離間(数mmの間隔を離間)して設置されることとなる。また,プロセッサP1〜Pnが温度センサH1〜Hnの温度をそれぞれ読み出して,共有メモリ2に温度を書き込むのではなく,温度センサH1〜Hnがバス3に直接接続され,一定時間間隔で計測した温度を,バス3を介して共有メモリ2に書き込んでもよい。
共有メモリ2は,たとえばRAMであり,OS(OSプログラム),アプリケーションプログラム等を記憶する。図2は,共有メモリ2に記憶されたデータ(プログラムを含む。)を示している。共有メモリ2に記憶されたデータには,OS,アプリケーションプログラム,プロセッサ温度データ,発熱イベント頻度データ,タスクキュー等が含まれる。
OSは,プロセッサP1〜Pnにより実行される共通のOSであり,プロセッサP1〜Pnは,このOSを読み出して実行する。このOSには,スケジューラ(スケジューリングプログラム)が含まれており,プロセッサP1〜Pnは,このスケジューリングプログラムに従ってスケジューリングを実行する。後に詳述するように,このスケジューリングにおいて,本発明の第1の実施の形態によるタスクのスケジューリング処理(すなわちタスクの選択および割り当て処理)が実行される。
アプリケーションプログラムは,プロセッサP1〜Pnによる実行単位であるタスク(タスクプログラム)に分割され,図2では,m個(mは2以上の整数,以下同じ。)のタスクプログラムK1〜Kmに分割されている。これらのタスクプログラムK1〜Kmが,プロセッサP1〜Pnによって実行されることにより,機能分散および負荷分散の双方またはいずれか一方が図られ,アプリケーションプログラムの処理が高速化される。
タスクキューには,実行待ちのタスク(たとえばタスクプログラムを示す識別子等)がキューイングされている。プロセッサP1〜Pnは,タスクキューに存在するタスクの中から1つを選択して自己または他のプロセッサに割り当てる。タスクを割り当てられたプロセッサは,割り当てられたタスクに対応するタスクプログラムを実行する。また,プロセッサP1〜Pnは,タスクプログラムの実行によって新たにタスクが生成されると,このタスクをタスクキューにキューイングする。
プロセッサ温度データおよび発熱イベント頻度データは,プロセッサP1〜Pnが,タスクスケジューリングを実行する際に,タスクの選択基準として,または,タスクを割り当てる対象となるプロセッサの選択基準として使用される。
プロセッサ温度データは,全プロセッサの平均温度TaおよびプロセッサP1〜Pnのそれぞれの温度T1〜Tnのデータ項目を有する。
温度T1〜Tnは,前述した温度センサH1〜Hnによりそれぞれ計測され,プロセッサP1〜Pnにより一定時間間隔で書き込まれた温度である。したがって,温度T1〜Tnは,一定時間間隔で更新される。
全プロセッサの平均温度Taは,温度T1〜Tnの平均値である。すなわち,Ta=(T1+T2+…+Tn)÷nにより求められる。この平均温度Taは,たとえばプロセッサPiが温度Tiを書き込んだ時に,書き込み後,プロセッサPiにより温度T1〜Tnに基づいて計算され,更新される。したがって,この平均温度Taは,各プロセッサP1〜Pnが自己の温度を書き込む際に,更新されることとなる。
発熱イベント頻度データは,各プロセッサの温度上昇または消費電力増加の度合いに関連するタスクの特性値の一例である。この発熱イベント頻度データは,現在までの発熱イベント頻度の平均値(平均発熱イベント頻度)EaおよびタスクプログラムK1〜Kmのそれぞれについての発熱イベント頻度E1〜Emのデータ項目を有する。
ここで,「発熱イベント」とは,プロセッサに熱を発生させる原因となるイベントであり,たとえばプロセッサにより実行される命令,プロセッサの内部メモリまたは共有メモリ2へのアクセス等を発熱イベントとして挙げることができる。したがって,「発熱イベント頻度」としては,たとえば,タスクまたはOSの処理における単位時間当たりに実行される命令数,単位時間当りのメモリアクセス回数,これらの組み合わせ(たとえば単位時間当りに実行される命令数とメモリアクセス回数の合計値)等がある。
なお,発熱イベント頻度の代わりに,各タスクに含まれる命令数やメモリアクセス回数等の「発熱イベント数」を使用することもできる。また,タスクの処理に要する時間をタスクの選択基準として使用することもできる。
本実施の形態では,一例として「発熱イベント頻度」を使用し,また,発熱イベント頻度として,各タスクの実行時に,単位時間当たりに実行される命令数を使用することとする。すなわち,タスクプログラムK1〜Kmのそれぞれについて,実行された命令数をI1〜Imとし,これらの命令数をそれぞれ実行するのに要する時間(またはクロック数)をt1〜tmとすると,発熱イベント頻度E1〜Emは,E1=I1÷t1,…,Ei=Ii÷ti,…,Em=Im÷tmとなる。なお,時間としてクロック数を使用した場合に,発熱イベント頻度の単位はIPC(Instruction per Clock)となる。
たとえば,タスクプログラムKj(jは1〜mのいずれかの整数,以下同じ。)がプロセッサPiにより実行されると,プロセッサPiは,性能モニタリング機能を使用して,タスクプログラムKjの実行した命令数および実行に要する時間を計測し,これら命令数および時間から発熱イベント頻度Ejを計算する。そして,プロセッサPiは,発熱イベント頻度Ejを共有メモリ2に書き込む。
これらの命令数や時間は,プロセッサPiがタスクプログラムKjの実行開始時に性能モニタリング機能から読み出した値と,実行終了時に性能モニタリング機能から読み出した値との差分により求めることもできるし,プロセッサPiがタスクプログラムKjの実行開始時に性能モニタリング機能の値を0にリセットし,実行終了時に性能モニタリング機能から読み出した値により求めることもできる。
また,同じタスクプログラムKjであっても,ある時点で実行された場合の発熱イベント頻度の値と,他の時点で実行された場合の発熱イベント頻度の値とが異なる場合がある。たとえば,タスクプログラムKjが条件分岐や繰り返しループを有する場合に,ある時点で実行されたときの,選択された分岐や繰り返しループ回数と,他の時点で実行されたときの,選択された分岐や繰り返しループ回数とが異なる場合に,このような発熱イベント頻度の値が異なる事態が生じる。
したがって,発熱イベント頻度Ejとしては,(a)タスクプログラムKjが最も近時に実行された時点の値とすることもできるし,(b)タスクプログラムKjがこれまでに実行されたすべての場合の平均発熱イベント頻度値とすることもできる。
前者(a)の場合に,プロセッサPiは,タスクプログラムKjの実行後,性能モニタリング機能により求められた発熱イベント頻度Ejを共有メモリ2の所定のアドレスに書き込む(上書きする)だけでよい。
後者(b)の場合に,図2における図示は省略するが,共有メモリ2には,タスクプログラムKjがこれまでに実行されたすべての場合の命令数の合計値(Ija11とする。)と,実行に要した時間の合計値(tja11とする。)とが記憶される。たとえば,タスクプログラムKjがこれまでにx回実行されている場合には,Ija11=Ij1+Ij2+…+Ijx,tja11=tj1+tj2+…+tjxとなる(Ijk(kは1〜xのいずれかの整数)はタスクプログラムKjが第k回目に実行された場合の命令数,tjkはタスクプログラムKjが第k回目に実行された場合の実行時間)。そして,命令数の合計値を時間の合計値で割った値が発熱イベント頻度Ejとされる。すなわち,Ej=Ija11÷tja11となる。
たとえば,プロセッサPiが,第(x+1)回目のタスクプログラムKjを実行した場合に,実行後,性能モニタリング機能により求められた命令数Ijx+1および実行時間tjx+1を,共有メモリ2に記憶されたIja11およびtja11にそれぞれ加算し,加算後の値に基づいてEj=Ija11÷tja11を計算し,計算したEjを新たな発熱イベントEjとして共有メモリ2に書き込む(上書きする)こととなる。
なお,タスクプログラムが実行されないと,発熱イベント頻度は求められないので,タスクプログラムが1度も実行されていない時点における発熱イベント頻度E1〜Emの値(すなわち初期値)は,あらかじめ定められた値とされる。この初期値は,たとえばタスクプログラムK1〜Kmを実験やシミュレーションにより実行して求めた値とすることができる。
「現在までの平均発熱イベント頻度Ea」は,全プロセッサPi〜Pnにより,これまでに実行されたすべてのタスクの平均発熱イベント頻度値である。
すなわち,平均値Eaは,タスクプログラムK1〜Kmのそれぞれについてのこれまでの実行命令数の合計値の総和(Ia11=I1a11+I2a11+…+Ima11)を,これまでの実行命令数の合計値の総和(ta11=t1a11+t2a11+…+tma11)で割った値(Ea=Ia11÷ta11)とされる。
なお,各タスクプログラムの毎回の実行時間を一定であるとみなすと,平均値Eaは以下の式で表すこともできる。
Ea={(E11+E12…+E1n1)+(E21+E22…+E2n2)+…+(Ej1+Ej2…+Ejnj)+…+(Em1+Em2…+Emnm)}÷(n1+n2+…+nj+…+nm)
ここで,タスクKjはnj回実行され,第1回から第nj回までのそれぞれの発熱イベント頻度をEj1〜Ejnjとしている。
プロセッサPiは,タスクプログラムKjの実行後,タスクプログラムKjの発熱イベント頻度Ejを更新するとともに,平均発熱イベント頻度Eaの値も計算し,計算した値により,共有メモリ2の値を更新する。
このようなマルチプロセッサシステム1において,プロセッサP1〜Pnは,これまで実行していたタスク(タスクプログラム)の処理が終了したり,タスクの切り替えが発生したり,あるいは,タイマ4またはI/F5から割り込みが発生したりすると,タスクキューにキューイングされた実行待ちのタスクから1つを選択し,選択したタスクを自己または他のプロセッサに割り当てるタスクスケジューリングを実行する。このタスクスケジューリングの方法には,以下の方法がある。
(1)第1のタスクスケジューリング方法
第1のタスクスケジューリング方法は,タスクを実行していないアイドル状態のプロセッサが複数存在する場合に,アイドル状態のプロセッサの温度にのみ基づいて,温度の最も低いプロセッサにタスクを割り当てるものである。
たとえば,タイマ4が,設定された時間の経過により割り込み信号を発生し,この割り込み信号がプロセッサPiにより受信されると,プロセッサPiは,これまで実行していたタスクを一時的に中断し,スケジューラを実行する。あるいは,プロセッサPiがアイドル状態にある場合には,割り込み信号の受信により直ちにスケジューラを実行する。
プロセッサPiは,割り込み信号受信時におけるアイドル状態のプロセッサが複数あるかどうかを判断する。プロセッサPi自身もアイドル状態にあるならば,自己も対象となる。プロセッサがアイドル状態にあるかどうかは,プロセッサPiが各プロセッサに問い合わせることによって確認することもできるし,各プロセッサが共有メモリ2の所定の領域に自己の状態(アイドル状態またはタスク処理状態)を書き込む場合には,この領域を読み出すことによって判断することもできる。
続いて,アイドル状態のプロセッサが複数存在する場合に,プロセッサPiは,アイドル状態にあるプロセッサの温度を共有メモリ2から読み出し,温度の最も低いプロセッサを選択する。温度の最も低いプロセッサが複数存在する場合には,たとえば擬似乱数等を発生させ,発生された数値に基づいて1つのプロセッサを選択することができる。
続いて,プロセッサPiは,選択したプロセッサに,ウェイクアップ状態に移行するタスクを割り当てる。
I/F5から割り込み信号がプロセッサPiに入力された場合にも,プロセッサPiは,同様にして,アイドル状態にあるプロセッサのうち,温度の最も低いプロセッサを選択し,選択したプロセッサにタスク(たとえばI/F5からのデータ受信処理等)を割り当てることができる。
このように,アイドル状態にあるプロセッサのうち,温度の最も低いプロセッサにタスクが割り当てられ,実行されるので,各プロセッサの発熱量が均等化されて行き,その結果,各プロセッサの温度を均一にすることができる。
なお,アイドル状態のプロセッサが1つの場合には,このプロセッサにタスクを割り当てることもできるし,他のプロセッサで温度の最も低いものに,割り当てることもできる。また,アイドル状態のプロセッサが存在しない場合にも,温度の最も低いプロセッサにタスクを割り当てることもできる。アイドル状態でないプロセッサにタスクが割り当てられた場合には,割り当てられるタスクの優先順位が実行中のタスクの優先順位より高い場合には,実行中のタスクが中断され,新たに割り当てられたタスクを実行することもできる。
(2)第2のタスクスケジューリング方法
第2のタスクスケジューリング方法は,プロセッサの温度および発熱イベント頻度の双方に基づいてタスクを選択し,割り当てるものである。図3は,各プロセッサにより実行される第2のタスクスケジューリング方法の処理の流れを示すフローチャートである。この処理は,前述したように,OSのスケジューラの一部である。
プロセッサPiにおいて,これまで実行していたタスクの処理が終了し,または,タスクの切り替えが実行されると,プロセッサPiは,共有メモリ2にアクセスして,共有メモリ2のタスクキューに複数のタスクが存在するかどうかを判断する(S1)。
タスクキューに複数のタスクが存在する場合には(S1でYES),プロセッサPiは,自己の温度Tiと共有メモリ2に記憶された平均温度Taとを比較する(S2)。ここで,自己の温度Tiは,共有メモリ2に記憶されたものを使用することもできるし,プロセッサPiが,この比較を行う時に,温度センサHiから読み出したものを使用することもできる。
Ti>Taであるならば(S2でYES),プロセッサPiは,タスクキューに存在する各タスクの発熱イベント頻度Eおよび平均発熱イベント頻度Eaを共有メモリ2から読み出し,各タスクの発熱イベントと平均発熱イベント頻度Eaとをそれぞれ比較する(S3)。そして,プロセッサPiは,平均発熱イベント頻度Ea以下の発熱イベント頻度E(すなわちE≦Ea)を有するタスクがタスクキューに存在するかどうかを判断する(S3)。
E≦Eaとなるタスクがタスクキューに存在する場合には(S2でYES),プロセッサPiは,E≦Eaとなるタスクからタスクを1つ選択し(S4),選択したタスクを実行する。E≦Eaとなるタスクが1つの場合には,そのタスクが選択される。
ここで,E≦Eaとなるタスクが複数存在する場合には,その中で最小の発熱イベント頻度を有するタスクを選択することもできるし,その中で最大の発熱イベント頻度を有するタスクを選択することもできるし,中程度の発熱イベント頻度を有するタスクを選択することもできる。あるいは,擬似乱数等の数値を発生させ,この数値に基づいてタスクを選択することもできる。また,通常のスケジューリングと同様に,タスクの優先順位に基づいて最も優先順位の高いタスクを選択することもできる。さらに,同じ優先順位を有するタスクが複数存在する場合には,その中から,タスクキューの先頭位置により近いタスクまたはタスクキューに時間的に先にキューイングされたタスクを選択することもできる。
一方,E≦Eaとなるタスクがタスクキューに存在しない場合には(S3でNO),プロセッサPiは,タスクキューに存在するタスクのうち,最小の発熱イベント頻度Eを有するタスクを選択し(S5),選択したタスクを実行する。
ステップS2において、Ti≦Taである場合に(S2でNO),プロセッサPiは,タスクキューに存在するタスクの中で,平均発熱イベント頻度Eaより大きな発熱イベント頻度E(E>Ea)を有するタスクが存在するかどうかを判断する(S6)。
E>Eaとなるタスクがタスクキューに存在する場合には(S6でYES),プロセッサPiは,E>Eaとなるタスクの中からタスクを1つ選択し(S7),選択したタスクを実行する。E>Eaとなるタスクが1つの場合には,そのタスクが選択される。
E>Eaとなるタスクが複数存在する場合には,前述したのと同様に,その中から最大の発熱イベント頻度,最小の発熱イベント頻度,または中程度の発熱イベント頻度を有するタスクを選択したり,擬似乱数等の数値に基づいて選択したり,あるいは,通常のスケジューリングと同様の選択処理によりタスクを選択することができる。
E>Eaとなるタスクがタスクキューに存在しない場合には(S6でNO),プロセッサPiは,タスクキューに存在するタスクの中で最大の発熱イベント頻度Eを有するタスクを選択し(S8),選択したタスクを実行する。
ステップS1において,タスクキューに複数のタスクが存在しない場合には,プロセッサPiは,さらにタスクキューに存在するタスクが1つかどうかを判断する(S9)。タスクキューに存在するタスクが1つならば(S9でYES),プロセッサPiはそのタスクを選択して(S10),実行し,タスクキューにタスクが存在しない場合には(S9でNO),プロセッサPiは,アイドルタスクを実行する。
なお,選択されたタスクは,タスクキューから消去される。また,プロセッサPiは,タスクキューにタスクが存在しない場合に,アイドルタスクを実行するのではなく,自己を停止状態にすることもできる。この場合には,タスクキューにタスクが発生した時点で,他の稼動状態にあるプロセッサによって,プロセッサPiは停止状態から稼動状態にされることとなる。
このように第2のタスクスケジューリング方法によると,プロセッサPiの温度Tiが平均温度Taと比較され,温度Tiが平均温度Ta以下である場合には,タスクキューに存在するタスクのうち,なるべく大きな発熱イベント頻度を有するタスクが選択される。したがって,選択されたタスクをプロセッサPiが実行することにより発生する発熱量は,一般に,平均的な発熱量よりも大きくなる。一方,温度Tiが平均温度Taより大きな場合には,なるべく小さな発熱イベント頻度を有するタスクが選択される。したがって,選択されたタスクをプロセッサPiが実行することにより発生する発熱量は,一般に,平均的な発熱量よりも小さくなる。
これにより,各プロセッサの発熱量が均等化されて行き,その結果,各プロセッサの温度が均一化されるので,ある特定のプロセッサ(群)のみが高温になることを防止することができる。その結果,各プロセッサに大規模なファンを取り付けたり,熱設計のために大きな筐体を設けたりする必要が回避され,システムのコスト増大および大型化が防止できる。また,プロセッサの電圧や周波数を抑制することも回避でき,各プロセッサの処理能力を最大限活用することもできる。
なお,ステップS2における比較Ti>Taは,Ti≧Taであってもよいし,ステップS3における比較をE<Eaとし,ステップS6における比較をE≧Eaとしてもよい。
(3)第3のタスクスケジューリング方法
第3のタスクスケジューリング方法も,第2のタスクスケジューリング方法と同様に,プロセッサの温度および発熱イベント頻度に基づいてタスクの選択および割り当てを行うものである。図4は,各プロセッサにより実行される第3のタスクスケジューリング方法の処理の流れを示すフローチャートである。この処理は,前述したように,OSのスケジューラの一部である。
プロセッサPiは,タスクキューに複数のタスクが存在するかどうかを判断する(S21)。タスクキューに複数のタスクが存在する場合には(S21でYES),プロセッサPiは,共有メモリ2に記憶されたプロセッサ温度データに基づいて,全プロセッサの温度T1〜Tnにおける自己の温度Tiの,温度の低いものからの順位(順位rとする。)を求める(S22)。
続いて,プロセッサPiは,タスクキューに存在するタスクを,発熱イベント頻度に基づいて発熱イベント頻度の値の大きなものから小さなものに向けてソートする(S23)。
次に,プロセッサPiは,ステップS22で求めた自己の温度Tiの順位rに対応した発熱イベント頻度を有するタスクの中から1つのタスクを選択し(S24),選択したタスクを実行する。
ここで,自己の温度Tiの順位rに対応した発熱イベント頻度は,たとえば,次のようにして決定される。まず,プロセッサPiは,タスクキューに存在するタスクを,発熱イベント頻度の大きなものから小さなものに向けてn個(すなわちプロセッサP1〜Pnの個数)のグループG1〜Gnに分割する。そして,プロセッサPiは,自己の温度の順位rに対応するグループGrに属するタスクの中からタスクを1つ選択する。すなわち,自己の温度の順位が全プロセッサにおいて,低いものからr番目に位置する場合には,発熱イベント頻度の大きなものからr番目のグループGrからタスクが選択される。
これにより,相対的に温度の低いプロセッサには,相対的に発熱イベント頻度の高いタスクが割り当てられ,相対的に温度の高いプロセッサには,相対的に発熱イベント頻度の低いタスクが割り当てられる。その結果,各プロセッサの発熱量が平均化され,各プロセッサの温度が均一化されるので,ある特定のプロセッサ(群)のみが高温になることを防止することができる。その結果,プロセッサに大規模なファンを取り付けたり,熱設計のために大きな筐体を設けたりする必要が回避され,システムのコスト増大および大型化が防止できる。また,プロセッサの電圧や周波数を抑制することも回避でき,各プロセッサの処理能力を最大限活用することもできる。
なお,タスクキューに存在するタスクの個数(個数pとする。)がプロセッサの個数n未満(すなわちp<n)である場合には,タスクキューに存在するタスクをn個のグループに分割するのではなく,温度の順位を,温度の低いものから高いものに向けてp個のグループG1〜Gpに分割し,プロセッサPiの温度Tiが属するグループGrに対応するタスクTrが選択される。すなわち,プロセッサPiの温度Tiが,温度の低いものからr番目のグループGrに属する場合には,発熱イベント頻度の高いものからr番目のタスクが選択される。
これによっても,各プロセッサの発熱量が平均化され,各プロセッサの温度が均一化されるので,ある特定のプロセッサ(群)のみが高温になることを防止することができることは言うまでもない。
一方,ステップS21で,タスクキューに複数のタスクが存在しない場合には,プロセッサPiは,ステップS25およびS26の処理を実行する。これらステップS25およびS26は,前述した図3のステップS9およびS10とそれぞれ同じであるので,ここではその説明を省略する。
<第2の実施の形態>
図5は,本発明の第2の実施の形態による分散処理システム10の構成例を示すブロック図である。この分散処理システム10は,分散コンピューティングシステムであり,コントローラ11,n個のノードN1〜Nn,および通信ネットワーク12を備えている。
ノードN1〜Nnおよびコントローラ11は,通信ネットワーク12に接続され,通信ネットワーク12を介して相互に通信可能となっている。通信ネットワーク12は,たとえばLAN,インターネット等である。
ノードN1〜Nnのそれぞれは,たとえばコンピュータであり,内部に,CPU,MPU等により構成されるプロセッサ21,通信ネットワーク12との通信インタフェース処理を実行する通信インタフェース装置(I/F)22,およびプロセッサ21の温度を測定する温度センサ23を有する。
コントローラ11は,たとえばコンピュータであり,その内部の記憶装置(図示略)には,前述した図2に示す共有メモリ2のデータと同じデータが記憶されている。すなわち,内部の記憶装置には,スケジューラを含むOS,アプリケーションプログラム,プロセッサ温度データ,発熱イベント頻度データ,タスクキュー等が記憶されている。
また,コントローラ11は,内部にタイマを有し,タイマの割り込み信号によって,所定のスリープ状態にあるタスクをウェイクアップ状態にし,このタスクをいずれかのノードに割り当てて実行させることもできる。
本実施の形態において,コントローラ11は,タスクスケジューリングを専用に行い,自らはタスクを実行しない。このため,コントローラ11は,内部の記憶装置に記憶されたスケジューラを実行して,ノードN1〜Nnのタスクスケジューリング処理を実行する。
タスクスケジューリング処理においては,ノードN1〜Nnがタスク割り当て要求をコントローラ11に送信し,コントローラ11がこの要求に応じて,要求を送信したノードに対してタスクを選択し割り当ててもよいし,コントローラ11がアイドル状態のノードに対してタスクを選択し割り当ててもよい。ノードがアイドル状態かどうかは,ノードN1〜Nnからコントローラ11に送信される状態通知によって検知することもできるし,コントローラ11が定期的にノードN1〜Nnの状態をチェックすることによっても検知することができる。
プロセッサ温度データにおける温度T1〜Tnは,本実施の形態では,ノードN1〜Nnのそれぞれのプロセッサ21の温度である。前述した第1の実施の形態と同様に,各ノードのプロセッサ21は,温度センサ23により計測された自己の温度を一定時間間隔で読み出し,読み出した温度をI/F22および通信ネットワーク12を介してコントローラ11に送信する。コントローラ11は,各ノードから送信された温度を内部の記憶装置に記憶する。
また,平均温度Taは,コントローラ11が,温度T1〜Tnに基づいて計算する。コントローラ11は,温度T1〜Tnの少なくとも1つがノードから送信され,更新(記憶)されるごとに,更新後の値に基づいて平均温度Taを求める。
タスクプログラムK1〜Kmのそれぞれの発熱イベント頻度E1〜Emは,ノードN1〜Nnのそれぞれのプロセッサ21の性能モニタリング機能により計測された実行命令数,処理時間(またはクロック数)等によって求められた発熱イベント頻度の値である。各ノードのプロセッサ21は,あるタスクがコントローラ11から割り当てられ,割り当てられたタスクを実行すると,実行後,性能モニタリング機能により計測された実行命令数,処理時間等をコントローラ11に送信する。コントローラ11は,各ノードから送信されたこれらの値に基づいて,第1の実施の形態と同様にして発熱イベント頻度を計算し,第1の実施の形態における方法(a)または(b)により,内部の記憶装置に記憶(更新)する。
また,平均発熱イベント頻度Eaは,前述した第1の実施の形態と同様にして,コントローラ11により計算され,記憶される。
このような分散処理システム10において,コントローラ11は,前述した第1の実施の形態における第1,第2,または第3のタスクスケジューリング方法を実行することにより,タスクの選択および割り当てを行う。具体的には,次のようにタスクスケジューリング処理が実行される。
(1)第1のタスクスケジューリング方法
コントローラ11は,たとえば,内部のタイマの割り込み信号により,スリープ状態のタスクをウェイクアップ状態にしてノードに割り当てる場合に,アイドル状態のノードが存在するかどうかを確認する。アイドル状態のノードが複数存在する場合に,コントローラ11は,それらノードの中から,温度の最も低いプロセッサを有するノードを選択し,選択したノードに,ウェイクアップ状態に移行するタスクを割り当て,実行させる。
このように,アイドル状態にあるノードのうち,温度の最も低いノードにタスクが割り当てられ,実行されるので,各ノードのプロセッサの発熱量が均等化されて行き,その結果,各ノードの温度を均一にすることができる。
なお,アイドル状態のノードが1つの場合には,このノードにタスクを割り当てることもできるし,他のノードで温度の最も低いプロセッサを有するものに,割り当てることもできる。また,アイドル状態のノードが存在しない場合にも,温度の最も低いプロセッサを有するノードにタスクを割り当てることもできる。アイドル状態でないノードにタスクが割り当てられた場合には,割り当てられるタスクの優先順位が実行中のタスクの優先順位より高い場合には,実行中のタスクが中断され,新たに割り当てられたタスクを実行することもできる。
(2)第2のタスクスケジューリング方法
コントローラ11は,ノードNiからタスクの割り当て要求を受信すると,ノードNiの温度Ti,平均温度Ta,平均発熱イベント頻度Ea,および各発熱イベント頻度E1〜Emに基づいて,図3に示すフローチャートの処理を実行し,ノードNiに割り当てるタスクを選択する。そして,コントローラ11は,選択したタスクをノードNiに割り当てる。
コントローラ11がアイドル状態のノードNiを検出し,このアイドル状態のノードNiに対して,図3に示すフローチャートの処理によりタスクを選択し,選択したタスクを割り当ててもよい。
これにより,各プロセッサの発熱量が均等化されて行き,その結果,各プロセッサの温度が均一化されるので,ある特定ノードのプロセッサ(群)のみが高温になることを防止することができる。
(3)第3のタスクスケジューリング方法
コントローラ11は,ノードNiからタスクの割り当て要求を受信すると,図4に示すフローチャートの処理を実行し,ノードNiに割り当てるタスクを選択する。そして,コントローラ11は,選択したタスクをノードNiに割り当てる。
コントローラ11がアイドル状態のノードNiを検出し,このアイドル状態のノードNiに対して,図3に示すフローチャートの処理によりタスクを選択し,選択したタスクを割り当ててもよい。
これにより,各プロセッサの発熱量が均等化されて行き,その結果,各プロセッサの温度が均一化されるので,ある特定ノードのプロセッサ(群)のみが高温になることを防止することができる。
<他の実施の形態>
第1および第2の実施の形態において,プロセッサの温度に代えてプロセッサの消費電力を,プロセッサ(ノード)の選択基準またはタスクの選択基準に用いることもできる。この場合には,各プロセッサに内蔵され,または,各プロセッサに取り付けられる消費電力計測回路が消費電力を計測し,共有メモリ2またはコントローラ11の内部メモリには,プロセッサ温度データの代わりに,各プロセッサの消費電力の累積値およびその平均値が記憶される。
また,第1および第2の実施の形態において,発熱イベント頻度を,実行されるすべての命令を対象にして求めるのではなく,発熱量(および消費電力)の多い浮動小数点演算命令のみを対象にして求めることもできる。
第2の実施の形態において,1つのノードが,図1に示すように,複数のプロセッサを有するマルチプロセッサシステムであってもよい。この場合には,コントローラ11は,各ノードのプロセッサごとにタスクを選択して割り当てることができる。
なお,第1の実施の形態に示すマルチプロセッサシステムにおいても,プロセッサP1〜Pnとは別にコントローラを設け,このコントローラが,第2の実施の形態におけるコントローラ11の機能を実行して,プロセッサP1〜Pnへのタスクスケジューリングを実行することもできる。
産業上の利用の可能性
本発明は,マルチプロセッサシステム,複数のコンピュータが通信ネットワークに接続された分散コンピューティングシステム等の分散処理システムに適用することができる。
本発明によると,分散処理システムの各処理装置(プロセッサ,コンピュータ等)の温度を均一にさせて行くことができる。その結果,各処理装置に大規模なファンを取り付けたり,熱設計のために大きな筐体を設けたりする必要が回避され,システムのコスト増大および大型化が防止できる。また,各処理装置の電圧や周波数を抑制することも回避でき,各処理装置の処理能力を最大限活用することもできる。
【図面の簡単な説明】
図1は,本発明の第1の実施の形態による分散処理システムの構成例を示すブロック図である。
図2は,共有メモリに記憶されたデータを示す。
図3は,各プロセッサにより実行される第2のタスクスケジューリング方法の処理の流れを示すフローチャートである。
図4は,各プロセッサにより実行される第3のタスクスケジューリング方法の処理の流れを示すフローチャートである。
図5は,本発明の第2の実施の形態による分散処理システムの構成例を示すブロック図である。
本発明は,タスクスケジューリング装置およびタスクスケジューリング方法に関し,特に,複数のタスクを分散して処理する複数の処理装置を有する分散処理システムのタスクスケジューリング装置およびタスクスケジューリング方法に関する。また,本発明は,タスクスケジューリングをコンピュータに実行させるプログラムに関する。
背景技術
近年,CPU,MPU等のプロセッサの著しい性能向上に伴い,プロセッサの消費電力が増大し,これによりプロセッサの発熱量が増加している。その結果,プロセッサの温度上昇が問題となっている。
このため,プロセッサの温度上昇を防ぐために,プロセッサにファンを装着したり,プロセッサを格納した筐体内の風流を最適化したりする等の熱対策が講じられている。しかし,プロセッサの性能向上に伴う最大TDP(Thermal Design Power:熱設計電力)の増加により,ファンの大型化,消費電力の増大,および筐体容積の増加を招いており,その結果,装置全体のコストが増加し,また装置が大型化するという問題が発生している。
また,プロセッサの電圧または周波数を制御する機構を設け,この機構により,プロセッサの電圧や周波数を,必要に応じて低減する熱対策も講じられている。しかし,この対策によると,プロセッサの処理能力が低下し,好ましくない。
一方で,プロセッサやプロセッサを有するコンピュータ等の処理装置を複数設けて,タスクを複数の処理装置に分散して処理させることにより,処理の負荷分散または機能分散を行い,処理の高速化を図る分散処理システムないしは並列処理システムが実用化されてきている。
このようなシステムでは,複数の処理装置が稼動するので,熱対策はより重要となるが,複数の処理装置が存在するために,特有の問題も生じている。すなわち,ある特定のプロセッサまたはプロセッサ群の温度上昇が他のプロセッサに対して大きくなる場合があり,しかも,そのようなプロセッサ(群)は,その時々の処理において変化し一定でないために,結果的に,全プロセッサに対して上記のようなファンを取り付ける必要があり,大幅なコストの増加を招く。また,電圧や周波数を低減させる方法では,処理の高速化を図るために,複数の処理装置を設けたマルチプロセッサ構成や分散コンピューティング環境の意味がなくなる。
発明の開示
本発明は,このような状況に鑑みなされたものであり,その目的は,複数の処理装置を有する分散処理システムにおいて,各処理装置の温度をほぼ均等にするためのタスクスケジューリング装置およびタスクスケジューリング方法を提供することにある。
前記目的を達成するために,本発明の第1の側面によるタスクスケジューリング装置は,複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムの前記各処理装置へのタスクスケジューリングを実行するタスクスケジューリング装置であって,前記計測装置により計測された各処理装置の温度または消費電力を比較する比較部と,前記比較部の比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てるタスク割り当て部と,を備えている。
本発明の第1の側面によるタスクスケジューリング方法は,複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムにおける前記複数の処理の少なくとも1つにより,または,前記複数の処理装置とは別個に設けられた制御装置により実行されるタスクスケジューリング方法であって,前記計測装置により計測された各処理装置の温度または消費電力を比較し,前記比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てるものである。
本発明の第1の側面によるプログラムは,前記第1の側面によるタスクスケジューリング方法を,複数のタスクを分散して処理する処理装置の少なくとも1つまたは前記複数の処理装置とは別個に設けられた制御装置に設けられたコンピュータに実行させるものである。
また,本発明の第1の側面による分散処理システムは,複数のタスクを分散して処理する複数の処理装置を有する分散処理システムであって,前記複数の処理装置のそれぞれの温度または消費電力を計測する計測装置と,前記複数の処理装置とは別装置として設けられ,または,前記複数の処理装置の少なくとも1つに設けられ,前記計測装置により計測された各処理装置の温度または消費電力を比較し,前記比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てるタスクスケジューリング装置と,を備えている。
ここで,前記タスクスケジューリング装置は,前記複数の処理装置の少なくとも1つが備えていてもよいし,前記複数の処理装置とは別個の装置として設けられてもよい。
本発明の第1の側面によると,温度または消費電力の最も低い処理装置にタスクが割り当てられるので,温度または消費電力の最も低い処理装置はタスクの処理に伴い発熱し,温度が上昇する一方,温度または消費電力の高い他の処理装置は,タスクが割り当てられないことにより,発熱量が減少する。その結果,各処理装置の温度を均一にさせて行くことができる。
本発明の第2の側面によるタスクスケジューリング装置は,複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムの前記各処理装置へのタスクスケジューリングを実行するタスクスケジューリング装置であって,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値をタスクごとに記憶する記憶部と,タスクの割り当て対象となる処理装置についての,前記計測装置により計測された温度または消費電力と,前記記憶部に記憶された前記特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択し,該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てるタスク割り当て部と,を備えている。
本発明の第2の側面によるタスクスケジューリング方法は,複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムにおける前記複数の処理の少なくとも1つにより,または,前記複数の処理装置とは別個に設けられた制御装置により実行されるタスクスケジューリング方法であって,タスクの割り当て対象となる処理装置についての,前記計測装置により計測された温度または消費電力と,内部のメモリまたは外部の共有メモリに記憶され,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択し,該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てるものである。
本発明の第2の側面によるプログラムは,前記第2の側面によるタスクスケジューリング方法を,複数のタスクを分散して処理する処理装置の少なくとも1つまたは前記複数の処理装置とは別個に設けられた制御装置に設けられたコンピュータに実行させるものである。
本発明の第2の側面による分散処理システムは,複数のタスクを分散して処理する複数の処理装置を有する分散処理システムであって,前記複数の処理装置のそれぞれの温度または消費電力を計測する計測装置と,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値をタスクごとに記憶する記憶装置と,タスクの割り当て対象となる処理装置についての,前記計測装置により計測された温度または消費電力と,前記記憶装置に記憶された前記特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択し,該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てるタスク割り当て部と,を備えている。
ここで,前記タスクスケジューリング装置は,前記複数の処理装置の少なくとも1つが備えていてもよいし,前記複数の処理装置とは別個の装置として設けられてもよい。
本発明の第2の側面によると,各処理装置の温度または消費電力と,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値とに基づいて,たとえば温度または消費電力の大きな処理装置には,温度上昇または消費電力増加の度合いが小さいことを示す特性値を有するタスクを割り当て,温度または消費電力の小さな処理装置には,この逆を行うことにより,各処理装置の温度を均一にさせて行くことができる。
発明を実施するための最良の形態
<第1の実施の形態>
図1は,本発明の第1の実施の形態による分散処理システム1の構成例を示すブロック図である。この分散処理システム1は,たとえば1つの筐体に収納されるマルチプロセッサシステムであり,n個(nは2以上の整数,以下同じ。)のプロセッサP1〜Pn,n個の温度センサH1〜Hn,共有メモリ2,バス3,タイマ4,および通信インタフェース装置(I/F)5を備えている。
プロセッサP1〜Pn,共有メモリ2,タイマ4,およびI/F5は,バス3に接続されている。プロセッサP1〜Pnは,バス3を介して,共有メモリ2に記憶されたプログラムまたはデータを読み出し,また,処理により生成されたデータまたはプログラムを共有メモリ2に書き込むことができるようになっている。
プロセッサP1〜Pnは,たとえばCPU,MPU等,または,CPU,MPU等とその周辺のハードウェア回路とを備えた装置(たとえばプロセッサボード)により構成される。このプロセッサP1〜Pnは,内部にメモリ(キャッシュメモリを含む。)を有し,共有メモリ2に記憶されているOS(OSプログラム)およびアプリケーションプログラム(実行待ちタスクキューにあるタスクに対応するタスクプログラム)を実行する。
また,プロセッサP1〜Pnは,性能モニタリング機能を有する。この性能モニタリング機能を使用することにより,プロセッサP1〜Pnは,実行した命令数,タスクの処理に要した時間またはクロック数,メモリへのアクセス回数,単位時間当たりに実行した命令数,単位時間当たりのメモリへのアクセス回数,これらの組み合わせ(たとえば単位時間当りに実行される命令数とメモリアクセス回数の合計値)等の性能に関する数値を計測することができる。いずれの数値を計測するかを,各プロセッサにあらかじめ指定しておくことができる。
タイマ4には,プロセッサP1〜Pnのいずれかにより時間が設定され,タイマ4は,設定された時間が経過すると,タイマ割り込み信号をバス3に出力する。出力された割り込み信号は,プロセッサP1〜Pnのいずれかにより受信され処理される。このタイマ4は,たとえば,所定の時間の間,タスクをスリープ状態に置き,所定の時間の経過後,このスリープ状態のタスクを目覚めさせ(ウェイクアップさせ),プロセッサにより実行させる場合に利用される。
I/F5は,この分散処理システム1の外部の装置(コンピュータ等)に接続され,この外部装置との間で通信インタフェースの処理(プロトコルの処理等)を実行する。このI/F5は,外部装置からデータを受信すると,割り込み信号をバス3に出力する。出力された割り込み信号は,いずれかのプロセッサにより受信され処理される。
温度センサH1〜Hnは,それぞれプロセッサP1〜Pnの温度を計測するセンサである。プロセッサPi(iは1〜nのいずれかの整数,以下同じ。)は,対応する温度センサHiの温度をあらかじめ定められた一定時間間隔で読み出し,読み出した温度を共有メモリの所定の領域(後述)に書き込む。
温度センサH1〜Hnは,図1に示すように,プロセッサP1〜Pnとは別に設けられてもよいし,プロセッサP1〜Pnのハードウェア回路に内蔵されていてもよい。温度センサH1〜HnがプロセッサP1〜Pnと別に設けられる場合には,プロセッサP1〜Pnの表面に接触して取り付けられるか,あるいは,プロセッサP1〜Pnの近傍に離間(数mmの間隔を離間)して設置されることとなる。また,プロセッサP1〜Pnが温度センサH1〜Hnの温度をそれぞれ読み出して,共有メモリ2に温度を書き込むのではなく,温度センサH1〜Hnがバス3に直接接続され,一定時間間隔で計測した温度を,バス3を介して共有メモリ2に書き込んでもよい。
共有メモリ2は,たとえばRAMであり,OS(OSプログラム),アプリケーションプログラム等を記憶する。図2は,共有メモリ2に記憶されたデータ(プログラムを含む。)を示している。共有メモリ2に記憶されたデータには,OS,アプリケーションプログラム,プロセッサ温度データ,発熱イベント頻度データ,タスクキュー等が含まれる。
OSは,プロセッサP1〜Pnにより実行される共通のOSであり,プロセッサP1〜Pnは,このOSを読み出して実行する。このOSには,スケジューラ(スケジューリングプログラム)が含まれており,プロセッサP1〜Pnは,このスケジューリングプログラムに従ってスケジューリングを実行する。後に詳述するように,このスケジューリングにおいて,本発明の第1の実施の形態によるタスクのスケジューリング処理(すなわちタスクの選択および割り当て処理)が実行される。
アプリケーションプログラムは,プロセッサP1〜Pnによる実行単位であるタスク(タスクプログラム)に分割され,図2では,m個(mは2以上の整数,以下同じ。)のタスクプログラムK1〜Kmに分割されている。これらのタスクプログラムK1〜Kmが,プロセッサP1〜Pnによって実行されることにより,機能分散および負荷分散の双方またはいずれか一方が図られ,アプリケーションプログラムの処理が高速化される。
タスクキューには,実行待ちのタスク(たとえばタスクプログラムを示す識別子等)がキューイングされている。プロセッサP1〜Pnは,タスクキューに存在するタスクの中から1つを選択して自己または他のプロセッサに割り当てる。タスクを割り当てられたプロセッサは,割り当てられたタスクに対応するタスクプログラムを実行する。また,プロセッサP1〜Pnは,タスクプログラムの実行によって新たにタスクが生成されると,このタスクをタスクキューにキューイングする。
プロセッサ温度データおよび発熱イベント頻度データは,プロセッサP1〜Pnが,タスクスケジューリングを実行する際に,タスクの選択基準として,または,タスクを割り当てる対象となるプロセッサの選択基準として使用される。
プロセッサ温度データは,全プロセッサの平均温度TaおよびプロセッサP1〜Pnのそれぞれの温度T1〜Tnのデータ項目を有する。
温度T1〜Tnは,前述した温度センサH1〜Hnによりそれぞれ計測され,プロセッサP1〜Pnにより一定時間間隔で書き込まれた温度である。したがって,温度T1〜Tnは,一定時間間隔で更新される。
全プロセッサの平均温度Taは,温度T1〜Tnの平均値である。すなわち,Ta=(T1+T2+…+Tn)÷nにより求められる。この平均温度Taは,たとえばプロセッサPiが温度Tiを書き込んだ時に,書き込み後,プロセッサPiにより温度T1〜Tnに基づいて計算され,更新される。したがって,この平均温度Taは,各プロセッサP1〜Pnが自己の温度を書き込む際に,更新されることとなる。
発熱イベント頻度データは,各プロセッサの温度上昇または消費電力増加の度合いに関連するタスクの特性値の一例である。この発熱イベント頻度データは,現在までの発熱イベント頻度の平均値(平均発熱イベント頻度)EaおよびタスクプログラムK1〜Kmのそれぞれについての発熱イベント頻度E1〜Emのデータ項目を有する。
ここで,「発熱イベント」とは,プロセッサに熱を発生させる原因となるイベントであり,たとえばプロセッサにより実行される命令,プロセッサの内部メモリまたは共有メモリ2へのアクセス等を発熱イベントとして挙げることができる。したがって,「発熱イベント頻度」としては,たとえば,タスクまたはOSの処理における単位時間当たりに実行される命令数,単位時間当りのメモリアクセス回数,これらの組み合わせ(たとえば単位時間当りに実行される命令数とメモリアクセス回数の合計値)等がある。
なお,発熱イベント頻度の代わりに,各タスクに含まれる命令数やメモリアクセス回数等の「発熱イベント数」を使用することもできる。また,タスクの処理に要する時間をタスクの選択基準として使用することもできる。
本実施の形態では,一例として「発熱イベント頻度」を使用し,また,発熱イベント頻度として,各タスクの実行時に,単位時間当たりに実行される命令数を使用することとする。すなわち,タスクプログラムK1〜Kmのそれぞれについて,実行された命令数をI1〜Imとし,これらの命令数をそれぞれ実行するのに要する時間(またはクロック数)をt1〜tmとすると,発熱イベント頻度E1〜Emは,E1=I1÷t1,…,Ei=Ii÷ti,…,Em=Im÷tmとなる。なお,時間としてクロック数を使用した場合に,発熱イベント頻度の単位はIPC(Instruction per Clock)となる。
たとえば,タスクプログラムKj(jは1〜mのいずれかの整数,以下同じ。)がプロセッサPiにより実行されると,プロセッサPiは,性能モニタリング機能を使用して,タスクプログラムKjの実行した命令数および実行に要する時間を計測し,これら命令数および時間から発熱イベント頻度Ejを計算する。そして,プロセッサPiは,発熱イベント頻度Ejを共有メモリ2に書き込む。
これらの命令数や時間は,プロセッサPiがタスクプログラムKjの実行開始時に性能モニタリング機能から読み出した値と,実行終了時に性能モニタリング機能から読み出した値との差分により求めることもできるし,プロセッサPiがタスクプログラムKjの実行開始時に性能モニタリング機能の値を0にリセットし,実行終了時に性能モニタリング機能から読み出した値により求めることもできる。
また,同じタスクプログラムKjであっても,ある時点で実行された場合の発熱イベント頻度の値と,他の時点で実行された場合の発熱イベント頻度の値とが異なる場合がある。たとえば,タスクプログラムKjが条件分岐や繰り返しループを有する場合に,ある時点で実行されたときの,選択された分岐や繰り返しループ回数と,他の時点で実行されたときの,選択された分岐や繰り返しループ回数とが異なる場合に,このような発熱イベント頻度の値が異なる事態が生じる。
したがって,発熱イベント頻度Ejとしては,(a)タスクプログラムKjが最も近時に実行された時点の値とすることもできるし,(b)タスクプログラムKjがこれまでに実行されたすべての場合の平均発熱イベント頻度値とすることもできる。
前者(a)の場合に,プロセッサPiは,タスクプログラムKjの実行後,性能モニタリング機能により求められた発熱イベント頻度Ejを共有メモリ2の所定のアドレスに書き込む(上書きする)だけでよい。
後者(b)の場合に,図2における図示は省略するが,共有メモリ2には,タスクプログラムKjがこれまでに実行されたすべての場合の命令数の合計値(Ija11とする。)と,実行に要した時間の合計値(tja11とする。)とが記憶される。たとえば,タスクプログラムKjがこれまでにx回実行されている場合には,Ija11=Ij1+Ij2+…+Ijx,tja11=tj1+tj2+…+tjxとなる(Ijk(kは1〜xのいずれかの整数)はタスクプログラムKjが第k回目に実行された場合の命令数,tjkはタスクプログラムKjが第k回目に実行された場合の実行時間)。そして,命令数の合計値を時間の合計値で割った値が発熱イベント頻度Ejとされる。すなわち,Ej=Ija11÷tja11となる。
たとえば,プロセッサPiが,第(x+1)回目のタスクプログラムKjを実行した場合に,実行後,性能モニタリング機能により求められた命令数Ijx+1および実行時間tjx+1を,共有メモリ2に記憶されたIja11およびtja11にそれぞれ加算し,加算後の値に基づいてEj=Ija11÷tja11を計算し,計算したEjを新たな発熱イベントEjとして共有メモリ2に書き込む(上書きする)こととなる。
なお,タスクプログラムが実行されないと,発熱イベント頻度は求められないので,タスクプログラムが1度も実行されていない時点における発熱イベント頻度E1〜Emの値(すなわち初期値)は,あらかじめ定められた値とされる。この初期値は,たとえばタスクプログラムK1〜Kmを実験やシミュレーションにより実行して求めた値とすることができる。
「現在までの平均発熱イベント頻度Ea」は,全プロセッサPi〜Pnにより,これまでに実行されたすべてのタスクの平均発熱イベント頻度値である。
すなわち,平均値Eaは,タスクプログラムK1〜Kmのそれぞれについてのこれまでの実行命令数の合計値の総和(Ia11=I1a11+I2a11+…+Ima11)を,これまでの実行命令数の合計値の総和(ta11=t1a11+t2a11+…+tma11)で割った値(Ea=Ia11÷ta11)とされる。
なお,各タスクプログラムの毎回の実行時間を一定であるとみなすと,平均値Eaは以下の式で表すこともできる。
Ea={(E11+E12…+E1n1)+(E21+E22…+E2n2)+…+(Ej1+Ej2…+Ejnj)+…+(Em1+Em2…+Emnm)}÷(n1+n2+…+nj+…+nm)
ここで,タスクKjはnj回実行され,第1回から第nj回までのそれぞれの発熱イベント頻度をEj1〜Ejnjとしている。
プロセッサPiは,タスクプログラムKjの実行後,タスクプログラムKjの発熱イベント頻度Ejを更新するとともに,平均発熱イベント頻度Eaの値も計算し,計算した値により,共有メモリ2の値を更新する。
このようなマルチプロセッサシステム1において,プロセッサP1〜Pnは,これまで実行していたタスク(タスクプログラム)の処理が終了したり,タスクの切り替えが発生したり,あるいは,タイマ4またはI/F5から割り込みが発生したりすると,タスクキューにキューイングされた実行待ちのタスクから1つを選択し,選択したタスクを自己または他のプロセッサに割り当てるタスクスケジューリングを実行する。このタスクスケジューリングの方法には,以下の方法がある。
(1)第1のタスクスケジューリング方法
第1のタスクスケジューリング方法は,タスクを実行していないアイドル状態のプロセッサが複数存在する場合に,アイドル状態のプロセッサの温度にのみ基づいて,温度の最も低いプロセッサにタスクを割り当てるものである。
たとえば,タイマ4が,設定された時間の経過により割り込み信号を発生し,この割り込み信号がプロセッサPiにより受信されると,プロセッサPiは,これまで実行していたタスクを一時的に中断し,スケジューラを実行する。あるいは,プロセッサPiがアイドル状態にある場合には,割り込み信号の受信により直ちにスケジューラを実行する。
プロセッサPiは,割り込み信号受信時におけるアイドル状態のプロセッサが複数あるかどうかを判断する。プロセッサPi自身もアイドル状態にあるならば,自己も対象となる。プロセッサがアイドル状態にあるかどうかは,プロセッサPiが各プロセッサに問い合わせることによって確認することもできるし,各プロセッサが共有メモリ2の所定の領域に自己の状態(アイドル状態またはタスク処理状態)を書き込む場合には,この領域を読み出すことによって判断することもできる。
続いて,アイドル状態のプロセッサが複数存在する場合に,プロセッサPiは,アイドル状態にあるプロセッサの温度を共有メモリ2から読み出し,温度の最も低いプロセッサを選択する。温度の最も低いプロセッサが複数存在する場合には,たとえば擬似乱数等を発生させ,発生された数値に基づいて1つのプロセッサを選択することができる。
続いて,プロセッサPiは,選択したプロセッサに,ウェイクアップ状態に移行するタスクを割り当てる。
I/F5から割り込み信号がプロセッサPiに入力された場合にも,プロセッサPiは,同様にして,アイドル状態にあるプロセッサのうち,温度の最も低いプロセッサを選択し,選択したプロセッサにタスク(たとえばI/F5からのデータ受信処理等)を割り当てることができる。
このように,アイドル状態にあるプロセッサのうち,温度の最も低いプロセッサにタスクが割り当てられ,実行されるので,各プロセッサの発熱量が均等化されて行き,その結果,各プロセッサの温度を均一にすることができる。
なお,アイドル状態のプロセッサが1つの場合には,このプロセッサにタスクを割り当てることもできるし,他のプロセッサで温度の最も低いものに,割り当てることもできる。また,アイドル状態のプロセッサが存在しない場合にも,温度の最も低いプロセッサにタスクを割り当てることもできる。アイドル状態でないプロセッサにタスクが割り当てられた場合には,割り当てられるタスクの優先順位が実行中のタスクの優先順位より高い場合には,実行中のタスクが中断され,新たに割り当てられたタスクを実行することもできる。
(2)第2のタスクスケジューリング方法
第2のタスクスケジューリング方法は,プロセッサの温度および発熱イベント頻度の双方に基づいてタスクを選択し,割り当てるものである。図3は,各プロセッサにより実行される第2のタスクスケジューリング方法の処理の流れを示すフローチャートである。この処理は,前述したように,OSのスケジューラの一部である。
プロセッサPiにおいて,これまで実行していたタスクの処理が終了し,または,タスクの切り替えが実行されると,プロセッサPiは,共有メモリ2にアクセスして,共有メモリ2のタスクキューに複数のタスクが存在するかどうかを判断する(S1)。
タスクキューに複数のタスクが存在する場合には(S1でYES),プロセッサPiは,自己の温度Tiと共有メモリ2に記憶された平均温度Taとを比較する(S2)。ここで,自己の温度Tiは,共有メモリ2に記憶されたものを使用することもできるし,プロセッサPiが,この比較を行う時に,温度センサHiから読み出したものを使用することもできる。
Ti>Taであるならば(S2でYES),プロセッサPiは,タスクキューに存在する各タスクの発熱イベント頻度Eおよび平均発熱イベント頻度Eaを共有メモリ2から読み出し,各タスクの発熱イベントと平均発熱イベント頻度Eaとをそれぞれ比較する(S3)。そして,プロセッサPiは,平均発熱イベント頻度Ea以下の発熱イベント頻度E(すなわちE≦Ea)を有するタスクがタスクキューに存在するかどうかを判断する(S3)。
E≦Eaとなるタスクがタスクキューに存在する場合には(S2でYES),プロセッサPiは,E≦Eaとなるタスクからタスクを1つ選択し(S4),選択したタスクを実行する。E≦Eaとなるタスクが1つの場合には,そのタスクが選択される。
ここで,E≦Eaとなるタスクが複数存在する場合には,その中で最小の発熱イベント頻度を有するタスクを選択することもできるし,その中で最大の発熱イベント頻度を有するタスクを選択することもできるし,中程度の発熱イベント頻度を有するタスクを選択することもできる。あるいは,擬似乱数等の数値を発生させ,この数値に基づいてタスクを選択することもできる。また,通常のスケジューリングと同様に,タスクの優先順位に基づいて最も優先順位の高いタスクを選択することもできる。さらに,同じ優先順位を有するタスクが複数存在する場合には,その中から,タスクキューの先頭位置により近いタスクまたはタスクキューに時間的に先にキューイングされたタスクを選択することもできる。
一方,E≦Eaとなるタスクがタスクキューに存在しない場合には(S3でNO),プロセッサPiは,タスクキューに存在するタスクのうち,最小の発熱イベント頻度Eを有するタスクを選択し(S5),選択したタスクを実行する。
ステップS2において、Ti≦Taである場合に(S2でNO),プロセッサPiは,タスクキューに存在するタスクの中で,平均発熱イベント頻度Eaより大きな発熱イベント頻度E(E>Ea)を有するタスクが存在するかどうかを判断する(S6)。
E>Eaとなるタスクがタスクキューに存在する場合には(S6でYES),プロセッサPiは,E>Eaとなるタスクの中からタスクを1つ選択し(S7),選択したタスクを実行する。E>Eaとなるタスクが1つの場合には,そのタスクが選択される。
E>Eaとなるタスクが複数存在する場合には,前述したのと同様に,その中から最大の発熱イベント頻度,最小の発熱イベント頻度,または中程度の発熱イベント頻度を有するタスクを選択したり,擬似乱数等の数値に基づいて選択したり,あるいは,通常のスケジューリングと同様の選択処理によりタスクを選択することができる。
E>Eaとなるタスクがタスクキューに存在しない場合には(S6でNO),プロセッサPiは,タスクキューに存在するタスクの中で最大の発熱イベント頻度Eを有するタスクを選択し(S8),選択したタスクを実行する。
ステップS1において,タスクキューに複数のタスクが存在しない場合には,プロセッサPiは,さらにタスクキューに存在するタスクが1つかどうかを判断する(S9)。タスクキューに存在するタスクが1つならば(S9でYES),プロセッサPiはそのタスクを選択して(S10),実行し,タスクキューにタスクが存在しない場合には(S9でNO),プロセッサPiは,アイドルタスクを実行する。
なお,選択されたタスクは,タスクキューから消去される。また,プロセッサPiは,タスクキューにタスクが存在しない場合に,アイドルタスクを実行するのではなく,自己を停止状態にすることもできる。この場合には,タスクキューにタスクが発生した時点で,他の稼動状態にあるプロセッサによって,プロセッサPiは停止状態から稼動状態にされることとなる。
このように第2のタスクスケジューリング方法によると,プロセッサPiの温度Tiが平均温度Taと比較され,温度Tiが平均温度Ta以下である場合には,タスクキューに存在するタスクのうち,なるべく大きな発熱イベント頻度を有するタスクが選択される。したがって,選択されたタスクをプロセッサPiが実行することにより発生する発熱量は,一般に,平均的な発熱量よりも大きくなる。一方,温度Tiが平均温度Taより大きな場合には,なるべく小さな発熱イベント頻度を有するタスクが選択される。したがって,選択されたタスクをプロセッサPiが実行することにより発生する発熱量は,一般に,平均的な発熱量よりも小さくなる。
これにより,各プロセッサの発熱量が均等化されて行き,その結果,各プロセッサの温度が均一化されるので,ある特定のプロセッサ(群)のみが高温になることを防止することができる。その結果,各プロセッサに大規模なファンを取り付けたり,熱設計のために大きな筐体を設けたりする必要が回避され,システムのコスト増大および大型化が防止できる。また,プロセッサの電圧や周波数を抑制することも回避でき,各プロセッサの処理能力を最大限活用することもできる。
なお,ステップS2における比較Ti>Taは,Ti≧Taであってもよいし,ステップS3における比較をE<Eaとし,ステップS6における比較をE≧Eaとしてもよい。
(3)第3のタスクスケジューリング方法
第3のタスクスケジューリング方法も,第2のタスクスケジューリング方法と同様に,プロセッサの温度および発熱イベント頻度に基づいてタスクの選択および割り当てを行うものである。図4は,各プロセッサにより実行される第3のタスクスケジューリング方法の処理の流れを示すフローチャートである。この処理は,前述したように,OSのスケジューラの一部である。
プロセッサPiは,タスクキューに複数のタスクが存在するかどうかを判断する(S21)。タスクキューに複数のタスクが存在する場合には(S21でYES),プロセッサPiは,共有メモリ2に記憶されたプロセッサ温度データに基づいて,全プロセッサの温度T1〜Tnにおける自己の温度Tiの,温度の低いものからの順位(順位rとする。)を求める(S22)。
続いて,プロセッサPiは,タスクキューに存在するタスクを,発熱イベント頻度に基づいて発熱イベント頻度の値の大きなものから小さなものに向けてソートする(S23)。
次に,プロセッサPiは,ステップS22で求めた自己の温度Tiの順位rに対応した発熱イベント頻度を有するタスクの中から1つのタスクを選択し(S24),選択したタスクを実行する。
ここで,自己の温度Tiの順位rに対応した発熱イベント頻度は,たとえば,次のようにして決定される。まず,プロセッサPiは,タスクキューに存在するタスクを,発熱イベント頻度の大きなものから小さなものに向けてn個(すなわちプロセッサP1〜Pnの個数)のグループG1〜Gnに分割する。そして,プロセッサPiは,自己の温度の順位rに対応するグループGrに属するタスクの中からタスクを1つ選択する。すなわち,自己の温度の順位が全プロセッサにおいて,低いものからr番目に位置する場合には,発熱イベント頻度の大きなものからr番目のグループGrからタスクが選択される。
これにより,相対的に温度の低いプロセッサには,相対的に発熱イベント頻度の高いタスクが割り当てられ,相対的に温度の高いプロセッサには,相対的に発熱イベント頻度の低いタスクが割り当てられる。その結果,各プロセッサの発熱量が平均化され,各プロセッサの温度が均一化されるので,ある特定のプロセッサ(群)のみが高温になることを防止することができる。その結果,プロセッサに大規模なファンを取り付けたり,熱設計のために大きな筐体を設けたりする必要が回避され,システムのコスト増大および大型化が防止できる。また,プロセッサの電圧や周波数を抑制することも回避でき,各プロセッサの処理能力を最大限活用することもできる。
なお,タスクキューに存在するタスクの個数(個数pとする。)がプロセッサの個数n未満(すなわちp<n)である場合には,タスクキューに存在するタスクをn個のグループに分割するのではなく,温度の順位を,温度の低いものから高いものに向けてp個のグループG1〜Gpに分割し,プロセッサPiの温度Tiが属するグループGrに対応するタスクTrが選択される。すなわち,プロセッサPiの温度Tiが,温度の低いものからr番目のグループGrに属する場合には,発熱イベント頻度の高いものからr番目のタスクが選択される。
これによっても,各プロセッサの発熱量が平均化され,各プロセッサの温度が均一化されるので,ある特定のプロセッサ(群)のみが高温になることを防止することができることは言うまでもない。
一方,ステップS21で,タスクキューに複数のタスクが存在しない場合には,プロセッサPiは,ステップS25およびS26の処理を実行する。これらステップS25およびS26は,前述した図3のステップS9およびS10とそれぞれ同じであるので,ここではその説明を省略する。
<第2の実施の形態>
図5は,本発明の第2の実施の形態による分散処理システム10の構成例を示すブロック図である。この分散処理システム10は,分散コンピューティングシステムであり,コントローラ11,n個のノードN1〜Nn,および通信ネットワーク12を備えている。
ノードN1〜Nnおよびコントローラ11は,通信ネットワーク12に接続され,通信ネットワーク12を介して相互に通信可能となっている。通信ネットワーク12は,たとえばLAN,インターネット等である。
ノードN1〜Nnのそれぞれは,たとえばコンピュータであり,内部に,CPU,MPU等により構成されるプロセッサ21,通信ネットワーク12との通信インタフェース処理を実行する通信インタフェース装置(I/F)22,およびプロセッサ21の温度を測定する温度センサ23を有する。
コントローラ11は,たとえばコンピュータであり,その内部の記憶装置(図示略)には,前述した図2に示す共有メモリ2のデータと同じデータが記憶されている。すなわち,内部の記憶装置には,スケジューラを含むOS,アプリケーションプログラム,プロセッサ温度データ,発熱イベント頻度データ,タスクキュー等が記憶されている。
また,コントローラ11は,内部にタイマを有し,タイマの割り込み信号によって,所定のスリープ状態にあるタスクをウェイクアップ状態にし,このタスクをいずれかのノードに割り当てて実行させることもできる。
本実施の形態において,コントローラ11は,タスクスケジューリングを専用に行い,自らはタスクを実行しない。このため,コントローラ11は,内部の記憶装置に記憶されたスケジューラを実行して,ノードN1〜Nnのタスクスケジューリング処理を実行する。
タスクスケジューリング処理においては,ノードN1〜Nnがタスク割り当て要求をコントローラ11に送信し,コントローラ11がこの要求に応じて,要求を送信したノードに対してタスクを選択し割り当ててもよいし,コントローラ11がアイドル状態のノードに対してタスクを選択し割り当ててもよい。ノードがアイドル状態かどうかは,ノードN1〜Nnからコントローラ11に送信される状態通知によって検知することもできるし,コントローラ11が定期的にノードN1〜Nnの状態をチェックすることによっても検知することができる。
プロセッサ温度データにおける温度T1〜Tnは,本実施の形態では,ノードN1〜Nnのそれぞれのプロセッサ21の温度である。前述した第1の実施の形態と同様に,各ノードのプロセッサ21は,温度センサ23により計測された自己の温度を一定時間間隔で読み出し,読み出した温度をI/F22および通信ネットワーク12を介してコントローラ11に送信する。コントローラ11は,各ノードから送信された温度を内部の記憶装置に記憶する。
また,平均温度Taは,コントローラ11が,温度T1〜Tnに基づいて計算する。コントローラ11は,温度T1〜Tnの少なくとも1つがノードから送信され,更新(記憶)されるごとに,更新後の値に基づいて平均温度Taを求める。
タスクプログラムK1〜Kmのそれぞれの発熱イベント頻度E1〜Emは,ノードN1〜Nnのそれぞれのプロセッサ21の性能モニタリング機能により計測された実行命令数,処理時間(またはクロック数)等によって求められた発熱イベント頻度の値である。各ノードのプロセッサ21は,あるタスクがコントローラ11から割り当てられ,割り当てられたタスクを実行すると,実行後,性能モニタリング機能により計測された実行命令数,処理時間等をコントローラ11に送信する。コントローラ11は,各ノードから送信されたこれらの値に基づいて,第1の実施の形態と同様にして発熱イベント頻度を計算し,第1の実施の形態における方法(a)または(b)により,内部の記憶装置に記憶(更新)する。
また,平均発熱イベント頻度Eaは,前述した第1の実施の形態と同様にして,コントローラ11により計算され,記憶される。
このような分散処理システム10において,コントローラ11は,前述した第1の実施の形態における第1,第2,または第3のタスクスケジューリング方法を実行することにより,タスクの選択および割り当てを行う。具体的には,次のようにタスクスケジューリング処理が実行される。
(1)第1のタスクスケジューリング方法
コントローラ11は,たとえば,内部のタイマの割り込み信号により,スリープ状態のタスクをウェイクアップ状態にしてノードに割り当てる場合に,アイドル状態のノードが存在するかどうかを確認する。アイドル状態のノードが複数存在する場合に,コントローラ11は,それらノードの中から,温度の最も低いプロセッサを有するノードを選択し,選択したノードに,ウェイクアップ状態に移行するタスクを割り当て,実行させる。
このように,アイドル状態にあるノードのうち,温度の最も低いノードにタスクが割り当てられ,実行されるので,各ノードのプロセッサの発熱量が均等化されて行き,その結果,各ノードの温度を均一にすることができる。
なお,アイドル状態のノードが1つの場合には,このノードにタスクを割り当てることもできるし,他のノードで温度の最も低いプロセッサを有するものに,割り当てることもできる。また,アイドル状態のノードが存在しない場合にも,温度の最も低いプロセッサを有するノードにタスクを割り当てることもできる。アイドル状態でないノードにタスクが割り当てられた場合には,割り当てられるタスクの優先順位が実行中のタスクの優先順位より高い場合には,実行中のタスクが中断され,新たに割り当てられたタスクを実行することもできる。
(2)第2のタスクスケジューリング方法
コントローラ11は,ノードNiからタスクの割り当て要求を受信すると,ノードNiの温度Ti,平均温度Ta,平均発熱イベント頻度Ea,および各発熱イベント頻度E1〜Emに基づいて,図3に示すフローチャートの処理を実行し,ノードNiに割り当てるタスクを選択する。そして,コントローラ11は,選択したタスクをノードNiに割り当てる。
コントローラ11がアイドル状態のノードNiを検出し,このアイドル状態のノードNiに対して,図3に示すフローチャートの処理によりタスクを選択し,選択したタスクを割り当ててもよい。
これにより,各プロセッサの発熱量が均等化されて行き,その結果,各プロセッサの温度が均一化されるので,ある特定ノードのプロセッサ(群)のみが高温になることを防止することができる。
(3)第3のタスクスケジューリング方法
コントローラ11は,ノードNiからタスクの割り当て要求を受信すると,図4に示すフローチャートの処理を実行し,ノードNiに割り当てるタスクを選択する。そして,コントローラ11は,選択したタスクをノードNiに割り当てる。
コントローラ11がアイドル状態のノードNiを検出し,このアイドル状態のノードNiに対して,図3に示すフローチャートの処理によりタスクを選択し,選択したタスクを割り当ててもよい。
これにより,各プロセッサの発熱量が均等化されて行き,その結果,各プロセッサの温度が均一化されるので,ある特定ノードのプロセッサ(群)のみが高温になることを防止することができる。
<他の実施の形態>
第1および第2の実施の形態において,プロセッサの温度に代えてプロセッサの消費電力を,プロセッサ(ノード)の選択基準またはタスクの選択基準に用いることもできる。この場合には,各プロセッサに内蔵され,または,各プロセッサに取り付けられる消費電力計測回路が消費電力を計測し,共有メモリ2またはコントローラ11の内部メモリには,プロセッサ温度データの代わりに,各プロセッサの消費電力の累積値およびその平均値が記憶される。
また,第1および第2の実施の形態において,発熱イベント頻度を,実行されるすべての命令を対象にして求めるのではなく,発熱量(および消費電力)の多い浮動小数点演算命令のみを対象にして求めることもできる。
第2の実施の形態において,1つのノードが,図1に示すように,複数のプロセッサを有するマルチプロセッサシステムであってもよい。この場合には,コントローラ11は,各ノードのプロセッサごとにタスクを選択して割り当てることができる。
なお,第1の実施の形態に示すマルチプロセッサシステムにおいても,プロセッサP1〜Pnとは別にコントローラを設け,このコントローラが,第2の実施の形態におけるコントローラ11の機能を実行して,プロセッサP1〜Pnへのタスクスケジューリングを実行することもできる。
産業上の利用の可能性
本発明は,マルチプロセッサシステム,複数のコンピュータが通信ネットワークに接続された分散コンピューティングシステム等の分散処理システムに適用することができる。
本発明によると,分散処理システムの各処理装置(プロセッサ,コンピュータ等)の温度を均一にさせて行くことができる。その結果,各処理装置に大規模なファンを取り付けたり,熱設計のために大きな筐体を設けたりする必要が回避され,システムのコスト増大および大型化が防止できる。また,各処理装置の電圧や周波数を抑制することも回避でき,各処理装置の処理能力を最大限活用することもできる。
【図面の簡単な説明】
図1は,本発明の第1の実施の形態による分散処理システムの構成例を示すブロック図である。
図2は,共有メモリに記憶されたデータを示す。
図3は,各プロセッサにより実行される第2のタスクスケジューリング方法の処理の流れを示すフローチャートである。
図4は,各プロセッサにより実行される第3のタスクスケジューリング方法の処理の流れを示すフローチャートである。
図5は,本発明の第2の実施の形態による分散処理システムの構成例を示すブロック図である。
Claims (19)
- 複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムの前記各処理装置へのタスクスケジューリングを実行するタスクスケジューリング装置であって,
前記計測装置により計測された各処理装置の温度または消費電力を比較する比較部と,
前記比較部の比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てるタスク割り当て部と,
を備えているタスクスケジューリング装置。 - 請求の範囲第1項において,
前記タスクスケジューリング装置は,前記複数の処理装置の少なくとも1つに設けられ,自己または他の処理装置に前記タスクスケジューリングを実行する,
タスクスケジューリング装置。 - 請求の範囲第1項または第2項において,
前記比較部は,前記複数の処理装置のうち,アイドル状態にある処理装置の温度または消費電力を比較する,
タスクスケジューリング装置。 - 複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムの前記各処理装置へのタスクスケジューリングを実行するタスクスケジューリング装置であって,
各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値をタスクごとに記憶する記憶部と,
タスクの割り当て対象となる処理装置についての,前記計測装置により計測された温度または消費電力と,前記記憶部に記憶された前記特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択し,該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てるタスク割り当て部と,
を備えているタスクスケジューリング装置。 - 請求の範囲第4項において,
前記特性値が,各タスクの単位時間当たりに処理される命令数を表すイベント頻度であり,
前記タスク割り当て部は,前記タスクの割り当て対象となる処理装置の温度が前記複数の処理装置の平均温度以上もしくは平均温度より高いか,または,前記処理装置の消費電力が前記複数の処理装置の平均消費電力以上もしくは平均消費電力よりも高い場合には,これまでに実行されたすべてのタスクのイベント頻度の平均値以下または平均値より小さなイベント頻度を有するタスクを実行待ちタスクから選択して前記処理装置に割り当てる,
タスクスケジューリング装置。 - 請求の範囲第5項において,
前記タスク割り当て部は,前記これまでに実行されたタスクのイベント頻度の平均値以下または平均値より小さなイベント頻度を有するタスクが実行待ちのタスクの中に存在しない場合には,実行待ちのタスクの中から最小のイベント頻度を有するタスクを前記処理装置に割り当てる,
タスクスケジューリング装置。 - 請求の範囲第4項において,
前記特性値が,各タスクの単位時間当たりに処理される命令数を表すイベント頻度であり,
前記タスク割り当て部は,前記タスクの割り当て対象となる処理装置の温度が前記複数の処理装置の平均温度以下もしくは平均温度より小さいか,または,前記処理装置の消費電力が前記複数の処理装置の平均消費電力以下もしくは平均消費電力より小さい場合には,これまでに実行されたすべてのタスクのイベント頻度の平均値以上または平均値より大きなイベント頻度を有するタスクを実行待ちタスクから選択して前記処理装置に割り当てる,
タスクスケジューリング装置。 - 請求の範囲第7項において,
前記タスク割り当て部は,前記これまでに実行されたタスクのイベント頻度の平均値以下または平均値より小さなイベント頻度を有するタスクが実行待ちのタスクの中に存在しない場合には,実行待ちのタスクの中から最大のイベント頻度を有するタスクを前記処理装置に割り当てる,
タスクスケジューリング装置。 - 請求の範囲第4項において,
前記特性値が,各タスクの単位時間当たりに処理される命令数を表すイベント頻度であり,
前記タスク割り当て部は,前記複数の処理装置における,前記タスクの割り当て対象となる処理装置の温度の順位を求め,実行待ちタスクをイベント頻度の値に基づいてソートし,前記温度の順位に対応するイベント頻度の順位を有するタスクを選択して割り当てる,
タスクスケジューリング装置。 - 請求の範囲第9項において,
前記タスク割り当て部は,前記温度の順位が高いものからの順位である場合には,前記タスクを,低いイベント頻度から高いイベント頻度に向けてソートし,前記温度の順位が低いものからの順位である場合には,前記タスクを,高いイベント頻度から低いイベント頻度に向けてソートする,
タスクスケジューリング装置。 - 請求の範囲第4項において,
前記記憶部に記憶された特性値は,タスクに含まれる命令の個数,単位時間当たりに処理される前記命令の個数,タスクの実行時に行われるメモリへのアクセス回数,単位時間当たりのメモリへのアクセス回数,前記命令と前記アクセス回数との合計値,単位時間当たりの前記命令と前記アクセス回数との合計値,または前記タスクの処理に要する処理時間である,
タスクスケジューリング装置。 - 請求の範囲第5項から第11項のいずれか1項において,
前記命令は浮動小数点演算命令である,タスクスケジューリング装置。 - 請求の範囲第4から第12項のいずれか1項において,
前記タスクスケジューリング装置は,前記複数の処理装置の1つであり,自己または他の処理装置に前記タスクスケジューリングを実行する,
タスクスケジューリング装置。 - 複数のタスクを分散して処理する複数の処理装置を有する分散処理システムであって,
前記複数の処理装置のそれぞれの温度または消費電力を計測する計測装置と,
前記複数の処理装置とは別装置として設けられ,または,前記複数の処理装置の少なくとも1つに設けられ,前記計測装置により計測された各処理装置の温度または消費電力を比較し,前記比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てるタスクスケジューリング装置と,
を備えている分散処理システム。 - 複数のタスクを分散して処理する複数の処理装置を有する分散処理システムであって,
前記複数の処理装置のそれぞれの温度または消費電力を計測する計測装置と,
各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値をタスクごとに記憶する記憶装置と,
タスクの割り当て対象となる処理装置についての,前記計測装置により計測された温度または消費電力と,前記記憶装置に記憶された前記特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択し,該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てるタスク割り当て部と,
を備えている分散処理システム。 - 複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムにおける前記複数の処理の少なくとも1つにより,または,前記複数の処理装置とは別個に設けられた制御装置により実行されるタスクスケジューリング方法であって,
前記計測装置により計測された各処理装置の温度または消費電力を比較し,
前記比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てる,
タスクスケジューリング方法。 - 複数のタスクを分散して処理する複数の処理装置と各処理装置の温度または消費電力を計測する計測装置とを有する分散処理システムにおける前記複数の処理の少なくとも1つにより,または,前記複数の処理装置とは別個に設けられた制御装置により実行されるタスクスケジューリング方法であって,
タスクの割り当て対象となる処理装置についての,前記計測装置により計測された温度または消費電力と,内部のメモリまたは外部の共有メモリに記憶され,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択し,
該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てる,
タスクスケジューリング方法。 - 複数のタスクを分散して処理する複数の処理装置の少なくとも1つまたは前記複数の処理装置とは別個に設けられた制御装置に設けられたコンピュータに,
各処理装置の温度または消費電力を計測する計測装置によって計測された前記各処理装置の温度または消費電力を比較する手順と,
前記比較の結果,前記計測装置により計測された温度または消費電力が最も低い処理装置にタスクを割り当てる手順と,
を実行させるためのプログラム。 - 複数のタスクを分散して処理する複数の処理装置の少なくとも1つまたは前記複数の処理装置とは別個に設けられた制御装置に設けられたコンピュータに,
タスクの割り当て対象となる処理装置についての,計測装置により計測された温度または消費電力と,内部のメモリまたは外部の共有メモリに記憶され,各タスクの実行に伴う各処理装置の温度上昇または消費電力増加の度合いに関連するタスクの特性値とに基づいて,前記タスクの割り当て対象となる処理装置に割り当てるタスクを実行待ちのタスクから選択する手順と,
該選択したタスクを前記タスクを割り当てる対象となる処理装置に割り当てる手順と,
を実行させるためのプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2002/003324 WO2003083693A1 (fr) | 2002-04-03 | 2002-04-03 | Planificateur de taches dans un systeme de traitement distribue |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2003083693A1 true JPWO2003083693A1 (ja) | 2005-08-04 |
Family
ID=28470426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003581048A Pending JPWO2003083693A1 (ja) | 2002-04-03 | 2002-04-03 | 分散処理システムにおけるタスクスケジューリング装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20050278520A1 (ja) |
JP (1) | JPWO2003083693A1 (ja) |
WO (1) | WO2003083693A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015060345A (ja) * | 2013-09-18 | 2015-03-30 | 日本電気株式会社 | 消費電力を制御する情報処理装置、電力制御方法、及びそのためのプログラム |
Families Citing this family (120)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7516334B2 (en) * | 2001-03-22 | 2009-04-07 | Sony Computer Entertainment Inc. | Power management for processing modules |
US7127625B2 (en) * | 2003-09-04 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Application management based on power consumption |
US20050132239A1 (en) * | 2003-12-16 | 2005-06-16 | Athas William C. | Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution |
US20050228967A1 (en) * | 2004-03-16 | 2005-10-13 | Sony Computer Entertainment Inc. | Methods and apparatus for reducing power dissipation in a multi-processor system |
US7360102B2 (en) * | 2004-03-29 | 2008-04-15 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processor manipulation |
US8224639B2 (en) | 2004-03-29 | 2012-07-17 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processing task scheduling |
JP3830491B2 (ja) * | 2004-03-29 | 2006-10-04 | 株式会社ソニー・コンピュータエンタテインメント | プロセッサ、マルチプロセッサシステム、プロセッサシステム、情報処理装置および温度制御方法 |
US7330983B2 (en) | 2004-06-14 | 2008-02-12 | Intel Corporation | Temperature-aware steering mechanism |
JP3805344B2 (ja) * | 2004-06-22 | 2006-08-02 | 株式会社ソニー・コンピュータエンタテインメント | プロセッサ、情報処理装置およびプロセッサの制御方法 |
JP4465598B2 (ja) * | 2004-07-05 | 2010-05-19 | ソニー株式会社 | 集積回路およびその処理制御方法、並びに、プログラム |
JP4197672B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びプログラム |
JP4197673B2 (ja) * | 2004-09-30 | 2008-12-17 | 株式会社東芝 | マルチプロセッサ計算機及びタスク実行方法 |
US20060107262A1 (en) * | 2004-11-03 | 2006-05-18 | Intel Corporation | Power consumption-based thread scheduling |
US9063785B2 (en) * | 2004-11-03 | 2015-06-23 | Intel Corporation | Temperature-based thread scheduling |
JP3914230B2 (ja) * | 2004-11-04 | 2007-05-16 | 株式会社東芝 | プロセッサシステム及びその制御方法 |
JP4553307B2 (ja) * | 2004-11-19 | 2010-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、制御方法、及びプログラム |
US7702929B2 (en) * | 2004-11-29 | 2010-04-20 | Marvell World Trade Ltd. | Low voltage logic operation using higher voltage supply levels |
US7793291B2 (en) * | 2004-12-22 | 2010-09-07 | International Business Machines Corporation | Thermal management of a multi-processor computer system |
US7409570B2 (en) * | 2005-05-10 | 2008-08-05 | Sony Computer Entertainment Inc. | Multiprocessor system for decrypting and resuming execution of an executing program after transferring the program code between two processors via a shared main memory upon occurrence of predetermined condition |
US20060265712A1 (en) * | 2005-05-18 | 2006-11-23 | Docomo Communications Laboratories Usa, Inc. | Methods for supporting intra-document parallelism in XSLT processing on devices with multiple processors |
JP4476876B2 (ja) * | 2005-06-10 | 2010-06-09 | 三菱電機株式会社 | 並列計算装置 |
US8516300B2 (en) | 2005-08-29 | 2013-08-20 | The Invention Science Fund I, Llc | Multi-votage synchronous systems |
US8375247B2 (en) * | 2005-08-29 | 2013-02-12 | The Invention Science Fund I, Llc | Handling processor computational errors |
US8423824B2 (en) * | 2005-08-29 | 2013-04-16 | The Invention Science Fund I, Llc | Power sparing synchronous apparatus |
US7512530B2 (en) * | 2005-11-29 | 2009-03-31 | International Business Machines Corporation | Generation of software thermal profiles for applications in a simulated environment |
US7512513B2 (en) * | 2005-11-29 | 2009-03-31 | International Business Machines Corporation | Thermal throttling control for testing of real-time software |
US7480586B2 (en) * | 2005-11-29 | 2009-01-20 | International Business Machines Corporation | Thermal interrupt generation |
US7460932B2 (en) * | 2005-11-29 | 2008-12-02 | International Business Machines Corporation | Support of deep power savings mode and partial good in a thermal management system |
US7603576B2 (en) * | 2005-11-29 | 2009-10-13 | International Business Machines Corporation | Hysteresis in thermal throttling |
US7698089B2 (en) * | 2005-11-29 | 2010-04-13 | International Business Machines Corporation | Generation of software thermal profiles executed on a set of processors using processor activity |
US20070124618A1 (en) * | 2005-11-29 | 2007-05-31 | Aguilar Maximino Jr | Optimizing power and performance using software and hardware thermal profiles |
US7721128B2 (en) * | 2005-11-29 | 2010-05-18 | International Business Machines Corporation | Implementation of thermal throttling logic |
US7681053B2 (en) * | 2005-11-29 | 2010-03-16 | International Business Machines Corporation | Thermal throttle control with minimal impact to interrupt latency |
US7848901B2 (en) * | 2005-11-29 | 2010-12-07 | International Business Machines Corporation | Tracing thermal data via performance monitoring |
US8495613B2 (en) * | 2005-12-22 | 2013-07-23 | Microsoft Corporation | Program execution service windows |
JP2007241376A (ja) * | 2006-03-06 | 2007-09-20 | Fujitsu Ten Ltd | 情報処理装置 |
US7596430B2 (en) * | 2006-05-03 | 2009-09-29 | International Business Machines Corporation | Selection of processor cores for optimal thermal performance |
US8037893B2 (en) * | 2006-05-03 | 2011-10-18 | International Business Machines Corporation | Optimizing thermal performance using thermal flow analysis |
US20070260894A1 (en) * | 2006-05-03 | 2007-11-08 | Aguilar Maximino Jr | Optimizing thermal performance using feed-back directed optimization |
US7552346B2 (en) * | 2006-05-03 | 2009-06-23 | International Business Machines Corporation | Dynamically adapting software for reducing a thermal state of a processor core based on its thermal index |
US20080005591A1 (en) | 2006-06-28 | 2008-01-03 | Trautman Mark A | Method, system, and apparatus for dynamic thermal management |
US7941805B2 (en) * | 2006-08-15 | 2011-05-10 | International Business Machines Corporation | Affinity dispatching load balancer with precise CPU consumption data |
US20080172398A1 (en) * | 2007-01-12 | 2008-07-17 | Borkenhagen John M | Selection of Processors for Job Scheduling Using Measured Power Consumption Ratings |
US8615767B2 (en) * | 2007-02-06 | 2013-12-24 | International Business Machines Corporation | Using IR drop data for instruction thread direction |
US7779235B2 (en) * | 2007-02-06 | 2010-08-17 | International Business Machines Corporation | Using performance data for instruction thread direction |
US8022685B2 (en) * | 2007-02-06 | 2011-09-20 | International Business Machines Corporation | Temperature dependent voltage source compensation |
US7865750B2 (en) | 2007-02-06 | 2011-01-04 | International Business Machines Corporation | Fan speed control from adaptive voltage supply |
US7895454B2 (en) * | 2007-02-06 | 2011-02-22 | International Business Machines Corporation | Instruction dependent dynamic voltage compensation |
US7936153B2 (en) * | 2007-02-06 | 2011-05-03 | International Business Machines Corporation | On-chip adaptive voltage compensation |
US7971035B2 (en) * | 2007-02-06 | 2011-06-28 | International Business Machines Corporation | Using temperature data for instruction thread direction |
US7714635B2 (en) * | 2007-02-06 | 2010-05-11 | International Business Machines Corporation | Digital adaptive voltage supply |
US7560945B2 (en) * | 2007-02-06 | 2009-07-14 | International Business Machines Corporation | Integrated circuit failure prediction |
US8185572B2 (en) * | 2007-08-24 | 2012-05-22 | International Business Machines Corporation | Data correction circuit |
US7797131B2 (en) * | 2007-08-24 | 2010-09-14 | International Business Machines Corporation | On-chip frequency response measurement |
US8005880B2 (en) * | 2007-08-24 | 2011-08-23 | International Business Machines Corporation | Half width counting leading zero circuit |
US7886172B2 (en) * | 2007-08-27 | 2011-02-08 | International Business Machines Corporation | Method of virtualization and OS-level thermal management and multithreaded processor with virtualization and OS-level thermal management |
JP4850798B2 (ja) * | 2007-08-29 | 2012-01-11 | 富士通株式会社 | 複数の処理ユニットへの処理の振り分け方法および装置 |
US8027798B2 (en) * | 2007-11-08 | 2011-09-27 | International Business Machines Corporation | Digital thermal sensor test implementation without using main core voltage supply |
US8477975B2 (en) * | 2007-12-20 | 2013-07-02 | Phonak Ag | Hearing system with joint task scheduling |
JP4804490B2 (ja) * | 2008-02-18 | 2011-11-02 | 富士通株式会社 | 情報処理装置、情報処理方法、情報処理プログラム |
US8615647B2 (en) * | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
US8010215B2 (en) * | 2008-03-11 | 2011-08-30 | International Business Machines Corporation | Structure for selecting processors for job scheduling using measured power consumption |
JP2009244999A (ja) * | 2008-03-28 | 2009-10-22 | Fujitsu Ltd | 仮想マシン管理プログラム及び管理サーバ装置 |
US8024596B2 (en) * | 2008-04-29 | 2011-09-20 | Bose Corporation | Personal wireless network power-based task distribution |
JP5109799B2 (ja) * | 2008-05-15 | 2012-12-26 | 富士通株式会社 | 情報処理システム、負荷制御方法、および負荷制御プログラム |
US7995964B2 (en) * | 2008-06-24 | 2011-08-09 | Bose Corporation | Personal wireless network capabilities-based task portion distribution |
US7757233B2 (en) * | 2008-07-10 | 2010-07-13 | International Business Machines Corporation | Controlling a computer system having a processor including a plurality of cores |
US8090317B2 (en) * | 2008-08-01 | 2012-01-03 | Bose Corporation | Personal wireless network user behavior based topology |
US8145927B2 (en) | 2008-09-17 | 2012-03-27 | Hitachi, Ltd. | Operation management method of information processing system |
EP2343649B1 (en) | 2008-10-30 | 2017-10-25 | Hitachi, Ltd. | Operation management apparatus of information processing system |
JP5098978B2 (ja) * | 2008-12-02 | 2012-12-12 | 富士通株式会社 | 消費電力削減支援プログラム、情報処理装置、および消費電力削減支援方法 |
US8311683B2 (en) | 2009-04-29 | 2012-11-13 | International Business Machines Corporation | Processor cooling management |
US8275825B2 (en) * | 2009-06-03 | 2012-09-25 | International Business Machines Corporation | Thermal management using distributed computing systems |
JP5549131B2 (ja) * | 2009-07-07 | 2014-07-16 | 富士通株式会社 | ジョブ割当装置、ジョブ割当方法及びジョブ割当プログラム |
US8479215B2 (en) * | 2009-08-18 | 2013-07-02 | International Business Machines Corporation | Decentralized load distribution to reduce power and/or cooling costs in an event-driven system |
US8873377B2 (en) | 2009-11-18 | 2014-10-28 | Juniper Networks, Inc. | Method and apparatus for hitless failover in networking systems using single database |
JP2011180894A (ja) * | 2010-03-02 | 2011-09-15 | Fujitsu Ltd | ジョブスケジューリングプログラム、ジョブスケジューリング装置、及びジョブスケジューリング方法 |
JP5621287B2 (ja) * | 2010-03-17 | 2014-11-12 | 富士通株式会社 | 負荷分散システムおよびコンピュータプログラム |
EP2550576B1 (en) * | 2010-03-23 | 2020-01-01 | Sony Corporation | Reducing power consumption by masking a process from a processor performance management system |
US8677361B2 (en) | 2010-09-30 | 2014-03-18 | International Business Machines Corporation | Scheduling threads based on an actual power consumption and a predicted new power consumption |
US8656408B2 (en) | 2010-09-30 | 2014-02-18 | International Business Machines Corporations | Scheduling threads in a processor based on instruction type power consumption |
US8826049B2 (en) * | 2010-11-16 | 2014-09-02 | International Business Machines Corporation | Minimizing airflow using preferential memory allocation by prioritizing memory workload allocation to memory banks according to the locations of memory banks within the enclosure |
WO2012121713A1 (en) * | 2011-03-08 | 2012-09-13 | Hewlett-Packard Development Company, L.P. | Task control in a computing system |
WO2012133366A1 (ja) * | 2011-03-29 | 2012-10-04 | Quadrac株式会社 | 並列処理装置及び並列処理システム |
JP5483465B2 (ja) * | 2011-04-14 | 2014-05-07 | エヌイーシーコンピュータテクノ株式会社 | コンピュータシステム、及び省電力制御方法 |
US20120297216A1 (en) * | 2011-05-19 | 2012-11-22 | International Business Machines Corporation | Dynamically selecting active polling or timed waits |
US8688883B2 (en) | 2011-09-08 | 2014-04-01 | Intel Corporation | Increasing turbo mode residency of a processor |
CN102360246B (zh) * | 2011-10-14 | 2014-04-09 | 武汉理工大学 | 一种异构分布式系统中基于自适应阈值的节能调度方法 |
US9442773B2 (en) | 2011-11-21 | 2016-09-13 | Qualcomm Incorporated | Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip |
TW201403299A (zh) * | 2012-07-04 | 2014-01-16 | Acer Inc | 中央處理器控制方法 |
US8874754B2 (en) | 2012-10-16 | 2014-10-28 | Softwin Srl Romania | Load balancing in handwritten signature authentication systems |
US9781223B2 (en) * | 2012-12-28 | 2017-10-03 | Facebook, Inc. | Conserving battery and data usage |
US9405711B2 (en) | 2013-01-09 | 2016-08-02 | International Business Machines Corporation | On-chip traffic prioritization in memory |
TWI617988B (zh) | 2013-01-31 | 2018-03-11 | 聯想企業解決方案(新加坡)有限公司 | 根據處理器位置之熱條件進行排程的電腦系統與方法 |
US9170631B2 (en) * | 2013-02-05 | 2015-10-27 | Advanced Micro Devices, Inc. | Adaptive temperature and power calculation for integrated circuits |
CN103353851A (zh) * | 2013-07-01 | 2013-10-16 | 华为技术有限公司 | 一种管理任务的方法和设备 |
CN103634167B (zh) * | 2013-12-10 | 2017-01-11 | 中国电信集团系统集成有限责任公司 | 云环境中对目标主机进行安全配置检查的方法和系统 |
CN104731651B (zh) * | 2013-12-20 | 2018-08-17 | 南京南瑞继保电气有限公司 | 电力自动化任务调度及触发机制的方法、系统和处理器 |
JP2015194805A (ja) * | 2014-03-31 | 2015-11-05 | 富士通株式会社 | 予測プログラム,予測装置及び予測方法 |
US9557797B2 (en) | 2014-05-20 | 2017-01-31 | Qualcomm Incorporated | Algorithm for preferred core sequencing to maximize performance and reduce chip temperature and power |
US10095286B2 (en) * | 2014-05-30 | 2018-10-09 | Apple Inc. | Thermally adaptive quality-of-service |
US10203746B2 (en) | 2014-05-30 | 2019-02-12 | Apple Inc. | Thermal mitigation using selective task modulation |
CN104156265A (zh) * | 2014-08-08 | 2014-11-19 | 乐得科技有限公司 | 定时任务的处理方法和处理装置 |
US9588823B2 (en) | 2014-12-24 | 2017-03-07 | Intel Corporation | Adjustment of execution of tasks |
US9939834B2 (en) | 2014-12-24 | 2018-04-10 | Intel Corporation | Control of power consumption |
JP6384321B2 (ja) * | 2014-12-26 | 2018-09-05 | 富士通株式会社 | ジョブ割当プログラム、方法及び装置 |
US10158526B2 (en) | 2015-03-27 | 2018-12-18 | Nec Corporation | System that manages server function |
JP6131979B2 (ja) * | 2015-03-27 | 2017-05-24 | 日本電気株式会社 | システム |
JP6032314B2 (ja) * | 2015-03-27 | 2016-11-24 | 日本電気株式会社 | システム |
CN107133086B (zh) | 2016-02-29 | 2020-09-04 | 阿里巴巴集团控股有限公司 | 基于分布式系统的任务处理方法、装置和系统 |
US9817697B2 (en) | 2016-03-25 | 2017-11-14 | International Business Machines Corporation | Thermal-and spatial-aware task scheduling |
US10996737B2 (en) | 2016-03-31 | 2021-05-04 | Intel Corporation | Method and apparatus to improve energy efficiency of parallel tasks |
CN109819674B (zh) * | 2017-09-21 | 2022-04-26 | 深圳市汇顶科技股份有限公司 | 计算机存储介质、嵌入式调度方法及系统 |
US11042406B2 (en) * | 2018-06-05 | 2021-06-22 | Intel Corporation | Technologies for providing predictive thermal management |
US11231872B2 (en) * | 2018-07-05 | 2022-01-25 | Hewlett Packard Enterprise Development Lp | Identification of substitute controllers based on temperature data |
DE102018212097B4 (de) * | 2018-07-19 | 2022-04-07 | Vega Grieshaber Kg | Feldgerät mit mehreren Rechenwerken |
CN112882819B (zh) * | 2019-11-29 | 2022-03-08 | 上海商汤智能科技有限公司 | 芯片工作频率的设置方法和装置 |
JPWO2022019233A1 (ja) * | 2020-07-22 | 2022-01-27 | ||
JP2023021662A (ja) * | 2021-08-02 | 2023-02-14 | 富士通株式会社 | プログラムおよび管理方法 |
US20230305608A1 (en) * | 2022-03-23 | 2023-09-28 | Microsoft Technology Licensing, Llc | Device-internal climate control for hardware preservation |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0816531A (ja) * | 1994-06-28 | 1996-01-19 | Hitachi Ltd | プロセススケジュール方式 |
JPH10240704A (ja) * | 1996-12-26 | 1998-09-11 | Ricoh Co Ltd | マルチプロセッサシステムおよび命令作成装置 |
JPH11296488A (ja) * | 1998-04-09 | 1999-10-29 | Hitachi Ltd | 電子機器 |
JP2001229040A (ja) * | 1999-10-25 | 2001-08-24 | Texas Instr Inc <Ti> | 分散型処理システムのためのインテリジェント電力管理方法および装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142684A (en) * | 1989-06-23 | 1992-08-25 | Hand Held Products, Inc. | Power conservation in microprocessor controlled devices |
US5974438A (en) * | 1996-12-31 | 1999-10-26 | Compaq Computer Corporation | Scoreboard for cached multi-thread processes |
US6604200B2 (en) * | 1997-04-22 | 2003-08-05 | Intel Corporation | System and method for managing processing |
US6086628A (en) * | 1998-02-17 | 2000-07-11 | Lucent Technologies Inc. | Power-related hardware-software co-synthesis of heterogeneous distributed embedded systems |
US6091255A (en) * | 1998-05-08 | 2000-07-18 | Advanced Micro Devices, Inc. | System and method for tasking processing modules based upon temperature |
US6141762A (en) * | 1998-08-03 | 2000-10-31 | Nicol; Christopher J. | Power reduction in a multiprocessor digital signal processor based on processor load |
US7412514B2 (en) * | 2000-08-17 | 2008-08-12 | Hoshiko Llc | Method and apparatus for improving bandwidth efficiency in a computer network |
EP1182548A3 (en) * | 2000-08-21 | 2003-10-15 | Texas Instruments France | Dynamic hardware control for energy management systems using task attributes |
US7174194B2 (en) * | 2000-10-24 | 2007-02-06 | Texas Instruments Incorporated | Temperature field controlled scheduling for processing systems |
US6775787B2 (en) * | 2002-01-02 | 2004-08-10 | Intel Corporation | Instruction scheduling based on power estimation |
-
2002
- 2002-04-03 WO PCT/JP2002/003324 patent/WO2003083693A1/ja active Application Filing
- 2002-04-03 JP JP2003581048A patent/JPWO2003083693A1/ja active Pending
-
2004
- 2004-10-01 US US10/954,205 patent/US20050278520A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0816531A (ja) * | 1994-06-28 | 1996-01-19 | Hitachi Ltd | プロセススケジュール方式 |
JPH10240704A (ja) * | 1996-12-26 | 1998-09-11 | Ricoh Co Ltd | マルチプロセッサシステムおよび命令作成装置 |
JPH11296488A (ja) * | 1998-04-09 | 1999-10-29 | Hitachi Ltd | 電子機器 |
JP2001229040A (ja) * | 1999-10-25 | 2001-08-24 | Texas Instr Inc <Ti> | 分散型処理システムのためのインテリジェント電力管理方法および装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015060345A (ja) * | 2013-09-18 | 2015-03-30 | 日本電気株式会社 | 消費電力を制御する情報処理装置、電力制御方法、及びそのためのプログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2003083693A1 (fr) | 2003-10-09 |
US20050278520A1 (en) | 2005-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2003083693A1 (ja) | 分散処理システムにおけるタスクスケジューリング装置 | |
US8302098B2 (en) | Hardware utilization-aware thread management in multithreaded computer systems | |
US8006076B2 (en) | Processor and program execution method capable of efficient program execution | |
US7724602B2 (en) | Memory controller with programmable regression model for power control | |
US7127625B2 (en) | Application management based on power consumption | |
US20050125701A1 (en) | Method and system for energy management via energy-aware process scheduling | |
JP2006107513A (ja) | 処理環境におけるパワー・マネジメント | |
KR100731983B1 (ko) | 저전력 무선 디바이스 프로세서용 하드와이어드 스케줄러및 스케줄링 방법 | |
US20120036375A1 (en) | Method for optimizing the operation of a multiprocessor integrated circuit, and corresponding integrated circuit | |
US8001401B2 (en) | Power throttling of collections of computing elements | |
JP5633564B2 (ja) | マルチコアシステムおよび外部入出力バス制御方法 | |
US10572183B2 (en) | Power efficient retraining of memory accesses | |
EP4027241A1 (en) | Method and system for optimizing rack server resources | |
US20150193690A1 (en) | System interconnect dynamic scaling by predicting i/o requirements | |
JP2022511629A (ja) | ダイナミックランダムアクセスメモリランクのパワーダウンモードの投機的な終了 | |
US11526767B2 (en) | Processor system and method for increasing data-transfer bandwidth during execution of a scheduled parallel process | |
KR102613979B1 (ko) | 멀티 코어 프로세서 전력 관리 장치 및 방법 | |
US11914521B1 (en) | Cache quota control | |
US12026628B2 (en) | Processor system and method for increasing data-transfer bandwidth during execution of a scheduled parallel process | |
EP4160423B1 (en) | Memory device, memory device operating method, and electronic device including memory device | |
Kalogirou et al. | Increasing the profit of cloud providers through dram operation at reduced margins | |
Kang et al. | Power-aware data buffer cache management in real-time embedded databases | |
CN116209970A (zh) | 在电压受限条件下提高处理器性能 | |
WO2024006020A1 (en) | Adaptive power throttling system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060822 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061023 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070213 |