JP2017511940A - デバイス固有又はユーザー固有のリソース使用プロファイルに基づくリソース管理 - Google Patents

デバイス固有又はユーザー固有のリソース使用プロファイルに基づくリソース管理 Download PDF

Info

Publication number
JP2017511940A
JP2017511940A JP2016556970A JP2016556970A JP2017511940A JP 2017511940 A JP2017511940 A JP 2017511940A JP 2016556970 A JP2016556970 A JP 2016556970A JP 2016556970 A JP2016556970 A JP 2016556970A JP 2017511940 A JP2017511940 A JP 2017511940A
Authority
JP
Japan
Prior art keywords
application
resource usage
resource
amount
computing device
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.)
Granted
Application number
JP2016556970A
Other languages
English (en)
Other versions
JP2017511940A5 (ja
JP6509895B2 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2017511940A publication Critical patent/JP2017511940A/ja
Publication of JP2017511940A5 publication Critical patent/JP2017511940A5/ja
Application granted granted Critical
Publication of JP6509895B2 publication Critical patent/JP6509895B2/ja
Active 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/5061Partitioning or combining of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/83Admission control; Resource allocation based on usage prediction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5019Workload prediction
    • 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

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Telephone Function (AREA)

Abstract

アプリケーションに関連付けられるフォアグラウンドプロセス及びコンピューティングデバイス上の別個のプロセスとして実行されているアプリケーションに関連付けられる1つ又は複数のバックグラウンドタスクによって使用されるリソースが追跡される。アプリケーションによるリソース使用に関する履歴データは、アプリケーションのリソース使用量を予測するために利用され、その後格納される。アプリケーションのその後の起動は、予測されるリソース使用量が利用可能であるかどうかを条件とすることができる。予測されるリソース使用量が利用可能である場合、それをアプリケーションに割り当てることができ、アプリケーションを起動することができる。アプリケーションが予測されるリソース使用量を超える場合、それと同時に実行されている他のプロセスは、リソースを解放するために終了することができる。アプリケーションが実行される方法にかかわらず、新しいリソース使用データがアプリケーションについて得られ、その後、予測されるリソース使用量を調整するために使用される。

Description

本発明は、デバイス固有又はユーザー固有のリソース使用プロファイルに基づくリソース管理に関する。
[0001]今日のモバイルデバイス、特に今日の低価格のモバイルデバイスは、厳しいマルチタスクシナリオに見舞われている。規模において競争力があるようにするために、モバイルデバイスは、低価格及び/又は低電力の部品を用いて製造しなければならないことが多い。これは、特に、ランダムアクセスメモリー(RAM)及びマルチメディアカード(MMC)の両方を含む、モバイルデバイスを実装するために使用されるメモリーに対して当てはまる。このことの正味の影響は、メモリー管理についてページングに頼っている従来のモバイルデバイスが、同時に複数のプロセスを実行しようとするとき、すぐにフォールオーバーすることである。このことは、非常に乏しいユーザーエクスペリエンスや障害のあるマルチタスクシナリオにつながる。市場が製造コストの低減を求める一方で、モバイルデバイス用に開発されたアプリケーションやオペレーティングシステムがますます大きくなっているので、この問題は特に重要になってきている。
[0002]従来、モバイルデバイス上での複数のプロセスの同時実行をサポートする十分なメモリーがないという問題は、以下の方法のうちの1つ又は複数の方法で扱われた:メモリー管理のためにページングを使用する;モバイルデバイス上でより多くのメモリーを設ける;アプリケーションやオペレーティングシステムのサイズに制限を設ける。上述したように、ページングは、非常に乏しいユーザーエクスペリエンスや障害のあるマルチタスクシナリオにつながることがある。より多くのメモリーを設けると、モバイルデバイスのコスト、複雑さ及び消費電力が跳ね上がる。アプリケーションとオペレーティングシステムのサイズに制限を設けると、ユーザーにとって所望の機能を開発して提供することが極めて困難になる。少なくともこれらの理由から、モバイルデバイスのための既存のメモリー管理ソリューションは不十分である。今日のモバイルデバイスが、ユーザーエクスペリエンスに悪影響を与えず様々なマルチタスクシナリオを可能にする方法で、複数のプロセスを同時に実行することを可能にするために、より良いメモリー管理技術が必要とされている。
[0003]モバイルコンピューティングデバイスなどのコンピューティングデバイス上で実行されるアプリケーションによる、揮発性及び不揮発性メモリー、中央処理装置(CPU)、入出力(I/O)、ネットワーク、電力及びセンサーなどの様々なリソースの使用状況の追跡を可能にする、システム、方法、装置及びコンピュータープログラム製品が本願において説明される。本願で説明される技術は、アプリケーションに関連付けられるフォアグラウンドプロセス(例えば、アプリケーションのためのユーザーインターフェイスを現在提供しており、コンピューティングデバイスに関連付けられる表示の少なくとも一部を占有しているプロセス)によって使用されるリソース、並びに、コンピューティングデバイス上で別のプロセスとして実行されているアプリケーションに関連付けられる1つ又は複数のバックグラウンドタスクによって使用されるリソースの両方を追跡することによって、アプリケーションについてのリソースの使用を都合よく追跡する。アプリケーションによるリソース使用に関する履歴データは、アプリケーションのリソース使用量を予測するために利用され、それはその後格納される。アプリケーションのその後の起動は、予測されるリソース使用量が利用可能であるかどうかを条件とすることができる。予測されるリソース使用量が利用可能な場合、それをアプリケーションに割り当てることができ、アプリケーションを起動することができる。アプリケーションが予測されるリソース使用量を超える場合、それと同時に実行されている他のプロセスが、リソースを解放するために終了されてもよい。アプリケーションが実行する方法にかかわらず、アプリケーションについて新たなリソース使用データが取得され、その後、予測されるリソース使用量を調整するために使用される。このように、アプリケーションのためのリソースの割り当ては、ユーザーの使用パターンに基づいて時間とともにユーザーに対して自動的に微調整することができ、コンピューティングデバイスは、特にマルチタスクシナリオ中、よりよいユーザーエクスペリエンス及び改善されたパフォーマンスを提供することが可能となる。複数のユーザーをサポートするコンピューティングデバイスのために、予測されるリソース使用量は、各ユーザー/アプリケーションの組み合わせについて格納することができる。
[0004]本願に記載のシステム、方法、装置及びコンピュータープログラム製品はまた、特定のリソース使用行動に関連付けられる時刻、位置及びイベントなどの、アプリケーション及び/又はユーザーによるリソース使用に関連する他の情報を追跡することが可能である。そのような情報は、ユーザーがアプリケーションを起動しようとする前であっても、コンピューティングデバイスのリソースをアプリケーションに予測的に割り当てるために使用することができ、有利である。さらに、アプリケーション及び/又はアプリケーションデータは、ユーザーがそれらにアクセスすることが予期される前に、ある時点でメモリーへロードされてもよい。
[0005]具体的には、コンピューティングデバイスのリソースを管理するためにコンピューティングデバイスによって実施される方法が、本願に記載される。例えば、リソースは、揮発性又は不揮発性メモリーリソース、CPUリソース、I/Oリソース、ネットワークリソース、電源リソース及びセンサーリソースのうちの少なくとも1つを含むことができる。この方法によれば、コンピューティングデバイスによって実行されている間、アプリケーションの第1のインスタンスによって使用されるリソースの第1の量が決定される。第1の量を決定するステップは、第1のアプリケーションに関連付けられるフォアグラウンドプロセス及びアプリケーションの第1のインスタンスに関連付けられる1つ又は複数のバックグラウンドタスクによって使用されるリソースの量を決定するステップを含んでもよい。アプリケーションのための第1の予測されるリソース使用量は、少なくとも第1の量に基づいて計算される。第1の予測されるリソース使用量はデータストアに格納される。次いで、コンピューティングデバイスによって実行されるアプリケーションの第2のインスタンスに割り当てられるリソースの第2の量が、少なくとも、データストアに格納された第1の予測されるリソース使用量に基づいて決定される。
[0006]前述の方法の一実施形態では、少なくとも第1の量に基づいてアプリケーションについての第1の予測されるリソース使用量を計算するステップは、第1の量を、1つ又は複数の以前に実行されたアプリケーションのインスタンスに関連付けられる1つ又は複数の以前に決定された量と比較することにより、アプリケーションについての最大のリソース使用量を得るステップと、最大リソース使用量に基づいて、第1の予測されるリソース使用量を計算するステップとを含む。
[0007]別の実施形態では、少なくとも第1の量に基づいてアプリケーションについての第1の予測されるリソース使用量を計算するステップは、第1の量及びアプリケーションの以前に実行されたインスタンスに関連付けられる1つ又は複数の以前に決定された量に基づいてアプリケーションについての平均リソース使用量を得るステップと、平均リソース使用量に基づいて第1の予測されるリソース使用量を計算するステップとを含む。さらにこの実施形態によれば、アプリケーションの平均リソース使用量を得るステップは、第1の量を第1の重み付け係数によって乗算して第1の積を得るステップと、少なくとも1つ又は複数の以前に決定された量に基づいて得られた移動平均量を第2の重み付け係数によって乗算して、第2の積を得るステップと、第1の積及び第2の積を合計するステップとを含む。実施形態によって、第1の重み付け係数は、第2の重み付け係数より大きくてもよいし、小さくてもよいし、又は等しくてもよい。
[0008]前述の方法はまた、リソースの第2の量が現在利用可能ではないと判定するステップと、それに応答して、アプリケーションの第2のインスタンスの実行を防止し及び/又はコンピューティングデバイス上で現在実行されている1つ又は複数のプロセスを終了するなどの特定のアクションを実行するステップとを含む。
[0009]前述の方法は、さらに、コンピューティングデバイスによって実行されている間、アプリケーションの第2のインスタンスによって使用されるリソースの量が第2の量を超えると判定するステップと、それに応答して、コンピューティングデバイス上で現在実行されている1つ又は複数のプロセスを終了するステップとを含んでもよい。
[0010]前述の方法の別の実施形態では、決定するステップ、計算するステップ及び格納するステップは、第1のユーザーのためにコンピューティングデバイスによって実行されている間、アプリケーションの第1のインスタンスによって使用されるリソースの第1の量を決定するステップと、少なくとも第1の量に基づいてアプリケーション及び第1のユーザーについての第1の予測されるリソース使用量を計算するステップと、第1の予測されるリソース使用量をデータストア内に格納するステップと、データストア内に格納された第1の予測されるリソース使用量に少なくとも基づいて、第1のユーザーのためにコンピューティングデバイスによって実行されるべきアプリケーションの第2のインスタンスに割り当てられるべきリソースの第2の量を決定するステップとを含む。この実施形態によれば、方法はさらに、第2のユーザーのためにコンピューティングデバイスによって実行される間、アプリケーションの第3のインスタンスにより使用されるリソースの第3の量を決定するステップと、第3の量に少なくとも基づいてアプリケーション及び第2のユーザーについての第2の予測されるリソース使用量を計算するステップと、第2の予測されるリソース使用量をデータストア内に格納するステップと、データストア内に格納された第2の予測されるリソース使用量に少なくとも基づいて、第2のユーザーのためにコンピューティングデバイスによって実行されるべきアプリケーションの第4のインスタンスに割り当てられるべきリソースの第4の量を決定するステップとを含む。
[0011]コンピュータープログラム製品もまた本願に記載される。コンピュータープログラム製品は、コンピューティングデバイスの少なくとも1つのプロセッサーによって実行されると少なくとも1つのプロセッサに動作を実行させる、コンピュータープログラムロジックが記録されたコンピューター読み取り可能なメモリーを含む。動作は、アプリケーションを起動する要求を受け取るステップと、アプリケーションについての予測されるリソース使用量を得るステップであって、当該予測されるリソース使用量は、コンピューティングデバイスによるアプリケーションの1つ又は複数の以前の実行中のコンピューティングデバイスのリソースについての監視された使用に基づく、ステップと、予測されるリソース使用量を現在利用可能なリソースの量と比較することによって、リソースの十分な量が利用可能であるか否かを判定するステップと、少なくともリソースの十分な量が利用可能であると判定することに応答して、アプリケーションが起動することを可能にするステップとを含む。リソースは、揮発性又は不揮発性のメモリーリソース、CPUリソース、I/Oリソース、ネットワークリソース、電源リソース及びセンサーリソースのうちの1つを含んでもよい。アプリケーションについてのリソースの監視された使用は、アプリケーションに関連付けられるフォアグラウンドプロセス及びアプリケーションに関連付けられる1つ又は複数のバックグラウンドタスクによる、リソースの監視された使用を伴ってもよい。
[0012]前述のコンピュータープログラム製品の一実施形態では、動作はさらに、少なくとも十分な量のリソースが利用可能でないと判定することに応答して、アプリケーションを起動させないステップを含む。
[0013]別の実施形態では、動作はさらに、少なくとも十分な量のリソースが利用可能でないと判定することに応答して、1つ又は複数のプロセスを終了させるステップを含む。
[0014]さらに別の実施形態では、動作はさらに、起動された後にアプリケーションによって使用されるリソースの量が予測されるリソース使用量を超えると判定することに応答して、コンピューティングデバイス上で同時に実行されている1つ又は複数のプロセスを終了するステップを含む。
[0015]さらに別の実施形態では、受け取るステップは、第1のユーザーのためにアプリケーションを起動するための要求を受け取るステップを含み、得るステップは、アプリケーション及び第1のユーザーについて予測されるリソース使用量を得るステップを含む。
[0016]コンピューティングデバイス上に実装されたシステムもまた本願に記載される。システムは、少なくとも1つのプロセッサーと、少なくとも1つのプロセッサーによりアクセス可能なメモリーとを含む。メモリーは、少なくとも1つのプロセッサーによる実行のためのコンポーネントを格納する。コンポーネントは、アプリケーション及びユーザーのうちの1つ又は複数によるコンピューティングデバイスの少なくとも1つのリソースの使用のパターンを監視し、使用のパターンに関連付けられる情報を格納し、及び格納された情報を使用して、少なくとも1つのプロセッサーによる少なくとも1つのプロセスの実行前に、当該少なくとも1つのプロセスに対してリソースのうちの少なくとも一部を予測的に割り当てるように動作可能なリソースマネージャーを含む。少なくとも1つのリソースは、揮発性又は不揮発性のメモリーリソース、CPUリソース、I/Oリソース、ネットワークリソース、電源リソース及びセンサーリソースを含むことができる。
[0017]前述のシステムの一実施形態では、リソースマネージャーは、コンピューティングデバイスのユーザー又は任意の他のエンティティがアプリケーションを起動する前に、リソースの少なくとも一部をアプリケーションに対して予測的に割り当てるように動作可能である。少なくとも1つのリソースがメモリーを含む前述のシステムの別の実施形態では、リソースマネージャーは、さらに、コンピューティングデバイスのユーザー又は任意の他のエンティティがアプリケーションを起動する前に、アプリケーション又はアプリケーションに関連付けられるデータの少なくとも一部を予測的に割り当てられたメモリーへロードするように動作可能である。
[0018]この概要は、詳細な説明において以下でさらに説明される概念の選択を簡略化された形で導入するために提供される。この概要は、特許請求される主題の主要な特徴や不可欠な特徴を特定することを意図するものではなく、特許請求される主題の範囲を限定するために使用されることも意図していない。さらに、特許請求される主題は、詳細な説明及び/又は本文書の他のセクションで説明される特定の実施形態に限定されるものではないことに留意すべきである。そのような実施形態は、例示の目的のみのために本願に提示されている。さらなる実施形態は、本願に含まれる教示に基づいて、当業者にとって明らかとなろう。
[0019]本願に含まれ、本願の一部を形成する添付の図面は、本発明の実施形態を示すものであり、さらに、詳細な説明とともに、本発明の原理を説明し、当業者が本発明を作成及び使用することを可能にするのに役立つものである。
[0020]実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を実行するコンピューティングデバイスのブロック図である。 [0021]実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに従ってコンピューティングデバイスのリソースを管理するためにコンピューティングデバイスによって実施される方法のフローチャートを示す。 [0022]一実施形態による、アプリケーションについての予測されるリソース使用量を計算する方法のフローチャートを示す。 [0023]別の実施形態による、アプリケーションについての予測されるリソース使用量を計算する方法のフローチャートを示す。 [0024]実施形態による、アプリケーションについての平均リソース使用量を得る方法のフローチャートを示す。 [0025]図2に示すフローチャートの方法に従って行うことができるさらなるステップのフローチャートを示す。 [0026]図2に示すフローチャートの方法に従って行うことができるさらなるステップのフローチャートを示す。 [0027]図2に示すフローチャートの方法に従って行うことができるさらなるステップのフローチャートを示す。 [0028]実施形態による、ユーザー固有のリソース使用プロファイルに従ってコンピューティングデバイスのリソースを管理するための、コンピューティングデバイスによって実施される方法のフローチャートを示す。 [0029]実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに従ってアプリケーションの起動を管理するための方法のフローチャートを示す。 [0030]プロセスに対してリソースを予測的に割り当てるために、コンピューティングデバイスのリソースに関するユーザーの監視されるリソース使用パターン及びそれから導き出される情報を使用するための方法のフローチャートを示す。 [0031]コンピューティングデバイス上で実行されるアプリケーションが、アプリケーションに関連付けられるフォアグラウンドプロセス及び1つ又は複数のバックグラウンドタスクに対してコンピューティングデバイスのリソースの割り当てを管理するのを助けることを可能にするための、1つの方法のフローチャートを示す。 [0032]コンピューティングデバイス上で実行されるアプリケーションが、アプリケーションに関連付けられるフォアグラウンドプロセス及び1つ又は複数のバックグラウンドタスクに対してコンピューティングデバイスのリソースの割り当てを管理するのを助けることを可能にするための、別の方法のフローチャートを示す。 [0033]様々な実施形態を実装するために使用することができる例示的なモバイルデバイスのブロック図である。 [0034]様々な実施形態を実施するために使用することができる例示的なプロセッサーベースのコンピューターシステムのブロック図である。
[0035]本発明の特徴及び利点は、同様の参照文字が全体を通して対応する要素を特定する図面と併せて考慮される場合、以下に記載する詳細な説明からより明らかになるであろう。図面において、同様の参照番号は、一般に、同一の、機能的に類似の、及び/又は構造的に類似の要素を示す。要素が最初に現れる図面は、対応する参照番号の左端の数字によって示される。
I.はじめに
[0036]以下の詳細な説明は、本発明の例示的な実施形態を示す添付の図面を参照する。しかしながら、本発明の範囲はこれらの実施例に限定されるものではなく、代わりに添付の特許請求の範囲によって規定される。したがって、示される実施形態の修正版などの、添付の図面に示されたもの以外の実施形態が、本発明に包含されてもよい。
[0037]明細書中での「一実施形態」、「実施形態」、「例示的な実施形態」などへの参照は、説明される実施形態が特定の特徴、構造又は特性を含み得るが、すべての実施形態が必ずしも当該特定の特徴、構造又は特性を含まなくてもよいことを示す。また、そのような語句は、必ずしも同じ実施形態を指しているわけではない。さらに、特定の特徴、構造又は特性が実施形態に関連して説明される場合、明示的に説明されていようとなかろうと、他の実施形態に関連してそのような特徴、構造又は特性を実施することが当業者の知識の範囲内にあると考えられる。
[0038]モバイルコンピューティングデバイスなどのコンピューティングデバイス上で実行されるアプリケーションによる、揮発性及び不揮発性のメモリー、CPU、I/O、ネットワーク、電源及びセンサーなどの様々なリソースの使用の追跡を可能にする、システム、方法、装置及びコンピュータープログラム製品が本願で説明される。本願で説明される技術は、アプリケーションに関連付けられるフォアグラウンドプロセス(例えば、アプリケーションに対するユーザーインターフェイスを提供し、コンピューティングデバイスに関連付けられる表示を排他的に占有することができるプロセス)によって使用されるリソース、並びに、コンピューティングデバイス上で別のプロセスとして実行されている、アプリケーションに関連付けられる1つ又は複数のバックグラウンドタスクによって使用されるリソースの両方を追跡することによって、アプリケーションについてのリソース使用を有利に追跡する。アプリケーションによるリソース使用に関する履歴データは、アプリケーションのリソース使用量を予測するために利用され、その後格納される。アプリケーションのその後の起動は、予測されるリソース使用量が利用可能であるかどうかを条件とすることができる。予測されるリソース使用量が利用可能な場合、それをアプリケーションに割り当てることができ、アプリケーションを起動することができる。その後、アプリケーションが予測されるリソース使用量を超える場合、それと同時に実行されている他のプロセスが、リソースを解放するために終了されてもよい。アプリケーションが実行する方法にかかわらず、アプリケーションについて新たなリソース使用データが取得され、その後、予測されるリソース使用量を調整するために使用される。このように、アプリケーションのためのリソースの割り当ては、ユーザーの使用パターンに基づいて時間とともにユーザーに対して自動的に微調整することができ、コンピューティングデバイスは、特にマルチタスクシナリオ中、よりよいユーザーエクスペリエンス及び改善されたパフォーマンスを提供することが可能となる。複数のユーザーをサポートするコンピューティングデバイスのために、予測されるリソース使用量は、各ユーザー/アプリケーションの組み合わせについて格納することができる。
[0039]本願に記載のシステム、方法、装置及びコンピュータープログラム製品はまた、特定のリソース使用行動に関連付けられる時刻、位置及びイベントなどの、アプリケーション及び/又はユーザーによるリソース使用に関連する他の情報を追跡することが可能である。そのような情報は、ユーザーがアプリケーションを起動しようとする前であっても、コンピューティングデバイスのリソースをアプリケーションに予測的に割り当てるために有利に使用することができる。さらに、アプリケーション及び/又はアプリケーションデータは、ユーザーがそれらにアクセスすることが予期される前に、ある時点でメモリーへロードされてもよい。
[0040]セクションIIは、実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を実行する例示的なコンピューティングデバイス、及び関連付けられる方法について説明する。セクションIIIは、セクションIIの例示的なコンピューティングデバイスがマルチプロセスアプリケーションのための動的なリソース管理を可能にすることができる方法を説明する。セクションIVは、本願に記載のリソース管理機能を実施することができる例示的なモバイルデバイスについて説明する。セクションVは、本願に記載のリソース管理機能を実施することができる例示的なデスクトップコンピューターについて説明する。セクションVIは、いくつかの結びの言葉を提供する。
II.デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を実行するための例示的なシステム及び方法
[0041]図1は、実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を実行するコンピューティングデバイス100のブロック図である。コンピューティングデバイス100は、一般に、ユーザーのためにアプリケーションを実行することが可能なプロセッサーベースの電子デバイスを表すように意図される。一実施形態では、コンピューティングデバイス100は、携帯電話(例えば、スマートフォン)、ラップトップコンピューター、タブレットコンピューター又はネットブックなどのモバイルコンピューティングデバイスを含む。コンピューティングデバイス100は、考えられる限り、ウェアラブルコンピューター(例えば、ヘッドマウントコンピューター)、携帯メディアプレーヤー、パーソナルデジタルアシスタント、パーソナルナビゲーションアシスタント、ハンドヘルドゲームコンソール、又はユーザーのためにアプリケーションを実行することができる任意の他のモバイルデバイスなどの他の種類のモバイルコンピューティングデバイスを含んでもよい。コンピューティングデバイス100の機能を組み込むことができるモバイルデバイスの一例を、図14を参照して以下に説明する。別の実施形態では、コンピューティングデバイス100は、ユーザーのためにアプリケーションを実行することができる、デスクトップコンピューター又は他の非モバイルコンピューティングプラットフォームを含む。コンピューティングデバイス100の機能を組み込むことができる例示的なデスクトップコンピューターは、図15を参照して以下に説明される。
[0042]図1に示すように、コンピューティングデバイス100は、アプリケーション102、オペレーティングシステム104及びデータストア106を含む。1つの実施形態では、アプリケーション102及びオペレーティングシステム104の各々は、コンピューティングデバイス100のメモリーに記憶され、当該メモリーに通信可能に接続されたプロセッサー(例えば、ソフトウェア命令を実行するように動作可能なマイクロプロセッサー又は他の回路)によって当該メモリーから実行される、ソフトウェアコンポーネントを含む。このようなメモリー及びプロセッサーは、コンピューティングデバイス100の一部を含むが、簡略化のためだけに、図1には示されていない。さらに、そのような実施形態によれば、アプリケーション102及びオペレーティングシステム104は、各々が、コンピューティングデバイス100の不揮発性メモリーに永続的に格納されてもよく、コンピューティングデバイス100の電力供給された動作中にプロセッサーによって実行するために、コンピューティングデバイス100の揮発性メモリーに一時的に転送されてもよい。
[0043]アプリケーション102は、コンピューティングデバイスのユーザーのために機能を実行し及び/又は機能を提供するためにコンピューティングデバイス100上にインストールして実行することができる、多種多様なコンピュータープログラムのうちのいずれかを表すことを意図している。アプリケーション102は、例えば、そしてどんなものであれ限定なく、電話アプリケーション、電子メールアプリケーション、メッセージングアプリケーション、ウェブブラウジングアプリケーション、カレンダーアプリケーション、ユーティリティアプリケーション、ゲームアプリケーション、ソーシャルネットワーキングアプリケーション、音楽アプリケーション、生産性アプリケーション、ライフスタイルアプリケーション、リファレンスアプリケーション、旅行アプリケーション、スポーツアプリケーション、ナビゲーションアプリケーション、ヘルスケア・フィットネスアプリケーション、ニュースアプリケーション、写真アプリケーション、金融アプリケーション、ビジネスアプリケーション、教育アプリケーション、天気予報アプリケーション、電子書籍リーダーアプリケーション、医療アプリケーションなどを表してもよい。
[0044]オペレーティングシステム104は、コンピューティングデバイス100上で実行するアプリケーションのために、リソースを集合的に管理し、共通のサービスを提供する、コンピュータープログラムのセットを含む。図1に示すように、オペレーティングシステム104は、ドライバー110、カーネル120及びシステムサービス130を含む。ドライバー110は、CPU、システムメモリー及びI/Oデバイスなどのコンピューティングデバイス100の様々なハードウェアリソースとオペレーティングシステム104が相互作用することを可能にするコンポーネントを含む。カーネル120は、ドライバー110を利用して、コンピューティングデバイス100のそのようなハードウェアリソース及び他のリソースを管理し、他のプログラムがこれらのリソースを実行及び使用することを可能にする。カーネル120は、プロセスをCPUに割り当てること、システムメモリーを特定のプロセスに割り当てること、及びI/O要求を適切なデバイスに割り当てることなどの動作を行うことができる。システムサービス130は、カーネル120によって割り当てることができる様々なリソースについてのアプリケーションからの要求にサービスを提供するように動作するコンポーネントである。
[0045]図1に示すように、カーネル120は、メモリーマネージャー122を含む。メモリーマネージャー122は、コンピューティングデバイス100のシステムメモリーが利用される方法を制御し、他のプロセスがシステムメモリーを必要とするときに他のプロセスがシステムメモリーにアクセスすることを可能にする動作を実行する。他の動作として、メモリーマネージャー122は、仮想アドレス方式を保持してもよく、物理的に利用可能であるよりも多くのシステムメモリーをプロセスが使用できるように、ページングを実行してもよい。システムメモリーを管理するために、メモリーマネージャー122は、ドライバー110の1つであるメモリードライバー112と相互作用する。
[0046]さらに図1に示すように、システムサービス130は、リソースマネージャー132を含む。本願でより詳細に説明するように、リソースマネージャー132は、アプリケーションに割り当てるべきリソースの量を決定するように動作するコンポーネントであり、そのような決定はアプリケーションについてのリソース使用プロファイルに基づいてもよく、また、利用可能である場合にリソースの量を割り当てるように動作するコンポーネントである。以下の説明においては、アプリケーションに割り当てられるリソースはシステムメモリーであると仮定するが、しかしながら、本願に記載のリソース管理技術は、CPU、システムメモリー以外の揮発性メモリー、不揮発性メモリー、ネットワークリソース、I/Oリソース、電源リソース(例えば、バッテリー電源又はいくつかの他の電源からの電力)及びセンサーリソース(例えば、カメラやマイク)を含むがこれらに限定されない、コンピューティングデバイス100の任意の他のリソースにまで容易に拡張することができることを理解すべきである。
[0047]データストア106は、コンピューティングデバイス100の揮発性又は不揮発性メモリーに格納されたデータの集合を含む。本願で説明するように、データストア106は、コンピューティングデバイス100上にインストールして実行することができるアプリケーションについてのリソース使用プロファイルを記憶するために、リソースマネージャー132によって使用される。ある実施形態によれば、データストア106は、レジスター又はデータベースを含んでもよい。
[0048](例えば、アプリケーションについてのユーザーの起動又はいくつかの他のイベントに応答して)アプリケーション102が起動されるとき、1つ又は複数のシステムサービス呼が、アプリケーション102のためにシステムサービス130に対して発呼されて、アプリケーション102を適切に実行するのに必要なリソースをアプリケーション102に割り当てることを要求する。当該呼に応答して、リソースマネージャー132は、必要なリソースが利用可能であるかどうかを判断し、そのようなリソースが利用可能である場合には、それをアプリケーション102に割り当てるように動作する。
[0049]システムメモリーの場合、リソースマネージャー132は、データストア106に記憶することができるアプリケーション102についてのリソース使用プロファイルにアクセスするのを試みることにより、アプリケーション102に割り当てるシステムメモリーの量を決定する。実施形態では、アプリケーション102についてのそのようなリソース使用プロファイルは、実行中にアプリケーション102が使用すると予期されるシステムメモリーの量を指定する。予測されたリソース使用量を含む。代替的に、アプリケーション102についてのリソース使用プロファイルは、そのような予測されるリソース使用量を導くことができるデータを含むことができる。さらなる実施形態では、データストア106内にアプリケーション102についてのリソース使用プロファイルが存在しない場合、デフォルトの予測されるリソース使用量がアプリケーション102に割り当てられてもよい。そのようなデフォルトの予測されるリソース使用量は、すべてのアプリケーションに対して同じであってもよく、又はアプリケーションの種類によって異なってもよい。
[0050]リソースマネージャー132がアプリケーション102についての予測されるリソース使用量を決定すると、リソースマネージャー132は、次いで、予測されるリソース使用量が現在利用可能であるかどうかを判断するためにメモリーマネージャー122と通信する。予測されるリソース使用量が現在利用可能である場合、リソースマネージャー132は、予測されるリソース使用量をアプリケーション102に割り当て、アプリケーション102は実行することを許可される。しかし、予測されるリソース使用量が現在利用可能でない場合、リソースマネージャー132は、アプリケーション102が実行されることを防止することができる。さらに、予測されるリソース使用量が現在利用可能でない場合、リソースマネージャー132はまた、アプリケーション102に対してシステムメモリーを解放するために、コンピューティングデバイス上で現在実行されている1つ又は複数の他のプロセスを終了してもよい。そのような他のプロセスは、プロセス優先方式に従ってアプリケーション102よりも低い優先度が割り当てられたプロセスであってもよい。このようにして十分なシステムメモリーが取り戻されると、リソースマネージャー132は、アプリケーション102が実行されることを許可してもよい。
[0051]アプリケーション102が実行を開始した後、リソースマネージャー132は、アプリケーション102が実際にどのくらいのシステムメモリーを使用しているかを監視する。このようにして、リソースマネージャー132は、予測されるリソース使用量に従って最初にアプリケーション102に割り当てられたものよりも多くのシステムメモリーをアプリケーション102が利用していると判定することができる。この場合、リソースマネージャー132は、アプリケーション102が適切に実行されるために十分なシステムメモリーが利用可能であることを確実にするために、コンピューティングデバイス100上で同時に実行されている1つ又は複数のプロセスを終了することを試みてもよい。
[0052]リソースマネージャー132はまた、どのくらいのシステムメモリーがアプリケーション102によって使用されているかを監視することによって得た情報を利用して、アプリケーション102についてデータストア106内に記憶される予測されるリソース使用量を更新する。予測されるリソース使用量を更新するための様々なアルゴリズムが以下で詳細に説明される。このように、リソースマネージャー132は、アプリケーション102がどのように行動しており、コンピューティングデバイス100のユーザーによってどのように利用されているかに応じた方法で、時間とともに、アプリケーション102に対するリソースの割り当てを自動的に微調整することができる。このことは、コンピューティングデバイス100が、特にマルチタスクシナリオ中に、より良いユーザーエクスペリエンスと改善されたパフォーマンスを提供することを可能にするものであり、有益である。
[0053]デバイス固有又はユーザー固有のリソース使用プロファイルに従ってリソースマネージャー132がコンピューティングデバイス100のリソースを管理するように動作する方法を、図2のフローチャート200を参照して説明する。フローチャート200のステップは図1のコンピューティングデバイス100のコンポーネントを引き続き参照して説明されるが、この方法がまったく別のコンポーネントによって実行されてもよいことが理解されるべきである。
[0054]図2に示すように、フローチャート200の方法は、ステップ202において開始し、リソースマネージャー132は、コンピューティングデバイス100によって実行されている間にアプリケーションのインスタンスによって使用されるリソースの第1の量を決定する。例えば、上述のように、リソースマネージャー132は、アプリケーション102の第1のインスタンスがコンピューティングデバイス100によって実行されている間、アプリケーション102の第1のインスタンスによって使用されているシステムメモリーの第1の量を決定してもよい。
[0055]実施形態では、リソースマネージャー132は、アプリケーションの第1のインスタンスに関連付けられたフォアグラウンドプロセス及びアプリケーションの第1のインスタンスに関連付けられた1つ又は複数のバックグラウンドタスクによって使用されるリソースの量を決定することによって、第1の量を決定する。フォアグラウンドプロセスは、現在、アプリケーションの第1のインスタンスのためのユーザーインターフェイスを提供し、コンピューティングデバイス100に関連付けられる表示の少なくとも一部を占有しているプロセスであってもよい。しかし、多くの現代のアプリケーションの実行はまた、1つ又は複数のバックグラウンドプロセス(本願ではバックグラウンドタスクとも呼ぶ)の実行を伴う。このようなバックグラウンドタスクは、フォアグラウンドプロセスと同時に実行されることがあり、ある場合にはフォアグラウンドプロセスによって開始され得る。そのようなバックグラウンドタスクの例は、バックグラウンド音声の生成、ボイスオーバーインターネットプロトコル(VoIP)呼の実行、電子メールの同期、コンテンツ共有などを含むが、決してこれらに限定されるものではない。フォアグラウンドプロセスと同様に、これらのバックグラウンドタスクはシステムリソースを消費する。しかし、アプリケーションのリソース使用についての従来の概念は、通常、そのようなバックグラウンドタスクによって消費されるリソースを包含していない。実施形態は、実行中のアプリケーションに関連付けられるフォアグラウンドプロセス及び同じアプリケーションに関連付けられる1つ又は複数のバックグラウンドタスクの両方によるリソース使用を追跡し、両方の種類のリソース使用を組み合わせてアプリケーションについて総リソース使用量を取得することによって、このことに対処するものであり有利である。
[0056]ステップ204において、リソースマネージャー132は、第1の量に少なくとも基づいて、アプリケーションについての第1の予測されるリソース使用量を計算する。例えば、リソースマネージャー132は、第1の量に少なくとも基づいて、アプリケーション102についての第1の予測されるシステムメモリー使用量を計算してもよい。このステップを実行することができる方法を示すために、様々な例のアルゴリズムが以下で提供される。
[0057]ステップ206において、リソースマネージャー132は、データストア106内に第1の予測されるリソース使用量を記憶する。例えば、リソースマネージャー132は、データストア106内に、アプリケーション102についての第1の予測されるシステムメモリー使用量を記憶することができる。
[0058]ステップ206の実行後のある時点において、リソースマネージャー132は、アプリケーションの第2のインスタンスがコンピューティングデバイス100上で実行されるべきであることを通知される。ステップ208において、リソースマネージャー132は、データストア106に格納された第1の予測されるリソース使用量に少なくとも基づいて、アプリケーションの第2のインスタンスに割り当てられるべきリソースの第2の量を決定する。例えば、リソースマネージャー132は、データストア106内のアプリケーション102について記憶された第1の予測されるシステムメモリー使用量に少なくとも基づいて、アプリケーション102の第2のインスタンスに割り当てられるべきシステムメモリーの第2の量を決定してもよい。システムメモリーの第2の量を決定することは、例えば、システムメモリーの第2の量を第1の予測されるシステムメモリー使用量に設定することを含んでもよい。
[0059]ステップ204においてアプリケーションについての第1の予測されるリソース使用量を計算するために、様々な方法を使用することができる。例えば、一実施形態では、第1の予測されるリソース使用量は、ある数の実行にわたってアプリケーションによって使用された最大のリソース量に基づいて計算される。この手法は、図3のフローチャート300によって表される。
[0060]具体的には、図3は、実施形態による、アプリケーションについての予測されるリソース使用量を計算する方法のフローチャート300を示す。図3に示すように、フローチャート300の方法は、ステップ302で開始し、リソースマネージャー132は、ステップ202中に決定された第1の量を、アプリケーションの1つ又は複数の以前に実行されたインスタンスに関連付けられる1つ又は複数の以前に決定された量と比較することによって、アプリケーションについての最大のリソース使用量を取得する。ステップ304において、リソースマネージャー132は、最大のリソース使用量に基づいて、第1の予測されるリソース使用量を計算する。
[0061]この手法の例がここで提供される。この例によれば、リソースマネージャー132は、5回の異なる実行におけるアプリケーション102によるシステムメモリー使用量を追跡し、そのような実行にわたるアプリケーション102による最大のシステムメモリー使用量を、予測されるリソース使用量として選択する。例えば、アプリケーション102の最後の4回の実行中に、アプリケーション102が、それぞれ100MB、120MB、160MB及び140MBのシステムメモリーを使用したと仮定する。次いで、ステップ202の間に、リソースマネージャー132は、アプリケーション102の現在実行中のインスタンスがシステムメモリーのうち150MBを使用していることを決定する。この場合、リソースマネージャー132は、第1の予測されるリソース使用量を160MB(又は、場合によっては160MBに加えてあるバッファ量)に設定してもよい。というのは、それが、最後の5回の実行にわたるアプリケーション102による最大のシステムメモリーの使用であるからである。
[0062]別の実施形態では、第1の予測されるリソース使用量は、ある数の実行にわたるアプリケーションによって使用される平均リソース量に基づいて計算される。この手法は図4のフローチャート400によって表される。
[0063]具体的には、図4は、実施形態による、アプリケーションについての予測されるリソース使用量を計算する方法のフローチャート400を示す。図4に示すように、フローチャート400の方法は、ステップ402で開始し、リソースマネージャー132は、ステップ202中に決定された第1の量及びアプリケーションの1つ又は複数の以前に実行されたインスタンスに関連付けられる1つ又は複数の以前に決定された量に基づいて、アプリケーションについて平均リソース使用量を取得する。ステップ404において、リソースマネージャー132は、平均リソース使用量に基づいて、第1の予測されるリソース使用量を計算する。
[0064]この手法の例がここで提供される。この例によれば、リソースマネージャー132は、5回の別個の実行におけるアプリケーション102によるシステムメモリーの使用を追跡し、それらの値の平均値を計算し、その平均値を予測されるリソース使用量として使用する。例えば、アプリケーション102の最後の4回の実行中に、アプリケーション102が、それぞれシステムメモリーのうちの100MB、120MB、160MB及び140MBを使用したと仮定する。次いで、ステップ202中に、リソースマネージャー132は、アプリケーション102の現在実行中のインスタンスがシステムメモリーのうち150MBを使用していることを決定する。この場合、リソースマネージャー132は、アプリケーション102についての平均リソース使用量が((100MB+120MB+160MB+140MB+150MB)/5)であり、134MBに等しいと決定する。その結果、リソースマネージャー132は、第1の予測されるリソース使用量を、134MB(又は、場合によっては、134MBに加えてあるバッファ量)に設定してもよい。
[0065]ステップ402で説明した平均リソース使用量を得ることができる別の方法をここで説明する。この手法によれば、リソース使用量の移動平均が、最新のリソース使用量と組み合わされて、新たな長期の移動平均が得られる。この組み合わせは、より大きな重みが古い長期間にわたる移動平均又は最新のリソース使用量のいずれかに適用されるように重み付けすることができる。あるいは、両方の量が等しく重み付けされてもよい。この手法は、以下の式を用いて表すことができる。
AVG_NEW=αRAVG_OLD+(1−α)RNEW
AVG_NEWはリソース使用量の新たな移動平均を表し、RAVG_OLDはリソース使用量の古い移動平均を表し、RNEWは最も最近観察されたリソース使用量を表し、αは重み付けを決定する変数である。
[0066]例えば、リソース使用量の古い移動平均RAVG_OLDが130MBに等しく、最も最近観察されたリソース使用量RNEWが160MBに等しく、重み付け係数αが0.25であると仮定する。この場合、リソース使用量の新たな移動平均RAVG_NEWは、((0.25×130MB)+(0.75×160MB))であり、152.5MBに等しくなる。その結果、リソースマネージャー132は、第1の予測されるリソース使用量を、152.5MB(又は、場合によっては、152.5MBとあるバッファ量の合計)に設定することができる。
[0067]移動平均を使用してアプリケーションについての平均リソース使用量を得る上述の方法は、図5のフローチャート500に示される。図5に示すように、フローチャート500の方法は、ステップ502で開始し、リソースマネージャー132は、ステップ202中に得られた第1の量(すなわち、最も最近に観察されたリソース使用量)を第1の重み付け係数で乗算する。ステップ504中、リソースマネージャー132は、1つ又は複数の以前に決定された量(すなわち、以前に観察されたリソース使用量)に少なくとも基づいて得られた移動平均リソース使用量を第2の重み付け係数で乗算して、第2の積を得る。ステップ506において、リソースマネージャー132は、第1の積と第2の積を合計して、新たな平均リソース使用量を得る。
[0068]図2を参照して上述したように、フローチャート200のステップ208において、リソースマネージャー132は、第1の予測されるリソース使用量に少なくとも基づいて、コンピューティングデバイス100によって実行されるアプリケーションの第2のインスタンスに割り当てられるべきリソース(例えば、システムメモリー)の第2の量を決定する。当該第2の量は予測アルゴリズムに基づく推定値であるので、アプリケーションの第2のインスタンスが割り当てられた第2の量より多くを消費する可能性が常にある。このシナリオに対処するために、リソースマネージャー132は、アプリケーションの第2のインスタンスがその割り当てられたリソース割り当てよりも多くを消費していることを判断するように構成されてもよく、これに応答して、リソースを解放するために、コンピューティングデバイス100上で同時に実行されている他のプロセスを終了することができる。例えば、リソースマネージャー132は、プロセス優先方式に従って当該アプリケーションより低い優先度を割り当てられた特定のプロセスを終了させることができる。
[0069]この処理は、図6のフローチャート600に示されている。具体的には、図6に示すように、フローチャート600の方法は、ステップ602で開始し、リソースマネージャー132は、コンピューティングデバイス100によって実行されている間にアプリケーションの第2のインスタンスによって使用されるリソースの量が第2の量を超えていると判定する。この判定に応答して、ステップ604において、リソースマネージャー132は、コンピューティングデバイス上で同時に実行されている1つ又は複数のプロセスを終了する。追加的又は代替的に、リソースマネージャー132は、コンピューティングデバイス100上で同時に実行されている1つ又は複数のプロセスと通信し、それらのプロセスに、リソースの消費を低減するように指示してもよい。
[0070]リソースマネージャー132が、メモリーマネージャー122との通信を介して又はいくつかの他の手段を介して、アプリケーションの第2のインスタンスに割り当てるべきリソースの第2の量が現在利用できないと決定することもあり得る。この場合、リソースマネージャー132は、アプリケーションの第2のインスタンスの実行を防止することができる。
[0071]この処理は、図7のフローチャート700に示されている。具体的には、図7に示すように、フローチャート700の方法は、ステップ702で開始し、リソースマネージャー132は、リソースの第2の量が現在利用可能でないと判定する。この判定に応答して、ステップ704において、リソースマネージャー132は、アプリケーションの第2のインスタンスの実行を防止する。
[0072]リソースマネージャー132が、アプリケーションの第2のインスタンスに割り当てるべきリソースの第2の量が現在利用可能でないと判断する場合、リソースマネージャー132はまた、リソースを解放するために、コンピューティングデバイス100上で実行されている1つ又は複数のプロセスを終了してもよい。例えば、リソースマネージャー132は、プロセスの優先方式に従って当該アプリケーションより低い優先度を割り当てられた特定のプロセスを終了させることができる。このような他のプロセスによるリソース消費が低減された後、リソースマネージャー132は、アプリケーションの第2のインスタンスを実行することを可能にする。
[0073]この処理は、図8のフローチャート800に示されている。具体的には、図8に示すように、フローチャート800の方法は、ステップ802で開始し、リソースマネージャー132は、リソースの第2の量が現在利用可能でないと判定する。この判定に応答して、ステップ804において、リソースマネージャー132は、コンピューティングデバイス100上で現在実行されている1つ又は複数のプロセスを終了する。追加的に又は代替的に、リソースマネージャー132は、コンピューティングデバイス100上で現在実行されている1つ又は複数のプロセスと通信し、それらのプロセスにリソースの消費を減らすよう指示してもよい。
[0074]スマートフォンなどの多くのコンピューティングデバイスにとって、典型的な使用モデルは、コンピューティングデバイスごとに1ユーザーである。この場合、コンピューティングデバイスについてのリソース使用プロファイルを記憶することは、本質的に、特定のユーザーのリソース使用プロファイルを記憶することと同じである。しかし、コンピューティングデバイスはまた、複数のユーザーをサポートするために使用することができる。例えば、同じ世帯のある数の異なるメンバーが、それぞれ、同じタブレットコンピューター、デスクトップコンピューター又はゲームコンソールを使用して、アプリケーションを実行することがある。これらのユーザーの各々は、異なるアプリケーションを使用することがあり、また、同じアプリケーションを異なる方法で使用することがあり、これはリソース消費のレベルが変化することにつながる。このシナリオに対処するために、特定の実施形態は、アプリケーションとユーザーの両方によるコンピューティングデバイスに対するリソース使用プロファイルを記憶し、その結果、リソースの予測割り当ては、コンピューティングデバイスを現在使用している特定のユーザーに合わせて調整することができる。これらのリソース使用プロファイルは、(前述のデバイス固有のリソース使用プロファイルとは対照的に)ユーザー固有のリソース使用プロファイルと考えることができる。
[0075]図9は、実施形態による、ユーザー固有のリソース使用プロファイルに従ってリソースを管理するためにコンピューティングデバイスによって実施される方法のフローチャート900を示す。フローチャート900の方法は、ここで、図1を参照して上述したコンピューティングデバイス100のコンポーネントを引き続き参照して説明される。しかしながら、この方法はその実施形態に限定されるものではない。
[0076]図9に示すように、フローチャート900の方法は、ステップ902で開始し、リソースマネージャー132は、第1のユーザーのためにコンピューティングデバイス100によって実行される間、アプリケーションの第1のインスタンスによって使用されるリソースの第1の量を決定する。例えば、リソースマネージャー132は、アプリケーション102の第1のインスタンスが第1のユーザーのためにコンピューティングデバイス100によって実行されている間、アプリケーション102の第1のインスタンスによって使用されているシステムメモリーの第1の量を決定することができる。アプリケーション102の第1のインスタンスが第1のユーザーのために実行されているという事実は、様々な方法のいずれかで決定することができる。ユーザーがコンピューティングデバイス100にログインすることができる実施形態では、現在のログイン情報が当該決定をするために使用されてもよい。しかし、この例は、限定することを意図するものではなく、コンピューティングデバイスのユーザーの同一性を決定するための任意の適切な方法を使用することができる。
[0077]ステップ904において、リソースマネージャー132は、第1の量に少なくとも基づいて、アプリケーション及び第1のユーザーについての第1の予測されるリソース使用量を計算する。例えば、リソースマネージャー132は、第1の量に少なくとも基づいて、アプリケーション102及び第1のユーザーについての第1の予測されるシステムメモリー使用量を計算してもよい。このステップを実行することができる方法を示すために、様々な例示的なアルゴリズムが既に提供された。
[0078]ステップ906において、リソースマネージャー132は、データストア106内に第1の予測されるリソース使用量を記憶する。例えば、リソースマネージャー132は、データストア106内に、アプリケーション102及び第1のユーザーについての第1の予測されるシステムメモリー使用量を記憶することができる。
[0079]ステップ906の実行後のある時点において、リソースマネージャー132は、アプリケーションの第2のインスタンスが第1のユーザーのためにコンピューティングデバイス100上で実行されることを通知される。ステップ908において、リソースマネージャー132は、データストア106内に記憶された第1の予測されるリソース使用量に少なくとも基づいて、アプリケーションの第2のインスタンスに割り当てられるべきリソースの第2の量を決定することができる。例えば、リソースマネージャー132は、データストア106内にアプリケーション102及び第1のユーザーについて記憶された第1の予測されるシステムメモリー使用量に少なくとも基づいて、アプリケーション102の第2のインスタンスに割り当てられるべきシステムメモリーの第2の量を決定してもよい。システムメモリーの第2の量を決定することは、例えば、システムメモリーの第2の量を第1の予測されるシステムメモリー使用量に設定することを含んでもよい。
[0080]ステップ910において、リソースマネージャー132は、第1のユーザーとは異なる第2のユーザーのためにコンピューティングデバイス100によって実行されている間、アプリケーションの第3のインスタンスによって使用されるリソースの第3の量を決定する。例えば、リソースマネージャー132は、アプリケーション102の第3のインスタンスが第2のユーザーのためにコンピューティングデバイス100によって実行されている間、アプリケーション102の第3のインスタンスによって使用されているシステムメモリーの第3の量を決定することができる。アプリケーション102の第3のインスタンスが第2のユーザーのために実行されているという事実は、様々な方法のいずれかで決定することができる。ユーザーがコンピューティングデバイス100にログインすることができる実施形態では、現在のログイン情報が当該決定をするために使用されてもよい。しかし、この例は、限定することを意図するものではなく、コンピューティングデバイスのユーザーの同一性を決定するための任意の適切な方法を使用してもよい。
[0081]ステップ912において、リソースマネージャー132は、第3の量に少なくとも基づいて、アプリケーション及び第2のユーザーについての第2の予測されるリソース使用量を計算する。例えば、リソースマネージャー132は、第3の量に少なくとも基づいて、アプリケーション102及び第2のユーザーについての第2の予測されるシステムメモリー使用量を計算してもよい。このステップを実行することができる方法を示すために、様々な例示的なアルゴリズムが既に提供された。
[0082]ステップ914において、リソースマネージャー132は、データストア106内に第2の予測されるリソース使用量を記憶する。例えば、リソースマネージャー132は、データストア106内に、アプリケーション102及び第2のユーザーについての第2の予測されるシステムメモリー使用量を格納することができる。
[0083]ステップ914の実行後のある時点において、リソースマネージャー132は、アプリケーションの第4のインスタンスが第2のユーザーのためにコンピューティングデバイス100上で実行されることを通知される。ステップ916において、リソースマネージャー132は、データストア106に格納された第2の予測されるリソース使用量に少なくとも基づいて、アプリケーションの第4のインスタンスに割り当てられるべきリソースの第4の量を決定する。例えば、リソースマネージャー132は、データストア106内のアプリケーション102及び第2のユーザーについて記憶された第2の予測されるシステムメモリー使用量に少なくとも基づいて、アプリケーション102の第4のインスタンスに割り当てられるべきシステムメモリーの第4の量を決定することができる。システムメモリーの第4の量を決定することは、例えば、システムメモリーの第4の量を第2の予測されるシステムメモリー使用量に設定することを含んでもよい。
[0084]図10は、実施形態による、デバイス固有又はユーザー固有のリソース使用プロファイルに従ってアプリケーションの起動を管理するための方法のフローチャート1000を示している。フローチャート1000の方法は、ここで、図1を参照して上述したコンピューティングデバイス100のコンポーネントを引き続き参照して説明される。しかし、この方法はその実施形態に限定されるものではない。
[0085]図10に示すように、フローチャート1000の方法は、ステップ1002で開始し、アプリケーションを起動する要求が受け取られる。例えば、アプリケーション102を起動する要求は、例えば、システムサービス130によって及び/又はリソースマネージャー132によって受け取られてもよい。
[0086]ステップ1004において、リソースマネージャー132は、アプリケーションについての予測されるリソース使用量を取得する。例えば、リソースマネージャー132は、アプリケーション102についての予測されるリソース使用量を取得してもよい。予測されるリソース使用量は、コンピューティングデバイス100によるアプリケーションの1つ又は複数の以前の実行中のコンピューティングデバイス100のリソースの監視された使用に基づく。予測されるリソース使用量、又はそのような予測されるリソース使用量を計算するために必要な情報は、アプリケーションについてのリソース使用プロファイルから得ることができ、データストア106内に記憶されてもよい。リソースは、揮発性又は不揮発性のメモリーリソース、CPUリソース、I/Oリソース、ネットワークリソース、電源リソース及びセンサーリソースのうちの1つ又は複数を含んでもよい。予測されるリソース使用量は、アプリケーションに関連付けられるフォアグラウンドプロセス及びアプリケーションに関連付けられる1つ又は複数のバックグラウンドタスクの両方によるコンピューティングデバイス100のリソースの使用を監視することに基づいてもよい。
[0087]判定ステップ1006において、リソースマネージャー132は、予測されるリソース使用量を現在利用可能なリソースの量と比較することによって、十分な量のリソースが利用可能であるか否かを判定する。例えば、リソースがシステムメモリーである実施形態において、リソースマネージャー132は、メモリーマネージャー122から現在利用可能なシステムメモリーの量を得ることができ、次いで、アプリケーションについての予測されるシステムメモリー使用量を現在利用可能なシステムメモリーと比較して、十分な量のシステムメモリーが利用可能であるかどうかを判定することができる。
[0088]十分な量のリソースが利用可能であるとリソースマネージャー132が少なくとも判定した場合、次いで、リソースマネージャー132は、ステップ1008に示すように、アプリケーションが起動することを許可する。例えば、十分なシステムメモリーが利用可能であるとリソースマネージャー132が少なくとも判定した場合、次いで、リソースマネージャー132は、アプリケーション102が起動することを許可する。アプリケーションが起動することをリソースマネージャー132が許可するために満たされなければならない他の条件があり得ることに留意されたい。
[0089]十分な量のリソースが利用可能でないとリソースマネージャー132が判定する場合、ステップ1010に示すように、リソースマネージャー132は、アプリケーションが起動することを許可しない。例えば、十分なシステムメモリーが利用可能でないとリソースマネージャー132が判定する場合、リソースマネージャー132は、アプリケーション102が起動することを許可しない。加えて、リソースマネージャー132は、1つ又は複数の現在実行されているプロセスを終了させるか、そうでなければ、それらのリソース使用量を低減させることによって、リソースを解放しようとしてもよい。
[0090]実施形態では、リソースマネージャー132はまた、特定のリソース使用行動に関連付けられる時刻、場所及びイベントなどの、アプリケーション及び/又はユーザーによるリソース使用に関連する他の情報を追跡することが可能である。そのような情報は、ユーザーがアプリケーションを起動することを試みる前でさえ、コンピューティングデバイスのリソースをアプリケーションに予測的に割り当てるために都合よく使用することができる。さらに、アプリケーション及び/又はアプリケーションデータが、ユーザーがそれらにアクセスすると予期される前の時点でメモリーにロードされてもよい。
[0091]例えば、ユーザーが特定の時間において、特定の場所において又は特定のイベントに関連して、特定のアプリケーションを起動する可能性があると判断できる場合、リソースマネージャー132は、ユーザーがアプリケーションを起動すると予期される前、場合によってはその直前に、十分なリソースがアプリケーションに割り当てるために利用可能であることを確実にするように動作することができる。さらに、このような予測的な分析は、実際に、ユーザーがアプリケーション及びその機能への即時のアクセスを得ることができるように、アプリケーション又はアプリケーションのコンテンツをシステムメモリーにロードするために使用することができる。
[0092]このことを説明する助けとなるべく、図11は、コンピューティングデバイスのリソースに関するユーザーについての監視されるリソース使用パターン及びそれから導かれる情報を使用して、プロセスに対してリソースを予測的に割り当てるための方法のフローチャート1100を示す。フローチャート1100の方法は、ここでは、図1を参照して上述したコンピューティングデバイス100のコンポーネントを引き続き参照して説明される。しかし、この方法はその実施形態に限定されるものではない。
[0093]図11に示すように、フローチャート1100の方法は、ステップ1102で開始し、リソースマネージャー132は、アプリケーション及び/又はユーザーによるコンピューティングデバイス100の少なくとも1つのリソースの使用パターンを監視する。前述のように、使用パターンを監視することは、アプリケーション及び/又はユーザーによるリソース使用を監視すること、及び、特定のリソース使用行動に関連付けられる時間、場所及びイベントなどのそのようなリソース使用に関連付けられる他の情報を監視することを伴ってもよい。
[0094]ステップ1104において、リソースマネージャー132は、使用のパターンに関連付けられる情報を格納する。リソースマネージャー132は、例えばデータストア106内にそのような情報を格納することができる。
[0095]ステップ1106において、リソースマネージャー132は、コンピューティングデバイス100による実行の前に、少なくとも1つのリソースの少なくとも一部を少なくとも1つのプロセスに予測的に割り当てるために、格納された情報を使用する。一実施形態では、ステップ1106の間、リソースマネージャー132は、コンピューティングデバイス100のユーザー又は任意の他のエンティティがアプリケーションを起動する前に、リソースの少なくとも一部をアプリケーションに予測的に割り当てる。少なくとも1つのリソースがシステムメモリーを含む別の例示的な実施形態では、リソースマネージャー132は、コンピューティングデバイス100のユーザー又は任意の他のエンティティがアプリケーションを起動する前に、アプリケーション又は当該アプリケーションに関連付けられるデータの少なくとも一部を以前に割り当てられたシステムメモリーにロードしてもよい。これらの例は、例示のみのために提供されるものであり、限定することを意図するものではない。関連技術の当業者であれば、追加のリソース管理タスクを実行するため、リソース使用パターン情報を利用するために、さらに他の技術が使用され得ることを理解するであろう。
III.マルチプロセスアプリケーションの動的リソース管理のための例示的なシステム及び方法
[0096]実施形態において、図1のコンピューティングデバイス100は、コンピューティングデバイス100のリソースの割り当てられた部分がアプリケーションに関連付けられる複数のプロセス間でどのように分割されるべきかを、コンピューティングデバイス100上で実行されるアプリケーション(例えば、アプリケーション102)が動的に制御することを可能にする。例えば、コンピューティングデバイス100上で実行されるアプリケーション102は、リソースマネージャー132とインタラクトして、コンピューティングデバイス100のリソースの割り当てられた部分が、アプリケーションに関連付けられるフォアグラウンドプロセス及びアプリケーションに関連付けられる1つ又は複数のバックグラウンドプロセスの間でどのように分割されるべきかを動的に制御してもよい。この機能を有するアプリケーションを提供することにより、本願に記載の実施形態は、アプリケーションが、変化するリソース割り当てに適応し、コンピューティングデバイス上で実行されていてもよい他のプロセスとより良好に共存し、それによって様々なマルチタスクシナリオをより良好に可能にすることを都合よく可能にする。
[0097]アプリケーション102及びリソースマネージャー132がこのような動的リソース管理を行うために相互作用することができる1つの方法が、ここで図12のフローチャート1200を参照して説明される。図12に示すように、フローチャート1200の方法は、ステップ1202で開始し、リソースマネージャー1202は、アプリケーション102に関連付けられるフォアグラウンドプロセスに対して、当該アプリケーションがフォアグラウンドで実行されているという通知を送る。
[0098]ステップ1204において、リソースマネージャー132は、フォアグラウンドプロセスから、フォアグラウンドプロセスに割り当てられるべき第1のリソース使用予算(バジェット)の第1の部分及びアプリケーションに関連付けられる少なくとも1つのバックグラウンドタスクに割り当てられるべき第1のリソース使用予算の第2の部分を指定する少なくとも1つのメッセージを受け取る。
[0099]ステップ1206において、リソースマネージャー132は、第1のリソース使用予算の第1の部分に等しいリソースの一部をフォアグラウンドプロセスに割り当て、第1のリソース使用予算の第2の部分に等しいリソースの一部を少なくとも1つのバックグラウンドタスクに割り当てる。リソースは、例えば、限定なしに、揮発性又は不揮発性メモリー、CPU、I/Oリソース、ネットワークリソース、電源リソース、センサーリソースを含むことができる。
[0100]ステップ1208において、リソースマネージャー132は、フォアグラウンドプロセスに、アプリケーションが中断又は終了されるという通知を送る。
[0101]ステップ1210において、リソースマネージャー132は、フォアグラウンドプロセスから、フォアグラウンドプロセスに割り当てられるべき第2のリソース使用予算の第1の部分及びアプリケーションに関連付けられる少なくとも1つのバックグラウンドタスクに割り当てられるべき第2のリソース使用予算の第2の部分を指定する少なくとも1つのメッセージを受け取る。第2のリソース使用予算は第1のリソース使用予算より小さくてもよい。
[0102]ステップ1212において、リソースマネージャー132は、第2のリソース使用予算の第1の部分に等しいリソースの一部をフォアグラウンドプロセスに割り当て、第2のリソース使用予算の第2の部分に等しいリソースの一部を少なくとも1つのバックグラウンドタスクに割り当てる。所定期間後、リソースマネージャー132は、フォアグラウンドプロセスによって使用されているリソースの量及び少なくとも1つのバックグラウンドプロセスによって使用されているリソースの量の合計が第2のリソース使用予算を超えているかどうかを判定してもよい。合計が第2のリソース使用予算を超えていると判定することに応答して、リソースマネージャー132は、フォアグラウンドプロセス及び少なくとも1つのバックグラウンドプロセスのうちの1つ又は複数を終了させてもよい。
[0103]一実施形態では、前述の方法でリソースマネージャー132とフォアグラウンドプロセスとの間でやり取りされる通信は、共有APIを介して交換される。そのようなAPIはアプリケーションの開発者に公開されてもよく、このため、そのような開発者は、これらの機能を利用することができるアプリケーションを開発することができる。
[0104]図13は、フォアグラウンドプロセス及びアプリケーションに関連付けられる1つ又は複数のバックグラウンドタスクに対するコンピューティングデバイスのリソースの割り当てを管理する際にコンピューティングデバイス上で実行されるアプリケーションが支援することを可能にする、別の方法のフローチャート1300を示している。
[0105]図13に示すように、フローチャート1300は、ステップ1302で開始し、リソースマネージャー132は、リソース使用予算を示す少なくとも1つのメッセージを、アプリケーションに関連付けられるフォアグラウンドプロセスに送る。
[0106]ステップ1304において、リソースマネージャー132は、フォアグラウンドプロセスから、フォアグラウンドプロセスに割り当てられるべきリソース使用予算の第1の部分及びアプリケーションに関連付けられる少なくとも1つのバックグラウンドタスクに割り当てられるべきリソース使用予算の第2の部分を指定する少なくとも1つのメッセージを受け取る。
[0107]ステップ1306において、リソースマネージャー132は、リソース使用予算の第1の部分に等しいリソースの一部をフォアグラウンドプロセスに割り当て、リソース使用予算の第2の部分に等しいリソースの一部を少なくとも1つのバックグラウンドタスクに割り当てる。
[0108]実施形態では、フォアグラウンドプロセスに送られる少なくとも1つのメッセージ及びリソースマネージャーに送られる少なくとも1つのメッセージは、共有APIを介して送られる。
[0109]別の実施形態では、リソース使用予算は、フォアグラウンドで実行されているアプリケーションについてのリソース使用予算を含み、リソース使用予算を示す少なくとも1つのメッセージは、アプリケーションがフォアグラウンドで実行されているという通知を含む。
[0110]さらに別の実施形態では、リソース使用予算は、中断又は終了されるアプリケーションについてのリソース使用予算を含み、リソース使用予算を示す少なくとも1つのメッセージは、アプリケーションが中断又は終了されるという通知を含む。
[0111]さらなる実施形態では、リソースマネージャー132は、所定の期間後、フォアグラウンドプロセスによって使用されているリソースの量及び少なくとも1つのバックグラウンドプロセスによって使用されているリソースの量の合計がリソース使用予算を超えているかどうかを判定し、合計がリソース使用予算を超えていると判定することに応答して、フォアグラウンドプロセス及び少なくとも1つのバックグラウンドプロセスのうちの1つ又は複数を終了させる。
IV.例示的なモバイルデバイス実装
[0112]図14は、本願で説明される実施形態を実装することができる例示的なモバイルデバイス1402のブロック図である。図14に示すように、モバイルデバイス1402は、様々なオプションのハードウェアコンポーネント及びソフトウェアコンポーネントを含む。モバイルデバイス1402の任意のコンポーネントは任意の他のコンポーネントと通信することができるが、説明を簡単にするために、すべての接続が示されているわけではない。モバイルデバイス1402は、様々なコンピューティングデバイス(例えば、携帯電話、スマートフォン、ハンドヘルドコンピューター、パーソナルデジタルアシスタント(PDA)など)のうちの任意のものとすることができ、セルラー又は衛星ネットワークなどの1つもしくは複数のモバイル通信ネットワーク1404やローカルエリアもしくはワイドエリアネットワークとの無線双方向通信を可能にすることができる。
[0113]図示されるモバイルデバイス1402は、信号符号化、データ処理、入出力処理、電力制御及び/又は他の機能などのタスクを実行するための、コントローラー又はプロセッサー1410(例えば、信号プロセッサー、マイクロプロセッサー、ASIC又は他の制御及び処理論理回路)を含むことができる。オペレーティングシステム1412は、モバイルデバイス1402のコンポーネントの割り当て及び使用を制御することができ、1つ又は複数のアプリケーションプログラム1414(「アプリケーション」又は「アプリ」とも呼ばれる)のサポートを提供することができる。アプリケーションプログラム1414は、一般的なモバイルコンピューティングアプリケーション(例えば、電子メールアプリケーション、カレンダー、コンタクトマネージャー、ウェブブラウザー、メッセージングアプリケーション)及び任意の他のコンピューティングアプリケーション(例えば、ワードプロセッシングアプリケーション、マッピングアプリケーション、メディアプレーヤーアプリケーション)を含むことができる。
[0114]図示したモバイルデバイス1402はメモリー1420を含むことができる、メモリー1420は、取り外し不能なメモリー1422及び/又は取り外し可能なメモリー1424を含むことができる。取り外し不能なメモリー1422は、RAM、ROM、フラッシュメモリー、ハードディスク、又は他の周知のメモリーデバイスもしくは技術を含むことができる。取り外し可能なメモリー1424は、フラッシュメモリーもしくはGSM通信システムでよく知られている加入者識別モジュール(SIM)カード、又は「スマートカード」などの他の周知のメモリーデバイスもしくは技術を含むことができる。メモリー1420は、オペレーティングシステム1412及びアプリケーション1414を実行するためのデータ及び/又はコードを格納するために使用することができる。例示的なデータは、ウェブページ、テキスト、画像、音声ファイル、動画データ、又は、1つ又は複数の有線又は無線ネットワークを介して1つ又は複数のネットワークサーバー又は他のデバイスとの間で送受信される他のデータを含むことができる。メモリー1420は、国際モバイル加入者識別(IMSI)などの加入者識別子、及び国際モバイル機器識別子(IMEI)などの機器識別子を記憶するために使用することができる。このような識別子は、ユーザー及び機器を識別するために、ネットワークサーバーに送信することができる。
[0115]モバイルデバイス1402は、タッチスクリーン1432、マイクロフォン1434、カメラ1436、物理キーボード1438及び/又はトラックボール1440などの1つ又は複数の入力デバイス1430、並びにスピーカー1452及びディスプレイ1454などの1つ又は複数の出力デバイス1450をサポートすることができる。タッチスクリーン1432などのタッチスクリーンは、様々な方法で入力を検出することができる。例えば、容量性タッチスクリーンは、物体(例えば、指先)が表面にわたって流れる電流を歪めたり中断したりするときに、タッチ入力を検出する。別の例として、タッチスクリーンは、光学センサーを使用して、光学センサーからのビームが遮断されたときにタッチ入力を検出することができる。スクリーンの表面との物理的接触は、入力がいくつかのタッチスクリーンによって検出されるためには必要とされない。
[0116]他の可能な出力デバイス(図示せず)は、圧電又は他の触覚出力デバイスを含むことができる。いくつかのデバイスは、複数の入出力機能を果たすことができる。例えば、タッチスクリーン1432及びディスプレイ1454は、単一の入出力デバイスへと組み合わせることができる。入力デバイス1430は、自然ユーザーインターフェイス(NUI)を含むことができる。
[0117]無線モデム1460は、アンテナ(図示せず)に結合することができ、当技術分野で理解されるように、プロセッサー1410と外部デバイスとの間の双方向通信をサポートすることができる。モデム1460は、一般的に示されており、モバイル通信ネットワーク1404と通信するためのセルラーモデム1466及び/又は他の無線ベースのモデム(例えば、ブルートゥース(登録商標)1464及び/又はWi−Fi1462)を含むことができる。無線モデム1460の少なくとも1つは、典型的には、単一のセルラーネットワーク内、セルラーネットワーク間、又はモバイルデバイスと公衆交換電話網(PSTN)との間のデータ及び音声通信のためのGSM(登録商標)ネットワークなどの、1つ又は複数のセルラーネットワークとの通信のために構成される。
[0118]モバイルデバイス1402は、さらに、少なくとも1つの入出力ポート1480、電源1482、全地球測位システム(GPS)受信機などの衛星ナビゲーションシステム受信機1484、加速度計1486、並びに/又は、USBポート、IEEE 1394(FireWire)ポート及び/もしくはRS−232ポートなどの物理コネクター1490を含むことができる。当業者に認識されるように、任意のコンポーネントを削除することができ、他のコンポーネントを追加することができるので、モバイルデバイス1402の図示されたコンポーネントは、必須ものではなく、包括的なものではない。
[0119]実施形態では、モバイルデバイス1402の特定のコンポーネントは、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を行い、マルチプロセスアプリケーションのための動的リソース管理を可能にすることに関連する、本願に記載の機能を実行するように構成される。例えば、一実施形態では、オペレーティングシステム1412は、デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてオペレーティングシステム1412がリソース管理を実行することを可能にする、オペレーティングシステム104の機能を含む。さらなる例として、オペレーティングシステム1412及びアプリケーション1414の少なくとも1つは、それらのコンポーネントがマルチプロセスアプリケーションのための動的リソース管理を実行することを可能にする、オペレーティングシステム104及びアプリケーション102の機能を含むことができる。しかし、これは一例にすぎず、様々な機能が様々なコンポーネントによって実行されてもよい。
[0120]デバイス固有又はユーザー固有のリソース使用プロファイルに基づいてリソース管理を行い、マルチプロセスアプリケーションのための動的リソース管理を可能にすることに関連する、本願に記載の機能を実行するためのコンピュータープログラムロジックが、メモリー1420に格納されて、プロセッサー1410によって実行されてもよい。このようなコンピュータープログラムロジックを実行することにより、プロセッサー1410は、図1を参照して上述したコンピューティングデバイス100のコンポーネントのうちの任意のものの機能のいずれかを実施することができる。また、このようなコンピュータープログラムロジックを実行することにより、プロセッサー1410は、図2−13に示されたフローチャートのうちのいずれか又はすべてのステップのうちのいずれか又はすべてを実行することができる。
V.例示的なコンピューターシステムの実施形態
[0121]図15は、本願に記載の様々な実施形態を実施するために使用され得る例示的なプロセッサーベースのコンピューターシステム1500を示す。例えば、システム1500は、図1を参照して上述したコンピューティングデバイス100のコンポーネントを実装するために使用されてもよい。システム1500はまた、図2−13に示されたフローチャートのうちのいずれか又はすべてのステップのいずれか又はすべてを実施するために使用されてもよい。本願で提供されるシステム1500の説明は、例示の目的のために提供されるものであり、限定することを意図するものではない。実施形態は、当業者に知られているような、さらなる種類のコンピューターシステムで実現することができる。
[0122]図15に示すように、システム1500は、処理ユニット1502、システムメモリー1504、及びシステムメモリー1504を含む様々なシステムコンポーネントを処理ユニット1502に結合するバスを含む。処理ユニット1502は、1つ又は複数のマイクロプロセッサー又はマイクロプロセッサーコアを含むことができる。バス1506は、メモリーバス又はメモリーコントローラー、周辺バス、加速グラフィックスポート及び様々なバスアーキテクチャーのうちの任意のものを使用するプロセッサー又はローカルバスを含む、いくつかの種類のバス構造のうちの1つ又は複数を表す。システムメモリー1504は、読み出し専用メモリー(ROM)1508及びランダムアクセスメモリー(RAM)1510を含む。基本入出力システム1512(BIOS)はROM1508に格納される。
[0123]システム1500はまた、以下のドライブのうちの1つ又は複数を有する:ハードディスクからの読み出し及びそれへの書き込みのためのハードディスクドライブ1514、取り外し可能な磁気ディスク1518からの読み出し又はそれへの書き込みのための磁気ディスクドライブ1516、及びCD ROM、DVD ROM、BLU−RAY(商標)ディスク又は他の光学媒体などの取り外し可能な光ディスク1522からの読み出し又はそれへの書き込みのための光ディスクドライブ1520。ハードディスクドライブ1514、磁気ディスクドライブ1516及び光ディスクドライブ1520は、それぞれ、ハードディスクドライブインターフェイス1524、磁気ディスクドライブインターフェイス1526及び光ドライブインターフェイス1528によってバス1506に接続される。ドライブ及びその関連するコンピューター読み取り可能な媒体は、コンピューター読み取り可能な命令、データ構造、プログラムモジュール及びコンピューターのための他のデータについての不揮発性の記憶を提供する。ハードディスク、取り外し可能な磁気ディスク及び取り外し可能な光ディスクが説明されているが、フラッシュメモリーカード、デジタルビデオディスク、ランダムアクセスメモリー(RAM)、読み取り専用メモリー(ROM)などの、他の種類のコンピューター読み取り可能なメモリーデバイス及びストレージ構造を、データを格納するために使用することができる。
[0124]多くのプログラムモジューが、ハードディスク、磁気ディスク、光ディスク、ROM又はRAMに格納されてもよい。これらのプログラムモジュールは、オペレーティングシステム1530、1つ又は複数のアプリケーションプログラム1532、他のプログラムモジュール1534及びプログラムデータ1536を含む。様々な実施形態によれば、プログラムモジュールは、図1を参照して上述したコンピューティングデバイス100の機能及び特徴のうちのいずれか又はすべてを実行するために処理ユニット1502によって実行可能なコンピュータープログラムロジックを含んでもよい。プログラムモジュールはまた、処理ユニット1502によって実行されると、図2−13のフローチャートを参照して示した又は説明したステップ又は動作のうちの任意のものを実行する、コンピュータープログラムロジックを含むことができる。
[0125]ユーザーは、キーボード1538やポインティングデバイス1540などの入力デバイスを介して、コマンド及び情報をシステム1500に入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームコントローラー、スキャナーなどを含むことができる。一実施形態では、タッチスクリーンが、タッチスクリーン上の1つ又は複数のポイントに対する(例えば、指又はスタイラスによる)タッチのアプリケーションを介してユーザーがユーザー入力を提供することを可能にするために、ディスプレイ1544に関連して設けられる。これら及び他の入力デバイスは、多くの場合、バス1506に結合されたシリアルポートインターフェイス1542を介して処理ユニット1502に接続されるが、パラレルポート、ゲームポート又はユニバーサルシリアルバス(USB)などの他のインターフェイスによって接続されてもよい。このようなインターフェイスは有線又は無線のインターフェイスであってもよい。
[0126]ディスプレイ1544はまた、ビデオアダプター1546などのインターフェイスを介してバス1506に接続される。ディスプレイ1544に加えて、システム1500は、スピーカー及びプリンターなどの他の周辺出力デバイス(図示せず)を含んでもよい。
[0127]システム1500は、ネットワークインターフェイスもしくはアダプター1550、モデム1552、又はネットワークを介して通信を確立するための他の適切な手段を介して、ネットワーク1548(例えば、ローカルエリアネットワーク又はインターネットなどのワイドエリアネットワーク)に接続される。モデム1552は、内蔵でも外付けでもよく、シリアルポートインターフェイス1542を介してバス1506に接続される。
[0128]本願で使用されるとき、「コンピュータープログラム媒体」、「コンピューター読み取り可能な媒体」及び「コンピューター読み取り可能な記憶媒体」という語は、ハードディスクドライブ1514に関連付けられるハードディスク、取り外し可能な磁気ディスク1518、取り外し可能な光ディスク1522のほか、フラッシュメモリーカード、デジタルビデオディスク、ランダムアクセスメモリー(RAM)、読み出し専用メモリー(ROM)などの他のメモリーデバイスやストレージ構造などの、メモリーデバイスやストレージ構造を広く指すために使用される。このようなコンピューター読み取り可能な記憶媒体は、通信媒体とは区別され、通信媒体とは重複しない(通信媒体を含まない)。通信媒体は、通常、搬送波などの変調データ信号に、コンピューター読み取り可能な命令、データ構造、プログラムモジュール又は他のデータを具体化する。「変調データ信号」という語は、信号内に情報を符号化するような方法で設定又は変更された1つ又は複数の特性を有する信号を意味する。限定ではなく例として、通信媒体は、音響、RF、赤外線及び他の無線媒体などの無線媒体を含む。実施形態は通信媒体にも向けられる。
[0129]上述のように、コンピュータープログラム及びモジュール(アプリケーションプログラム1532及び他のプログラムモジュール1534を含む)は、ハードディスク、磁気ディスク、光ディスク、ROM又はRAMに格納されてもよい。このようなコンピュータープログラムはまた、ネットワークインターフェイス1550、シリアルポートインターフェイス1542又は任意の他のインターフェイスタイプを介して受信することができる。このようなコンピュータープログラムは、アプリケーションによって実行又はロードされたときに、本願で説明した本発明の実施形態の機能をコンピューター1500が実施することを可能にする。したがって、このようなコンピュータープログラムは、システム1500のコントローラーを表す。
[0130]実施形態はまた、任意のコンピューター使用可能な媒体に格納されたソフトウェアを含むコンピュータープログラム製品に向けられる。このようなソフトウェアは、1つ又は複数のデータ処理デバイスによって実行されると、データ処理デバイスを本願で説明された動作させる。本発明の実施形態は、現在又は将来において知られている、任意のコンピューター使用可能又はコンピューター読み取り可能な媒体を使用する。コンピューター読み取り可能な媒体の例は、限定されないが、RAM、ハードドライブ、フロッピーディスク、CD ROM、DVD ROM、ZIPディスク、テープ、磁気ストレージデバイス、光ストレージデバイス、MEMS、ナノテクノロジーベースのストレージデバイスなどのメモリーデバイス及びストレージ構造を含む。
[0131]代替的な実施形態では、システム1500は、ハードウェア論理/電気回路又はファームウェアとして実装することができる。さらなる実施形態によれば、これらのコンポーネントのうちの1つ又は複数は、システムオンチップ(SoC)で実装されてもよい。SoCは、プロセッサー(例えば、マイクロコントローラー、マイクロプロセッサー、デジタル信号プロセッサー(DSP)など)、メモリー、1つ又は複数の通信インターフェイス、及び/もしくはさらなる回路、又はその機能を実行する組み込みファームウェアのうちの1つ又は複数を含む集積回路チップを含んでもよい。
VI.結論
[0132]様々な実施形態が上で説明されたが、これらがほんの一例として提示されたものであって、限定ではないことが理解されるべきである。形態及び詳細の様々な変更が、本発明の趣旨及び範囲から逸脱することなくなされ得ることが、当業者には明らかであろう。したがって、本発明の広さ及び範囲は、上述した実施形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲及びその均等物によってのみ規定されるべきである。

Claims (10)

  1. コンピューティングデバイスのリソースを管理するためにコンピューティングデバイスによって実施される方法であって、
    前記コンピューティングデバイスによって実行されている間、アプリケーションの第1のインスタンスによって使用されるリソースの第1の量を決定するステップであって、前記アプリケーションの前記第1のインスタンスに関連付けられるフォアグラウンドプロセス及び前記アプリケーションの前記第1のインスタンスに関連付けられる1つ又は複数のバックグラウンドタスクによって使用されるリソースの量を決定するステップを含む、ステップと、
    前記第1の量に少なくとも基づいて、前記アプリケーションについての第1の予測されるリソース使用量を計算するステップと、
    前記第1の予測されるリソース使用量をデータストアに格納するステップと、
    前記データストアに格納された前記第1の予測されるリソース使用量に少なくとも基づいて、前記コンピューティングデバイスによって実行される前記アプリケーションの第2のインスタンスに割り当てられるべきリソースの第2の量を決定するステップと
    を含む、方法。
  2. 前記リソースは、
    揮発性又は不揮発性のメモリーリソース、
    中央処理装置(CPU)リソース、
    入出力(I/O)リソース、
    ネットワークリソース、
    電源リソース、及び
    センサーリソース
    のうちの少なくとも1つを含む、請求項1に記載の方法。
  3. 前記第1の量に少なくとも基づいて、前記アプリケーションについての前記第1の予測されるリソース使用量を計算するステップは、
    前記第1の量を、前記アプリケーションの1つ又は複数の以前に実行されたインスタンスに関連付けられる1つ又は複数の以前に決定された量と比較することによって、前記アプリケーションについての最大リソース使用量を得るステップと、
    前記最大リソース使用量に基づいて、前記第1の予測されるリソース使用量を計算するステップと
    を含む、請求項1に記載の方法。
  4. 前記第1の量に少なくとも基づいて、前記アプリケーションについての前記第1の予測されるリソース使用量を計算するステップは、
    前記第1の量及び前記アプリケーションの以前に実行されたインスタンスに関連付けられる1つ又は複数の以前に決定された量に基づいて、前記アプリケーションについての平均リソース使用量を得るステップと、
    前記平均リソース使用量に基づいて、前記第1の予測されるリソース使用量を計算するステップと
    を含む、請求項1に記載の方法。
  5. 前記第1の量及び前記アプリケーションの以前に実行されたインスタンスに関連付けられる1つ又は複数の以前に決定された量に基づいて、前記アプリケーションについての前記平均リソース使用量を得るステップは、
    前記第1の量を第1の重み付け係数で乗算して、第1の積を得るステップと、
    少なくとも前記1つ又は複数の以前に決定された量に基づいて得られる移動平均量を第2の重み付け係数で乗算して、第2の積を得るステップと、
    前記第1の積及び前記第2の積を合計するステップと
    を含む、請求項4に記載の方法。
  6. 前記コンピューティングデバイスによって実行されている間に前記アプリケーションの前記第2のインスタンスによって使用される前記リソースの量が第2の量を超えると判定することに応答して、前記コンピューティングデバイス上で同時に実行されている1つ又は複数のプロセスを終了するステップ
    をさらに含む、請求項1に記載の方法.
  7. 前記リソースの前記第2の量が現在利用可能でないと判定することに応答して、前記アプリケーションの前記第2のインスタンスの実行を防ぐステップ
    をさらに含む、請求項1に記載の方法。
  8. 前記リソースの前記第2の量が現在利用可能でないと判定することに応答して、前記コンピューティングデバイス上で現在実行されている1つ又は複数のプロセスを終了するステップ
    をさらに含む、請求項1に記載の方法。
  9. 前記決定するステップ、前記計算するステップ及び前記格納するステップが、
    第1のユーザーのために前記コンピューティングデバイスによって実行されている間に前記アプリケーションの前記第1のインスタンスによって使用される前記リソースの前記第1の量を決定するステップと、
    前記第1の量に少なくとも基づいて、前記アプリケーション及び前記第1のユーザーについての前記第1の予測されるリソース使用量を計算するステップと、
    前記第1の予測されるリソース使用量を前記データストアに格納するステップと、
    前記データストアに格納された前記第1の予測されるリソース使用量に少なくとも基づいて、前記第1のユーザーのために前記コンピューティングデバイスによって実行される前記アプリケーションの前記第2のインスタンスに割り当てられるべき前記リソースの前記第2の量を決定するステップと
    を含み、前記方法は、
    第2のユーザーのために前記コンピューティングデバイスによって実行されている間に前記アプリケーションの第3のインスタンスによって使用される前記リソースの第3の量を決定するステップと、
    前記第3の量に少なくとも基づいて、前記アプリケーション及び前記第2のユーザーについての第2の予測されるリソース使用量を計算するステップと、
    前記第2の予測されるリソース使用量を前記データストアに格納するステップと、
    前記データストアに格納された前記第2の予測されるリソース使用量に少なくとも基づいて、前記第2のユーザーのために前記コンピューティングデバイスによって実行される前記アプリケーションの第4のインスタンスに割り当てられるべき前記リソースの第4の量を決定するステップと
    をさらに含む、請求項1に記載の方法。
  10. コンピューティングデバイス上に実装されるシステムであって、
    少なくとも1つのプロセッサーと、
    前記少なくとも1つのプロセッサーによってアクセス可能なメモリーであって、前記少なくとも1つのプロセッサーによる実行のためのコンポーネントを格納する、メモリーと
    を備え、前記コンポーネントは、
    アプリケーション及びユーザーのうちの1つ又は複数による前記コンピューティングデバイスの少なくとも1つのリソースについての使用パターンを監視し、前記使用パターンに関連付けられる情報を格納し、前記格納された情報を使用して、前記少なくとも1つのプロセッサーによる実行の前に前記リソースの少なくとも一部を少なくとも1つのプロセスに予測的に割り当てるように動作可能なリソースマネージャー
    を含む、システム。
JP2016556970A 2014-03-10 2015-02-27 デバイス固有又はユーザー固有のリソース使用プロファイルに基づくリソース管理 Active JP6509895B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461950620P 2014-03-10 2014-03-10
US61/950,620 2014-03-10
US14/264,838 US9871741B2 (en) 2014-03-10 2014-04-29 Resource management based on device-specific or user-specific resource usage profiles
US14/264,838 2014-04-29
PCT/US2015/017892 WO2015138152A1 (en) 2014-03-10 2015-02-27 Resource management based on device-specific or user-specific resource usage profiles

Publications (3)

Publication Number Publication Date
JP2017511940A true JP2017511940A (ja) 2017-04-27
JP2017511940A5 JP2017511940A5 (ja) 2018-03-22
JP6509895B2 JP6509895B2 (ja) 2019-05-08

Family

ID=54018574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016556970A Active JP6509895B2 (ja) 2014-03-10 2015-02-27 デバイス固有又はユーザー固有のリソース使用プロファイルに基づくリソース管理

Country Status (11)

Country Link
US (2) US9871741B2 (ja)
EP (1) EP3117317B1 (ja)
JP (1) JP6509895B2 (ja)
KR (1) KR102275114B1 (ja)
CN (1) CN106104484B (ja)
AU (1) AU2015229885B2 (ja)
BR (1) BR112016020148B1 (ja)
CA (1) CA2939568C (ja)
MX (1) MX2016011616A (ja)
RU (1) RU2683509C2 (ja)
WO (1) WO2015138152A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020017278A (ja) * 2018-07-24 2020-01-30 アバイア インコーポレーテッド リソースを自己配分するシステム
US10666834B2 (en) 2018-03-28 2020-05-26 Ricoh Company, Ltd. Information processing system, information processing apparatus, and information processing method

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2495058B (en) 2010-07-26 2014-03-05 Seven Networks Inc Context aware traffic management for resource conservation in a wireless network
WO2013015835A1 (en) 2011-07-22 2013-01-31 Seven Networks, Inc. Mobile application traffic optimization
EP4216599A1 (en) 2013-06-11 2023-07-26 Seven Networks, LLC Offloading application traffic to a shared communication channel for signal optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
EP3207762A4 (en) * 2014-10-17 2018-04-04 Seven Networks, LLC Collaborative policy management strategies at a mobile device
EP3062142B1 (en) 2015-02-26 2018-10-03 Nokia Technologies OY Apparatus for a near-eye display
US9983887B2 (en) * 2015-06-05 2018-05-29 Apple Inc. Memory management of data processing systems
US10275279B2 (en) * 2015-07-09 2019-04-30 International Business Machines Corporation Increasing the efficiency of scheduled and unscheduled computing tasks
US10296383B2 (en) 2015-07-10 2019-05-21 Samsung Electronics Co., Ltd. Computing system with resource management mechanism and method of operation thereof
US9805324B2 (en) * 2015-09-16 2017-10-31 Sas Institute Inc. Computer-implemented system for modeling an allocated resource
US10552219B2 (en) * 2016-02-19 2020-02-04 Microsoft Technology Licensing, Llc Computing resource management of computing devices
WO2017166036A1 (zh) * 2016-03-29 2017-10-05 华为技术有限公司 一种资源统计方法、装置及终端
US10289347B2 (en) * 2016-04-26 2019-05-14 Servicenow, Inc. Detection and remediation of memory leaks
US10541879B2 (en) * 2016-07-29 2020-01-21 Microsoft Technology Licensing, Llc Multi-channel resource control system
CN107885591A (zh) * 2016-09-27 2018-04-06 华为技术有限公司 为应用分配系统资源的方法和终端
CN107220077B (zh) 2016-10-20 2019-03-19 华为技术有限公司 应用启动的管控方法和管控设备
US20180129537A1 (en) * 2016-11-10 2018-05-10 Microsoft Technology Licensing, Llc Managing memory usage using soft memory targets
US20180173560A1 (en) * 2016-12-21 2018-06-21 Apple Inc. Processing circuit hardware resource allocation system
US10650552B2 (en) 2016-12-29 2020-05-12 Magic Leap, Inc. Systems and methods for augmented reality
EP4300160A3 (en) 2016-12-30 2024-05-29 Magic Leap, Inc. Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light
US11171854B2 (en) * 2017-01-13 2021-11-09 International Business Machines Corporation Application workload prediction
KR101884404B1 (ko) 2017-01-17 2018-08-02 부산대학교 산학협력단 중앙 집중식 제어 구조 서버를 갖는 포그 컴퓨팅 운용을 위한 시스템 및 그의 제어 방법
US10318888B2 (en) 2017-03-06 2019-06-11 International Business Machines Corporation Pre-backing virtual storage using historical learned data
CN107066336B (zh) * 2017-03-30 2021-05-18 联想(北京)有限公司 一种任务处理方法及电子设备、资源管理装置
CN106850692B (zh) * 2017-03-30 2020-03-20 成都长天信息技术有限公司 一种流媒体播放模式确定方法及装置
US10445208B2 (en) * 2017-06-23 2019-10-15 Microsoft Technology Licensing, Llc Tunable, efficient monitoring of capacity usage in distributed storage systems
US10447924B2 (en) * 2017-06-30 2019-10-15 Microsoft Technology Licensing, Llc Camera usage notification
US10578870B2 (en) 2017-07-26 2020-03-03 Magic Leap, Inc. Exit pupil expander
CN107402808B (zh) * 2017-07-31 2020-03-27 Oppo广东移动通信有限公司 进程管理方法、装置、存储介质及电子设备
US10810141B2 (en) * 2017-09-29 2020-10-20 Intel Corporation Memory control management of a processor
CN109697115B (zh) * 2017-10-20 2023-06-06 伊姆西Ip控股有限责任公司 用于调度应用的方法、装置以及计算机可读介质
CN109697121B (zh) * 2017-10-20 2023-05-05 伊姆西Ip控股有限责任公司 用于向应用分配处理资源的方法、设备和计算机可读介质
US10652308B2 (en) 2017-11-08 2020-05-12 International Business Machines Corporation Cognitive storage management for a mobile computing device
EP3732570A4 (en) 2017-11-10 2021-11-03 R-Stor Inc. SYSTEM AND PROCESS FOR REDUCING RESOURCES PROVIDED
US10893000B2 (en) * 2017-11-21 2021-01-12 International Business Machines Corporation Diagonal scaling of resource allocations and application instances in a distributed computing environment
US10635501B2 (en) 2017-11-21 2020-04-28 International Business Machines Corporation Adaptive scaling of workloads in a distributed computing environment
US10721179B2 (en) 2017-11-21 2020-07-21 International Business Machines Corporation Adaptive resource allocation operations based on historical data in a distributed computing environment
US10812407B2 (en) 2017-11-21 2020-10-20 International Business Machines Corporation Automatic diagonal scaling of workloads in a distributed computing environment
US10733015B2 (en) 2017-11-21 2020-08-04 International Business Machines Corporation Prioritizing applications for diagonal scaling in a distributed computing environment
US10887250B2 (en) 2017-11-21 2021-01-05 International Business Machines Corporation Reducing resource allocations and application instances in diagonal scaling in a distributed computing environment
EP4390219A2 (en) 2017-12-10 2024-06-26 Magic Leap, Inc. Anti-reflective coatings on optical waveguides
CN109947497B (zh) * 2017-12-20 2021-06-08 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
US11187923B2 (en) 2017-12-20 2021-11-30 Magic Leap, Inc. Insert for augmented reality viewing device
US10755676B2 (en) 2018-03-15 2020-08-25 Magic Leap, Inc. Image correction due to deformation of components of a viewing device
US11204491B2 (en) 2018-05-30 2021-12-21 Magic Leap, Inc. Compact variable focus configurations
EP3803450A4 (en) 2018-05-31 2021-08-18 Magic Leap, Inc. POSITIONING A RADAR HEAD
EP3804306B1 (en) 2018-06-05 2023-12-27 Magic Leap, Inc. Homography transformation matrices based temperature calibration of a viewing system
US11092812B2 (en) 2018-06-08 2021-08-17 Magic Leap, Inc. Augmented reality viewer with automated surface selection placement and content orientation placement
WO2020010097A1 (en) 2018-07-02 2020-01-09 Magic Leap, Inc. Pixel intensity modulation using modifying gain values
WO2020010226A1 (en) 2018-07-03 2020-01-09 Magic Leap, Inc. Systems and methods for virtual and augmented reality
US11856479B2 (en) 2018-07-03 2023-12-26 Magic Leap, Inc. Systems and methods for virtual and augmented reality along a route with markers
US10771619B1 (en) 2018-07-09 2020-09-08 Life360, Inc. Systems and methods for context-aware application and content access control
WO2020023545A1 (en) 2018-07-24 2020-01-30 Magic Leap, Inc. Temperature dependent calibration of movement detection devices
US11624929B2 (en) 2018-07-24 2023-04-11 Magic Leap, Inc. Viewing device with dust seal integration
US11112862B2 (en) 2018-08-02 2021-09-07 Magic Leap, Inc. Viewing system with interpupillary distance compensation based on head motion
US10795458B2 (en) 2018-08-03 2020-10-06 Magic Leap, Inc. Unfused pose-based drift correction of a fused pose of a totem in a user interaction system
CN112955073A (zh) 2018-08-22 2021-06-11 奇跃公司 患者观察系统
CN109446048B (zh) * 2018-10-30 2023-12-22 深圳市科华通诚科技有限公司 一种后台管控方法、设备及计算机可读存储介质
WO2020102412A1 (en) 2018-11-16 2020-05-22 Magic Leap, Inc. Image size triggered clarification to maintain image sharpness
CN113454507B (zh) 2018-12-21 2024-05-07 奇跃公司 用于促进波导内的全内反射的气穴结构
WO2020133437A1 (zh) * 2018-12-29 2020-07-02 深圳市欢太科技有限公司 应用程序的管理方法、装置、存储介质及电子设备
EP3921720B1 (en) * 2019-02-06 2024-05-22 Magic Leap, Inc. Target intent-based clock speed determination and adjustment to limit total heat generated by multiple processors
JP2022523852A (ja) 2019-03-12 2022-04-26 マジック リープ, インコーポレイテッド 第1および第2の拡張現実ビューア間でのローカルコンテンツの位置合わせ
CN110069328B (zh) * 2019-03-25 2021-11-09 维沃移动通信有限公司 应用关闭方法及终端设备
WO2020223636A1 (en) 2019-05-01 2020-11-05 Magic Leap, Inc. Content provisioning system and method
WO2021021670A1 (en) 2019-07-26 2021-02-04 Magic Leap, Inc. Systems and methods for augmented reality
KR20210023073A (ko) 2019-08-22 2021-03-04 삼성전자주식회사 전자장치 및 그 제어방법
WO2021097318A1 (en) 2019-11-14 2021-05-20 Magic Leap, Inc. Systems and methods for virtual and augmented reality
WO2021097323A1 (en) 2019-11-15 2021-05-20 Magic Leap, Inc. A viewing system for use in a surgical environment
CN111078404B (zh) * 2019-12-09 2023-07-11 腾讯科技(深圳)有限公司 一种计算资源确定方法、装置、电子设备及介质
KR20220046811A (ko) * 2020-10-08 2022-04-15 조선대학교산학협력단 클라우드 무선 접속 네트워크의 동적 리소스를 할당하는 장치 및 방법
KR20220102405A (ko) * 2021-01-13 2022-07-20 삼성전자주식회사 전자 장치 및 전자 장치의 동작 방법
CN113535398B (zh) * 2021-07-14 2024-02-27 广州虎牙科技有限公司 资源分配调整方法、装置、电子设备和可读存储介质
KR20230080535A (ko) * 2021-11-30 2023-06-07 삼성전자주식회사 메모리 회수 방법 및 장치
KR102562263B1 (ko) * 2023-04-05 2023-08-02 (주)시지태테크놀러지 애플리케이션 사용량에 기반하여 계정에 등급을 부여하기 위한 방법
KR102684023B1 (ko) * 2024-04-20 2024-07-12 주식회사 큐버 수업유형 프로파일 기반의 어플리케이션 활성모드 그룹 제어 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285871A (ja) * 2005-04-04 2006-10-19 Canon Inc 情報処理装置、制御方法、プログラム、及び記憶媒体
US20100131959A1 (en) * 2008-11-26 2010-05-27 Spiers Adam Z Proactive application workload management
JP2010533924A (ja) * 2007-07-16 2010-10-28 マイクロソフト コーポレーション リソース割り当てを拡大および縮小することによるスケジューリング
WO2012127596A1 (ja) * 2011-03-19 2012-09-27 富士通株式会社 端末装置、プロセス管理方法、およびプロセス管理プログラム

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100949420B1 (ko) * 2002-10-31 2010-03-24 파나소닉 주식회사 통신장치, 통신 시스템 및 알고리즘 선택방법
US7284009B2 (en) * 2002-12-13 2007-10-16 Sun Microsystems, Inc. System and method for command line prediction
KR100690854B1 (ko) 2005-11-08 2007-03-09 엘지전자 주식회사 멀티태스킹이 가능한 휴대용 단말기 및 그의 멀티태스킹처리방법
WO2007071286A1 (en) 2005-12-21 2007-06-28 Real Enterprise Solutions Development B.V. Method of assigning a user session to one of a set of application servers
US8959515B2 (en) 2006-01-18 2015-02-17 International Business Machines Corporation Task scheduling policy for limited memory systems
US7673189B2 (en) * 2006-02-06 2010-03-02 International Business Machines Corporation Technique for mapping goal violations to anamolies within a system
KR100801894B1 (ko) 2006-06-15 2008-02-12 삼성전자주식회사 휴대용 단말기에서 메모리 용량을 고려한 프로그램 실행을위한 장치 및 방법
US8112755B2 (en) * 2006-06-30 2012-02-07 Microsoft Corporation Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
US8826281B2 (en) * 2006-11-07 2014-09-02 Microsoft Corporation Managing document publication using time-driven job scheduling
US20080115141A1 (en) * 2006-11-15 2008-05-15 Bharat Welingkar Dynamic resource management
US8584131B2 (en) * 2007-03-30 2013-11-12 International Business Machines Corporation Method and system for modeling and analyzing computing resource requirements of software applications in a shared and distributed computing environment
US8042119B2 (en) * 2007-05-14 2011-10-18 Teradata Us, Inc. States matrix for workload management simplification
US8139533B2 (en) * 2007-11-05 2012-03-20 Qualcomm Incorporated Division of the scheduling algorithm into background and foreground algorithms
KR20100021725A (ko) 2008-08-18 2010-02-26 삼성전자주식회사 이동통신 단말기의 메모리 재할당 장치 및 방법
KR101403808B1 (ko) * 2010-08-23 2014-06-11 한국전자통신연구원 이용 패턴에 따라 어플리케이션 서비스를 실행하는 모바일 단말 장치 및 그의 어플리케이션 서비스 실행 방법
WO2012031799A1 (en) 2010-09-09 2012-03-15 Siemens Aktiengesellschaft A system to manage power consumption of a processor at run time
US8635630B2 (en) 2010-10-25 2014-01-21 Microsoft Corporation Application lifetime management
JP2012094030A (ja) * 2010-10-28 2012-05-17 Hitachi Ltd 計算機システム及び処理制御方法
US8621477B2 (en) * 2010-10-29 2013-12-31 International Business Machines Corporation Real-time monitoring of job resource consumption and prediction of resource deficiency based on future availability
US8626902B2 (en) * 2010-12-03 2014-01-07 International Business Machines Corporation Modeling and reducing power consumption in large IT systems
KR20120077265A (ko) 2010-12-30 2012-07-10 주식회사 팬택 이동 단말기 및 이동 단말기의 제어 방법
US20120209413A1 (en) * 2011-02-14 2012-08-16 Microsoft Corporation Background Audio on Mobile Devices
EP2538327A1 (en) 2011-06-16 2012-12-26 Samsung Electronics Co., Ltd. Adaptive Termination and Pre-Launching Policy for Improving Application Startup Time
US9032413B2 (en) * 2011-09-01 2015-05-12 Microsoft Technology Licensing, Llc Decoupling background work and foreground work
US8578394B2 (en) 2011-09-09 2013-11-05 Microsoft Corporation Exempting applications from suspension
CN103024825B (zh) 2011-09-26 2015-07-01 中国移动通信集团公司 终端多应用间网络资源分配方法及其设备
DE102012217202B4 (de) * 2011-10-12 2020-06-18 International Business Machines Corporation Verfahren und System zum Optimieren des Platzierens virtueller Maschinen in Cloud-Computing-Umgebungen
US9164803B2 (en) * 2012-01-20 2015-10-20 Microsoft Technology Licensing, Llc Background task resource control
US9118520B1 (en) * 2012-04-20 2015-08-25 Symantec Corporation Systems and methods for monitoring application resource usage on mobile computing systems
US8725800B1 (en) * 2012-10-02 2014-05-13 Nextbit Systems Inc. Mobile photo application migration to cloud computing platform
US9992301B2 (en) * 2013-06-26 2018-06-05 Sap Se Prioritized throttling in a multiusage environment
US20150244645A1 (en) * 2014-02-26 2015-08-27 Ca, Inc. Intelligent infrastructure capacity management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285871A (ja) * 2005-04-04 2006-10-19 Canon Inc 情報処理装置、制御方法、プログラム、及び記憶媒体
JP2010533924A (ja) * 2007-07-16 2010-10-28 マイクロソフト コーポレーション リソース割り当てを拡大および縮小することによるスケジューリング
US20100131959A1 (en) * 2008-11-26 2010-05-27 Spiers Adam Z Proactive application workload management
WO2012127596A1 (ja) * 2011-03-19 2012-09-27 富士通株式会社 端末装置、プロセス管理方法、およびプロセス管理プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10666834B2 (en) 2018-03-28 2020-05-26 Ricoh Company, Ltd. Information processing system, information processing apparatus, and information processing method
US11770492B2 (en) 2018-03-28 2023-09-26 Ricoh Company, Ltd. Information processing system, apparatus, and method for controlling usage of service in accordance with previous resource usage
JP2020017278A (ja) * 2018-07-24 2020-01-30 アバイア インコーポレーテッド リソースを自己配分するシステム
JP7012047B2 (ja) 2018-07-24 2022-01-27 アバイア インコーポレーテッド リソースを自己配分するシステム

Also Published As

Publication number Publication date
MX2016011616A (es) 2016-11-29
CN106104484B (zh) 2020-04-03
KR102275114B1 (ko) 2021-07-07
WO2015138152A1 (en) 2015-09-17
RU2683509C2 (ru) 2019-03-28
CA2939568C (en) 2021-11-02
EP3117317A1 (en) 2017-01-18
RU2016136181A3 (ja) 2018-10-02
US20180102981A1 (en) 2018-04-12
BR112016020148A2 (pt) 2017-08-15
BR112016020148B1 (pt) 2022-08-30
BR112016020148A8 (pt) 2021-06-15
US9871741B2 (en) 2018-01-16
EP3117317B1 (en) 2020-11-25
AU2015229885B2 (en) 2019-09-12
US10182018B2 (en) 2019-01-15
AU2015229885A1 (en) 2016-09-08
CA2939568A1 (en) 2015-09-17
JP6509895B2 (ja) 2019-05-08
US20150256476A1 (en) 2015-09-10
CN106104484A (zh) 2016-11-09
RU2016136181A (ru) 2018-03-15
KR20160132439A (ko) 2016-11-18

Similar Documents

Publication Publication Date Title
US10182018B2 (en) Resource management based on device-specific or user-specific resource usage profiles
US9678797B2 (en) Dynamic resource management for multi-process applications
CN110138732B (zh) 访问请求的响应方法、装置、设备及存储介质
US9626295B2 (en) Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
US10101910B1 (en) Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager
US20120324481A1 (en) Adaptive termination and pre-launching policy for improving application startup time
US8997171B2 (en) Policy based application suspension and termination
US9405572B2 (en) Optimized resource allocation and management in a virtualized computing environment
US10649889B2 (en) Method and apparatus for managing kernel memory of data processing systems
US9697124B2 (en) Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
US20170245217A1 (en) Electronic device and method for controlling application and component
EP2538327A1 (en) Adaptive Termination and Pre-Launching Policy for Improving Application Startup Time
JP2014517434A5 (ja)
US10289446B1 (en) Preserving web browser child processes by substituting a parent process with a stub process
US10248321B1 (en) Simulating multiple lower importance levels by actively feeding processes to a low-memory manager
CN110806918A (zh) 基于深度学习神经网络的虚拟机运行方法和装置
US20230342218A1 (en) Automated dynamic resource configuration for hard provisioned virtual machines
US20230342170A1 (en) Automated analysis and dynamic resource configuration for hard provisioned virtual machines
US20230342200A1 (en) System and method for resource management in dynamic systems
US20240256352A1 (en) System and method for managing data retention in distributed systems
CN118733054A (zh) 一种应用程序编译方法及电子设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190213

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190403

R150 Certificate of patent or registration of utility model

Ref document number: 6509895

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250