(57)【要約】【課題】ＣＰＵ負荷の計測に必要な消費電力を削減すること。【解決手段】スレッド毎にＣＰＵ負荷を計測する計測方法に於いて、第１のスレッドのＣＰＵ負荷が第１のしきい値以上である場合、前記第１のスレッドのＣＰＵ負荷を第１の頻度で計測し、第２のスレッドのＣＰＵ負荷が前記第１のしきい値未満である場合、前記第２のスレッドのＣＰＵ負荷を、前記第１の頻度よりも低い第２の頻度で計測する、計測方法。【選択図】図２
2015022729.tif 000002
【特許請求の範囲】
【請求項１】
スレッド毎にＣＰＵ負荷を計測する計測方法に於いて、
第１のスレッドのＣＰＵ負荷が第１のしきい値以上である場合、前記第１のスレッドのＣＰＵ負荷を第１の頻度で計測し、
第２のスレッドのＣＰＵ負荷が前記第１のしきい値未満である場合、前記第２のスレッドのＣＰＵ負荷を前記第１の頻度よりも低い第２の頻度で計測する、計測方法。
【請求項２】
請求項１に記載の計測方法に於いて、
さらに、前記ＣＰＵ負荷の計測対象のスレッドを記憶し、
前記第２のスレッドのＣＰＵ負荷の計測では、前記第２のスレッドを所定時間にわたり前記計測対象から削除する、計測方法。
【請求項３】
請求項２に記載の計測方法に於いて、
前記第２のスレッドの削除後、前記第１のスレッドのＣＰＵ負荷に基づき、前記第２のスレッドのＣＰＵ負荷が第３のしきい値以上であると判断された場合、前記所定時間を満了させる、計測方法。
【請求項４】
請求項３に記載の計測方法に於いて、
前記第１のスレッド及び前記第２のスレッドの親プロセスのＣＰＵ負荷と、前記第１のスレッドのＣＰＵ負荷と、の差分に基づき、前記第２のスレッドのＣＰＵ負荷が前記第３のしきい値以上であるかどうかを判断する、計測方法。
【請求項５】
請求項１乃至４の何れかに記載の計測方法に於いて、
前記第１のしきい値は、前記ＣＰＵの各コアの処理能力に基づき、決定される、計測方法。
【請求項６】
スレッド毎にＣＰＵ負荷を計測する計測プログラムに於いて、
前記計測プログラムは、携帯情報端末に、
第１のスレッドのＣＰＵ負荷が第１のしきい値以上である場合、前記第１のスレッドのＣＰＵ負荷を第１の頻度で計測させ、
第２のスレッドのＣＰＵ負荷が前記第１のしきい値未満である場合、前記第２のスレッドのＣＰＵ負荷を、前記第１の頻度よりも低い第２の頻度で計測させる、計測プログラム。
【請求項７】
スレッド毎にＣＰＵ負荷を計測する携帯情報端末に於いて、
第１のスレッドのＣＰＵ負荷が第１のしきい値以上である場合、前記第１のスレッドのＣＰＵ負荷を第１の頻度で計測し、第２のスレッドのＣＰＵ負荷が前記第１のしきい値未満である場合、前記第２のスレッドのＣＰＵ負荷を、前記第１の頻度よりも低い第２の頻度で計測する、スレッド負荷計測部、を備える携帯情報端末。
【請求項８】
スレッド毎に計測されるＣＰＵ負荷に基づき、前記ＣＰＵを制御する携帯情報端末の制御方法に於いて、
前記スレッド毎にＣＰＵ負荷を計測し、
前記ＣＰＵ負荷がしきい値以上のスレッドを前記ＣＰＵ負荷の計測対象から削除し、
前記計測対象のスレッドのＣＰＵ負荷に基づき、前記ＣＰＵ負荷の計測対象から削除されたスレッドのＣＰＵ負荷がしきい値以上であるかどうかを判断し、
前記ＣＰＵ負荷の計測対象から削除されたスレッドのＣＰＵ負荷がしきい値以上である場合、前記削除されたスレッドを前記ＣＰＵの計測対象に追加する、携帯情報端末の制御方法。
【請求項９】
請求項８に記載の携帯情報端末の制御方法に於いて、
前記スレッドの親プロセスのＣＰＵ負荷と、前記計測対象のスレッドのＣＰＵ負荷と、の差分に基づき、前記ＣＰＵ負荷の計測対象から削除されたスレッドのＣＰＵ負荷がしきい値以上であるかどうかを判断する、携帯情報端末の制御方法。
【請求項１０】
請求項８又は９に記載の携帯情報端末の制御方法に於いて、
前記ＣＰＵ負荷がしきい値以上のスレッドの個数に基づき、前記ＣＰＵの稼働コアの個数を決定する、携帯情報端末の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、計測方法、計測プログラム、携帯情報端末、及びその制御方法に関する。
【背景技術】
【０００２】
携帯情報端末の高性能化・多機能化に伴い、携帯情報端末の消費電力が増加する傾向にある。ところが、携帯情報端末に搭載されるバッテリから供給される電力には限界がある。このため、近年、携帯情報端末は、複数のコアを内蔵するマルチコアＣＰＵを搭載して、ＣＰＵ負荷を観測しながら稼働コアの個数を動的に増減（最適化）することで、ユーザの操作性能を確保しつつ、ＣＰＵ全体の消費電力を削減している。
【０００３】
稼働コアの個数の制御技術として、スレッド毎にＣＰＵ負荷を算出し、ＣＰＵ負荷がしきい値を超えるスレッドの個数に基づき、稼働コアの個数を決定するコア制御技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−９２８７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところが、例えばスマートフォンなどの携帯情報端末では、例えば５００〜１０００個のスレッドが生成されることがある。このため、全スレッドのＣＰＵ負荷を算出すると、コア制御に必要な消費電力が大幅に増加する。しかし、消費電力を削減する為に計測対象のスレッドを減らすと、稼働コアの個数を最適化することができず、かえって消費電力を増加させることもある。
【０００６】
開示の技術によれば、ＣＰＵ負荷の計測に必要な消費電力を削減することができる計測方法、計測プログラム、携帯情報端末を提供する。
【課題を解決するための手段】
【０００７】
開示の技術の一観点によれば、スレッド毎にＣＰＵ負荷を計測する計測方法に於いて、第１のスレッドのＣＰＵ負荷が第１のしきい値以上である場合、前記第１のスレッドのＣＰＵ負荷を第１の頻度で計測し、第２のスレッドのＣＰＵ負荷が前記第１のしきい値未満である場合、前記第２のスレッドのＣＰＵ負荷を、前記第１の頻度よりも低い第２の頻度で計測する、計測方法が提供される。
【発明の効果】
【０００８】
開示の技術の一観点によれば、ＣＰＵ負荷の計測に必要な消費電力を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態にかかる携帯情報端末のハードウェア構成の概略図である。
【図２】一実施形態にかかる携帯情報端末の機能ブロックの概略図である。
【図３】一実施形態にかかるアプリ／サービス動作情報の概略図である。
【図４】一実施形態にかかる計測プロセス／スレッド情報の概略図である。
【図５】一実施形態にかかるＣＰＵ制御情報の概略図である。
【図６】一実施形態にかかるプロセス／スレッド動作情報の概略図である。
【図７】一実施形態にかかるシステム状態情報の概略図である。
【図８】一実施形態にかかるＣＰＵコア制御判定処理のフローチャートである。
【図９】一実施形態にかかるコア増加判定処理のフローチャートである。
【図１０】一実施形態にかかるコア減少判定処理のフローチャートである。
【図１１】一実施形態にかかるスレッド負荷計測処理のフローチャートである。
【図１２】一実施形態にかかる計測対象スレッド更新処理のフローチャートである。
【図１３】一実施形態にかかる計測対象スレッド更新処理の動作例の概略図である。
【図１４】一実施形態にかかる計測対象スレッド更新処理の動作例の概略図である。
【図１５】一実施形態にかかる計測対象スレッド更新処理の動作例の概略図である。
【図１６】一実施形態にかかる計測対象スレッド更新処理の動作例の概略図である。
【発明を実施するための形態】
【００１０】
以下、図１〜図１６を参照して、一実施形態にかかる携帯情報端末１００を説明する。携帯情報端末１００としては、例えばスマートフォン、タブレットＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、携帯電話等を使用しても良い。又、携帯情報端末１００に搭載されるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）としては、Ａｎｄｒｏｉｄ（登録商標）を使用しても良い。Ａｎｄｒｏｉｄは、ＯＳカーネルと、アプリケーションフレームワーク／ライブラリと、を含む。但し、本発明の態様は、これに限定されるものではなく、Ａｎｄｒｏｉｄ以外のＯＳを使用しても良い。
【００１１】
（携帯情報端末１００のハードウェア構成）
図１は、一実施形態にかかる携帯情報端末１００のハードウェア構成の概略図である。      
【００１２】
図１に示すように、本実施形態にかかる携帯情報端末１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、メインメモリ１０２、補助メモリ１０３、クロック供給回路１０４、電圧供給回路１０５、ディスプレイ１０６、タッチスクリーン１０７、をハードウェアモジュールとして備える。これらのハードウェアモジュールは、例えばバス１０８により相互接続されている。
【００１３】
ＣＰＵ１０１は、クロック供給回路１０４から供給されるクロック信号及び電圧供給回路１０５から供給される電圧により動作して、携帯情報端末１００の各種ハードウェアモジュールを制御する。ＣＰＵ１０１は、所謂デュアルコアＣＰＵであって、「コア０」１０１１及び「コア１」１０１２を有する。さらに、ＣＰＵ１０１は、補助メモリ１０３に格納された各種プログラムを読み出して、メインメモリ１０２にロードするとともに、該メインメモリ１０２にロードされた各種プログラムを実行することで、各種機能を実現する。各種機能の詳細は、後述することとする。本実施形態では、ＣＰＵ１０１として、デュアルコアＣＰＵを使用しているが、所謂マルチコアＣＰＵであれば、例えばクアッドコアＣＰＵなど、任意の数のコアを有していても良い。
【００１４】
メインメモリ１０２は、ＣＰＵ１０１により実行される各種プログラムを格納する。さらに、メインメモリ１０２は、ＣＰＵ１０１のワークエリアとして使用され、ＣＰＵ１０１による処理に必要な各種データを記憶する。メインメモリ１０２としては、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを使用しても良い。
【００１５】
補助メモリ１０３は、携帯情報端末１００を動作させる各種プログラムを格納している。各種プログラムとしては、例えば、携帯情報端末１００が実行するアプリケーションプログラムやＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などがある。アプリケーションプログラムとしては、例えば、ディスプレイ１０６にコンテンツ（実行結果）が表示され、ユーザが画面操作できる「アプリ」や、ディスプレイ１０６にコンテンツが表示されることがなく、アプリの動作の為にバックグラウンドで動作する「サービス」などが格納されている。但し、複数のアプリが起動している場合、アプリは、ディスプレイ１０６の前面にコンテンツが表示され、実際にユーザが画面操作できるアプリ（フォアグラウンドアプリ）と、ディスプレイ１０６の前面にコンテンツが表示されていなく、実際にはユーザが画面操作できないアプリ（バックグラウンドアプリ）の何れかとなる。本実施形態にかかる制御プログラムも補助メモリ１０３に格納されている。補助メモリ１０３としては、例えば、ハードディスクやフラッシュメモリ等の不揮発メモリを使用しても良い。
【００１６】
ディスプレイ１０６は、ＣＰＵ１０１により制御され、ユーザに画像情報を表示する。タッチスクリーン１０７は、ディスプレイ１０６に貼り付けられ、ユーザの指先やペン先などで接触された位置情報を入力する。
【００１７】
（携帯情報端末１００の機能ブロック）
図２は、一実施形態にかかる携帯情報端末１００の機能ブロックの概略図である。
【００１８】
図２に示すように、本実施形態にかかる携帯情報端末１００は、アプリ実行管理部２０１、ＣＰＵコア制御判定部２０２、システム負荷計測部２０３、スレッド負荷計測部２０４、計測プロセス／スレッド更新部２０５、ＣＰＵ周波数制御部２０６、ＣＰＵ周波数／状態設定部２０７、プロセス／システム管理部２０８、ＣＰＵ状態制御部２０９、タイマ部２１０、アプリ／サービス動作情報３０１、計測プロセス／スレッド情報３０２、ＣＰＵ制御情報３０３、プロセス／スレッド動作情報３０４、システム状態情報３０５、を備える。
【００１９】
アプリ実行管理部２０１、ＣＰＵコア制御判定部２０２、システム負荷計測部２０３、スレッド負荷計測部２０４、計測プロセス／スレッド更新部２０５、ＣＰＵ周波数制御部２０６、ＣＰＵ周波数／状態設定部２０７、プロセス／システム管理部２０８、ＣＰＵ状態制御部２０９、タイマ部２１０、アプリ／サービス動作情報３０１、計測プロセス／スレッド情報３０２、ＣＰＵ制御情報３０３、プロセス／スレッド動作情報３０４、システム状態情報３０５は、何れもＣＰＵ１０１が、ＡｎｄｒｏｉｄのＯＳカーネルもしくはフレームワーク（アプリケーションフレームワーク／ライブラリ）を実行することで実現される。
【００２０】
なお、アプリ／サービス動作情報３０１、計測プロセス／スレッド情報３０２、ＣＰＵ制御情報３０３、プロセス／スレッド動作情報３０４、システム状態情報３０５は、何れも補助メモリ１０３に構築される。
【００２１】
アプリ実行管理部２０１は、アプリやサービスなどのプログラムの実行や停止を管理する。具体的には、アプリ実行管理部２０１は、アプリやサービスなどのアプリケーションプログラムの利用環境やプロセス状態に変化が生じた場合、後述するアプリ／サービス動作情報３０１の「種別」や「状態」を更新する。利用環境としては、フォアグラウンド及びバックグラウンドが定義される。例えば、アプリ実行管理部２０１は、フォアグラウンドでアプリケーションプログラムが動作を開始した場合、即ちフォアグラウンドでアプリケーションプログラムが起動もしくは再開された場合、アプリ／サービス動作情報３０１にアクセスして、「種別」を「フォアグラウンド」、「状態」を「実行中」、にそれぞれ更新する。
【００２２】
ＣＰＵコア制御判定部２０２は、定期的にシステムの動作状態を観測して、ＣＰＵ１０１の稼働コアを増減するか否かを判断する。具体的には、ＣＰＵコア制御判定部２０２は、システム状態情報３０５に記録された、「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ（スレッドの実行キュー長の平均値）」、ＣＰＵ１０１の稼働コア数、ＣＰＵ１０１の動作周波数と、スレッド負荷計測部２０４により取得された、ＣＰＵ１０１により実行されているスレッドの並列度と、に基づき、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」の設定内容を変更する。スレッドの並列度の詳細は、後述することとする。
【００２３】
システム負荷計測部２０３は、定期的にシステム状態情報３０５を参照して、システム全体の直近のＣＰＵ利用率を計測する。
【００２４】
スレッド負荷計測部２０４は、計測プロセス／スレッド情報３０２及びプロセス／スレッド動作情報３０４を参照して、プロセス毎のＣＰＵ利用時間と、スレッド毎のＣＰＵ利用時間と、を算出する。さらに、スレッド負荷計測部２０４は、スレッド毎のＣＰＵ利用時間に基づき、ＣＰＵ１０１により実行されているスレッドの並列度を算出する。スレッドの並列度は、ＣＰＵ利用時間が並列度しきい値以上のスレッドの個数である。ＣＰＵ利用時間は、ＣＰＵ負荷の一例である。
【００２５】
計測プロセス／スレッド更新部２０５は、計測プロセス／スレッド情報３０２に記録された、計測対象のプロセスのＣＰＵ利用時間と、計測対象のスレッドのＣＰＵ利用時間と、を使用して、計測対象のスレッドを更新する。さらに、計測プロセス／スレッド更新部２０５は、アプリ／サービス動作情報３０１に記録されたアプリケーションプログラムの種別の更新に基づき、計測対象のプロセスを更新しても良い。例えば、計測プロセス／スレッド更新部２０５は、種別がフォアグラウンドアプリであるプロセスと、該プロセスに関連するプロセスと、を計測対象としても良い。
【００２６】
ＣＰＵ周波数制御部２０６は、定期的にシステム状態情報３０５を参照して、システム状態情報３０５の「ＣＰＵ利用率」に基づき、ＣＰＵ周波数／状態設定部２０７に、ＣＰＵ１０１の稼働コアの動作周波数の変更指示を通知する。
【００２７】
ＣＰＵ周波数／状態設定部２０７は、ＣＰＵ状態制御部２０９からのＯＮ／ＯＦＦ指示に基づき、ＣＰＵ１０１の「コア１」１０１２のＯＮ／ＯＦＦを制御する。さらに、ＣＰＵ周波数／状態設定部２０７は、ＣＰＵ周波数制御部２０６からの動作周波数の変更指示に基づき、ＣＰＵ１０１の稼働コアの動作周波数を制御する。
【００２８】
プロセス／システム管理部２０８は、ＣＰＵ１０１により実行されるプロセスの動作状況を観測して、プロセス／スレッド動作情報３０４の「累積動作時間」を更新する。さらに、プロセス／システム管理部２０８は、システム全体の動作状況を観測して、システム状態情報３０５の「Ｏｎｌｉｎｅ」、「Ｏｆｆｌｉｎｅ」、「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」、「ＣＰＵ利用率」、「動作周波数」を更新する。
【００２９】
ＣＰＵ状態制御部２０９は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」が変更されたタイミングで起動され、ＣＰＵ周波数／状態設定部２０７に「コア１」１０１２のＯＮ／ＯＦＦ指示を通知する。例えば、「コア１」１０１２がＯＮであるときに、「ｃｐｕ１／ｏｎｌｉｎｅ」が「１」から「０」に変更された場合、ＣＰＵ状態制御部２０９は、ＣＰＵ周波数／状態設定部２０７に「コア１」１０１２のＯＦＦ指示を通知する。逆に、「コア１」１０１２がＯＦＦであるときに、「ｃｐｕ１／ｏｎｌｉｎｅ」が「０」から「１」に変更された場合、ＣＰＵ状態制御部２０９は、ＣＰＵ周波数／状態設定部２０７に「コア１」１０１２のＯＮ指示を通知する。
【００３０】
タイマ部２１０は、例えば時計回路（図示しない）から取得した現在時刻を、例えばアプリ実行管理部２０１、ＣＰＵコア制御判定部２０２、システム負荷計測部２０３、スレッド負荷計測部２０４、計測プロセス／スレッド更新部２０５、ＣＰＵ周波数制御部２０６、ＣＰＵ周波数／状態設定部２０７、プロセス／システム管理部２０８、ＣＰＵ状態制御部２０９に通知する。
【００３１】
（アプリ／サービス動作情報３０１）
図３は、一実施形態にかかるアプリ／サービス動作情報３０１の概略図である。
【００３２】
図３に示すように、アプリ／サービス動作情報３０１は、アプリケーションプログラム毎に、「プロセスＩＤ」、「プログラム名」、「種別」、「状態」を記憶する。アプリ／サービス動作情報３０１は、ＣＰＵ１０１により実行される全アプリケーションプログラムのプロセスを記憶する。このため、アプリ／サービス動作情報３０１は、例えばアプリ（フォアグラウンドアプリ、バックグラウンドアプリ）及びサービスのプロセスも記憶する。「種別」としては、「フォアグラウンド」及び「バックグラウンド」が定義される。「状態」としては、「実行中」、「待機中」、「実行可能」、「停止中」、「ゾンビ」が定義される。アプリ／サービス動作情報３０１の「種別」及び「状態」は、アプリ実行管理部２０１により更新される。
【００３３】
（計測プロセス／スレッド情報３０２）
図４は、一実施形態にかかる計測プロセス／スレッド情報３０２の概略図である。
【００３４】
図４に示すように、計測プロセス／スレッド情報３０２は、計測プロセス／スレッドリスト３０２ａ、プロセス制御表３０２ｂ、スレッド制御表３０２ｃ、を含む。
【００３５】
計測プロセス／スレッドリスト３０２ａは、図４（ａ）に示すように、計測対象のプロセスの識別情報（プロセスＩＤ）に、該プロセスを親プロセスとする計測対象のスレッドの識別情報（スレッドＩＤ）を紐付けている。本実施形態にかかる１行目のレコードでは、計測対象のプロセス「ｐ０」に、計測対象のスレッド「ｔ０１」、「ｔ０３」が紐付けられている。
【００３６】
プロセス制御表３０２ｂは、図４（ｂ）に示すように、計測対象のプロセスに、プロセスＩＤ、累積動作時間、ＣＰＵ利用時間（ｄｅｌｔａ＿ｔｉｍｅ）、を紐付けている。本実施形態にかかる１行目のレコードでは、プロセスＩＤ「ｐ０」に、累積動作時間「４６４０」、ＣＰＵ利用時間「８」が紐付けられている。
【００３７】
スレッド制御表３０２ｃは、図４（ｃ）に示すように、計測対象のスレッドに、スレッドＩＤ、累積動作時間、ＣＰＵ利用時間（ｄｅｌｔａ＿ｔｉｍｅ）、を紐付けている。本実施形態にかかる１行目のレコードでは、スレッドＩＤ「ｔ０１」に、累積動作時間「７５０」、ＣＰＵ利用時間「５」、が紐付けられている。
【００３８】
（ＣＰＵ制御情報３０３）
図５は、一実施形態にかかるＣＰＵ制御情報３０３の概略図である。
【００３９】
図５に示すように、ＣＰＵ制御情報３０３は、ＣＰＵ１０１の「コア１」１０１２のＯＮ／ＯＦＦを決定する為の「ｃｐｕ１／ｏｎｌｉｎｅ」として、「０」もしくは「１」を記憶する。本実施形態では、「コア１」１０１２の「ＯＦＦ指示」に「０」を割り当て、「コア１」１０１２の「ＯＮ指示」に「１」を割り当てる。このため、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」に「０」が登録された場合、ＣＰＵ状態制御部２０９は、「コア１」１０１２の「ＯＦＦ指示」をＣＰＵ周波数／状態設定部２０７に通知する。ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」に「１」が登録された場合、ＣＰＵ状態制御部２０９は、「コア１」１０１２の「ＯＮ指示」をＣＰＵ周波数／状態設定部２０７に通知する。
【００４０】
（プロセス／スレッド動作情報３０４）
図６は、一実施形態にかかるプロセス／スレッド動作情報３０４の概略図である。
【００４１】
図６に示すように、プロセス／スレッド動作情報３０４は、ＣＰＵ１０１により実行されるプロセスに、該プロセスを親プロセスとするスレッドを紐付けている。さらに、プロセス／スレッド動作情報３０４は、それぞれのプロセス及びスレッド毎に累積動作時間を記録している。プロセス／スレッド動作情報３０４は、ＣＰＵ１０１により実行される全プロセス及び全スレッドを記憶している。このため、プロセス／スレッド動作情報３０４は、本実施形態にかかる計測対象ではないプロセス、スレッド、及びそれぞれの累積動作時間も記憶している。
【００４２】
累積動作時間は、プロセスもしくはスレッドの起動時刻を始点とする、動作時間（ｍｓ）の累積値である。プロセス動作情報３０４は、プロセス／システム管理部２０８による観測毎に更新される。
【００４３】
（システム状態情報３０５）
図７は、一実施形態にかかるシステム状態情報３０５の概略図である。
【００４４】
図７に示すように、システム状態情報３０５は、「Ｏｎｌｉｎｅ（オンラインＣＰＵコア番号）」、「Ｏｆｆｌｉｎｅ（オフラインＣＰＵコア番号）」、「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」、「ＣＰＵ利用率（％）」、「動作周波数（ＭＨｚ）」を記憶する。「Ｏｎｌｉｎｅ」は、稼働中のＣＰＵコア番号を記憶する。「Ｏｆｆｌｉｎｅ」は、非稼働のＣＰＵコア番号を記憶する。従って、「コア０」１０１１及び「コア１」１０１２の双方が稼働している場合、「Ｏｎｌｉｎｅ」に「０」及び「１」が記録され、「Ｏｆｆｌｉｎｅ」には何も記録されない。「コア０」１０１１だけが稼働している場合、「Ｏｎｌｉｎｅ」に「０」が記録され、「Ｏｆｆｌｉｎｅ」に「１」が記録される。「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」は、ＣＰＵ１０１による実行待ちのスレッドの個数の直近の平均値である。「ＣＰＵ利用率」は、システム全体のＣＰＵ利用率、即ち単位時間あたりの全スレッドの実行時間の合計である。「動作周波数」は、ＣＰＵ１０１の動作周波数である。システム状態情報３０５の「Ｏｎｌｉｎｅ」、「Ｏｆｆｌｉｎｅ」、「ｒｕｎ＿ｑｕｅｕｅ＿ａｖｇ」、「ＣＰＵ利用率」、「動作周波数」は、プロセス／システム管理部２０８により観測毎に更新される。
【００４５】
（ＣＰＵコア制御判定処理）
図８は、一実施形態にかかるＣＰＵコア制御判定処理のフローチャートである。
【００４６】
図８に示すように、ＣＰＵコア制御判定部２０２は、先ず、ＣＰＵ１０１の稼働コアの個数を増加するか否かを判定する為の「コア増加判定処理」を実行する（ステップＳ００１）。「コア増加判定処理」の詳細は、後述することとする。
【００４７】
次に、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の稼働コアの個数を減少させるか否かを判定する為の「コア減少判定処理」を実行する（ステップＳ００２）。「コア減少判定処理」の詳細は、後述することとする。
【００４８】
次に、ＣＰＵコア制御判定部２０２は、定期監視の為のタイマを設定して、スリープ状態に遷移する（ステップＳ００３）。タイマの設定時間は、特に限定されるものではないが、本実施形態では、数１０ｍｓとする。タイマの設定時間の満了後、ＣＰＵコア制御判定部２０２は、「ＣＰＵコア制御判定処理」のスタートから処理を実行する。
【００４９】
（コア増加判定処理）
図９は、一実施形態にかかるコア増加判定処理のフローチャートである。
【００５０】
ここでは、ＣＰＵ１０１の「コア０」１０１１だけが稼動していることを前提とし、「コア１」１０１２の稼働を開始するか否かの判断プロセスを説明する。
【００５１】
図９に示すように、ＣＰＵコア制御判定部２０２は、システム状態情報３０５を参照して、スレッドの実行キュー長が、事前に決められたコア増加実行キュー長しきい値よりも大きく、かつ、スレッドの並列度が、事前に決められた並列度しきい値よりも大きいかどうかを判断する（ステップＳ０１１）。本実施形態では、コア増加実行キュー長しきい値を１．５とし、並列度しきい値を２とする。
【００５２】
ここで、スレッドの実行キュー長がコア増加実行キュー長しきい値よりも大きく、かつ、スレッドの並列度が並列度しきい値よりも大きいと判断されない場合（ステップＳ０１１のＮｏ）、即ちスレッドの実行キュー長が１．５よりも大きく、かつ、スレッドの並列度が２よりも大きいと判断されない場合、ＣＰＵコア制御判定部２０２は、タイマ部２１０からの時刻情報に基づき、条件継続時間を初期化して（ステップＳ０１５）、即ち「０（ｓｅｃ）」に設定して、本実施形態にかかるコア増加判定処理を終了させる。
【００５３】
一方、スレッドの実行キュー長がコア増加実行キュー長しきい値よりも大きく、かつ、スレッドの並列度が並列度しきい値よりも大きいと判断された場合（ステップＳ０１１のＹｅｓ）、即ちスレッドの実行キュー長が１．５よりも大きく、かつ、スレッドの並列度が２よりも大きい場合、ＣＰＵコア制御判定部２０２は、タイマ部２１０からの時刻情報に基づき、条件継続時間を更新する（ステップＳ０１２）。
【００５４】
次に、ＣＰＵコア制御判定部２０２は、条件継続時間が、事前に決められた継続時間しきい値よりも大きいか否かを判断する（ステップＳ０１３）。本実施形態では、継続時間しきい値を３００（ｍｓ）とする。
【００５５】
ここで、条件継続時間が継続時間しきい値よりも大きいと判断されない場合（ステップＳ０１３のＮｏ）、即ち条件継続時間が３００（ｍｓ）以下であると判断された場合、ＣＰＵコア制御判定部２０２は、本実施形態にかかるコア増加判定処理を終了させる。
【００５６】
一方、条件継続時間が継続時間しきい値よりも大きいと判断された場合（ステップＳ０１３のＹｅｓ）、即ち条件継続時間が３００（ｍｓ）より大きいと判断された場合、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の「コア１」１０１２を稼働、即ちＣＰＵ１０１の稼働コアを増加させ（ステップＳ０１４）、本実施形態にかかるコア増加判定処理を終了させる。具体的には、ＣＰＵコア制御判定部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「１」に更新する。「ｃｐｕ１／ｏｎｌｉｎｅ」を「１」に更新すると、ＣＰＵ状態制御部２０９からＣＰＵ周波数／状態設定部２０７に「コア１」１０１２のＯＮ指示が通知され、「コア０」１０１１及び「コア１」１０１２の双方が動作することとなる。
【００５７】
（コア減少判定処理）
図１０は、一実施形態にかかるコア減少判定処理のフローチャートである。
【００５８】
ここでは、ＣＰＵ１０１の「コア０」１０１１及び「コア１」１０１２の双方が稼動していることを前提とし、「コア１」１０１２の稼働を停止させるか否かの判断プロセスを説明する。
【００５９】
図１０に示すように、ＣＰＵコア制御判定部２０２は、システム状態情報３０５を参照して、スレッドの実行キュー長が、事前に決められたコア減少実行キュー長しきい値よりも小さいか否かを判断する（ステップＳ０２１）。本実施形態では、コア減少実行キュー長しきい値を１．２とする。
【００６０】
ここで、スレッドの実行キュー長がコア減少実行キュー長しきい値よりも小さいと判断されない場合（ステップＳ０２１のＮｏ）、即ちスレッドの実行キュー長が１．２以上であると判断された場合、ＣＰＵコア制御判定部２０２は、タイマ部２１０からの時刻情報に基づき、条件継続時間を初期化して（ステップＳ０２５）、即ち０（ｓｅｃ）に設定して、本実施形態にかかるコア減少判定処理を終了させる。
【００６１】
一方、スレッドの実行キュー長がコア減少実行キュー長しきい値よりも小さいと判断された場合（ステップＳ０２１のＹｅｓ）、即ちスレッドの実行キュー長が１．２よりも小さいと判断された場合、ＣＰＵコア制御判定部２０２は、タイマ部２１０からの時刻情報に基づき、条件継続時間を更新する（ステップＳ０２２）。
【００６２】
次に、ＣＰＵコア制御判定部２０２は、条件継続時間が、事前に決められた継続時間しきい値よりも大きいか否かを判断する（ステップＳ０２３）。本実施形態では、継続時間しきい値を３００（ｍｓ）とする。
【００６３】
ここで、条件継続時間が継続時間しきい値よりも大きいと判断されない場合（ステップＳ０２３のＮｏ）、即ち条件継続時間が３００（ｍｓ）以下であると判断された場合、ＣＰＵコア制御判定部２０２は、本実施形態にかかるコア減少判定処理を終了させる。
【００６４】
一方、条件継続時間が継続時間しきい値よりも大きいと判断された場合（ステップＳ０２３のＹｅｓ）、即ち条件継続時間が３００（ｍｓ）よりも大きいと判断された場合、ＣＰＵコア制御判定部２０２は、ＣＰＵ１０１の「コア１」１０１２の稼働を停止、即ちＣＰＵ１０１の稼働コアを減少させる（ステップＳ０２４）。具体的には、ＣＰＵコア制御判定部２０２は、ＣＰＵ制御情報３０３の「ｃｐｕ１／ｏｎｌｉｎｅ」を「０」に更新する。「ｃｐｕ１／ｏｎｌｉｎｅ」を「０」に更新すると、ＣＰＵ状態制御部２０９からＣＰＵ周波数／状態設定部２０７に「コア１」１０１２のＯＦＦ指示が通知され、「コア１」１０１２の稼働が停止することとなる。
【００６５】
（スレッド負荷計測処理）
図１１は、一実施形態にかかるスレッド負荷計測処理のフローチャートである。
【００６６】
図１１に示すように、スレッド負荷計測部２０４は、計測プロセス／スレッド情報３０２の計測プロセス／スレッドリスト３０２ａに未選択の計測対象のプロセスが存在するかどうかを判断する（ステップＳ０３１）。
【００６７】
ここで、未選択の計測対象のプロセスが存在すると判断されない場合（ステップＳ０３１のＮｏ）、即ち計測プロセス／スレッドリスト３０２ａに記録された計測対象のプロセス全てが既に選択されている場合、スレッド負荷計測部２０４は、計測プロセス／スレッド更新部２０５に計測対象スレッド更新処理の開始を指示する（ステップＳ０３６）。計測対象スレッド更新処理の詳細は、後述することとする。
【００６８】
次に、スレッド負荷計測部２０４は、定期監視のためのタイマを設定して、スリープ状態に遷移する（ステップＳ０３７）。タイマの設定時間は、特に限定されるものではないが、本実施形態では、数十ｍｓとする。タイマの設定時間の満了後、スレッド負荷計測部２０４は、スレッド負荷計測処理のスタートから処理を実行する。
【００６９】
一方、未選択の計測対象のプロセスが存在すると判断された場合（ステップＳ０３１のＹｅｓ）、スレッド負荷計測部２０４は、計測プロセス／スレッドリスト３０２ａから未選択の計測対象のプロセスを１つ選択する（ステップＳ０３２）。
【００７０】
次に、スレッド負荷計測部２０４は、計測プロセス／スレッド情報３０２のプロセス制御表３０２ｂを参照して、選択中の計測対象のプロセスの直近のＣＰＵ利用時間を算出する（ステップＳ０３３）。
【００７１】
具体的には、スレッド負荷計測部２０４は、先ず、プロセス制御表３０２ｂを参照して、選択中の計測対象のプロセスの累積動作時間、即ち前回の計測までの累積動作時間を取得する。さらに、スレッド負荷計測部２０４は、プロセス／スレッド動作情報３０４を参照して、選択中のプロセスの累積動作時間、即ち今回の計測までの累積動作時間を取得する。続いて、スレッド負荷計測部２０４は、プロセス制御表３０２ｂから取得された累積動作時間と、プロセス／スレッド動作情報３０４から取得された累積動作時間と、の差分を算出して、計測対象のプロセスの直近のＣＰＵ利用時間とする。
【００７２】
スレッド負荷計測部２０４は、プロセス／スレッド動作情報３０４から取得された累積動作時間を使用して、プロセス制御表３０２ｂに記録された計測対象のプロセスの累積動作時間を更新する。さらに、スレッド負荷計測部２０４は、計測対象のプロセスの直近のＣＰＵ利用時間を使用して、プロセス制御表３０２ｂに記録された計測対象のプロセスのＣＰＵ利用時間を更新する。
【００７３】
本実施形態では、ＣＰＵ負荷として、計測対象のプロセスのＣＰＵ利用時間を使用しているが、本発明は、これに限定されるものではない。例えば、計測対象のプロセスの直近のＣＰＵ利用率を、ＣＰＵ負荷としても良い。具体的には、プロセス制御表３０３ｂから取得された累積動作時間と、プロセス／スレッド動作情報３０４から取得された累積動作時間と、の差分を、前回の計測から今回の計測までの経過時間で除算して、計測対象のプロセスの直近のＣＰＵ利用率としても良い。
【００７４】
次に、スレッド負荷計測部２０４は、計測プロセス／スレッド情報３０２のスレッド制御表３０２ｃを参照して、選択中の計測対象のプロセスに紐付けられたスレッド全て、即ち計測対象のスレッド全ての直近のＣＰＵ利用時間を算出する（ステップＳ０３４）。
【００７５】
具体的には、スレッド負荷計測部２０４は、先ず、計測プロセス／スレッドリスト３０２ａを参照して、選択中の計測対象のプロセスに紐付けられた計測対象のスレッドを特定する。続いて、スレッド負荷計測部２０４は、スレッド制御表３０２ｃを参照して、選択中の計測対象のプロセスに紐付けられた計測対象のスレッドの累積動作時間、即ち前回の計測までの累積動作時間を取得する。さらに、スレッド負荷計測部２０４は、プロセス／スレッド動作情報３０４を参照して、選択中の計測対象のプロセスに紐付けられた計測対象のスレッド全ての累積動作時間、即ち今回の計測までの累積動作時間を取得する。続いて、スレッド負荷計測部２０４は、スレッド制御表３０２ｃから取得された累積動作時間と、プロセス／スレッド動作情報３０４から取得された累積動作時間と、の差分を算出して、計測対象のスレッドの直近のＣＰＵ利用時間とする。
【００７６】
スレッド負荷計測部２０４は、プロセス／スレッド動作情報３０４から取得された累積動作時間を使用して、スレッド制御表３０２ｃに記録された計測対象のスレッドの累積動作時間を更新する。さらに、スレッド負荷計測部２０４は、計測対象のスレッドの直近のＣＰＵ利用時間を使用して、スレッド制御表３０２ｃに記録された計測対象のスレッドのＣＰＵ利用時間を更新する。
【００７７】
本実施形態では、ＣＰＵ負荷として、計測対象のスレッドのＣＰＵ利用時間を使用しているが、本発明は、これに限定されるものではない。例えば、計測対象のスレッドの直近のＣＰＵ利用率を、ＣＰＵ負荷としても良い。具体的には、スレッド制御表３０２ｃから取得された累積動作時間と、プロセス／スレッド動作情報３０４から取得された累積動作時間と、の差分を、前回の計測から今回の計測までの経過時間で除算して、計測対象のスレッドの直近のＣＰＵ利用率としても良い。
【００７８】
次に、スレッド負荷計測部２０４は、計測対象のスレッドのＣＰＵ利用時間と、事前に決められたＣＰＵ利用時間しきい値と、に基づき、ＣＰＵ１０１により実行されているスレッドの並列度を算出する（ステップＳ０３５）。具体的には、スレッド負荷計測部２０４は、計測対象のスレッドのＣＰＵ利用時間がＣＰＵ利用時間しきい値よりも大きいスレッドの個数を算出する。
【００７９】
次に、スレッド負荷計測部２０４は、再度、計測プロセス／スレッドリスト３０２ａに未選択の計測対象のプロセスが存在するかどうかを判断する（ステップＳ０３１）。
【００８０】
（計測対象スレッド更新処理）
図１２は、一実施形態にかかる計測対象スレッド更新処理のフローチャートである。図１３、図１４、図１５、図１６は、一実施形態にかかる計測対象スレッド更新処理の動作例の概略図である。
【００８１】
図１２に示すように、計測プロセス／スレッド更新部２０５は、計測対象のプロセスから生成されたスレッドのうち、計測対象外のスレッドの直近のＣＰＵ利用時間を算出する（ステップＳ０４１）。
【００８２】
具体的には、計測プロセス／スレッド更新部２０５は、先ず、計測プロセス／スレッド情報３０２のプロセス制御表３０２ｂ及びスレッド制御表３０２ｃを参照して、計測対象のプロセスのＣＰＵ利用時間と、計測対象のスレッドのＣＰＵ利用時間と、を取得する。続いて、計測プロセス／スレッド更新部２０５は、計測対象のプロセス毎に、それぞれのプロセスを親プロセスとする計測対象のスレッド全てのＣＰＵ利用時間の総計を、計測対象のプロセスのＣＰＵ利用時間から差し引き、計測対象外のスレッド全ての直近のＣＰＵ利用時間の総計を算出する。続いて、計測プロセス／スレッド更新部２０５は、計測対象外のスレッド全ての直近のＣＰＵ利用時間の総計を、計測対象外のスレッドの個数で除算して、計測対象外のスレッドの直近のＣＰＵ利用時間、即ちＣＰＵ利用時間のスレッド平均値を算出する。
【００８３】
例えば、計測プロセス／スレッド更新部２０５は、図１３（ａ）に示すように、プロセス「ｐ２」を親プロセスとするスレッド「ｔ２０」、「ｔ２５」、「ｔ２６」のＣＰＵ利用時間「２」、「２」、「１」の総計「５（＝２＋２＋１）」を、該プロセス「ｐ２」のＣＰＵ利用時間「２０」から差し引き、計測対象外のスレッド全ての直近のＣＰＵ利用時間の総計「１５」を算出する。続いて、計測プロセス／スレッド更新部２０５は、計測対象外のスレッド全ての直近のＣＰＵ利用時間の総計「１５」を、計測対象外のスレッドの個数「４」で除算して、計測対象外のスレッドの直近のＣＰＵ利用時間のスレッド平均値「３．７５」を算出する。
【００８４】
次に、計測プロセス／スレッド更新部２０５は、計測対象外のスレッドのＣＰＵ利用時間が、事前に決められた計測対象しきい値（第１のしきい値）よりも大きいかどうかを判断する（ステップＳ０４２）。計測対象しきい値は、ＣＰＵ１０１の各コアの処理能力に応じて決定しても良い。
【００８５】
ここで、計測対象外のスレッドのＣＰＵ利用時間が計測対象しきい値よりも大きいと判断された場合（ステップＳ０４２のＹｅｓ）、計測プロセス／スレッド更新部２０５は、計測対象外のスレッド全てを計測対象に追加する（ステップＳ０４３）。具体的には、計測プロセス／スレッド更新部２０５は、計測対象外のスレッド全てのスレッドＩＤを、計測プロセス／スレッド情報３０２のスレッド制御表３０２ｃに追加する。さらに、計測プロセス／スレッド更新部２０５は、計測対象外のスレッド全てのスレッドＩＤを、計測プロセス／スレッド情報３０２の計測プロセス／スレッドリスト３０２ａに追加する。
【００８６】
例えば、計測プロセス／スレッド更新部２０５は、図１３（ａ）及び（ｂ）に示すように、プロセス「ｐ２」を親プロセスとする計測対象外のスレッド全て「ｔ２１」、「ｔ２２」、「ｔ２３」、「ｔ２４」を、スレッド制御表３０３ｃに追加する。さらに、計測プロセス／スレッド更新部２０５は、図１４（ａ）及び（ｂ）に示すように、計測対象外のスレッド全てのスレッド「ｔ２１」、「ｔ２２」、「ｔ２３」、「ｔ２４」を、計測プロセス／スレッドリスト３０２ａに追加する。こうして、計測対象のプロセス「ｐ２」から生成された全スレッドがＣＰＵ利用時間の計測対象となる。
【００８７】
次に、計測プロセス／スレッド更新部２０５は、計測対象のスレッドのＣＰＵ利用時間が、事前に決められた計測対象外しきい値（第１のしきい値）よりも小さいかどうかを判断する（ステップＳ０４４）。計測対象外のスレッドのＣＰＵ利用時間が計測対象しきい値よりも大きいと判断されない場合（ステップＳ０４２のＮｏ）、即ち計測対象外のスレッドのＣＰＵ利用時間が計測対象しきい値よりも小さい場合も、計測プロセス／スレッド更新部２０５は、計測対象のスレッドのＣＰＵ利用時間が、事前に決められた計測対象外しきい値よりも小さいかどうかを判断する（ステップＳ０４４）。計測対象外しきい値は、ＣＰＵ１０１の各コアの処理能力に応じて決定しても良い。
【００８８】
ここで、計測対象のスレッドのＣＰＵ利用時間が計測対象外しきい値よりも小さいと判断されない場合（ステップＳ０４４のＮｏ）、計測プロセス／スレッド更新部２０５は、本実施形態にかかる計測対象スレッド更新処理を終了させる。
【００８９】
一方、計測対象のスレッドのＣＰＵ利用時間が計測対象外しきい値よりも小さいと判断された場合（ステップＳ０４４のＹｅｓ）、計測プロセス／スレッド更新部２０５は、該スレッドを、即ちＣＰＵ利用時間が計測対象外しきい値よりも小さいと判断されたスレッドを、計測対象から除外する（ステップＳ０４５）。具体的には、計測プロセス／スレッド更新部２０５は、ＣＰＵ利用時間が計測対象外しきい値よりも小さいと判断されたスレッドのレコード、即ちスレッドＩＤ、累積動作時間、ＣＰＵ利用時間を、スレッド制御表３０２ｃから削除する。さらに、計測プロセス／スレッド更新部２０５は、ＣＰＵ利用時間が計測対象外しきい値よりも小さいと判断されたスレッドのスレッドＩＤを、計測プロセス／スレッドリスト３０２ａから削除する。
【００９０】
例えば、計測プロセス／スレッド更新部２０５は、図１５（ａ）及び（ｂ）に示すように、ＣＰＵ利用時間が計測対象外しきい値よりも小さいと判断されたスレッド「ｔ２１」、「ｔ２２」、「ｔ２３」、「ｔ２５」、「ｔ２６」のレコードを、スレッド制御表３０２ｃから削除する。さらに、計測プロセス／スレッド更新部２０５は、図１６（ａ）及び（ｂ）に示すように、ＣＰＵ利用時間が計測対象外しきい値よりも小さいと判断されたスレッド「ｔ２１」、「ｔ２２」、「ｔ２３」、「ｔ２５」、「ｔ２６」を、計測プロセス／スレッドリスト３０２ａから削除する。こうして、計測対象のプロセス「ｐ２」から生成されたスレッドのうち、直近のＣＰＵ利用時間が計測対象外しきい値よりも大きいスレッドのみがＣＰＵ利用時間の計測対象となる。
【００９１】
次に、計測プロセス／スレッド更新部２０５は、本実施形態にかかる計測対象スレッド更新処理を終了させる。
【００９２】
以上のように、ＣＰＵ利用時間が計測対象しきい値（第１のしきい値）よりも大きいスレッドは、ＣＰＵ利用時間の計測対象とされるが、ＣＰＵ利用時間が計測対象外しきい値（第１のしきい値）よりも小さいスレッドは、ＣＰＵ利用時間の計測対象から削除される。即ち、本実施形態にかかる計測プロセス／スレッド更新部２０５は、ＣＰＵ利用時間が計測対象しきい値よりも大きいスレッドのＣＰＵ利用時間の計測頻度（第１の頻度）を、ＣＰＵ利用時間が計測対象外しきい値よりも小さいスレッドのＣＰＵ利用時間の計測頻度（第２の頻度）よりも高める。
【００９３】
なお、本実施形態にかかる計測プロセス／スレッド更新部２０５は、計測対象外のスレッドの直近のＣＰＵ利用時間に基づき、該スレッドを計測対象に追加するかどうかを判断している。しかし、本発明は、これに限定されるものではない。例えば、計測プロセス／スレッド更新部２０５は、計測対象外のスレッドの直近のＣＰＵ利用時間の総計に基づき、計測対象外のスレッドを計測対象に追加するかどうかを判断しても良い。又、計測プロセス／スレッド更新部２０５は、計測対象外のスレッドの直近のＣＰＵ利用時間の、親プロセスのＣＰＵ利用時間に占める割合に基づき、計測対象外のスレッドを計測対象に追加するかどうかを判断しても良い。さらに、計測プロセス／スレッド更新部２０５は、計測対象からスレッドを削除してからの経過時間が所定時間に到達したかどうかに基づき、該スレッドを計測対象に追加するかどうか判断しても良い。
【００９４】
又、本実施形態にかかる計測プロセス／スレッド更新部２０５は、計測対象のスレッドの直近のＣＰＵ利用時間に基づき、該スレッドを計測対象から削除するかどうかを判断している。しかし、本発明は、これに限定されるものではない。例えば、計測プロセス／スレッド更新部２０５は、計測対象のスレッドの直近のＣＰＵ利用時間の、親プロセスのＣＰＵ利用時間に占める割合に基づき、該スレッドを計測対象から削除するかどうかを判断しても良い。又、計測対象のスレッドのＣＰＵ利用時間が計測対象外しきい値よりも小さい場合、計測プロセス／スレッド更新部２０５は、該スレッドのＣＰＵ利用時間の計測頻度を単に低下させても良い。さらに、計測対象のスレッドのＣＰＵ利用時間に基づき、計測頻度を決定しても良い。例えば、計測対象のスレッドのうち、第１のスレッドのＣＰＵ利用時間が第２のスレッドのＣＰＵ利用時間よりも小さい場合、第１のスレッドの計測頻度を、第２のスレッドの計測頻度よりも低くしても良い。即ち、ＣＰＵ利用時間が小さいほど、ＣＰＵ利用時間が計測対象に値するまでに時間がかかると考えられる為、計測頻度を低くするのである。
【００９５】
本実施形態によれば、ＣＰＵ利用時間（ＣＰＵ負荷）が計測対象外しきい値よりも小さいスレッドをＣＰＵ利用時間の計測対象から削除し、計測対象外のスレッドのＣＰＵ利用時間が計測対象しきい値を超えたときに、計測対象外のスレッド全てをＣＰＵ利用時間の計測対象に復帰させる。このため、スレッドの並列度への影響が小さい低負荷スレッドのＣＰＵ利用時間の計測を省略することができる。これにより、スレッド毎のＣＰＵ利用時間の計測コスト、例えばＣＰＵ利用時間の計測に必要な消費電力などを削減することができる。
【００９６】
なお、本実施形態にかかる計測プロセス／スレッド更新部２０５は、計測対象のスレッドのＣＰＵ利用時間の総計を、該スレッドの親プロセスのＣＰＵ利用時間から差し引くことで、計測対象外のスレッドのＣＰＵ利用時間の総計を算出している。しかし、本発明は、これに限定されるものではない。例えば、計測プロセス／スレッド更新部２０５は、ＣＰＵ１０１により実行される計測対象のスレッド全てのＣＰＵ利用時間の総計を、システム全体のＣＰＵ利用時間から差し引くことで、計測対象外のスレッドのＣＰＵ利用時間の総計を算出しても良い。
【００９７】
本実施形態では、デュアルコアＣＰＵを例示しているが、本発明は、これに限定されるものではなく、クアッドコアＣＰＵをはじめとするマルチコアＣＰＵに適用しても良い。
【００９８】
さらに、本実施形態では、携帯情報端末１００として、例えばスマートフォンやタブレットＰＣ等を想定しているが、本発明は、これに限定されるものではなく、例えばマルチコアＣＰＵを搭載していれば、例えばデスクトップＰＣやサーバ装置にも本発明を適用することができる。
【符号の説明】
【００９９】
１００：携帯情報端末
１０１：ＣＰＵ
１０２：メインメモリ
１０３：補助メモリ
１０４：クロック供給回路
１０５：電圧供給回路
１０６：ディスプレイ
１０７：タッチスクリーン
１０８：バス
２０１：アプリ実行管理部
２０２：ＣＰＵコア制御判定部
２０３：システム負荷計測部
２０４：スレッド負荷計測部
２０５：計測プロセス／スレッド更新部
２０６：ＣＰＵ周波数制御部
２０７：ＣＰＵ周波数／状態設定部
２０８：プロセス／システム管理部
２０９：ＣＰＵ状態制御部
２１０：タイマ部
３０１：アプリ／サービス動作情報
３０２：計測プロセス／スレッド情報
３０３：ＣＰＵ制御情報
３０４：プロセス／スレッド動作情報
３０５：システム状態情報
１０１１：コア０
１０１２：コア１
【図１】
2015022729.tif 000003
【図２】
2015022729.tif 000004
【図３】
2015022729.tif 000005
【図４】
2015022729.tif 000006
【図５】
2015022729.tif 000007
【図６】
2015022729.tif 000008
【図７】
2015022729.tif 000009
【図８】
2015022729.tif 000010
【図９】
2015022729.tif 000011
【図１０】
2015022729.tif 000012
【図１１】
2015022729.tif 000013
【図１２】
2015022729.tif 000014
【図１３】
2015022729.tif 000015
【図１４】
2015022729.tif 000016
【図１５】
2015022729.tif 000017
【図１６】
2015022729.tif 000018