JP4363417B2 - コンピュータ装置およびコンピュータ制御方法 - Google Patents

コンピュータ装置およびコンピュータ制御方法 Download PDF

Info

Publication number
JP4363417B2
JP4363417B2 JP2006168281A JP2006168281A JP4363417B2 JP 4363417 B2 JP4363417 B2 JP 4363417B2 JP 2006168281 A JP2006168281 A JP 2006168281A JP 2006168281 A JP2006168281 A JP 2006168281A JP 4363417 B2 JP4363417 B2 JP 4363417B2
Authority
JP
Japan
Prior art keywords
cpu
application
idle
event
idle cpu
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.)
Expired - Fee Related
Application number
JP2006168281A
Other languages
English (en)
Other versions
JP2007334782A (ja
Inventor
謙太郎 矢吹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2006168281A priority Critical patent/JP4363417B2/ja
Publication of JP2007334782A publication Critical patent/JP2007334782A/ja
Application granted granted Critical
Publication of JP4363417B2 publication Critical patent/JP4363417B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明はコンピュータ装置に関し、特に複数のCPUを備えたコンピュータ装置においてCPUを有効利用する技術に関する。
ハードウェア技術の進歩に伴い、複数のCPUを備えたコンピュータ装置が比較的安価に供給されるようになってきた。CPUを複数台備えたコンピュータ装置は、複数のCPUを並列に動作させることで、処理速度やスループット、信頼性が向上し、単一のCPUしか有しないコンピュータ装置に比べて高性能な計算機システムを実現できる。その反面、稼動するCPUの数に応じて消費電力は大きくなる。このため、状況に応じて動的にCPUの追加(活性化)、削除(非活性化)が行えるようになっていることが多い。
複数のCPUを備えたコンピュータ装置では、一般にマルチプロセッサ向けのOS(オペレーティングシステム)を使用する。OSは、各CPUの稼動状況を管理し、アプリケーションの各スレッドを各CPUに割り当てることにより並列処理を実現する。また、スレッド間の実行同期待ちを減らすために、同じアプリケーションを構成するスレッドを異なるプロセッサで同時に実行させるギャングスケジューリングと呼ばれるスケジューリングアルゴリズムも知られている(例えば特許文献1参照)。
さらにマルチプロセッサに限った技術ではないが、アプリケーションへのリソース(CPU、メモリ等)の割り当てを、パラメータで指定されたサービスレベル目標に合致するように制御する方法がある(例えば特許文献2参照)。また、特に仕事をしていない状態になったとき、CPUに供給する基準クロックの周波数を下げて、CPUを省電力モードで動作させたり、より消費電力を低減するためにCPUへのクロックを停止させる技術もある(例えば特許文献3参照)。
特開2004−280293号公報 特開2004−21982号公報 特開2006−23803号公報
ユーザが操作を行っていない時に、コンピュータ装置のCPU負荷が非常に低くなる場合がある。このような場合、従来の技術傾向としては、特許文献3に見られるように消費電力の低減を最優先とし、コンピュータ装置を省電力モードにすることであった。しかしながら、これではCPUの有効利用は図れない。何故なら、例えば、アプリケーションによっては、ユーザの次の操作の処理が予想できる場合にその処理をバックグラウンド処理などで予め行っておけばレスポンスを大幅に改善でき、実際にユーザが操作を行った時のCPUの高負荷を避けることができるからである。ただしこの場合、アプリケーションにバックグラウンド処理を無条件で許可すると、CPUの有効利用は図れるが、消費電力が大きくなり過ぎるという問題が生じる。特許文献2に見られるように、アプリケーションへのリソースの割り当てを、パラメータで指定されたサービスレベル目標に合致するように制御する方法を適用すれば、無制限な使用は抑制できるが、リソースが制限されるためアプリケーション本来の処理に悪影響を与える恐れがある。
そこで本発明の目的は、CPUの有効利用と消費電力の抑制とを両立させたコンピュータ装置を提供することにある。
また、複数のCPUを持つコンピュータ装置では、前述したように状況に応じて動的にCPUの追加、削除が行われるが、このCPUの追加、削除をアプリケーションに迅速に知らせる仕組みがなかった。このため、動的に変化するCPU数に応じて分散処理数(スレッド数)を動的に変化させるようなアプリケーションを開発する場合、個々のアプリケーション中に現在のCPU数を定期的にチェックするロジックを組み込む必要があり、アプリケーションの開発が困難になると共に、定期的なチェックがアプリケーション毎に実行されるため、システム全体の効率も低下するという問題があった。
そこで本発明の別の目的は、CPUの追加、削除によるCPU数の変更をアプリケーションが速やかに認識できるようにすることにある。
本発明の第1のコンピュータ装置は、複数のCPUとメモリと前記CPU上で実行されるOSと該OSの制御の下で前記CPU上で実行される1以上のアプリケーションとを備えたコンピュータ装置において、前記アプリケーションは、遊休CPU利用可能イベントを受信することにより予め定められた処理を実行し且つ遊休CPU利用キャンセルイベントを受信することにより前記予め定められた処理の実行を停止する遊休CPU利用処理手段を有し、前記メモリに、前記アプリケーションの識別子に対応して前記遊休CPU利用可能イベントの送信状況を記録する遊休CPU利用制御テーブルを備え、前記OSに、定期的にCPU負荷状況を監視し、第1の閾値以下にCPU負荷が低下している場合、前記遊休CPU利用可能イベントを送信していない前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用可能イベントを送信し、前記第1の閾値より大きな第2の閾値以上にCPU負荷が上昇している場合、前記遊休CPU利用可能イベントを送信した前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用キャンセルイベントを送信するCPU監視手段を備えることを特徴とする。
本発明の第1のコンピュータ制御方法は、複数のCPUとメモリと前記CPU上で実行されるOSと該OSの制御の下で前記CPU上で実行される1以上のアプリケーションとを備え、前記アプリケーションは、遊休CPU利用可能イベントを受信することにより予め定められた処理を実行し且つ遊休CPU利用キャンセルイベントを受信することにより前記予め定められた処理の実行を停止する機能を有し、前記メモリに、前記アプリケーションの識別子に対応して前記遊休CPU利用可能イベントの送信状況を記録する遊休CPU利用制御テーブルを備えるコンピュータ装置の制御方法において、前記OSが、定期的にCPU負荷状況を監視する第1のステップと、前記OSが、第1の閾値以下にCPU負荷が低下している場合、前記遊休CPU利用可能イベントを送信していない前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用可能イベントを送信する第2のステップと、前記アプリケーションが、前記遊休CPU利用可能イベントを受信することにより前記予め定められた処理を実行する第3のステップと、前記OSが、前記第1の閾値より大きな第2の閾値以上にCPU負荷が上昇している場合、前記遊休CPU利用可能イベントを送信した前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用キャンセルイベントを送信する第4のステップと、前記アプリケーションが、前記遊休CPU利用キャンセルイベントを受信することにより前記予め定められた処理の実行を停止する第5のステップとを含むことを特徴とする。
本発明の第1のプログラムは、複数のCPUと、前記CPU上で実行される1以上のアプリケーションであって、遊休CPU利用可能イベントを受信することにより予め定められた処理を実行し且つ遊休CPU利用キャンセルイベントを受信することにより前記予め定められた処理の実行を停止するアプリケーションと、前記アプリケーションの識別子に対応して前記遊休CPU利用可能イベントの送信状況を記録する遊休CPU利用制御テーブルを備えたメモリとを有するコンピュータを、定期的にCPU負荷状況を監視し、第1の閾値以下にCPU負荷が低下している場合、前記遊休CPU利用可能イベントを送信していない前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用可能イベントを送信し、前記第1の閾値より大きな第2の閾値以上にCPU負荷が上昇している場合、前記遊休CPU利用可能イベントを送信した前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用キャンセルイベントを送信するCPU監視手段として機能させることを特徴とする。
『作用』
本発明にあっては、コンピュータ装置に対するユーザ操作がなくなってCPU負荷が第1の閾値以下に低下すると、そのことがOSのCPU監視手段により検出され、遊休CPUの利用を促すために遊休CPU利用可能イベントがアプリケーションに発行される。アプリケーションは、遊休CPU利用可能イベントを受信することにより予め定められた処理を実行する。その後、ユーザ操作が再開されるなどしてCPU負荷が第2の閾値以上になると、消費電力を抑えるためと本来の処理への影響を軽減するために、遊休CPU利用キャンセルイベントがアプリケーションに発行され、前記予め定められた処理を停止させる。
本発明によれば、コンピュータ装置のCPU負荷が第1の閾値よりも低い時に、アプリケーションに遊休CPU利用可能イベントを通知して予め定められた処理を促す一方、第2の閾値を超えるとアプリケーションに遊休CPU利用キャンセルイベントを通知して前記予め定められた処理を停止させるようにしているため、CPUの有効利用と消費電力の抑制とを両立させることが可能となる。
『第1の実施の形態』
図1を参照すると、本発明の第1の実施の形態にかかるコンピュータ装置100は、複数のCPU101と、メモリ102と、入出力装置103とを備えている。
メモリ102は、複数のCPU101からアクセス可能なRAM等の記憶装置であり、OS111と、1以上のアプリケーションプログラム(以下、単にアプリケーションと記す)112と、遊休CPU利用制御テーブル113と、第1および第2の設定負荷値114および115とを記憶している。
OS111は、マルチプロセッサ用のオペレーティングシステムであり、メモリ管理、ファイル管理およびデバイス管理などの基本的な機能を担うOSカーネル121と、本発明で新たに追加されたCPU監視手段122とから構成される。
CPU監視手段122は、CPU101の負荷状況を監視し、第1の設定負荷値114以下にCPU負荷が低下した際にアプリケーション112に対し遊休CPU利用可能イベントを送信する機能を有する。また、第1の設定負荷値114より大きな第2の設定負荷値115以上にCPU負荷が上昇した際に、遊休CPU利用可能イベントを送信したアプリケーション112に対して遊休CPU利用キャンセルイベントを送信する機能を有する。
第1の設定負荷値114および第2の設定負荷値115は、コンピュータ装置100の初期設定パラメータの一つとして固定的に記憶されるか、或いは入出力装置103からのユーザ操作によって変更可能なパラメータとしてメモリ102に記憶される。2つの設定負荷値のうち、第1の設定負荷値114は、遊休CPU利用処理を開始させる閾値となるCPU負荷を示し、第2の設定負荷値115は、遊休CPU利用処理を停止させる閾値となるCPU負荷を示す。第2の設定負荷値115の値は、パフォーマンスと消費電力とのバランスにより決定される。例えば、電池で駆動するコンピュータ装置の場合は、消費電力を抑えるために低い値に設定される。第1の設定負荷値114は、第2の設定負荷値115より小さな値に設定される。第1の設定負荷値114と第2の設定負荷値115との差が小さいと、起動された遊休CPU利用処理が直ぐに停止される可能性が高くなる。逆に差が大きいと、遊休CPU利用処理が起動される場面が少なくなるので、両者のバランスを考慮して決定される。
アプリケーション112は、文書ビューワなどのプログラムであり、何れかのCPU101で実行されることにより所定の処理を実行する。アプリケーション112は、I/Oイベント処理手段131と、遊休CPU利用処理手段132と、イベントディスパッチ手段133とから構成される。
I/Oイベント処理手段131は、自アプリケーション112に対して発行されたI/Oイベントに対応する処理を実行する部分であり、I/Oイベントの種類毎に存在する。
遊休CPU利用処理手段132は、自アプリケーション112に対して遊休CPU利用可能イベントが発行された場合に実行すべき処理(以下、遊休CPU利用処理と記す)を実行する手段である。
イベントディスパッチ手段133は、OS111からイベントを受信し、受信したイベントの種類に応じて各処理手段131、132を制御する手段である。
遊休CPU利用制御テーブル113は、遊休CPU利用処理手段132を有するアプリケーション112毎に遊休CPU利用可能イベントの送信状況を記録する記憶部である。
図2を参照すると、遊休CPU利用制御テーブル113には、アプリケーション識別子と遊休CPU利用可能イベント送信状況の組を記録するエントリが複数設けられている。アプリケーション識別子には、アプリケーション112を一意に識別する文字列が設定される。遊休CPU利用可能イベント送信状況には、「送信済」および「未送信」の何れかが設定される。また、エントリの並びは、遊休CPU利用可能イベントを送信する優先順位を示している。
入出力装置103は、利用者からのデータや指示を受け付けるキーボード、利用者に対して各種のデータを提示するディスプレイなどで構成される。
次に本実施の形態にかかるコンピュータ装置100の動作を説明する。
コンピュータ装置100の電源が投入され、システムが立ち上がると、OS111のOSカーネル121およびCPU監視手段122が動作を開始する。
CPU監視手段122は、コンピュータ装置100上でアプリケーション112が起動される毎に、起動したアプリケーション112が遊休CPU利用処理手段132を持つタイプのアプリケーションであれば、そのアプリケーション識別子を設定したエントリを遊休CPU利用制御テーブル113の末尾に追加する。このとき当該エントリの遊休CPU利用可能イベント送信状況は「未送信」としておく。
CPU監視手段122が、遊休CPU利用処理手段132を持つタイプのアプリケーションであるか否かを判断する方法としては、そのタイプのアプリケーション112には起動時にその旨をOS111のCPU監視手段122に通知する機能を持たせ、CPU監視手段122は、通知の有無によってタイプを判断する方法がある。他の方法として、遊休CPU利用処理手段132を持つタイプか否かをアプリケーション属性の一つとして設定し、CPU監視手段122がアプリケーション属性を参照して判断する方法がある。
起動されたアプリケーション112は、何れか1つ或いは複数のCPU101上で実行される。入出力装置103などからアプリケーション112に対して何らかのI/Oイベントが発生すると、OSカーネル121により、そのI/Oイベントが該当するアプリケーション112へ送信され、イベントディスパッチ手段133により該当するI/Oイベント処理手段131が実行される。これらの動作は従来と同じである。
またCPU監視手段122は、コンピュータ装置100の動作中、図3に示される処理を常に実行している。まず、定期的にCPU負荷状況を調査する(ステップS101)。ここで調査するCPU負荷状況は、複数存在する全てのCPU101の負荷を考慮したシステム全体のCPU使用率である。例えば、CPU101が全部で4個あり、その内の3個がCPU使用率0%、残りの1個がCPU使用率100%とすると、システム全体のCPU使用率は25%になる。
次に、CPU負荷が第1の設定負荷値よりも低いかどうかを判定する(ステップS102)。CPU負荷が第1の設定負荷値よりも低い場合、ステップS103の処理に進み、そうでない場合はステップS110の処理に進む。
ステップS103では遊休CPU利用制御テーブル113を参照し、遊休CPU利用可能イベント送信状況が「送信済」になっているアプリケーション112が存在するかどうかを調査する(ステップS104)。遊休CPU利用可能イベントを送信したアプリケーション112が存在しない場合(ステップS104でNO)、ステップS107の処理に進む。他方、遊休CPU利用可能イベントを送信したアプリケーション112が既に存在していた場合(ステップS104でYES)、このアプリケーション112に対して遊休CPU利用キャンセルイベントを送信し(ステップS105)、遊休CPU利用制御テーブル113中の当該アプリケーション112の遊休CPU利用可能イベント送信状況を「未送信」に変更すると共に順番を下げるために当該エントリを最後尾に移動させる(ステップS106)。そして、ステップS107の処理に進む。ステップS105で遊休CPU利用キャンセルイベントを送信する理由は、遊休CPU利用可能イベントを既に或るアプリケーションに送信したのにもかかわらず、CPU負荷が未だ第1の設定負荷値より低いということは、そのアプリケーションによる遊休CPU利用処理でCPUが殆ど利用されていないと見做されるため、その利用をキャンセルして別のアプリケーションに利用させるためである。
ステップS107では、遊休CPU利用制御テーブル113の先頭エントリに設定されているアプリケーション識別子を持つアプリケーション112を選択する(ステップS107)。次に、この選択したアプリケーション112に対して遊休CPU利用可能イベントを送信し(ステップS108)、遊休CPU利用制御テーブル113中の当該アプリケーション112の遊休CPU利用可能イベント送信状況を「送信済」に変更する(ステップS109)。そして、一定時間のタイマ待ちを行い(ステップS115)、その後にステップS101に戻ってCPU負荷状況の調査を再度実施する。
ステップS108で遊休CPU利用可能イベントの送信先となったアプリケーション112は、図4に示されるように、送信された遊休CPU利用可能イベントを受信し(ステップS201)、イベントディスパッチ手段133により遊休CPU利用処理手段132を実行する(ステップS202)。これにより、遊休CPU利用処理の処理量に応じてCPU負荷が増大していく。
一方、ステップS102において、CPU負荷が第1の設定負荷値よりも低くないと判定した場合、CPU負荷が第1の設定負荷値よりも高く設定される第2の設定負荷値より高くなっているかどうかを調査する(ステップS110)。若し、CPU負荷が第2の設定負荷値よりも高くなっていなければ、一定時間のタイマ待ちを行い(ステップS115)、その後にステップS101に戻ってCPU負荷状況の調査を再度実施する。
CPU負荷が第2の設定負荷値よりも高い場合、CPU監視手段122は、遊休CPU利用制御テーブル113を参照し(ステップS111)、遊休CPU利用可能イベント送信状況が「送信済」になっているアプリケーション112が存在するかどうかを調べる(ステップS112)。若し、存在すれば、そのアプリケーション112に対して遊休CPU利用キャンセルイベントを送信し(ステップS113)、遊休CPU利用制御テーブル113中の当該アプリケーション112の遊休CPU利用可能イベント送信状況を「未送信」に変更すると共に順番を下げるために当該エントリを最後尾に移動させる(ステップS114)。そして、一定時間のタイマ待ちを行い(ステップS115)、その後にステップS101に戻ってCPU負荷状況の調査を再度実施する。
ステップS113で遊休CPU利用キャンセルイベントの送信先となったアプリケーション112は、図5に示されるように、送信された遊休CPU利用キャンセルイベントを受信し(ステップS211)、イベントディスパッチ手段133により遊休CPU利用処理手段132の実行を停止する(ステップS212)。これにより、CPU負荷が減少していく。
図6にCPU負荷の時間的な変化例を示す。図6(a)は、遊休CPU利用処理手段132を有するタイプのアプリケーション112が1つも存在しない場合のCPU負荷の時間的な変化例、つまり従来のコンピュータ装置と同様の状況を示す。ユーザ操作が行われなくなってCPU負荷が第1の設定負荷値より小さくなっても、遊休CPU利用処理が実行されない。このため、CPU負荷は低いまま遷移する。その後、CPU負荷が上昇しているのは、ユーザ操作が再開され、例えばI/Oイベントに応じた処理がアプリケーションで実行されたことによる。
図6(b)は、遊休CPU利用処理手段132を有するタイプのアプリケーション112が存在する場合のCPU負荷の時間的な変化例を示す。ユーザ操作が行われなくなってCPU負荷が第1の設定負荷値より小さくなった時点で、遊休CPU利用処理手段132を有するタイプのアプリケーション112による遊休CPU利用処理の実行が開始される。このため、CPU負荷が上昇している。そして、図6(b)の例では、第2の設定負荷値より小さなCPU負荷で安定して遷移している。その後、図6(a)の場合と同様に例えばI/Oイベントに応じた処理がアプリケーションで実行されると、その分の負荷が重畳されることによりCPU負荷が第2の設定負荷値を超えるため、遊休CPU利用キャンセルイベントが発行されて、遊休CPU利用処理が停止される。図6(b)の場合、遊休CPU利用処理は、時刻t1から時刻t2までの間で実行されている。
ところで、遊休CPU利用処理中のCPU負荷が図6(b)に示したように第2の設定負荷値より低い値で収まれば良いが、第2の設定負荷値を超えてしまうと、図6(c)に示すように、第2の設定負荷値を超えた時点で遊休CPU利用キャンセルイベントにより遊休CPU利用処理が停止される。そして、その結果、CPU負荷が下り、第1の設定負荷値より低くなると、再び遊休CPU利用可能イベントが発行されて遊休CPU利用処理が実行され、それに伴ってCPU負荷が上昇し、再び第2の設定負荷値を超えるために遊休CPU利用処理が停止されるといった状況が繰り返される。このような状況に陥っても、多少なりとも遊休CPU利用処理は進行するが、効率は悪い。そこで、遊休CPU利用処理によるCPU負荷の増大量を抑える仕組みを導入するのが望ましい。
遊休CPU利用処理によるCPU負荷の増大量を抑える方法の一例は、遊休CPU利用処理で利用可能なCPUの個数をCPU利用可能イベントでアプリケーションに通知し、アプリケーションがその個数に合わせたスレッド数で遊休CPU利用処理を実行することである。例えば、CPU101が合計n個ある場合、遊休CPU利用処理で利用可能なCPUの個数をm(m<n)個とすると、CPUをm個使えることを遊休CPU利用可能イベントによってCPU監視手段122からアプリケーション112へ通知する。アプリケーション112は、遊休CPU利用処理手段132の遊休CPU利用処理を、利用できるCPU数mと同じ数のスレッドに分割して実行する。
次に本実施の形態の効果を説明する。
本実施の形態によれば、CPUの有効利用と消費電力の抑制とを両立させることができる。その理由は、コンピュータ装置のCPU負荷が設定負荷値よりも低い時に、アプリケーションに遊休CPU利用可能イベントを通知して遊休CPU利用処理を促す一方、設定負荷値を超えるとアプリケーションに遊休CPU利用キャンセルイベントを通知して遊休CPU利用処理を停止させるようにしているためである。
次に、遊休CPU利用処理の具体例について説明する。
1)具体例1
アプリケーション112は文書ビューワであり、遊休CPU利用処理手段132は、レンダリングの先行処理を行う手段とする。具体的には、ユーザは高い確率で現在表示しているページの前もしくは次のページの表示を要求するため、このレンダリングを遊休CPU利用処理手段132で先行して行う。
図7(a)にCPUが4個のコンピュータ装置におけるアプリケーション112の実行状況を示す。第2の設定負荷値は約25%に設定されており、コンピュータ装置のCPUが特に使用されていない状況の時、4個のCPUの25%に相当する1個が使えるという遊休CPU利用可能イベントをCPU監視手段122からアプリケーション112へ送る。アプリケーション112は、送られてきたイベントから、CPUを1個使う範囲で、予測される次の操作結果を実行して出しておき、ユーザの実際の操作が予測と一致した場合にそれを利用する。このため予測成功時には応答にかかる実処理時間を短縮することができる。また、その時のCPU使用率を最大で約25%とすることができる。従って、CPUの有効利用と消費電力の抑制とを両立させることが可能となる。
これに対して、図7(b)に示されるように、ユーザが操作を開始した後に全ての処理を行う場合には、4台のCPUをフルに使っても或る程度の処理時間が必要となり、レスポンスが遅くなる。
2)具体例2
他の例としては、他からのリクエストに応じて処理を実行するタイプの機構(例えばグリッドコンピューティング)に参加しているコンピュータ装置において、他からのリクエストに応じた処理を、コンピュータ装置のCPU負荷が設定負荷値よりも低い時に遊休CPU利用処理としてアプリケーション112で実行する例が考えられる。これにより、CPUの有効利用と消費電力の抑制とを両立させることが可能となる。
『第2の実施の形態』
図8を参照すると、本発明の第2の実施の形態にかかるコンピュータ装置200は、図1に示した第1の実施の形態にかかるコンピュータ装置100と比較して、アプリケーション112の代わりにアプリケーション212を有し、CPU監視手段122の代わりにCPU監視手段222を有し、さらにCPU装置状態116を有する点で相違する。
CPU監視手段222は、CPU監視手段122と同じ機能を有すると共に、さらにCPUの増減を監視し、CPUの増減時にアプリケーション212に対してCPU数変更イベントを送信する機能を有する。CPU数変更イベントでは、活性化状態にある最新のCPU数が通知される。
アプリケーション212は、アプリケーション112と同様なI/Oイベント処理手段131、遊休CPU利用処理手段132およびイベントディスパッチ手段133に加えて、使用CPU数変更処理手段134を備えている。
使用CPU数変更処理手段134は、CPU数変更イベントにより通知されたCPU数に合わせて、アプリケーション212の処理(例えばI/Oイベント処理手段131で実行する処理)の分散処理数を変更する手段である。
CPU装置状態116は、コンピュータ装置200に存在する全てのCPU101の状態(活性化、非活性化など)を記録する記憶部である。
次に本実施の形態にかかるコンピュータ装置200の動作を説明する。コンピュータ装置200では、第1の実施の形態で説明したコンピュータ装置100と同じ動作と、本実施の形態特有の動作とが行われる。コンピュータ装置100と同じ動作については、説明が重複するので省略する。以下、本実施の形態特有の動作について説明する。
CPU監視手段222は、コンピュータ装置200の動作中、図9に示される処理を常に実行している。まず、定期的にCPU装置状態を調査する(ステップS301)。ここで調査するCPU装置状態とは、コンピュータ装置200に存在する各CPU101が活性化あるいは非活性化しているといった状態である。次に、CPU装置状態116から過去のCPU装置状態を取得し(ステップS302)、前記調査したCPU装置状態と比較することにより、活性化しているCPU数の変化を検出する(ステップS303)。若し、変化がなければ、ステップS306へ進む。変化があった場合、各アプリケーション212に対して、活性化しているCPU数を通知するCPU数変更イベントを送信する(ステップS304)。次に、前記調査したCPU装置状態でCPU装置状態116を更新し(ステップS305)、ステップS306へ進む。
ステップS306では、一定時間のタイマ待ち及びハードウェアが変更されたことを通知するイベント待ちを行い、一定時間が経過するか、或いはその前にハードウェア変更イベントがあった場合に、ステップS301に戻ってCPU装置状態の調査を再度実施する。
各アプリケーション212は、図10に示されるように、ステップS304でCPU監視手段222から送信されたCPU数変更イベントを受信し(ステップS401)、イベントディスパッチ手段133により使用CPU数変更処理手段134を実行する(ステップS402)。これにより、変更後のCPU数に合わせて、分散処理数が変更され、効率良くCPUを利用することが可能になる。
図11(a)に、2個のCPUが活性状態にあるときに新たに2個のCPUが追加されたときのCPU利用状況を示す。2個のCPUの追加が発生した時、本実施の形態ではそれがOS111のCPU監視手段222で検出されて、各アプリケーション212にその情報を伝達するシステムイベント(CPU数変更イベント)が送られる。このイベントを受取ったアプリケーション212は、その情報に基づき追加後のCPU数に合わせて分散処理の分割数を変更することにより、追加分のCPUを速やかに有効利用する。
これに対して、CPUの追加に対して何らの処理を行わない場合、図11(b)に示すように、CPU数2個で処理を分散したままになり、追加された2個のCPUを利用することができない。また、各アプリケーションが定期的にCPU数をチェックし、それに合わせて分散処理数を変更する場合、図11(c)に示されるようにCPU数を定期的にチェックする処理が各アプリケーション毎に走行するため、ロスが大きくなる。さらに、予め多数に処理を分散しておき、OSのCPUスケジューリング機能によりCPU数の増減に対応させる方式では、図11(d)に示すように、分散数が実際に使用できるCPU数を超えている時には一つのCPUに複数の分散処理を割り当てるための時分割によるCPUのコンテキストスイッチが発生し、この時にロスが生じてしまう。
次に本実施の形態の効果を説明する。
本実施の形態によれば、第1の実施の形態と同様の効果が得られると共に、CPUの追加、削除によるCPU数の変更をアプリケーションが速やかに認識できる。その理由は、CPU監視手段がCPUの増減を監視し、CPUの増減時にアプリケーションに対してCPU数変更イベントを送信するためである。これにより、動的に変化するCPU数に応じて分散処理数(スレッド数)を動的に変化させるようなアプリケーションの開発を容易に行うことが可能となる。
本発明の第1の実施の形態のブロック図である。 本発明の第1の実施の形態における遊休CPU利用制御テーブルの内容例を示す図である。 本発明の第1の実施の形態におけるCPU監視手段の処理例を示すフローチャートである。 本発明の第1の実施の形態におけるアプリケーションの遊休CPU利用可能イベントにかかる処理例を示すフローチャートである。 本発明の第1の実施の形態におけるアプリケーションの遊休CPU利用キャンセルイベントにかかる処理例を示すフローチャートである。 本発明の第1の実施の形態におけるCPU負荷の時間的な変化例を示す図である。 本発明の第1の実施の形態における具体例を示す図である。 本発明の第2の実施の形態のブロック図である。 本発明の第2の実施の形態におけるCPU監視手段の処理例を示すフローチャートである。 本発明の第2の実施の形態におけるアプリケーションのCPU数変更イベントにかかる処理例を示すフローチャートである。 本発明の第2の実施の形態における効果の説明図である。
符号の説明
100、200…コンピュータ装置
101…CPU
102…メモリ
103…入出力装置
111…OS
112、212…アプリケーション
113…遊休CPU利用制御テーブル
114…第1の設定負荷値
115…第2の設定負荷値
116…CPU装置状態
121…OSカーネル
122、222…CPU監視手段
131…I/Oイベント処理手段
132…遊休CPU利用処理手段
133…イベントディスパッチ手段
134…使用CPU数変更処理手段

Claims (10)

  1. 複数のCPUとメモリと前記CPU上で実行されるOSと該OSの制御の下で前記CPU上で実行される1以上のアプリケーションとを備えたコンピュータ装置において、
    前記アプリケーションは、遊休CPU利用可能イベントを受信することにより予め定められた処理を実行し且つ遊休CPU利用キャンセルイベントを受信することにより前記予め定められた処理の実行を停止する遊休CPU利用処理手段を有し、
    前記メモリに、前記アプリケーションの識別子に対応して前記遊休CPU利用可能イベントの送信状況を記録する遊休CPU利用制御テーブルを備え、
    前記OSに、定期的にCPU負荷状況を監視し、第1の閾値以下にCPU負荷が低下している場合、前記遊休CPU利用可能イベントを送信していない前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用可能イベントを送信し、前記第1の閾値より大きな第2の閾値以上にCPU負荷が上昇している場合、前記遊休CPU利用可能イベントを送信した前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用キャンセルイベントを送信するCPU監視手段を備えることを特徴とするコンピュータ装置。
  2. 前記CPU監視手段は、前記遊休CPU利用可能イベントを送信する前に、前記遊休CPU利用可能イベントを既に送信した前記アプリケーションが存在するか否かを前記遊休CPU利用制御テーブルを参照して判定し、前記遊休CPU利用可能イベントを既に送信した前記アプリケーションが存在していれば当該アプリケーションに対して前記遊休CPU利用キャンセルイベントを送信することを特徴とする請求項1に記載のコンピュータ装置
  3. 前記CPU監視手段は、前記遊休CPU利用キャンセルイベントを送信した前記アプリケーションに関する前記遊休CPU利用可能イベントの送信状況の記録を前記遊休CPU利用制御テーブルの最後尾に移動し、前記遊休CPU利用可能イベントを送信していない前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択する際、前記遊休CPU利用制御テーブルの先頭から選択することを特徴とする請求項2に記載のコンピュータ装置。
  4. 前記予め定められた処理を実行するCPUの数を制限することにより、前記予め定められた処理によるCPU負荷の増大量を抑えることを特徴とする請求項1乃至3の何れか1項に記載のコンピュータ装置。
  5. 前記CPU監視手段は、CPUの数の増減を監視し、CPUの数の増減時にアプリケーションに対してCPU数変更イベントを送信することを特徴とする請求項1乃至4の何れか1項に記載のコンピュータ装置。
  6. 前記アプリケーションは、CPU数変更イベントを受信することにより分散処理数を変更する使用CPU数変更処理を行うことを特徴とする請求項記載のコンピュータ装置。
  7. 複数のCPUとメモリと前記CPU上で実行されるOSと該OSの制御の下で前記CPU上で実行される1以上のアプリケーションとを備え、前記アプリケーションは、遊休CPU利用可能イベントを受信することにより予め定められた処理を実行し且つ遊休CPU利用キャンセルイベントを受信することにより前記予め定められた処理の実行を停止する機能を有し、前記メモリに、前記アプリケーションの識別子に対応して前記遊休CPU利用可能イベントの送信状況を記録する遊休CPU利用制御テーブルを備えるコンピュータ装置の制御方法において、
    前記OSが、定期的にCPU負荷状況を監視する第1のステップと、
    前記OSが、第1の閾値以下にCPU負荷が低下している場合、前記遊休CPU利用可能イベントを送信していない前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用可能イベントを送信する第2のステップと、
    前記アプリケーションが、前記遊休CPU利用可能イベントを受信することにより前記予め定められた処理を実行する第3のステップと、
    前記OSが、前記第1の閾値より大きな第2の閾値以上にCPU負荷が上昇している場合、前記遊休CPU利用可能イベントを送信した前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用キャンセルイベントを送信する第4のステップと、
    前記アプリケーションが、前記遊休CPU利用キャンセルイベントを受信することにより前記予め定められた処理の実行を停止する第5のステップとを含むことを特徴とするコンピュータ制御方法。
  8. 前記第2のステップにおいて、前記OSは、前記遊休CPU利用可能イベントを送信する前に、前記遊休CPU利用可能イベントを既に送信した前記アプリケーションが存在するか否かを前記遊休CPU利用制御テーブルを参照して判定し、前記遊休CPU利用可能イベントを既に送信した前記アプリケーションが存在していれば当該アプリケーションに対して前記遊休CPU利用キャンセルイベントを送信することを特徴とする請求項7に記載のコンピュータ制御方法。
  9. 複数のCPUと、前記CPU上で実行される1以上のアプリケーションであって、遊休CPU利用可能イベントを受信することにより予め定められた処理を実行し且つ遊休CPU利用キャンセルイベントを受信することにより前記予め定められた処理の実行を停止するアプリケーションと、前記アプリケーションの識別子に対応して前記遊休CPU利用可能イベントの送信状況を記録する遊休CPU利用制御テーブルを備えたメモリとを有するコンピュータを、定期的にCPU負荷状況を監視し、第1の閾値以下にCPU負荷が低下している場合、前記遊休CPU利用可能イベントを送信していない前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用可能イベントを送信し、前記第1の閾値より大きな第2の閾値以上にCPU負荷が上昇している場合、前記遊休CPU利用可能イベントを送信した前記アプリケーションを前記遊休CPU利用制御テーブルを参照して選択して、該選択した前記アプリケーションに対して前記遊休CPU利用キャンセルイベントを送信するCPU監視手段として機能させるためのプログラム。
  10. 前記CPU監視手段は、前記遊休CPU利用可能イベントを送信する前に、前記遊休CPU利用可能イベントを既に送信した前記アプリケーションが存在するか否かを前記遊休CPU利用制御テーブルを参照して判定し、前記遊休CPU利用可能イベントを既に送信した前記アプリケーションが存在していれば当該アプリケーションに対して前記遊休CPU利用キャンセルイベントを送信することを特徴とする請求項9に記載のプログラム。
JP2006168281A 2006-06-19 2006-06-19 コンピュータ装置およびコンピュータ制御方法 Expired - Fee Related JP4363417B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006168281A JP4363417B2 (ja) 2006-06-19 2006-06-19 コンピュータ装置およびコンピュータ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006168281A JP4363417B2 (ja) 2006-06-19 2006-06-19 コンピュータ装置およびコンピュータ制御方法

Publications (2)

Publication Number Publication Date
JP2007334782A JP2007334782A (ja) 2007-12-27
JP4363417B2 true JP4363417B2 (ja) 2009-11-11

Family

ID=38934179

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006168281A Expired - Fee Related JP4363417B2 (ja) 2006-06-19 2006-06-19 コンピュータ装置およびコンピュータ制御方法

Country Status (1)

Country Link
JP (1) JP4363417B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011134215A (ja) * 2009-12-25 2011-07-07 Taito Corp クラスタリングシステム
US20130117275A1 (en) * 2010-07-16 2013-05-09 Nec Corporation Index monitoring system, index monitoring method and program
JP5716367B2 (ja) * 2010-12-01 2015-05-13 コニカミノルタ株式会社 印刷データ生成装置及び印刷データ生成方法
JP5786641B2 (ja) 2011-10-25 2015-09-30 富士通株式会社 携帯端末装置の制御方法、制御プログラム及び携帯端末装置

Also Published As

Publication number Publication date
JP2007334782A (ja) 2007-12-27

Similar Documents

Publication Publication Date Title
CN102541659B (zh) 一种服务器业务请求处理方法和装置
JP5405320B2 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
JP4370336B2 (ja) 低消費電力ジョブ管理方法及び計算機システム
US20110302587A1 (en) Information processing device and information processing method
JP4387970B2 (ja) データ入出力プログラム,装置,および方法
US20080016508A1 (en) Distributed processing management apparatus, distributed processing management method and distributed processing management program
JP4747307B2 (ja) ネットワーク処理制御装置,プログラムおよび方法
JP4992408B2 (ja) ジョブ割当プログラム、方法及び装置
JP2007018282A (ja) プロセス制御システム及びその制御方法
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
WO2012103231A1 (en) Computing platform with resource constraint negotiation
US20130346766A1 (en) Power control device and power control method
JP6070150B2 (ja) 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
WO2014061141A1 (ja) 並列計算装置
JP4363417B2 (ja) コンピュータ装置およびコンピュータ制御方法
JP2013218744A (ja) リソースに基づいたスケジューラ
US9384050B2 (en) Scheduling method and scheduling system for multi-core processor system
CN109491780B (zh) 多任务调度方法及装置
JP5345902B2 (ja) データ送信装置、データ送信方法、及びデータ送信プログラム
JP3893136B2 (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
JP5452427B2 (ja) マルチオペレーティングシステム計算機、マルチオペレーティングシステム管理方法およびマルチオペレーティングシステム管理プログラム
TWI472910B (zh) 節省系統資源之方法及運用其方法之作業系統
JP2007323256A (ja) 割込制御方法および情報処理装置
EP3276489B1 (en) Parallel processing system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090403

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090610

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090610

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090728

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090810

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120828

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees