JP5915406B2 - 携帯端末装置の制御方法、制御プログラム及び携帯端末装置 - Google Patents

携帯端末装置の制御方法、制御プログラム及び携帯端末装置 Download PDF

Info

Publication number
JP5915406B2
JP5915406B2 JP2012140453A JP2012140453A JP5915406B2 JP 5915406 B2 JP5915406 B2 JP 5915406B2 JP 2012140453 A JP2012140453 A JP 2012140453A JP 2012140453 A JP2012140453 A JP 2012140453A JP 5915406 B2 JP5915406 B2 JP 5915406B2
Authority
JP
Japan
Prior art keywords
cpu
application
core
terminal device
load
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
JP2012140453A
Other languages
English (en)
Other versions
JP2014006619A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012140453A priority Critical patent/JP5915406B2/ja
Priority to US13/868,437 priority patent/US20130346991A1/en
Publication of JP2014006619A publication Critical patent/JP2014006619A/ja
Application granted granted Critical
Publication of JP5915406B2 publication Critical patent/JP5915406B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold

Description

本技術は、携帯端末装置の制御方法、制御プログラム及び携帯端末装置に関する。
携帯端末装置の高性能化・多機能化に伴い、CPUの処理能力の向上が求められている。CPUの処理能力を向上させる為には、例えばCPUの動作周波数を高めれば良い。ところが、CPUの動作周波数を高めると、消費電力が大幅に上昇する。このため、最近の携帯端末装置では、複数のコアを内蔵するCPU、即ちマルチコアCPUを搭載して、CPU全体の処理能力を高める傾向にある。CPUのコアを増加させ、低周波数で動作させると、CPUの動作周波数を高める場合よりも少ない消費電力で同等のCPU処理能力を得ることができるからである。
マルチコアCPUは、動作可能な複数の動作周波数及び電圧の組み合わせを持ち、携帯端末装置の使用状況に応じ、動作周波数及び電圧を切り替えることで、動作速度や消費電力を制御している。様々なアプリケーションが動作する最近の携帯端末装置では、このようなマルチコアCPUの特性を活用して、CPUを使用状況に応じて動的に制御し、ユーザから見た操作性能の確保と消費電力の削減を行っている。
特開2007−334782号公報 特開2008−129846号公報 特開2010−271930号公報
ところで、マルチコアCPUを動的に制御する為には、CPU負荷を観測しながら、CPU負荷の上昇に応じて稼働コアの動作周波数を上昇させ、それでもCPUの処理能力が不足する場合に、マルチコアCPUの稼働コアを増加させる。
このとき、ユーザ操作中のアプリケーションプログラムの動作に起因して、CPU負荷が急増すると、稼働コアを増加させるタイミングが遅れて、アプリケーションプログラムのユーザ操作や画面表示に影響が生じることがある。例えばユーザによる画面スクロールに起因してCPU負荷が急増すると、連続的なスクロールが実施されず、ユーザに所謂モッサリ感を与えることがある。
このようなコア起動の遅延を避ける為には、例えば、CPUの処理能力が不足する前に、早目に稼働コアを増加させれば良い。ところが、CPUの処理能力が不足する前に稼働コアを増加させても、その後、CPU負荷が急増しなければ、先回りして起動させたコアが空振りに終わり、無駄な電力消費を増やすこととなる。
開示の技術によれば、無駄な消費電力を抑制しつつ、マルチコアCPUの稼働コアの増減に起因する操作感の低下を抑制できる携帯端末装置の制御方法を提供する。
開示の技術の一観点によれば、マルチコアCPUと、前記マルチコアCPUにより実行される複数のアプリケーションプログラムの実行結果を表示するディスプレイと、を備える携帯端末装置の制御方法に於いて、前記携帯端末装置が、前記複数のアプリケーションプログラムの各々が実行結果を前記ディスプレイに表示しながら動作する状態をフォアグラウンド環境として管理し、前記複数のアプリケーションプログラムの各々に対応づけて、前記各アプリケーションプログラムが前記フォアグラウンド環境で動作する際に前記マルチコアCPUの稼働コア数を増減すべきか否かを判定するための負荷しきい値を保持し、
前記複数のアプリケーションプログラムの中の第1のアプリケーションプログラムの前記フォアグラウンド環境における動作開始を検出し、前記第1のアプリケーションプログラムが前記フォアグラウンド環境において前記マルチコアCPUにより実際に実行されていた時間の、直近の所定の単位時間に対する比率である第1のCPU利用率を求めてCPU負荷とし、前記フォアグラウンド環境における動作開始検出された前記第1のアプリケーションプログラムに対応づけて保持された前記負荷しきい値を取得し、 前記CPU負荷を、取得した前記負荷しきい値と比較し判定することにより、前記第1のアプリケーションプログラムの前記フォアグラウンド環境における動作時の前記マルチコアCPUの稼働コア数を決める、携帯端末装置の制御方法が提供される。
本開示の技術の一観点によれば、無駄な消費電力を抑制しつつ、マルチコアCPUの稼働コアの増減に起因する操作感の低下を抑制することができる。
第1の実施形態にかかる携帯端末装置のハードウェア構成の概略図である。 第1の実施形態にかかる携帯端末装置の機能ブロックの概略図である。 第1の実施形態にかかるアプリ/サービス動作情報の概略図である。 第1の実施形態にかかるアプリCPUコア制御情報の概略図である。 第1の実施形態にかかるCPU制御情報の概略図である。 第1の実施形態にかかるシステム状態情報の概略図である。 第1の実施形態にかかるプロセス動作情報の概略図である。 第1の実施形態にかかるCPUコア制御処理のフローチャートである。 第1の実施形態にかかるアプリ連携制御処理のフローチャートである。 第1の実施形態にかかる1コア動作中処理のフローチャートである。 第1の実施形態にかかる複数コア動作中処理のフローチャートである。 第1の実施形態にかかるアプリ動作監視処理のフローチャートである。 第1の実施形態にかかる負荷しきい値修正処理のフローチャートである。 第2の実施形態にかかる携帯端末装置の機能ブロックの概略図である。 第2の実施形態にかかる定常負荷管理テーブルの概略図である。 第2の実施形態にかかるアプリ連携制御処理のフローチャートである。 第2の実施形態にかかる1コア動作中処理のフローチャートである。 第2の実施形態にかかる複数コア動作中処理のフローチャートである。 第2の実施形態にかかる定常負荷監視処理のフローチャートである。
[第1の実施形態]
以下、図1〜図13を参照して、第1の実施形態にかかる携帯端末装置100を説明する。ここでは、携帯端末装置100に搭載されるOS(Operating System)として、Android(登録商標)を採用することを想定する。Androidは、OSカーネルと、アプリケーションフレームワーク/ライブラリと、を含み、本実施形態にかかる制御プログラムは、アプリケーションフレームワーク/ライブラリに組み込まれる。但し、本発明の態様は、これに限定されるものではなく、Android以外のOSを採用しても良い。さらに、本実施形態にかかる制御プログラムを、アプリケーションフレームワーク/ライブラリ以外に組み込んでも良い。
[携帯端末装置100のハードウェア]
図1は、第1の実施形態にかかる携帯端末装置100のハードウェア構成の概略図である。
本実施形態では、携帯端末装置100として、例えばスマートフォンやタブレットPC(Personal Computer)等を想定している。
図1に示すように、本実施形態にかかる携帯端末装置100は、CPU(Central Processing Unit)101、メインメモリ102、補助メモリ103、クロック供給回路104、電圧供給回路105、RF(Radio Frequency)回路106、アンテナ107、バッテリ108、電源回路109、カメラモジュール110、ブルートゥースI/F(Interface)111、センサ112、ディスプレイ113、外部給電部114、タッチスクリーン115、をハードウェアモジュールとして備える。これらのハードウェアモジュールは、バス115により相互に接続されている。
CPU101は、クロック供給回路104から供給されるクロック信号及び電圧供給回路105から供給される電圧により動作して、携帯端末装置100の各種ハードウェアモジュールを制御する。CPU101は、所謂デュアルコアCPUであって、「コア0」1011及び「コア1」1012を有する。さらに、CPU101は、補助メモリ103に格納された各種プログラムを読み出して、メインメモリ102にロードするとともに、該メインメモリ102にロードされた各種プログラムを実行することで、各種機能を実現する。各種機能の詳細は、後述することとする。本実施形態にかかるCPU101は、デュアルコアCPUを採用しているが、例えばクアッドコアCPUなど、任意の数のコアを有していても良い。
メインメモリ102は、CPU101により実行される各種プログラムを格納する。さらに、メインメモリ102は、CPU101のワークエリアとして使用され、CPU101による処理に必要な各種データを記憶する。メインメモリ102としては、例えばRAM(Random Access Memory)などを用いても良い。
補助メモリ103は、携帯端末装置100を動作させる各種プログラムを格納している。各種プログラムとしては、例えば、携帯端末装置100が実行するアプリケーションプログラムやAndroid(OS)などがある。アプリケーションプログラムとしては、ユーザが画面操作できるアプリや、アプリの動作の為にバックグラウンドで動作するサービスなどが格納されている。本実施形態にかかる制御プログラムも補助メモリ103に格納されている。制御プログラムは、Androidのアプリケーションフレームワーク/ライブラリに組み込まれる。補助メモリ103としては、例えば、ハードディスクやフラッシュメモリ等の不揮発メモリを用いても良い。
クロック供給回路104は、CPU101に供給するためのクロック信号を生成する。クロック供給回路104は、例えばクロック信号を発振する水晶振動子と、RTC(Real Time Clock)と、により実現しても良い。
電圧供給回路105は、電源回路109から供給される電力に基づき、CPU101に供給するための可変電圧を生成する。電圧供給回路105は、ボルテージディテクタと、ボルテージレギュレータと、により実現しても良い。
RF回路106は、CPU101により制御され、アンテナ107から他の無線通信装置に高周波信号を送信する。さらに、RF回路106は、アンテナ107により受信された高周波信号をベースバンド信号に変換して、該ベースバンド信号をCPU101に出力する。
バッテリ108は、電源回路109に電力を供給する。バッテリ108は、例えばリチウムイオン電池等の電池と、電池保護IC(Integrated Circuit)と、により実現しても良い。
電源回路109は、バッテリ108から供給される電力を、電源線(図示しない)を介して、携帯端末装置100の各種ハードウェアモジュールに供給する。なお、外部給電部114に外部電源(図示しない)が接続されている場合、電源回路109は、外部給電部114から供給される電力を、携帯端末装置100の各種ハードウェアモジュールに供給しても良い。電源回路109は、例えばスイッチングレギュレータと、ボルテージレギュレータと、により実現しても良い。
カメラモジュール110は、CPU101により制御され、被写体の撮像データを取得する。ブルートゥースI/F111は、他の無線通信装置との間でBluetooth(登録商標)による無線通信を実行するための通信インターフェースである。携帯端末装置100は、さらに、無線LAN(Local Area Network)などの無線通信インターフェースを備えてもよい。
ディスプレイ113は、CPU101により制御され、利用者に画像情報を表示する。タッチスクリーン115は、ディスプレイ113に貼り付けられ、ユーザの指先やペン先などで接触された位置情報を入力する。本実施形態では、タッチスクリーン115を、ユーザ操作の為の位置入力デバイスとして使用する。
センサ112は、CPU101により制御され、携帯端末装置100の状態情報を取得する。センサ112としては、例えば、加速度センサ、ジャイロセンサ、照度センサ、地磁気センサ、傾きセンサ、加圧センサ、接近センサ、温度センサ、3Gセンサ(3Gモジュール)、無線LAN、GPS(Global Positioning System)モジュール、などを用いても良い。
[携帯端末装置100の機能ブロック]
図2は、第1の実施形態にかかる携帯端末装置100の機能ブロックの概略図である。
本実施形態にかかるアプリケーションプログラムは、アプリ及びサービスに分類される。
アプリとは、ディスプレイ113にコンテンツ(実行結果)が表示され、ユーザが画面操作できるアプリケーションプログラムである。サービスとは、アプリからの要求に基づき、常時バックグラウンドで動作するアプリケーションプログラムである。
さらに、複数のアプリが起動している場合、ディスプレイ113の前面にコンテンツが表示され、実際にユーザが画面操作できる環境(フォアグラウンド)のアプリと、ディスプレイ113の前面にコンテンツが表示されていなく、実際にユーザが画面操作できない環境(バックグラウンド)のアプリが存在する。
本実施形態では、実際にユーザが画面操作できる環境のアプリを、フォアグラウンドアプリとし、実際にユーザが画面操作できない環境のアプリを、バックグラウンドアプリとする。但し、アプリであれば、例えばユーザ操作を契機にバックグラウンドアプリ及びフォアグラウンドアプリの何れにもなり得る。
図2に示すように、本実施形態にかかる携帯端末装置100は、アプリ実行管理部201、アプリ連携制御部202、アプリ動作監視部203、CPUコア制御判定部204、CPU周波数制御部205、CPU周波数/状態設定部206、プロセス/システム管理部207、CPU状態制御部208、タイマ部209、アプリ/サービス動作情報301、アプリCPUコア制御情報302、CPU制御情報303、システム状態情報304、プロセス動作情報305、を備える。
アプリ実行管理部201、アプリ連携制御部202、アプリ動作監視部203、CPUコア制御判定部204、アプリ/サービス動作情報301、アプリCPUコア制御情報302は、何れもCPU101が、Androidのアプリケーションフレームワーク/ライブラリを実行することで実現される。
このうち、アプリ連携制御部202、アプリ動作監視部203、CPUコア制御判定部204、アプリCPUコア制御情報302は、何れもCPU101が、アプリケーションフレームワーク/ライブラリに組み込まれた制御プログラムを実行することで実現される。
CPU周波数制御部205、CPU周波数/状態設定部206、プロセス/システム管理部207、CPU状態制御部208、タイマ部209、CPU制御情報303、システム状態情報304、プロセス動作情報305は、何れもCPU101が、AndroidのOSカーネルを実行することで実現される。
なお、アプリ/サービス動作情報301、アプリCPUコア制御情報302、CPU制御情報303、システム状態情報304、プロセス動作情報305は、何れも補助メモリ103に構築される。
アプリ実行管理部201は、アプリやサービスなどのプログラムの実行や停止を管理する。具体的には、アプリ実行管理部201は、アプリやサービスなどのアプリケーションプログラムの利用環境やプロセス状態に変化が生じた場合、後述するアプリ/サービス動作情報301の「種別」や「状態」を更新する。利用環境としては、フォアグラウンド及びバックグラウンドが定義される。さらに、アプリ実行管理部201は、フォアグラウンドでアプリケーションプログラム(アプリ)が動作を開始した場合、即ちフォアグラウンドで起動もしくは再開された場合、アプリ動作監視部203にフォアグラウンド開始通知を送信する。フォアグラウンド開始通知は、フォアグラウンドで起動もしくは再開されたプログラム(フォアグラウンドアプリ)のプロセスIDを含む。
アプリ連携制御部202は、定期的にフォアグラウンドアプリの動作状態やCPU利用率を観測して、フォアグラウンドアプリ毎の「負荷しきい値(パラメータ)」に基づき、CPU101のコアを増減するか否かを判断する。具体的には、アプリ連携制御部202は、アプリCPUコア制御情報302及びプロセス動作情報305を参照して、フォアグラウンドアプリの「直近のCPU利用率」を、直近のCPU負荷として算出する。さらに、アプリ連携制御部202は、「直近のCPU利用率」と、フォアグラウンドアプリ毎に決められた「負荷しきい値」とに基づき、「コア1」1012のON/OFFを判断して、CPU制御情報303の「cpu1/online(CPUコアのON/OF指示)」に「0」もしくは「1」を記録する。
アプリ動作監視部203は、アプリ実行管理部201からのフォアグラウンド開始通知に基づき、アプリCPUコア制御情報302の「監視対象」の設定内容を変更する。さらに、アプリ動作監視部203は、フォアグラウンドからバックグラウンドに遷移したプログラムがポストインストールプログラムである場合、アプリCPUコア制御情報302bに記録された「平均継続時間」、「平均CPU利用率」、「アプリ継続時間」、「アプリ負荷」に基づき、該プログラムの「平均継続時間」及び「平均CPU利用率」を更新する。また、アプリ動作監視部203は、アプリCPUコア制御情報302bの「平均継続時間」及び「平均CPU利用率」に基づき、フォアグラウンドアプリ毎の「負荷しきい値」を補正する。
CPUコア制御判定部204は、定期的にシステムの動作状態を観測して、CPU101のコアを増減するか否かを判断する。具体的には、CPUコア制御判定部204は、システム状態情報304を参照して、直近の「Run_queue_avg(プロセス待ちキュー平均値)」Qと、事前に決められたONしきい値TONとに基づき、CPU制御情報303の「cpu1/online」の設定内容の変更もしくはアプリ連携制御部202の呼び出しを実施する。
CPU周波数制御部205は、定期的にシステム状態情報304を観測して、システム状態情報304の「Run_queue_avg」に基づき、CPU周波数/状態設定部206に、CPU101の稼働コアの動作周波数の変更指示を通知する。
CPU周波数/状態設定部206は、CPU状態制御部208からのON/OFF指示に基づき、CPU101の「コア1」1012のON/OFFを制御する。さらに、CPU周波数/状態設定部206は、CPU周波数制御部205からの動作周波数の変更指示に基づき、CPU101の稼働コアの動作周波数を制御する。
プロセス/システム管理部207は、CPU101により実行されるプロセスの動作状況を管理する。具体的には、プロセス/システム管理部207は、CPU101により実行されるプロセスの動作状況を定期的に観測して、プロセス動作情報305の「動作状態」、「ユーザモード動作時間」、「カーネルモード動作時間」を更新する。さらに、プロセス/システム管理部207は、システムの動作状況を管理する。具体的には、プロセス/システム管理部207は、システムの動作状況を観測して、システム状態情報304の「Online」、「Offline」、「Run_queue_avg」を更新する。プロセス及びシステムの動作状況の観測間隔は、特に限定されるものではないが、例えば数ms〜数十msとしても良い。
CPU状態制御部208は、定期的にCPU制御情報303を観測して、CPU制御情報303の「cpu1/online」に基づき、CPU周波数/状態設定部206に、「コア1」1012のON/OFF指示を通知する。例えば、「コア1」1012がONであるときに、「cpu1/online」が「1」から「0」に変更された場合、CPU状態制御部208は、CPU周波数/状態設定部206に「コア1」1012のOFF指示を通知する。逆に、「コア1」1012がOFFであるときに、「cpu1/online」が「0」から「1」に変更された場合、CPU状態制御部208は、CPU周波数/状態設定部206に「コア1」1012のON指示を通知する。
タイマ部209は、例えば時計回路(図示しない)から取得した時間情報に基づき、例えばアプリ実行管理部201、アプリ連携制御部202、アプリ動作監視部203、CPUコア制御判定部204、CPU周波数制御部205、CPU周波数/状態設定部206、プロセス/システム管理部207、CPU状態制御部208に、現在時刻を通知する。
(アプリ/サービス動作情報301)
図3は、第1の実施形態にかかるアプリ/サービス動作情報301の概略図である。
図3に示すように、アプリ/サービス動作情報301は、アプリケーションプログラム毎に、「プロセスID」、「プログラム名」、「種別」、「状態」を記憶する。アプリ/サービス動作情報301は、CPU101により実行される全アプリケーションプログラムのプロセスを記憶する。従って、アプリ/サービス動作情報301は、例えばアプリ(フォアグラウンドアプリ、バックグラウンドアプリ)及びサービスのプロセスも記憶する。「種別」としては、「フォアグラウンド」及び「バックグラウンド」が定義される。「状態」としては、「実行中」、「待機中」、「実行可能」、「停止中」、「ゾンビ」が定義される。アプリ/サービス動作情報301の「種別」及び「状態」は、アプリ実行管理部201により更新される。
(アプリCPUコア制御情報302)
図4は、第1の実施形態にかかるアプリCPUコア制御情報302の概略図である。
図4に示すように、アプリCPUコア制御情報302は、携帯端末装置100にプレインストールされたアプリ(プレインストールアプリ)専用のアプリCPUコア制御情報302aと、携帯端末装置100にポストインストールされたアプリ(ポストインストールアプリ)専用のアプリCPUコア制御情報302bと、を含む。
例えば、携帯端末装置100の出荷時にインストールされているアプリは、「プレインストールプログラム」に相当し、携帯端末装置100の購入後に、ユーザ自らインストールしたアプリは、「ポストインストールアプリ」に相当する。
なお、本実施形態では、アプリCPUコア制御情報302aに、地図、ブラウザ、電卓などのフォアグラウンドアプリ、アプリCPUコア制御情報302bに、エバーノート、がそれぞれ登録されている。
プレインストールアプリ専用のアプリCPUコア制御情報302aは、アプリケーションプログラム毎に、「プログラム名」、「負荷しきい値(パラメータ)」、「監視対象」、「前回の観測時刻」、「前回の観測までの累積動作時間」を記憶する。
「負荷しきい値」は、CPU101の「コア1」1012をONする為に使用されるONしきい値(第1の負荷しきい値)と、CPU101の「コア1」1012をOFFする為に使用されるOFFしきい値(第2の負荷しきい値)と、を含む。本実施形態では、「負荷しきい値」を(ONしきい値、OFFしきい値)と記載している。なお、本実施形態では、「負荷しきい値」の単位として、パーセント(%)を使用している。
「負荷しきい値」は、アプリケーションプログラム毎に決められている。例えば、スクロールや手書き入力などのユーザ操作を高頻度で受け付けるアプリケーションプログラムや、起動から終了までの継続時間が長いアプリケーションプログラムには、高目のONしきい値が設定され、そうでないアプリケーションプログラムには、低目のONしきい値が設定される。
「監視対象」は、プロセスのCPU利用率を観測するアプリを指定する。本実施形態では、プロセスのCPU利用率を監視するアプリに「1」を割り当て、プロセスのCPU利用率を監視しないアプリに「0」を割り当てる。なお、本実施形態では、フォアグラウンドで動作するアプリを監視対象とするため、フォアグラウンドアプリであるグーグルマップに「1」が記録され、バックグラウンドアプリであるブラウザ及び電卓に「0」が割り当てられている。
「前回の観測時刻」は、タイマ部209から取得された前回の観測時刻を記録する。「前回の観測までの累積動作時間」は、前回の観測時刻に観測された累積動作時間を記録する。なお、本実施形態では、「前回までの累積動作時間」及び「前回の観測時刻」の単位として、Tick(=10ms)を使用している。
ポストインストールアプリ専用のアプリCPUコア制御情報302bは、アプリケーションプログラム毎に、「プログラム名」、「負荷しきい値」、「監視対象」、「平均継続時間」、「平均CPU利用率」、「前回の観測時刻」、「前回の観測までの累積動作時間」、「アプリ継続時間」、「アプリ負荷」を記憶する。
「監視対象」、「前回の観測時刻」、「前回の観測までの累積動作時間」は、プレインストールアプリのアプリCPUコア制御情報302aと同様である。
「負荷しきい値」は、プレインストールアプリの「負荷しきい値」と同様に、ONしきい値(第1の負荷しきい値)と、OFFしきい値(第2の負荷しきい値)と、を含む。但し、ポストインストールアプリの「負荷しきい値」は、デフォルト値(80、50)が設定されているが、アプリケーションプログラムが終了するたび、「平均継続時間」及び「平均CPU利用率」に基づき、補正される。
「平均継続時間」は、アプリの動作開始から動作終了までの経過時間の平均である。「平均CPU利用率」は、アプリの動作開始から動作終了までの期間における「CPU利用率」の平均である。「平均CPU利用率」は、「平均負荷」とも呼称され、「CPU利用率」の平均値である。「アプリ継続時間」は、アプリの動作開始から現在時刻までの経過時間である。「アプリ負荷」は、アプリのプロセスの起動時刻から現在時刻までの経過時間に占める、アプリの実際の動作時間の比率である。なお、本実施形態では、「平均継続時間」、「アプリ継続時間」の単位として、Tick(=10ms)を使用し、「平均CPU利用率」及び「アプリ負荷」の単位として、パーセント(%)を使用している。
アプリCPUコア制御情報302(302a、302b)の「監視対象」は、アプリ動作監視部203によりフォアグランド開始通知毎に更新される。アプリCPUコア制御情報302(302a、302b)の「前回の観測時刻」及び「前回の観測までの累積動作時間」は、アプリ連携制御部202により観測毎に更新される。
(CPU制御情報303)
図5は、第1の実施形態にかかるCPU制御情報303の概略図である。
図5に示すように、CPU制御情報303は、CPU101の「コア1」1012のON/OFFを決定する為の「cpu1/online」として、「0」もしくは「1」を記憶する。本実施形態では、「コア1」1012の「OFF指示」に「0」を割り当て、「コア1」1012の「ON指示」に「1」を割り当てる。このため、CPU制御情報303の「cpu1/online」に「0」が登録された場合、CPU状態制御部208は、「コア1」1012の「OFF指示」をCPU周波数/状態設定部206に通知する。CPU制御情報303の「cpu1/online」に「1」が登録された場合、CPU状態制御部208は、「コア1」1012の「ON指示」をCPU周波数/状態設定部206に通知する。CPU制御情報303の「cpu1/online」は、アプリ連携制御部202により観測毎に更新される。
(システム状態情報304)
図6は、第1の実施形態にかかるシステム状態情報304の概略図である。
図6に示すように、システム状態情報304は、「Online(オンラインCPUコア番号)」、「Offline(オフラインCPUコア番号)」、「Run_queue_avg(プロセス待ちキュー平均値)」を記憶する。「Online」は、稼働中のCPUコア番号を記憶する。「Offline」は、非稼働のCPUコア番号を記憶する。従って、「コア0」1011及び「コア1」1012の双方が稼働している場合、「Online」に「0」及び「1」が記録され、「Offline」には何も記録されない。「コア0」1011だけが稼働している場合、「Online」に「0」が記録され、「Offline」に「1」が記録される。「Run_Queue_avg」は、CPU101による実行待ちのプロセス個数の平均である。システム状態情報304の「Online」、「Offline」、「Run_queue_avg」は、プロセス/システム管理部207により観測毎に更新される。
(プロセス動作情報305)
図7は、第1の実施形態にかかるプロセス動作情報305の概略図である。
図7に示すように、プロセス動作情報305は、CPU101により生成されたプロセス毎に作成され、それぞれの「プロセスID(Pid)」、「動作状態(State)」、「親プロセスID(Ppid)」、「ユーザモード動作時間(Utime)」、「カーネルモード動作時間(Stime)」を記憶する。
「ユーザモード動作時間」は、アプリやサービスなどのアプリケーションプログラムの動作時間を記憶する。「カーネルモード動作時間」は、アプリやサービスなどのアプリケーションプログラムのプロセス実行に付随するOSカーネルの動作時間である。本実施形態では、「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、アプリやサービスなどのアプリケーションプログラムの累積動作時間とする。なお、本実施形態では、「ユーザモード動作時間」及び「カーネルモード動作時間」の単位として、「tick(=10ms)」を使用している。プロセス動作情報305の「プロセスID」、「動作状態」、「親プロセスID」、「ユーザモード動作時間」、「カーネルモード動作時間」は、何れもプロセス/システム管理部207により観測毎に更新される。
(CPUコア制御処理)
図8は、第1の実施形態にかかるCPUコア制御処理のフローチャートである。
図8に示すように、CPUコア制御判定部204は、先ず、システム状態情報304を参照して、「コア0」1011だけが稼働しているか否かを判断する(ステップS101)。具体的には、CPUコア制御判定部204は、システム状態情報304の「Online」に「コア0」1011のコア番号「0」だけが登録されているか否かを判断する。
ここで、「コア0」1011だけが稼働していると判断されたら(ステップS101のYes)、CPUコア制御判定部204は、システム状態情報304を参照して、直近のプロセス待ちキューの平均値Qが、事前に決められたONしきい値TONよりも大きいか否かを判断する(ステップS102)。具体的には、CPUコア制御判定部204は、システム状態情報304の「Run_queue_avg」に記録されている数値が、事前に決められたONしきい値TONよりも大きいか否かを判断する。ここで、直近のプロセス待ちキューの平均値Qが、事前に決められたONしきい値TONよりも大きいと判定されたら(ステップS102のYes)、CPUコア制御判定部204は、CPU制御情報303の「cpu1/online」を1」に更新する(ステップS103)。「cpu1/online」を「1」に更新すると、CPU状態制御部208からCPU周波数/状態設定部206に「コア1」1012のON指示が通知され、「コア0」1011及び「コア1」1012の双方が動作することとなる。
次に、CPUコア制御判定部204は、定期監視のためのタイマを設定して、スリープ状態に遷移する(ステップS104)。タイマの設定時間は、特に限定されるものではないが、本実施形態では、数十msとする。タイマの設定時間の満了後、CPUコア制御判定部204は、CPUコア制御処理のスタートから処理を実行する。
一方、「コア0」1011だけが稼働していると判定されなければ(ステップS101のNo)、即ち「コア1」1012も稼働していると判定されたら、CPUコア制御判定部204は、直近のプロセス待ちキューの平均値Qが、事前に決められたOFFしきい値TOFFよりも小さいか否かを判定する(ステップS105)。
ここで、直近のプロセス待ちキューの平均値Qが、事前に決められたOFFしきい値TOFFよりも小さいと判定されたら(ステップS105のYes)、CPUコア制御判定部204は、CPU制御情報303の「cpu1/online」を「0」に更新する(ステップS106)。「cpu1/online」を「0」に更新すると、CPU状態制御部208からCPU周波数/状態設定部206に「コア1」1012のOFF指示が通知され、「コア0」1011だけが動作することとなる。
次に、CPUコア制御判定部204は、定期監視のためのタイマを設定して、スリープ状態に遷移する(ステップS104)。タイマの設定時間の満了後、CPUコア制御判定部204は、CPUコア制御処理のスタートから処理を実行する。
直近のプロセス待ちキューの平均値Qが、事前に決められたONしきい値TONよりも大きいと判定されない場合(ステップS102のNo)、及び直近のプロセス待ちキューの平均値Qが、事前に決められたOFFしきい値TOFFよりも小さいと判定されない場合(ステップS105のNo)、CPUコア制御判定部204は、サブルーチンとしてのアプリ連携制御処理の呼び出しを実行する(ステップS107)。即ち、本実施形態では、直近のプロセス待ちキューの平均値QがONしきい値TON〜OFFしきい値TOFFである場合に、アプリ連携制御処理の詳細は、後述することとする。
そして、アプリ連携制御処理の終了後、CPUコア制御判定部204は、定期監視のためのタイマを設定して、スリープ状態に遷移する(ステップS104)。タイマの設定時間の満了後、CPUコア制御判定部204は、CPUコア制御処理のスタートから処理を実行する。
以上で、CPUコア制御処理のフローの説明を終了する。
(アプリ連携制御処理)
図9は、第1の実施形態にかかるアプリ連携制御処理のフローチャートである。
図9に示すように、アプリ連携制御処理部202は、CPUコア制御処理中のサブルーチンの呼び出しを契機に起動する。アプリ連携制御部202は、先ず、アプリCPUコア制御情報302を参照して、監視対象のアプリケーションプログラムが存在するか否かを判断する(ステップS201)。具体的には、アプリ連携制御処理部202は、アプリCPUコア制御情報302(302a、302b双方)を参照して、「監視対象」に「1」が登録されたアプリケーションプログラムが存在するか否かを判断する。
ここで、監視対象のアプリケーションプログラムが存在すると判断されたら(ステップS201のYes)、アプリ連携制御処理部202は、システム状態情報304を参照して、「コア0」1011だけが稼働しているか否かを判断する(ステップ202)。具体的には、アプリ連携処理部202は、システム状態情報304の「Online」に「コア0」1011のコア番号「0」だけが登録されているか否かを判断する。
ここで、「コア0」1011だけが稼働していると判断されたら(ステップS202のYes)、即ち「コア1」1012が稼働していないと判断されたら、アプリ連携制御処理部202は、サブルーチンとしての1コア動作中処理の呼び出しを実行する(ステップS203)。1コア動作中処理の詳細は、後述することとする。
次に、アプリ連携制御処理部202は、1コア動作中処理の終了後、アプリ連携制御処理の呼び出し元の処理を実行する。
一方、「コア0」1011だけが稼働していると判断されなければ(ステップS202のNo)、即ち「コア1」1012も稼働していると判断されたら、アプリ連携制御処理部202は、サブルーチンとしての複数コア動作中処理の呼び出しを実行する(ステップS204)。複数コア動作中処理の詳細は、後述することとする。
次に、アプリ連携制御処理部202は、複数コア動作中処理の終了後、アプリ連携制御処理の呼び出し元の処理を実行する。
以上で、アプリ連携制御処理のフローの説明を終了する。
(1コア動作中処理)
図10は、第1の実施形態にかかる1コア動作中処理のフローチャートである。
ここでは、CPU101の「コア0」1011だけが稼動していることを前提とし、「コア1」1012の稼働を開始するか否かの判断を説明する。
図10に示すように、アプリ連携制御処理部202は、アプリ連携制御処理中のサブルーチンの呼び出しを契機に、1コア動作中処理を開始する。アプリ連携制御処理部202は、1コア動作中処理にて、先ず、アプリCPUコア制御情報302及びプロセス動作情報305を参照して、監視対象のアプリケーションプログラム、即ちフォアグラウンドアプリの直近のCPU利用率を算出する(ステップS301)。なお、直近のCPU利用率は、前回の観測から今回の観測までに実際にフォアグラウンドアプリが動作した時間の比率、即ち前回の観測時刻から今回の観測時刻までの経過時間に占める、CPU101が実際にフォアグラウンドアプリを実行していた時間の比率である。直近のCPU利用率は、例えば、以下の数式(1)により算出しても良い。
直近のCPU利用率=(今回の観測までの累積動作時間−前回の観測までの累積動作時間)/(今回の観測時刻−前回の観測時刻)…(1)
このとき、アプリ連携制御処理部202は、監視対象のアプリケーションプログラム(フォアグラウンドアプリ)のプロセス動作情報305の「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、数式(1)の「今回の観測までの累積動作時間」、タイマ部209から取得した現在時刻を、数式(1)の「今回の観測時刻」、アプリCPUコア制御情報302(302aもしくは302b)に記録されている「前回の観測までの累積動作時間」及び「前回の観測時刻」を、それぞれ数式(1)の「前回の観測までの累積動作時間」及び「前回の観測時刻」とする。
次に、アプリ連携制御処理部202は、フォアグラウンドアプリの直近のCPU利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「ONしきい値」よりも大きいか否かを判断する(ステップS302)。
ここで、フォアグラウンドアプリの直近のCPU利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「ONしきい値」よりも大きいと判断されたら(ステップS302のYes)、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」を「1」に更新する(ステップS303)。「cpu1/online」を「1」に更新すると、CPU状態制御部208からCPU周波数/状態設定部206に「コア1」1012のON指示が通知され、「コア0」1011及び「コア1」1012の双方が動作することとなる。
次に、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」の更新後、1コア動作中処理の呼び出し元の処理を実行する。
一方、フォアグラウンドアプリの直近のCPU利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「ONしきい値」よりも大きいと判断されなければ(ステップS302のNo)、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」を更新せずに、1コア動作中処理の呼び出し元の処理を実行する。即ち、「コア0」1011の稼働だけが継続することとなる。
以上で、1コア動作中処理のフローの説明を終了する。
(複数コア動作中処理)
図11は、第1の実施形態にかかる複数コア動作中処理のフローチャートである。
ここでは、CPU101の「コア0」1011及び「コア1」1012の双方が稼働していることを前提とし、「コア1」1012の稼働を停止させるか否かの判断を説明する。
図11に示すように、アプリ連携制御処理部202は、アプリ連携制御処理中のサブルーチンの呼び出しを契機に、複数コア動作中処理を開始する。アプリ連携制御処理部202は、複数コア動作中処理にて、先ず、アプリCPUコア制御情報302及びプロセス動作情報305を参照して、フォアグラウンドアプリの直近のCPU利用率を算出する(ステップS401)。直近のCPU利用率は、1コア動作中処理と同様に算出すれば良い。
次に、アプリ連携制御処理部202は、フォアグラウンドアプリの直近のCPU利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「OFFしきい値」よりも小さいか否かを判断する(ステップS402)。
ここで、フォアグラウンドアプリの直近のCPU利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「OFFしきい値」よりも小さいと判断されたら(ステップS402のYes)、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」を「0」に更新する(ステップS403)。「cpu1/online」を「0」に更新すると、CPU状態制御部208からCPU周波数/状態設定部206に「コア1」1012のOFF指示が通知され、「コア0」1011だけが動作することとなる。
次に、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」の更新後、複数コア動作中処理の呼び出し元の処理を実行する。
一方、フォアグラウンドアプリの直近のCPU利用率が、フォアグラウンドアプリ毎に決められた「負荷しきい値」の「OFFしきい値」よりも小さいと判断されなければ(ステップS402のNo)、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」を更新せずに、複数コア動作中処理の呼び出し元の処理を実行する。即ち、「コア0」1011及び「コア1」1012の双方の稼働が継続することとなる。
以上で、複数コア動作中処理のフローの説明を終了する。
(アプリ動作監視処理)
図12は、第1の実施形態にかかるアプリ動作監視処理のフローチャートである。
図12に示すように、アプリ動作監視部203は、アプリ実行管理部201からフォアグラウンド開始通知を受信したら(ステップS501)、アプリCPUコア制御情報302を参照して、監視対象のアプリが存在するか否かを判断する(ステップS502)。具体的には、アプリ動作監視部203は、アプリCPUコア制御情報302を参照して、「監視対象」に「1」が登録されているアプリが存在するか否かを判断する。
ここで、監視対象のアプリが存在すると判断されたら(ステップS502のYes)、アプリ動作監視部203は、それまで監視対象としていたアプリがフォアグラウンドからバックグラウンドに遷移したとみなして、該アプリの監視を停止する(ステップS503)。具体的には、アプリ動作監視部203は、アプリCPUコア制御情報302の「監視対象」を「1」から「0」に更新する。
次に、アプリ動作監視部203は、バックグラウンドに遷移したアプリが、後からインストールされたポストインストールアプリであるか否かを判断する(ステップS504)。
ここで、バックグラウンドに遷移したアプリがポストインストールアプリであると判断されたら(ステップS504のYes)、アプリ動作監視部203は、アプリCPUコア制御情報302の、フォアグラウンドからバックグラウンドに遷移したアプリの「平均継続時間」及び「平均CPU利用率」を更新する(ステップS505)。具体的には、アプリ動作監視部203は、アプリCPUコア制御情報302に記録されている「平均継続時間」及び「アプリ継続時間」に基づき、「平均継続時間」を更新する。さらに、アプリ動作監視部203は、アプリCPUコア制御情報302に記録されている「平均CPU利用率」及び「アプリ負荷」と、アプリ連携制御部202により算出された直近の「CPU利用率」と、に基づき、「平均CPU利用率」を更新する。即ち、監視対象のアプリがバックグラウンドに遷移するたびに、過去の観測結果と直前の観測結果に基づき、アプリCPUコア制御情報302の「平均継続時間」及び「平均CPU利用率」を更新する。
次に、アプリ動作監視部203は、サブルーチンとしての負荷しきい値修正処理の呼び出しを実行する(ステップS506)。負荷しきい値修正処理の詳細は、後述することとする。
次に、アプリ動作監視部203は、負荷しきい値修正処理の終了後、新たにフォアグラウンドで動作を開始したアプリを監視対象に設定する(ステップS507)。具体的には、アプリ動作監視部203は、アプリCPUコア制御情報302の、新たにフォアグラウンドで動作を開始したアプリの「監視対象」を「1」に更新する。
一方、監視対象のアプリが存在すると判断されなければ(ステップS502のNo)、もしくは、監視を停止したアプリがポストインストールアプリであると判断されなければ(ステップS504のNo)、アプリ動作監視部203は、新たにフォアグラウンドで動作を開始したアプリを監視対象に設定する(ステップS507)。具体的には、アプリ動作監視部203は、アプリCPUコア制御情報302の、新たにフォアグラウンドで動作を開始したアプリの「監視対象」を「1」に設定する。
以上で、アプリ動作監視処理のフローの説明を終了する。
(負荷しきい値修正処理)
図13は、第1の実施形態にかかる負荷しきい値修正処理のフローチャートである。
ここでは、アプリCPUコア制御情報302の「負荷しきい値」が(80、50)であることを前提に説明する。
図13に示すように、アプリ動作監視部203は、アプリ動作監視処理中のサブルーチンの呼び出しを契機に、負荷しきい値修正処理を開始する。アプリ動作監視部203は、負荷しきい値修正処理にて、先ず、ポストインストールアプリのアプリCPUコア制御情報302bを参照して、ポストインストールアプリの「平均継続時間」が、事前に決められた最大しきい値よりも大きく、かつ、ポストインストールアプリの「平均CPU利用率」が、事前に決められた最大しきい値よりも大きいか否かを判断する(ステップS601)。
ここで、ポストインストールアプリの「平均継続時間」が、事前に決められた最大しきい値よりも大きく、かつ、ポストインストールアプリの「平均CPU利用率」が、事前に決められた最大しきい値よりも大きいと判断されたら(ステップS601のYes)、アプリ動作監視部203は、アプリCPUコア制御情報302の「負荷しきい値」を、例えば(70、40)に更新する(ステップS604)。即ち、「コア1」1011をONする為のハードル(ONしきい値)を下げ、「コア1」1011をOFFする為のハードル(OFFしきい値)を上げる。
一方、ポストインストールアプリの「平均継続時間」が、事前に決められた最大しきい値よりも大きく、かつ、ポストインストールアプリの「平均CPU利用率」が、事前に決められた最大しきい値よりも大きいと判断されなければ(ステップS601のNo)、アプリ動作監視部203は、ポストインストールアプリの「平均継続時間」が、事前に決められた最小しきい値よりも小さく、かつ、ポストインストールアプリの「平均CPU利用率」が、事前に決められた最小しきい値よりも小さいか否かを判断する(ステップS602)。
ここで、ポストインストールアプリの「平均継続時間」が、事前に決められた最小しきい値よりも小さく、かつ、ポストインストールアプリの「平均CPU利用率」が、事前に決められた最小しきい値よりも小さいと判断されたら(ステップS602のYes)、アプリ動作管理部203は、アプリCPUコア制御情報302の「負荷しきい値」を、例えば(90、60)に更新する(ステップS605)。即ち、「コア1」1012をONする為のハードル(ONしきい値)を上げ、「コア1」1011をOFFする為のハードル(OFFしきい値)を下げる。
一方、ポストインストールアプリの「平均継続時間」が、事前に決められた最小しきい値よりも小さく、かつ、ポストインストールアプリの「平均CPU利用率」が、事前に決められた最小しきい値よりも小さいと判断されなければ(ステップS602のNo)、アプリ動作管理部203は、アプリCPUコア制御情報302の「負荷しきい値」を例えば(80、50)に更新する(ステップS603)。なお、本実施形態では、「負荷しきい値」が(80、50)であることを前提としているので、「負荷しきい値」が変化することはない。
以上で、負荷しきい値修正処理のフローの説明を終了する。
本実施形態によれば、アプリケーションプログラム毎に決められた「負荷しきい値」を使用して、CPU101の「コア1」1012のON/OFFを制御する。
例えば、スクロールや手書き入力などのユーザ操作を受け付けるアプリケーションプログラムでは、低目に設定された「ONしきい値」を使用して、CPU101の「コア1」1012をONするか否かを判断する。
このため、ユーザ操作に付随してCPU負荷が上昇したときに、早目に「コア1」1012が稼動することになるので、CPU101の処理能力が不足しにくい。従って、CPU101の処理能力の不足に起因するスクロールや手書き入力の結果表示の品質低下を防止することができる。
逆に、スクロールや手書き入力などのユーザ操作をあまり受け付けないアプリケーションプログラムでは、高目に設定された「ONしきい値」を使用して、「コア1」1012をONするか否かを判断する。
このため、CPU負荷が上昇しやすいスクロールや手書き入力などのユーザ操作をあまり受け付けないにも関わらず、「コア1」1012を稼働させてしまい、無駄な消費電力を発生させることを回避することができる。
また、起動から終了までの経過時間が長期である、例えばブラウザや地図などのアプリケーションプログラムでは、低目に設定された「ONしきい値」を使用して、CPU101の「コア1」1012をONするか否かを判断する。
アプリの起動から終了までの経過時間が長期になるほど、CPU負荷が上昇しやすいスクロールや手書き入力などのユーザ操作を受け付ける機会が増加するが、早目に「コア1」1012が稼動することになるので、実際にユーザ操作を受け付けたときに、CPU101の処理能力が不足しにくい。従って、CPU101の処理能力の不足に起因するスクロールや手書き入力の結果表示の品質低下を防止することができる。
逆に、起動から終了までの経過時間が短期である、例えば電卓などのアプリケーションプログラムでは、高目に設定された「ONしきい値」を使用して、CPU101の「コア1」1012をONするか否かを判断する。
このため、アプリケーションプログラムが起動後すぐに終了するにも関わらず、即ち、CPU負荷が上昇しやすいスクロールや手書き入力などのユーザ操作を受け付ける機会が少ないにも関わらず、「コア1」1012を稼働させてしまい、無駄な消費電力を発生させることを回避することができる。
さらに、本実施形態では、携帯端末装置100の購入後に、ユーザ自らインストールしたアプリ(ポストインストールアプリ)の「負荷しきい値」にデフォルト値を設定しておき、該ポストインストールアプリがフォアグラウンドからバックグラウンドに遷移したときに、フォアグラウンドでの動作状況を踏まえて、「負荷しきい値」を更新する。
このため、素性のわからないポストインストールアプリでも、ユーザの利用状況に応じて、アプリケーションプログラムに応じた「負荷しきい値」に近づいていくことになる。従って、ポストインストールアプリについても、無駄な消費電力の発生や、CPU101の処理能力の不足に起因するスクロールや手書き入力の結果表示の品質低下を防止することができる。
[第2の実施形態]
以下、図14〜図19を参照して、第2の実施形態にかかる携帯端末装置200を説明する。本実施形態では、フォアグラウンドアプリの他にバックグラウンドでサービスが動作し、該サービスに起因する定常的なCPU負荷、即ち定常負荷が存在していることを想定する。定常負荷が存在している場合、フォアグラウンドアプリの直近のCPU利用率だけでなく、サービスの直近のCPU利用率を加味して、CPU負荷を算出することとなる。
なお、サービスの直近のCPU利用率は、前述のアプリの直近のCPU利用率と同様に、前回の観測から今回の観測までに実際にサービスが動作した時間の平均(時間平均)、即ち前回の観測時刻から今回の観測時刻までの経過時間に占める、CPU101が実際にサービスを実行していた時間の比率である。
[携帯端末装置200の機能ブロック]
図14は、第2の実施形態にかかる携帯端末装置200の機能ブロックの概略図である。
図14に示すように、本実施形態にかかる携帯端末装置200は、さらに、定常負荷監視部210及び定常負荷管理テーブル306を備える。
定常負荷監視部210及び定常負荷管理テーブル306は、何れもCPU101が、Androidのアプリケーションフレームワーク/ライブラリに組み込まれた制御プログラムを実行することで実現される。なお、定常負荷管理テーブル306は、補助メモリ103に構築される。
定常負荷監視部210は、ユーザが画面操作できるアプリではなく、例えば音楽再生やセンシング処理などの、バックグラウンドで継続的に動作するサービスの使用の有無を監視する。センシング処理としては、例えば位置計測や歩数測計などの為のセンシングがある。具体的には、定常負荷監視部210は、プロセス動作情報305の「ユーザモード動作時間」及び「カーネルモード動作時間」と、定常負荷管理テーブル306の「開始しきい値」、「終了しきい値」、「継続時間しきい値」とに基づき、定常負荷管理テーブル306の「動作状態」及び「継続時間」を更新する。
アプリ連携制御部202は、定期的にアプリやサービスの動作状態やCPU利用率を観測して、フォアグラウンドアプリ毎の「負荷しきい値」に基づき、CPU101のコアを増減するか否かを判断する。具体的には、アプリ連携制御部202は、定常負荷管理テーブル306、アプリCPUコア制御情報302、プロセス動作情報305を参照して、フォアグラウンドアプリの「直近のCPU利用率」及びサービスの「直近のCPU利用率」の合計を、直近のCPU負荷として算出する。さらに、アプリ連携制御部202は、フォアグラウンドアプリの「直近のCPU利用率」及びサービスの「直近のCPU利用率」の合計と、フォアグラウンドアプリ毎に決められた「負荷しきい値」とに基づき、「コア1」1012のON/OFFを判断して、CPU制御情報303の「cpu1/online」に「0」もしくは「1」を記録する。
(定常負荷管理テーブル306)
図15は、第2の実施形態にかかる定常負荷管理テーブル306の概略図である。
図15に示すように、定常負荷管理テーブル306は、アプリケーションプログラム毎に、「プログラム名」、「開始しきい値」、「終了しきい値」、「継続時間しきい値」、「動作状態」、「継続時間」、「前回の観測時刻」、「前回の観測までの累積動作時間」を記憶する。
なお、定常負荷管理テーブル306に登録されるアプリケーションプログラムは、例えばシステムサーバ、メディアサーバ、センシングアプリなどの、アプリからの要求に基づき、常時バックグラウンドで動作するアプリケーションプログラム、即ちサービスである。
「動作状態」は、定常負荷が存否を判断する為に使用される。「動作状態」としては、「停止中」、「開始中」、「動作中」、「終了中」が定義され、「停止中」に「0」、「開始中」に「1」、「動作中」に「2」、「終了中」に「3」が割り当てられる。
「停止中」は、定常負荷が存在していない動作状態である。「動作中」は、定常負荷が存在している動作状態である。「開始中」は、「停止中」から「動作中」への移行状態であって、具体的には、定常負荷が存在していると看做すか否かを判断している動作状態である。「終了中」は、「動作中」から「停止中」への移行状態であって、具体的には、定常負荷が消滅していると看做すか否かを判断している動作状態である。
「継続時間」は、それぞれの「動作状態」に移行してからの経過時間である。例えば、「動作状態」が「動作中」であれば、「継続時間」は、「開始中」から「動作中」への移行時刻を起点として計測された、「動作中」の経過時間である。
「開始しきい値」は、定常負荷が存在している否かの判断を開始する為に使用される。詳細は後述するが、定常負荷監視部210は、監視対象のサービスの直近のCPU利用率が「開始しきい値」よりも大きい場合に、定常負荷が存在しているか否かの判断を開始する。
「終了しきい値」は、定常負荷が消滅しているか否かの判断を開始する為に使用される。詳細は後述するが、定常負荷監視部210は、監視対象のサービスの直近のCPU利用率が「終了しきい値」よりも小さい場合に、定常負荷が消滅しているか否かの判断を開始する。
「継続時間しきい値」は、定常負荷が存在しているか否かの判断及び定常負荷が消滅しているか否かを判断する為に使用される。詳細は後述するが、定常負荷監視部210は、監視対象のサービスの「動作状態」が「開始中」である時間、即ち「継続時間」が、「継続時間しきい値」よりも大きい場合に、定常負荷が存在していると判断する。また、定常負荷監視部210は、監視対象のサービスの「動作状態」が「終了中」である時間、即ち「継続時間」が、「継続時間しきい値」よりも大きい場合に、定常負荷が消滅していると判断する。
なお、「開始しきい値」、「終了しきい値」、「継続時間しきい値」は、何れも事前に決められている。本実施形態では、「開始しきい値」、「終了しきい値」の単位として、パーセント(%)を使用し、「継続時間しきい値」及び「継続時間」の単位として、Tick(=10ms)を使用している。
「前回の観測時刻」及び「前回の観測までの累積動作時間」は、それぞれアプリCPUコア制御情報302の「前回の観測時刻」及び「前回の観測までの累積動作時間」に相当する。
定常負荷管理テーブル306の「動作状態」及び「継続時間」は、定常負荷監視部210により更新され、定常負荷管理テーブル306の「前回の観測時刻」及び「前回の観測までの累積動作時間」は、アプリ連携制御部202により更新される。
(アプリ連携制御処理)
図16は、第2の実施形態にかかるアプリ連携制御処理のフローチャートである。
図16に示すように、アプリ連携制御処理部202は、CPUコア制御処理中のサブルーチンの呼び出しを契機に起動する。アプリ連携制御部202は、先ず、定常負荷管理テーブル306を参照して、定常負荷が存在するか否かを判断する(ステップS701)。具体的には、アプリ連携制御部202は、定常負荷管理テーブル306を参照して、「動作状態」に「2」が登録されたアプリケーションプログラム(サービス)が存在するか否かを判断する。なお、定常負荷が存在するか否かの詳細判断は、後述することとする。
ここで、定常負荷が存在すると判断されたら(ステップS701のYes)、アプリ連携制御処理部202は、アプリCPUコア制御情報302を参照して、監視対象のアプリケーションプログラム(アプリ)が存在するか否かを判断する(ステップS702)。具体的には、アプリ連携制御処理部202は、アプリCPUコア制御情報302を参照して、「監視対象」に「1」が登録されたアプリケーションプログラム(アプリ)が存在するか否かを判断する。
ここで、監視対象のアプリが存在すると判断されたら(ステップS702のYes)、アプリ連携制御処理部202は、システム状態情報304を参照して、「コア0」1011だけが稼働しているか否かを判断する(ステップS703)。具体的には、アプリ連携処理部202は、システム状態情報304の「Online」に「コア0」1011のコア番号「0」だけが登録されているか否かを判断する。
ここで、「コア0」1011だけが稼働していると判断されたら(ステップS703のYes)、即ち「コア1」1012が稼働していないと判断されたら、アプリ連携制御処理部202は、サブルーチンとしての1コア動作中処理の呼び出しを実行する(ステップS704)。1コア動作中処理の詳細は、後述することとする。
次に、アプリ連携制御処理部202は、1コア動作中処理の終了後、アプリ連携制御処理の呼び出し元の処理を実行する。
一方、「コア0」1011だけが稼働していると判断されなければ(ステップS703のNo)、即ち「コア1」1012も稼働していると判断されたら(ステップS703のNo)、アプリ連携制御処理部202は、サブルーチンとしての複数コア動作中処理の呼び出しを実行する(ステップS705)。複数コア動作中処理の詳細は、後述することとする。
次に、アプリ連携制御処理部202は、複数コア動作中処理の終了後、アプリ連携制御処理の呼び出し元の処理を実行する。
なお、定常負荷が存在すると判断されなければ(ステップS701のNo)、アプリ連携制御処理部202は、第1の実施形態にかかるアプリ連携制御処理(ステップS201−S204)を実行することとなる(ステップS706)。
以上で、アプリ連携制御処理のフローの説明を終了する。
(1コア動作中処理)
図17は、第2の実施形態にかかる1コア動作中処理のフローチャートである。
図17に示すように、アプリ連携制御処理部202は、アプリ連携制御処理中のサブルーチンの呼び出しを契機に、1コア動作中処理を開始する。アプリ連携制御処理部202は、1コア動作中処理にて、先ず、アプリCPUコア制御情報302及びプロセス動作情報305を参照して、監視対象のアプリケーションプログラム、即ちフォアグラウンドアプリの直近のCPU利用率を算出する(ステップS801)。なお、直近のCPU利用率は、前回の観測から今回の観測までに実際にフォアグラウンドアプリが動作した時間の比率、即ち前回の観測時刻から今回の観測時刻までの経過時間に占める、CPU101が実際にフォアグラウンドアプリを実行していた時間の比率である。である。直近のCPU利用率は、例えば、前述の数式(1)により算出しても良い。
このとき、アプリ連携制御処理部202は、監視対象のアプリケーションプログラム(フォアグラウンドアプリ)のプロセス動作情報305の「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、数式(1)の「今回の観測までの累積動作時間」、タイマ部209から取得した現在時刻を、数式(1)の「今回の観測時刻」、アプリCPUコア制御情報302(302aもしくは302b)に記録されている「前回の観測までの累積動作時間」及び「前回の観測時刻」を、それぞれ数式(1)の「前回の観測までの累積動作時間」及び「前回の観測時刻」とする。
次に、アプリ連携制御処理部202は、定常負荷管理テーブル306及びプロセス動作情報305を参照して、定常負荷を発生させているアプリケーションプログラム、即ちサービスの直近のCPU利用率を算出する(ステップS802)。サービスの直近のCPU利用率は、例えば、前述の数式(1)により算出しても良い。
このとき、アプリ連携制御処理部202は、定常負荷を発生させているサービスのプロセス動作情報305の「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、数式(1)の「今回の観測までの累積動作時間」、タイマ部209から取得した現在時刻を、数式(1)の「今回の観測時刻」、定常負荷管理テーブル306に記録されている「前回の観測までの累積動作時間」及び「前回の観測時刻」を、数式(1)の「前回の観測までの累積動作時間」及び「前回の観測時刻」とする。
次に、アプリ連携制御処理部202は、フォアグラウンドアプリの直近のCPU利用率と、定常負荷を発生させているサービスの直近のCPU利用率との合計(直近のCPU負荷)が、アプリケーションプログラム毎に決められた「負荷しきい値」の「ONしきい値」よりも大きいか否かを判断する(ステップS803)。
ここで、フォアグラウンドアプリの直近のCPU利用率と、定常負荷を発生させているサービスの直近のCPU利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「ONしきい値」よりも大きいと判断されたら(ステップS803のYes)、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」を「1」に更新する(ステップS804)。「cpu1/online」を「1」に更新すると、CPU状態制御部208からCPU周波数/状態設定部206に「コア1」1012のON指示が通知され、「コア0」1011及び「コア1」1012の双方が動作することとなる。
次に、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」の更新後、1コア動作中処理の呼び出し元の処理を実行する。
一方、フォアグラウンドアプリの直近のCPU利用率と、定常負荷を発生させているサービスの直近のCPU利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「ONしきい値」よりも大きいと判断されなければ(ステップS803のNo)、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」を更新せずに、1コア動作中処理の呼び出し元の処理を実行する。即ち、「コア0」1011の稼働だけが継続することとなる。
以上で、1コア動作中処理のフローの説明を終了する。
(複数コア動作中処理)
図18は、第2の実施形態にかかる複数コア動作中処理のフローチャートである。
図18に示すように、アプリ連携制御処理部202は、アプリ連携制御処理中のサブルーチンの呼び出しを契機に、複数コア動作中処理を開始する。アプリ連携制御処理部202は、複数コア動作中処理にて、先ず、アプリCPUコア制御情報302及びプロセス動作情報305を参照して、フォアグラウンドアプリの直近のCPU利用率(平均動作負荷)を算出する(ステップS901)。直近のCPU利用率は、1コア動作中処理と同様に算出すれば良い。
次に、アプリ連携制御処理部202は、定常負荷管理テーブル306及びプロセス動作情報305を参照して、定常負荷を発生させているサービスの直近のCPU利用率(平均定常負荷)を算出する(ステップS902)。直近のCPU利用率は、1コア動作中処理と同様に算出すれば良い。
次に、アプリ連携制御処理部202は、フォアグラウンドアプリの直近のCPU利用率と、定常負荷を発生させるサービスの直近のCPU利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「OFFしきい値」よりも小さいか否かを判断する(ステップS903)。
ここで、フォアグラウンドアプリの直近のCPU利用率と、定常負荷を発生させるサービスの直近のCPU利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「OFFしきい値」よりも小さいと判断されたら(ステップS903のYes)、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」を「0」に更新する(ステップS904)。「cpu1/online」を「0」に更新すると、CPU状態制御部208からCPU周波数/状態設定部206に「コア1」1012のOFF指示が通知され、「コア0」1011だけが動作することとなる。
次に、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」の更新後、複数コア動作中処理の呼び出し元の処理を実行する。
一方、フォアグラウンドアプリの直近のCPU利用率と、定常負荷を発生させるサービスの直近のCPU利用率との合計が、アプリケーションプログラム毎に決められた「負荷しきい値」の「OFFしきい値」よりも小さいと判断されなければ(ステップS903のNo)、アプリ連携制御処理部202は、CPU制御情報303の「cpu1/online」を更新せずに、複数コア動作中処理の呼び出し元の処理を実行する。即ち、「コア0」1011及び「コア1」1012の双方の稼働が継続することとなる。
以上で、複数コア動作中処理のフローの説明を終了する。
(定常負荷監視処理)
図19は、第2の実施形態にかかる定常負荷監視処理のフローチャートである。
図19に示すように、定常負荷監視部210は、先ず、定常負荷管理テーブル306を参照して、監視対象のサービスを取得する(ステップS1001)。
次に、定常負荷監視部210は、定常負荷管理テーブル306及びプロセス動作情報305を参照して、監視対象のサービスの直近のCPU利用率を算出する(ステップS1002)。直近のCPU利用率は、例えば、前述の数式(1)により算出しても良い。
このとき、定常負荷監視部210は、監視対象のサービスのプロセス動作情報305の「ユーザモード動作時間」及び「カーネルモード動作時間」の合計を、数式(1)の「今回の観測までの累積動作時間」、タイマ部209から取得した現在時刻を、数式(1)の「今回の観測時刻」、定常負荷管理テーブル306に記録されている「前回の観測までの累積動作時間」及び「前回の観測時刻」を、それぞれ数式(1)の「前回の観測までの累積動作時間」及び「前回の観測時刻」とする。
次に、定常負荷管理部210は、定常負荷管理テーブル306を参照して、監視対象のサービスが「動作中」もしくは「終了中」であるか否かを判断する(ステップS1003)。具体的には、定常負荷管理部210は、定常負荷管理テーブル306を参照して、「動作状態」に「動作中」を意味する「2」もしくは「終了中」を意味する「3」が記録されているか否かを判断する。確認の為に述べると、「動作中」は、定常負荷が存在している動作状態であって、「終了中」は、「動作中」から「停止中」への移行状態、即ち定常負荷の終了確認を実行している動作状態である。
ここで、監視対象のサービスが「動作中」もしくは「終了中」であると判断されたら(ステップS1003のYes)、定常負荷管理部210は、定常負荷管理テーブル306を参照して、直近のCPU利用率が「終了しきい値」よりも小さいか否かを判断する(ステップS1004)。
ここで、監視対象のサービスの直近のCPU利用率が「終了しきい値」より小さいと判断されたら(ステップS1004のYes)、定常負荷管理部210は、定常負荷管理テーブル306の「継続時間」を更新するとともに、定常負荷テーブル306の「動作状態」を「終了中」に更新する(ステップS1005)。具体的には、定常負荷管理部210は、前回の観測から今回の観測までの経過時間を、定常負荷管理テーブル306に記録されている「継続時間」に加算して、新たな「継続時間」として更新するとともに、定常負荷管理テーブル306の「動作状態」を、「終了中」を意味する「3」に更新する。確認の為に述べると、「継続時間」は、それぞれの「動作状態」に移行してからの経過時間である。例えば、「動作状態」が「動作中」であれば、「継続時間」は、「開始中」から「動作中」への移行時刻を起点として計測された、「動作中」の経過時間である。
次に、定常負荷管理部210は、定常負荷管理テーブル306を参照して、「継続時間」が「継続時間しきい値」よりも大きいか否かを判断する(ステップS1006)。
ここで、「継続時間」が「継続時間しきい値」よりも大きいと判断されたら(ステップS1006のYes)、定常負荷管理部210は、次回以降の判断の為に定常負荷管理テーブル306の「継続時間」を初期化(初期値に更新)するとともに、「動作状態」を「停止」に更新する(ステップS1007)。具体的には、定常負荷管理部210は、定常負荷管理テーブル306の「継続時間」を初期値「0」に更新するとともに、定常負荷管理テーブル306の「動作状態」を、「停止」を意味する「0」に更新する。
次に、定常負荷管理部210は、定常負荷管理テーブル306を参照して、他のサービスが存在しないか否かを判断する(ステップS1008)。
ここで、他のサービスが存在しないと判断されたら(ステップS1008のYes)、定常負荷管理部210は、定期監視の為のタイマを設定して、スリープ状態に遷移する(ステップS1009)。タイマの設定時間は、特に限定されるものではないが、本実施形態では、数十msとする。タイマの設定時間の満了後、定常負荷管理部210は、定常負荷監視処理のスタートから処理を実行する。
一方、他のサービスが存在しないと判断されなければ(ステップS1008のNo)、即ち他のサービスが存在すると判断されたら、定常負荷管理部210は、該サービスを監視対象として、定常負荷監視処理のスタートから処理を実行する。
一方、監視対象のサービスの直近のCPU利用率が「終了しきい値」より小さいと判断されなければ(ステップS1004のNo)、定常負荷管理部210は、定常負荷管理テーブル306の「継続時間」を初期化(初期値に更新)するとともに、定常負荷管理テーブル306の「動作状態」を「動作中」に更新する(ステップS1010)。具体的には、定常負荷管理部210は、定常負荷管理テーブル306の「継続時間」を初期値「0」に更新するとともに、定常負荷管理テーブル306の「動作状態」を、「動作中」を意味する「2」に更新する。
次に、定常負荷管理部210は、定常負荷管理テーブル306を参照して、他のサービスが存在しないか否かを判断する(ステップS1008)。
又、監視対象のサービスが「動作中」もしくは「終了中」であると判断されなければ(ステップS1003のNo)、即ち監視対象のサービスが「停止中」もしくは「開始中」であると判断されたら、定常負荷管理部210は、定常負荷管理テーブル306を参照して、直近のCPU利用率が「開始しきい値」よりも大きいか否かを判断する(ステップS1011)。確認の為に述べると、「停止中」は、定常負荷が存在していない動作状態であって、「開始中」は、「停止中」から「動作中」への移行状態、即ち定常負荷の開始確認を実行している動作状態である。
ここで、監視対象のサービスの直近のCPU利用率が「開始しきい値」よりも大きいと判断されたら(ステップS1011のYes)、定常負荷管理部210は、定常負荷管理テーブル306の「継続時間」を更新するとともに、定常負荷テーブル306の「動作状態」を「開始中」に更新する(ステップS1012)。具体的には、定常負荷管理部210は、前回の観測から今回の観測までの経過時間を、定常負荷管理テーブル306に登録されている「継続時間」に加算して、新たな「継続時間」として更新するとともに、定常負荷管理テーブル306の「動作状態」を、「開始中」を意味する「1」に更新する。
次に、定常負荷管理部210は、定常負荷管理テーブル306を参照して、「継続時間」が「継続時間しきい値」よりも大きいか否かを判断する(ステップS1013)。
ここで、「継続時間」が「継続時間しきい値」よりも大きいと判断されたら(ステップS1013のYes)、定常負荷管理部210は、次回以降の判断の為に定常負荷管理テーブル306の「継続時間」を初期化(初期値に更新)するとともに、「動作状態」を「動作中」に更新する(ステップS1014)。具体的には、定常負荷管理部210は、定常負荷管理テーブル306の「継続時間」を初期値「0」に更新するとともに、定常負荷管理テーブル306の「動作状態」を、「動作中」を意味する「2」に更新する。
次に、定常負荷管理部210は、定常負荷管理テーブル306を参照して、他のサービスが存在しないか否かを判断する(ステップS1008)。
一方、監視対象のサービスの直近のCPU利用率が「開始しきい値」よりも大きいと判断されなければ(ステップS1011のNo)、定常負荷管理部210は、定常負荷管理テーブル306の「継続時間」を初期化(初期値に更新)するとともに、定常負荷管理テーブル306の「動作状態」を「停止中」に更新する(ステップS1015)。具体的には、定常負荷管理部210は、定常負荷管理テーブル306の「継続時間」を初期値「0」に更新するとともに、定常負荷管理テーブル210の「動作状態」を、「停止」を意味する「0」に更新する。
次に、定常負荷管理部210は、定常負荷管理テーブル306を参照して、他のサービスが存在しないか否かを判断する(ステップS1008)。
以上で、定常負荷監視処理のフローの説明を終了する。
本実施形態によれば、フォアグラウンドアプリの他に、定常負荷を発生させているサービスが動作している場合、フォアグラウンドアプリの直近のCPU利用率と、サービスの直近のCPU利用率との合計をCPU負荷として、CPU101の「コア1」1012のON/OFFを決定している。
このため、定常負荷を発生させているサービスがバックグラウンドで動作している場合でも、CPU101の「コア1」1012のON/OFFを正確に制御することができる。
さらに、フォアグラウンドアプリの画面操作に起因して、CPU負荷が急増した場合でも、例えば音楽再生やセンシング処理のような、継続的に動作することが望まれるサービスに影響が生じることがない。例えば、音楽再生中に生じる音飛び、センシングの歯抜けなどを抑制することができる。
なお、本実施形態では、フォアグラウンドアプリの直近のCPU利用率と、定常負荷を発生させるサービスの直近のCPU利用率と、の合計を、CPU負荷としているが、本発明の態様は、これに限定されるものではない。例えば、バックグラウンドアプリが定常負荷を発生させている場合、フォアグラウンドアプリの直近のCPU利用率と、バックグラウンドアプリの直近のCPU利用率と、の合計を、CPU負荷としても良い。
さらに、定常負荷は、バックグラウンドアプリ及びサービスの双方の動作に起因して発生するもの、複数のバックグラウンドアプリの動作に起因して発生するもの、複数のサービスの動作に起因して発生するものであっても良い。
100、200:携帯端末装置
101:CPU(マルチコアCPU)
102:メインメモリ(ストレージ)
103:補助メモリ(ストレージ)
113:ディスプレイ
202:アプリ連携制御部(取得部、コア制御部)
203:アプリ動作監視部(検出部)

Claims (8)

  1. マルチコアCPUと、前記マルチコアCPUにより実行される複数のアプリケーションプログラムの実行結果を表示するディスプレイと、を備える携帯端末装置の制御方法に於いて、
    前記携帯端末装置が、
    前記複数のアプリケーションプログラムの各々が実行結果を前記ディスプレイに表示しながら動作する状態をフォアグラウンド環境として管理し、
    前記複数のアプリケーションプログラムの各々に対応づけて、前記各アプリケーションプログラムが前記フォアグラウンド環境で動作する際に前記マルチコアCPUの稼働コア数を増減すべきか否かを判定するための負荷しきい値を保持し、
    前記複数のアプリケーションプログラムの中の第1のアプリケーションプログラムの前記フォアグラウンド環境における動作開始を検出し、
    前記第1のアプリケーションプログラムが前記フォアグラウンド環境において前記マルチコアCPUにより実際に実行されていた時間の、直近の所定の単位時間に対する比率である第1のCPU利用率を求めてCPU負荷とし、
    前記フォアグラウンド環境における動作開始検出された前記第1のアプリケーションプログラムに対応づけて保持された前記負荷しきい値を取得し、
    前記CPU負荷を、取得した前記負荷しきい値と比較し判定することにより、前記第1のアプリケーションプログラムの前記フォアグラウンド環境における動作時の前記マルチコアCPUの稼働コア数を決める、
    携帯端末装置の制御方法。
  2. 請求項1に記載の携帯端末装置の制御方法に於いて、
    前記負荷しきい値は、前記携帯端末装置のストレージに記憶されていて、
    前記携帯端末装置は、
    前記第1のアプリケーションプログラムの前記フォアグラウンド環境における動作終了後、前記第1のアプリケーションプログラムの起動から終了までの経過時間、および、前記経過時間の間に前記第1のアプリケーションプログラムが実際に前記マルチコアCPUにより実行されていた時間の累積値を記録し、
    前記経過時間の平均値である平均継続時間、および前記累積値の前記経過時間に対する比率であるCPU利用率を平均した平均CPU利用率に基づき、前記ストレージに記憶された前記第1のアプリケーションプログラムに対応する前記負荷しきい値を補正する、
    携帯端末装置の制御方法。
  3. 請求項1乃至2の何れかに記載の携帯端末装置の制御方法に於いて、
    前記携帯端末装置が、
    前記フォアグラウンド環境において動作中の前記第1のアプリケーションプログラム以外に動作している他のアプリケーションプログラムを検出し、
    前記第1のアプリケーションプログラムの前記第1のCPU利用率と、前記他のアプリケーションプログラムが前記マルチコアCPUにより実際に実行された時間の直近の前記所定の単位時間に対する比率である第2のCPU利用率との合計を前記CPU負荷とする、
    携帯端末装置の制御方法。
  4. 請求項1乃至3の何れかに記載の携帯端末装置の制御方法に於いて、
    前記負荷しきい値は、前記稼働コア数を増加する為の第1の負荷しきい値を含み、
    前記携帯端末装置は、
    前記CPU負荷が前記第1の負荷しきい値と同等もしくは前記第1の負荷しきい値よりも大きい場合に、前記マルチコアCPUの稼働コア数を増加する、
    携帯端末装置の制御方法。
  5. 請求項1乃至4の何れかに記載の携帯端末装置の制御方法に於いて、
    前記負荷しきい値は、前記稼働コア数を減少する為の第2の負荷しきい値を含み、
    前記携帯端末装置は、
    前記CPU負荷が前記第2の負荷しきい値と同等もしくは前記第2の負荷しきい値よりも小さい場合に、前記マルチコアCPUの稼働コア数を減少する、
    携帯端末装置の制御方法。
  6. 請求項1乃至5の何れかに記載の携帯端末装置の制御方法に於いて、
    前記携帯端末装置は、
    前記複数のアプリケーションプログラムに基づき、前記ディスプレイへの接触によりスクロールする表示画面を提示する、
    携帯端末装置の制御方法。
  7. マルチコアCPUと、前記マルチコアCPUにより実行される複数のアプリケーションプログラムの実行結果を表示するディスプレイと、を備える携帯端末装置を制御する制御プログラムに於いて、
    前記携帯端末装置に、
    前記複数のアプリケーションプログラムの各々が実行結果を前記ディスプレイに表示しながら動作する状態をフォアグラウンド環境として管理し、
    前記複数のアプリケーションプログラムの各々に対応づけて、前記各アプリケーションプログラムが前記フォアグラウンド環境で動作する際に前記マルチコアCPUの稼働コア数を増減すべきか否かを判定するための負荷しきい値を保持し、
    前記複数のアプリケーションプログラムの中の第1のアプリケーションプログラムの前記フォアグラウンド環境における動作開始を検出し、
    前記第1のアプリケーションプログラムが前記フォアグラウンド環境において前記マルチコアCPUにより実際に実行されていた時間の、直近の所定の単位時間に対する比率であるCPU利用率を求めてCPU負荷とし、
    前記フォアグラウンド環境における動作開始検出された前記第1のアプリケーションプログラムに対応づけて保持された前記負荷しきい値を取得し、
    前記CPU負荷を、取得した前記負荷しきい値と比較判定することにより、前記第1のアプリケーションプログラムの前記フォアグラウンド環境における動作時の前記マルチコアCPUの稼働コア数を決める、
    処理を実行させる制御プログラム。
  8. マルチコアCPUと、前記マルチコアCPUにより実行される複数のアプリケーションプログラムの実行結果を表示するディスプレイと、を備える携帯端末装置に於いて、
    前記複数のアプリケーションプログラムの各々が実行結果を前記ディスプレイに表示しながら動作する状態をフォアグラウンド環境として管理する管理部と、
    前記複数のアプリケーションプログラムの各々に対応づけて、前記各アプリケーションプログラムが前記フォアグラウンド環境で動作する際に前記マルチコアCPUの稼働コア数を増減すべきか否かを判定するための負荷しきい値を保持する記憶部と、
    前記複数のアプリケーションプログラムの中の第1のアプリケーションプログラムの前記フォアグラウンド環境における動作開始を検出する検出部と、
    前記第1のアプリケーションプログラムが前記フォアグラウンド環境において前記マルチコアCPUにより実際に実行されていた時間の、直近の所定の単位時間に対する比率であるCPU利用率をCPU負荷として求めるCPU負荷算定部と、
    前記フォアグラウンド環境における動作開始検出された前記第1のアプリケーションプログラムに対応づけて保持された前記負荷しきい値を取得する取得部と、
    前記CPU負荷を、取得した前記負荷しきい値と比較判定することにより、前記第1のアプリケーションプログラムの前記フォアグラウンド環境における動作時の前記マルチコアCPUの稼働コア数を決めるコア制御部と、
    を備える携帯端末装置。
JP2012140453A 2012-06-22 2012-06-22 携帯端末装置の制御方法、制御プログラム及び携帯端末装置 Expired - Fee Related JP5915406B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012140453A JP5915406B2 (ja) 2012-06-22 2012-06-22 携帯端末装置の制御方法、制御プログラム及び携帯端末装置
US13/868,437 US20130346991A1 (en) 2012-06-22 2013-04-23 Method of controlling information processing apparatus, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012140453A JP5915406B2 (ja) 2012-06-22 2012-06-22 携帯端末装置の制御方法、制御プログラム及び携帯端末装置

Publications (2)

Publication Number Publication Date
JP2014006619A JP2014006619A (ja) 2014-01-16
JP5915406B2 true JP5915406B2 (ja) 2016-05-11

Family

ID=49775577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012140453A Expired - Fee Related JP5915406B2 (ja) 2012-06-22 2012-06-22 携帯端末装置の制御方法、制御プログラム及び携帯端末装置

Country Status (2)

Country Link
US (1) US20130346991A1 (ja)
JP (1) JP5915406B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6142709B2 (ja) * 2013-07-23 2017-06-07 富士通株式会社 計測方法、計測プログラム、携帯情報端末、及びその制御方法
WO2015141337A1 (ja) * 2014-03-19 2015-09-24 日本電気株式会社 受信パケット分散方法、キュー選択器、パケット処理装置、および記録媒体
JP6403976B2 (ja) * 2014-04-09 2018-10-10 アルパイン株式会社 コンピュータプログラム、情報処理装置及び処理実行方法
CN107888947A (zh) * 2016-09-29 2018-04-06 法乐第(北京)网络科技有限公司 一种视频播放方法与装置
CN108228337B (zh) * 2016-12-22 2021-08-27 财团法人工业技术研究院 中央处理单元的配置方法及适用此方法的服务器
JP6789861B2 (ja) * 2017-03-16 2020-11-25 富士通コネクテッドテクノロジーズ株式会社 動作周波数制御装置、動作周波数制御プログラム、及び動作周波数制御方法
JP6891072B2 (ja) * 2017-08-09 2021-06-18 オムロンヘルスケア株式会社 情報処理装置、受信方法、およびプログラム
CN108334345B (zh) * 2017-08-14 2021-07-09 Oppo广东移动通信有限公司 应用程序处理方法、装置、可读存储介质和移动终端
JP2020184107A (ja) * 2019-04-26 2020-11-12 シャープ株式会社 電子機器、制御装置、情報処理装置、情報処理システム、及びプログラム
CN111159038B (zh) * 2019-12-30 2023-07-14 北京声智科技有限公司 一种模拟cpu负载的方法及电子设备
CN111538636B (zh) * 2020-04-24 2021-11-19 深圳华锐金融技术股份有限公司 计算机设备确定方法、装置和存储介质
CN112286690A (zh) * 2020-11-09 2021-01-29 珠海格力电器股份有限公司 一种动态调整cpu核的方法、装置、电子设备及存储介质
CN112565512A (zh) * 2020-12-14 2021-03-26 华东师范大学 一种Android应用之间的通过截图和录音获取数据的方法及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7322034B2 (en) * 2002-06-14 2008-01-22 Hewlett-Packard Development Company, L.P. Method and system for dynamically allocating computer system resources
JP4566546B2 (ja) * 2002-10-31 2010-10-20 パナソニック株式会社 通信装置、通信システムおよびアルゴリズム選択方法
US8688786B2 (en) * 2003-09-25 2014-04-01 Oracle America, Inc. Method and system for busy presence state detection in an instant messaging system
US20060123422A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Processor packing in an SMP server to conserve energy
US7793308B2 (en) * 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US9135074B2 (en) * 2005-05-19 2015-09-15 Hewlett-Packard Development Company, L.P. Evaluating performance of workload manager based on QoS to representative workload and usage efficiency of shared resource for plurality of minCPU and maxCPU allocation values
JP4927633B2 (ja) * 2006-09-28 2012-05-09 京セラ株式会社 携帯端末及びその制御方法
US20080313639A1 (en) * 2007-06-13 2008-12-18 Krishna Kumar Policy based scheduling of software applications
JP5182792B2 (ja) * 2007-10-07 2013-04-17 アルパイン株式会社 マルチコアプロセッサ制御方法及び装置
US8296773B2 (en) * 2008-06-30 2012-10-23 International Business Machines Corporation Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance
US8631415B1 (en) * 2009-08-25 2014-01-14 Netapp, Inc. Adjustment of threads for execution based on over-utilization of a domain in a multi-processor system by sub-dividing parallizable group of threads to sub-domains
JP5378946B2 (ja) * 2009-10-26 2013-12-25 株式会社日立製作所 サーバ管理装置およびサーバ管理方法
US8938740B2 (en) * 2010-03-11 2015-01-20 Nec Corporation Resource allocation apparatus, resource allocation method, and computer readable medium
JP2011210134A (ja) * 2010-03-30 2011-10-20 Nec Corp 管理サーバ、仮想マシン管理方法および仮想マシン管理プログラム
EP2390758A1 (en) * 2010-05-25 2011-11-30 Samsung Electronics Co., Ltd. Method and apparatus for managing an application being executed in a portable terminal
JP5345990B2 (ja) * 2010-08-27 2013-11-20 レノボ・シンガポール・プライベート・リミテッド 特定のプロセスを短時間で処理する方法およびコンピュータ
KR101812583B1 (ko) * 2011-07-21 2018-01-30 삼성전자주식회사 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체

Also Published As

Publication number Publication date
US20130346991A1 (en) 2013-12-26
JP2014006619A (ja) 2014-01-16

Similar Documents

Publication Publication Date Title
JP5915406B2 (ja) 携帯端末装置の制御方法、制御プログラム及び携帯端末装置
JP5734505B2 (ja) ポータブルコンピューティングデバイスのマルチコアプロセッサにおける複数のコアへの電力を動的に制御するための方法およびシステム
TWI503659B (zh) 自應用程式之活動預測使用者意圖及未來的互動
TWI570544B (zh) 自電池使用量程度與充電趨勢推測使用者意圖
JP6784204B2 (ja) 情報処理装置、情報処理方法及びプログラム
EP2695056B1 (en) Mechanism for outsourcing context-aware application-related functionalities to a sensor hub
US9003212B2 (en) Information processing device, non-transitory, computer readable storage medium, and method of controlling information processing device
JP6017395B2 (ja) サスペンドの延期
JP5831207B2 (ja) 携帯端末装置、携帯端末装置の制御プログラム及び制御方法
CN105824393B (zh) 片上系统、管理其功率的方法和电子装置
US8935552B2 (en) Information processing apparatus, computer-readable recording medium, and method for controlling power consumed in information processing apparatus
TW201421230A (zh) 可攜式電子設備及其操作方法、以及非暫時性記錄媒體
EP3332306B1 (en) System and method for cache aware low power mode control in a portable computing device
WO2015058410A1 (zh) 一种关机门限电压的调节方法、开机方法及其电子设备
CN107302633B (zh) 应用控制方法、装置、存储介质以及电子设备
JP5853817B2 (ja) 情報処理装置、制御方法及び制御プログラム
US9356459B2 (en) Method for charging battery and electronic device thereof
US20140086053A1 (en) Method for controlling information processing apparatus and information processing apparatus
JP2014085228A (ja) 携帯端末装置の制御方法、制御プログラム、携帯端末装置
US9529404B2 (en) Information processing apparatus and method of controlling information processing apparatus
JP5614347B2 (ja) 情報処理装置、電力制御方法、および電力制御プログラム
KR20180004956A (ko) 전자 장치 및 전자 장치의 동작 방법
JP5368355B2 (ja) 電子機器及び報知制御方法
JP2014182558A (ja) 通信装置とその制御方法、および、プログラム
CN113434336A (zh) 开机方法、装置、电子设备及可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160218

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: 20160308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160321

R150 Certificate of patent or registration of utility model

Ref document number: 5915406

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees