JP2017514209A - マルチプロセス・アプリケーションのための動的リソース管理 - Google Patents

マルチプロセス・アプリケーションのための動的リソース管理 Download PDF

Info

Publication number
JP2017514209A
JP2017514209A JP2016557010A JP2016557010A JP2017514209A JP 2017514209 A JP2017514209 A JP 2017514209A JP 2016557010 A JP2016557010 A JP 2016557010A JP 2016557010 A JP2016557010 A JP 2016557010A JP 2017514209 A JP2017514209 A JP 2017514209A
Authority
JP
Japan
Prior art keywords
application
resource
resource usage
resources
budget
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016557010A
Other languages
English (en)
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 JP2017514209A publication Critical patent/JP2017514209A/ja
Pending legal-status Critical Current

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]
    • 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/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

計算デバイス上で実行するアプリケーションが、計算デバイスのリソースから割り当てられる部分を、アプリケーションに関連する多数のプロセス間でどのように分割するとよいか動的に制御することを可能にする技法について記載する。例えば、計算デバイス上で実行しているアプリケーションが、計算デバイスのオペレーティング・システムと相互作用して、計算デバイスのリソースから割り当てられた部分を、アプリケーションに関連するフォアグラウンド・プロセスおよびアプリケーションに関連する1つ以上のバックグラウンド・プロセスの間でどのように分割するとよいか動的に制御することができる。【選択図】図13

Description

[0001] 今日の移動体デバイス、特に今日の低価格移動体デバイスは、マルチタスク処理のシナリオが難しい課題となっている。大規模に競合するためには、低価格および/または低電力部品を使用して移動体デバイスを製造しなければならないことが多い。これは、移動体デバイスを実現するために使用されるメモリーについて特に該当し、このメモリーにはランダム・アクセス・メモリー(RAM)、マルチメディア・カード(MMC)、およびセキュア・ディジタル(SD)カードが含まれる。これによる実質的な影響は、メモリー管理のためにページングに頼る従来の移動体デバイスは、多数のプロセスを同時に実行しようとすると、即座に固まってしまう(fall over)ことである。このため、ユーザー体験が非常に乏しくなり、マルチタスク処理のシナリオでは不利になる。この問題は、移動体デバイス用に開発されるアプリケーションおよびオペレーティング・システムが増々大型化していくのに対して、市場は製造コスト削減を求めるので、特に重要になりつつある。
[0002] 以前では、移動体デバイス上において多数のプロセスの同時実行をサポートするために不十分なメモリーを使用する問題は、以下の方法の内1つ以上で扱われていた。メモリー管理のためのページングの使用、移動体デバイス上にもっと多くのメモリーを設ける、ならびにアプリケーションおよびオペレーティング・システムのサイズに制限を設ける。先に注記したように、ページングは非常に乏しいユーザー体験および不利なマルチタスク処理シナリオを招く可能性がある。メモリーを多く設ける程、移動体デバイスのコスト、複雑さ、および電力消費を押し上げることになる。アプリケーションおよびオペレーティング・システムのサイズ制限を設けると、所望の機能を開発しユーザーに届けることが過度に難しくなる。少なくともこれらの理由のため、既存のメモリー管理解決策は、移動体デバイスには不十分である。今日の移動体デバイスが、ユーザー体験に悪影響を及ぼさずに、広範囲にわたる種々のマルチタスク処理シナリオを可能にするように多数のプロセスを同時に実行することを可能にするためには、メモリー管理技法の改良が必要となる。
[0003] 本明細書では、計算デバイス上で実行するアプリケーションが、この計算デバイスのリソースから割り当てられた部分を、このアプリケーションに関連する多数のプロセス間でどのように分割すればよいか動的に制御することを可能にするシステム、方法、装置、およびコンピューター・プログラム製品について説明する。例えば、計算デバイス上で実行するアプリケーションが、計算デバイスのオペレーティング・システムと対話処理して、このアプリケーションに関連するフォアグラウンド・プロセスおよびこのアプリケーションに関連する1つ以上のバックグラウンド・プロセスの間で、計算デバイスのリソースの内割り当てられた部分をどのように分割すればよいか動的に制御することができる。アプリケーションにこの能力を設けることによって、本明細書において説明する実施形態は、アプリケーションが変化しつつあるリソース割り当てに適応し、計算デバイス上で実行しているかもしれない他のプロセスとより良く共存することを可能にし、これによって多種多様なマルチタスク処理シナリオを可能にするという利点がある。
[0004] 具体的には、本明細書では、計算デバイス上に実装されるシステムについて説明する。このシステムは、少なくとも1つのプロセッサーと、この少なくとも1つのプロセッサーによってアクセスすることができ、少なくとも1つのプロセッサーによる実行のためにコンポーネントを格納するメモリーとを含む。コンポーネントにはリソース・マネージャーが含まれる。リソース・マネージャーは、アプリケーションに関連するリソース使用バジェット(resource usage budget)を維持し、リソース使用バジェットを示す少なくとも1つのメッセージをアプリケーションに関連するフォアグラウンド・プロセスに送り、リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第1部分、およびリソース使用バジェットの内アプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第2部分を指定する少なくとも1つのメッセージをフォアグラウンド・プロセスから受けるように動作可能である。リソース使用バジェットは、計算デバイスのリソースの内どれくらいをアプリケーションによって、その実行中に使用することができるか示す。リソースは、例えば、揮発性または不揮発性メモリー・リソース、中央処理ユニット(CPU)リソース、入力/出力(I/O)リソース、ネットワーク・リソース、電力リソース、またはセンサー・リソースを含むことができる。
[0005] 以上のシステムの実施形態では、リソース・マネージャーは、更に、リソース使用バジェットの第1部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、更にリソース使用バジェットの第2部分に等しいリソースの部分を少なくとも1つのバックグラウンド・タスクに割り当てるように動作可能である。
[0006] 他の実施形態では、フォアグラウンド・プロセスに送られる少なくとも1つのメッセージ、および前記プロセスから受け取られる少なくとも1つのメッセージは、共有アプリケーション・プログラミング・インターフェース(API)を介して伝達される。
[0007] 更に他の実施形態では、リソース使用バジェットは、フォアグラウンドにおいて実行しているアプリケーションのためのリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも1つのメッセージは、アプリケーションがフォアグラウンドにおいて実行していることの通知を含む。
[0008] 更に他の実施形態では、リソース使用バジェットは、保留または終了させられるアプリケーションのためのリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも1つのメッセージは、アプリケーションが保留または終了させられることの通知を含む。
[0009] 更に他の実施形態では、リソース・マネージャーは、更に、所定の時間期間の後、フォアグラウンド・プロセスによって使用されるリソースの量と、少なくとも1つのバックグラウンド・プロセスによって使用されるリソースの量との合計が、リソース使用バジェットを超過するか否か判定し、合計がリソース使用バジェットを超過すると判定したことに応答して、フォアグラウンド・プロセスおよび少なくとも1つのバックグラウンド・プロセスの内1つ以上を終了させるように動作可能である。
[0010] また、本明細書では、計算デバイスによって実装される方法についても説明する。この方法にしたがって、リソース・マネージャーが、アプリケーションに関連するフォアグラウンド・プロセスに、このアプリケーションがフォアグラウンドにおいて実行していることの通知を送る。リソース・マネージャーは、フォアグラウンド・プロセスから、フォアグラウンド・プロセスに割り当てられる第1リソース使用バジェットの第1部分、およびアプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第1リソース使用バジェットの第2部分を指定する少なくとも1つのメッセージを受ける。第1リソース使用バジェットは、フォアグラウンドにおいて実行しているアプリケーションに関連するリソース使用ジェットを含む。リソース・マネージャーは、第1リソース使用バジェットの第1部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、更に第1リソース使用バジェットの第2部分に等しいリソースの部分を少なくとも1つのバックグラウンド・タスクに割り当てる。リソースは、例えば、揮発性または不揮発性メモリー・リソース、CPUリソース、I/Oリソース、ネットワーク・リソース、電力リソース、およびセンサー・リソースを含むことができる。
[0011] 以上の方法の一実施形態では、送るステップおよび受けるステップは、共有APIを介して実行される。
[0012] 他の実施形態では、この方法は更に多数の追加ステップを含む。これらの追加ステップにしたがって、リソース・マネージャーは、フォアグラウンド・プロセスに、アプリケーションが中断または終了させられることの通知を送る。リソース・マネージャーは、フォアグラウンド・プロセスから、フォアグラウンド・プロセスに割り当てられる第2リソース使用バジェットの第1部分、およびアプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第2リソース使用バジェットの第2部分を指定する少なくとも1つのメッセージを受ける。第2リソース使用バジェットは、保留または終了させられるアプリケーションに関連するリソース使用バジェットを含み、第1リソース・バジェットよりも小さくてもよい。リソース・マネージャーは、第2リソース使用バジェットの第1部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、第2リソース使用バジェットの第2部分に等しいリソースの部分を少なくとも1つのバックグラウンド・タスクに割り当てる。
[0013] 更にこの実施形態にしたがって、この方法は、更に、所定の時間期間の後、フォアグラウンド・プロセスによって使用されるリソースの量、および少なくとも1つのバックグラウンド・プロセスによって使用されるリソースの量の合計が第2リソース使用バジェットを超過するか否か判定するステップと、合計が第2リソース使用バジェットを超過すると判定したことに応答して、フォアグラウンド・プロセスおよび少なくとも1つのバックグラウンド・プロセスの内の1つ以上を終了させるステップとを含んでもよい。
[0014] また、本明細書においては、コンピューター・プログラム製品についても説明する。このコンピューター・プログラム製品は、コンピューター・プログラム・ロジックが記録されたコンピューター読み取り可能メモリーを含み、計算デバイスの少なくとも1つのプロセッサーによってこのコンピューター・プログラム・ロジックが実行されると、少なくとも1つのプロセッサーに動作を実行させる。これらの動作は、リソース・マネージャーからアプリケーションに関連するフォアグラウンド・プロセスに、リソース使用バジェットを示す少なくとも1つのメッセージを送る動作と、リソース・マネージャーによってフォアグラウンド・プロセスから、リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第1部分、およびリソース使用バジェットの内アプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第2部分を指定する少なくとも1つのメッセージを受ける動作とを含む。リソースは、揮発性または不揮発性メモリー・リソース、CPUリソース、I/Oリソース、ネットワーク・リソース、電力リソース、およびセンサー・リソースを含むことができる。
[0015] 以上のコンピューター・プログラム製品の一実施形態では、前述の動作は、更に、リソース・マネージャーによって、リソース使用バジェットの第1部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当てる動作と、リソース使用バジェットの第2部分に等しいリソースの部分を少なくとも1つのバックグラウンド・タスクに割り当てる動作とを含む。
[0016] 他の実施形態では、リソース使用バジェットを示す少なくとも1つのメッセージ、ならびにフォアグラウンド・プロセスに割り当てられるリソース使用バジェットの第1部分、およびアプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられるリソース使用バジェットの第2部分を指定する少なくとも1つのメッセージが、共有APIを介して送られる。
[0017] 更に他の実施形態では、リソース使用バジェットは、フォアグラウンドにおいて実行しているアプリケーションのためのリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも1つのメッセージは、アプリケーションがフォアグラウンドにおいて実行していることの通知を含む。
[0018] 更に他の実施形態では、リソース使用バジェットは、中断または終了させられるアプリケーションのためのリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも1つのメッセージは、アプリケーションが中断または終了させられることの通知を含む。
[0019] 更に他の実施形態では、前述の動作は、更に、所定の時間期間の後、フォアグラウンド・プロセスによって使用されるリソースの量、および少なくとも1つのバックグラウンド・プロセスによって使用されるリソースの量の合計が第2リソース使用バジェットを超過するか否か、リソース・マネージャーによって判定する動作と、合計が第2リソース使用バジェットを超過すると判定したことに応答して、フォアグラウンド・プロセスおよび少なくとも1つのバックグラウンド・プロセスの内の1つ以上を、リソース・マネージャーによって終了させる動作とを含む。
[0020] この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。更に、特許請求する主題は、詳細な説明および/または本文書の他の章において記載される具体的な実施形態に限定されるのではないことを注記しておく。このような実施形態は、本明細書では、例示の目的にのみ紹介されるに過ぎない。本明細書に含まれる教示に基づいて、当業者には追加の実施形態も明白であろう。
[0021] 添付図面は、本明細書に組み込まれその一部をなすが、本発明の実施形態を例示し、更に、説明と共に、本発明の原理を説明し、関連技術(1つまたは複数)の当業者が本発明を行い使用することを可能にする役割も果たす。
図1は、実施形態にしたがって、デバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を実行する計算デバイスのブロック図である。 図2は、実施形態にしたがって、デバイス特定またはユーザー特定のリソース使用プロファイルにしたがって計算デバイスのリソースを管理するために計算デバイスによって実装される方法のフローチャートを示す。 図3は、一実施形態にしたがってアプリケーションについて予測リソース使用量を計算する方法のフローチャートを示す。 図4は、他の実施形態にしたがってアプリケーションについて予測リソース使用量を計算する方法のフローチャートを示す。 図5は、実施形態にしたがってアプリケーションについて平均リソース使用量を求める方法のフローチャートを示す。 図6は、図2に示したフローチャートの方法にしたがって実行することができる追加ステップのフローチャートを示す。 図7は、図2に示したフローチャートの方法にしたがって実行することができる追加ステップのフローチャートを示す。 図8は、図2に示したフローチャートの方法にしたがって実行することができる追加ステップのフローチャートを示す。 図9は、実施形態にしたがって、ユーザー特定リソース使用プロファイルにしたがって、計算デバイスのリソースを管理するために計算デバイスによって実装される方法のフローチャートを示す。 図10は、実施形態にしたがって、デバイス特定またはユーザー特定のリソース使用プロファイルにしたがってアプリケーションの起動(launching)を管理する方法のフローチャートを示す。 図11は、計算デバイスのリソースに関して監視されたユーザーのリソース使用パターンおよびそこから得られる情報を使用して、予測的にリソースをプロセスに割り当てる方法のフローチャートを示す。 図12は、計算デバイスのリソースのフォアグラウンド・プロセスおよびアプリケーションに関連する1つ以上のバックグラウンド・タスクへの割り当てを管理するときに、計算デバイス上で実行するアプリケーションがこれを補助することを可能にする一方法のフローチャートを示す。 図13は、計算デバイスのリソースのフォアグラウンド・プロセスおよびアプリケーションに関連する1つ以上のバックグラウンド・タスクへの割り当てを管理するときに、計算デバイス上で実行するアプリケーションがこれを補助することを可能にする他の方法のフローチャートを示す。 図14は、種々の実施形態を実現するために使用することができる移動デバイス例のブロック図である。 図15は、種々の実施形態を実現するために使用することができるプロセッサー・ベースのコンピューター・システム例のブロック図である。
[0037] 本発明の特徴および利点は、以下に明記する詳細な説明を図面と共に検討することによって一層明白になるであろう。図面では、同様の参照符号が全体を通じて対応するエレメントを識別する。図面において、同様の参照番号は、同一、機能的に同様、および/または構造的に同様のエレメントを全体的に示す。エレメントが最初に現れる図面は、対応する参照番号における一番左側の桁(1つまたは複数)によって示される。
1.序言
[0038] 以下の詳細な説明では、本発明の実施形態例を例示する添付図面を参照する。しかしながら、本発明の範囲はこれらの実施形態に限定されるのではなく、代わりに添付する特許請求の範囲によって定められるものとする。したがって、図示する実施形態の変更バージョンというような、添付図面において示されるものを超える実施形態であっても、本発明によって包含されるのはもっともである。
[0039] 本明細書における「一実施形態」、「実施形態」、「実施形態例」等に言及するときは、その説明される実施形態が固有の特徴、構造、または特性を含むことができるが、あらゆる実施形態がその固有の特徴、構造、または特性を必ずしも含まなくてもよいことを示す。更に、このような句は必ずしも同じ実施形態を指すとは限らない。更に、固有の特徴、構造、または特性が実施形態と関連付けて説明されるとき、明示的に説明されているか否かには関係なく、このような特徴、構造、または特性を他の実施形態と併せて実現することは、関連技術(1つまたは複数)における当業者の知識の範囲内であることを申し添えておく。
[0040] 本明細書では、計算デバイス上で実行するアプリケーションが、この計算デバイスのリソースから割り当てられた部分を、このアプリケーションに関連する多数のプロセス間でどのように分割すればよいか動的に制御することを可能にするシステム、方法、装置、およびコンピューター・プログラム製品について説明する。例えば、計算デバイス上で実行するアプリケーションが、計算デバイスのオペレーティング・システムと相互作用して、このアプリケーションに関連するフォアグラウンド・プロセスおよびこのアプリケーションに関連する1つ以上のバックグラウンド・プロセスの間で、計算デバイスのリソースから割り当てられた部分をどのように分割すればよいか動的に制御することができる。アプリケーションにこの能力を設けることによって、本明細書において説明する実施形態は、アプリケーションが、変化しつつあるリソース割り当てに適応し、計算デバイス上で実行しているかもしれない他のプロセスとより良く共存することを可能にし、これによって多種多様なマルチタスク処理シナリオを可能にするという利点がある。本明細書において説明する技法は、揮発性および不揮発性メモリー、CPU、I/O、ネットワーク、電力、およびセンサーを含むがこれらに限定されない、計算デバイスの種々の異なるタイプのリソースの使用を管理するために使用することができるという利点がある。
[0041] 第2章では、実施形態にしたがって、デバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を実行する計算デバイス例、および関連する方法について説明する。第3章では、第2章の計算デバイス例がどのようにしてマルチプロセス・アプリケーションのために動的リソース管理を実施可能にすることができるかについて説明する。第4章では、本明細書において説明するリソース管理の特徴を実現することができる移動体デバイス例について説明する。第5章では、本明細書において説明するリソース管理の機能(feature)を実現することができるデスクトップ・コンピューター例について説明する。第6章では、ある結論的意見を示す。
II.デバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を実行するシステムおよび方法例
[0042] 図1は、実施形態にしたがってデバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を実行する計算デバイス100のブロック図である。計算デバイス100は、一般に、ユーザーに代わってアプリケーションを実行することができるプロセッサー・ベースの電子デバイスを表すことを意図している。一実施形態では、計算デバイス100は、移動体電話機(例えば、スマート・フォン)、ラップトップ・コンピューター、タブレット・コンピューター、またはネットブックのような移動体計算デバイスを含む。計算デバイス100は、ウェアラブル・コンピューター(例えば、頭部装着コンピューター)、携帯用メディア・プレーヤー、パーソナル・ディジタル・アシスタント、パーソナル・ナビゲーション・アシスタント、ハンドヘルド・ゲーム・コンソール、またはユーザーの代わりにアプリケーションを実行することができる任意の他の移動体デバイスというような、他のタイプの移動体計算デバイスも含むことができると考えられる。計算デバイス100の機能を組み込むことができる移動体デバイスの一例については、以下で図14を参照して論ずる。他の実施形態では、計算デバイス100は、ユーザーの代わりにアプリケーションを実行することができるデスクトップ・コンピューターまたは他の移動体以外の計算プラットフォームを含む。計算デバイス100の機能を組み込むことができるデスクトップ・コンピューター例については、以下で図15を参照して論ずる。
[0043] 図1に示すように、計算デバイス100は、アプリケーション102、オペレーティング・システム104、およびデーター・ストア106を含む。一実施形態では、アプリケーション102およびオペレーティング・システム104の各々は、計算デバイス100のメモリーに格納され、メモリーに通信可能に接続されたプロセッサー(例えば、マイクロプロセッサーまたはソフトウェア命令を実行可能な他の回路)によってそこから実行されるソフトウェア・コンポーネントを含む。このようなメモリーおよびプロセッサーは、簡素にするという目的のために限って、図1には示されていない。更にこのような実施形態によれば、アプリケーション102およびオペレーティング・システム104は各々、計算デバイス100の不揮発性メモリーに永続的に格納され、計算デバイス100の給電動作(powered operation)の間プに、ロセッサーによる実行のために計算デバイス100の揮発性メモリーに一時的に転送されるとよい。
[0044] アプリケーション102は、計算デバイス100のユーザーに代わって機能を実行するためおよび/または機能(feature)を提供するために計算デバイス100上にインストールし実行することができる多種多様のコンピューター・プログラムの内任意の1つを表すことを意図している。アプリケーション102は、例えば、電話アプリケーション、電子メール・アプリケーション、メッセージング・アプリケーション、ウェブ・ブラウジング・アプリケーション、カレンダー・アプリケーション、ユーティリティ・アプリケーション、ゲーム・アプリケーション、ソーシャル・ネットワーキング・アプリケーション、音楽アプリケーション、生産性アプリケーション、生活様式アプリケーション、参照アプリケーション、旅行アプリケーション、スポーツ・アプリケーション、ナビゲーション・アプリケーション、健康管理およびフィットネス・アプリケーション、ニュース・アプリケーション、写真アプリケーション、財政アプリケーション、業務用アプリケーション、教育用アプリケーション、天気アプリケーション、電子書籍アプリケーション、医療アプリケーション等を表すことができるが、決してこれらに限定されるのではない。
[0045] オペレーティング・システム104は、1組のコンピューター・プログラムを含み、これらが集合的にリソースを管理し、計算デバイス100上で実行するアプリケーションに共通サービスを提供する。図1に示すように、オペレーティング・システム104はドライバー110、カーネル120、およびシステム・サービス130を含む。ドライバー110は、オペレーティング・システム104が、CPU、システム・メモリー、およびI/Oデバイスのような、計算デバイス100の種々のハードウェア・リソースと相互作用することを可能にするコンポーネントを含む。カーネル120は、ドライバー110を利用して、計算デバイス100のこのようなハードウェア・リソースおよびその他のリソースを管理し、更に他のプログラムが実行しこれらのリソースを使用することを可能にする。カーネル120は、プロセスをCPUに割り当てる、システム・メモリーを特定のプロセスに割り当てる、およびI/O要求をしかるべきデバイスに割り当てるというような動作を実行することができる。システム・サービス130は、カーネル120によって割り当てることができる種々のリソースのために、アプリケーションからの要求に応えてサービスを提供するように動作するコンポーネントである。
[0046] 図1に示すように、カーネル120はメモリー・マネージャー122を含む。メモリー・マネージャー122は、計算デバイス100のシステム・メモリーをどのように利用するか制御し、他のプロセスがシステム・メモリーを要求したときに、他のプロセスがシステム・メモリーにアクセスすることを可能にする動作を実行する。動作の中でもとりわけ、メモリー・マネージャー122は、仮想アドレシング方式を維持し、プロセスが物理的に使用可能なシステム・メモリーよりも多くを使用できるようにページングを実行することができる。システム・メモリーを管理するために、メモリー・マネージャー122は、ドライバー110の1つであるメモリー・ドライバー112と相互作用する。
[0047] 更に図1に示すように、システム・サービス130はリソース・マネージャー132を含む。本明細書において更に詳しく論ずるが、リソース・マネージャー132は、アプリケーションに割り当てられるリソースの量を決定するように動作するコンポーネントであり、このような決定は、アプリケーションに対するリソース使用プロファイルに基づくことができ、更に使用可能である場合、その量のリソースを割り当てるように動作するコンポーネントである。以下に続く説明では、アプリケーションに割り当てられるリソースはシステム・メモリーであると仮定する。しかしながら、本明細書において説明するリソース管理技法は、計算デバイス100の任意の他のリソースにも容易に拡張可能であることは理解されよう。任意の他のリソースには、CPU、システム・メモリー以外の揮発性メモリー、不揮発性メモリー、ネットワーク・リソース、I/Oリソース、電力リソース(例えば、バッテリ電力または何らかの他の電源からの電力)、およびセンサー・リソース(例えば、カメラまたはマイクロフォン)が含まれるが、これらに限定されるのではない。
[0048] データー・ストア106は、計算デバイス100の揮発性または不揮発性メモリーに格納されるデーターの集合体を含む。本明細書において説明するように、データー・ストア106は、計算デバイス100上にインストールし実行することができるアプリケーションに対するリソース使用プロファイルを格納するために、リソース・マネージャー132によって使用される。ある種の実施態様例によれば、データー・ストア106はレジスターまたはデーターベースを含んでもよい。
[0049] アプリケーション102が起動されようとするとき(例えば、ユーザーによるアプリケーション102のアクティブ化または何らかの他のイベントに応答して)、アプリケーション102が適正に実行するために必要となるリソースをアプリケーション102に割り当てることを要求するために、アプリケーション102の代わりに、1つ以上のシステム・サービス・コールがシステム・サービス130に対して行われる。このコール(1つまたは複数)に応答して、リソース・マネージャー132は必要なリソースが使用可能であるか否か判定し、このようなリソースが使用可能である場合、これらをアプリケーション102に割り当てさせるように動作する。
[0050] システム・メモリーの場合、リソース・マネージャー132は、データー・ストア106に格納することができる、アプリケーション102に対するリソース使用プロファイルにアクセスすることを試すことによって、アプリケーション102に割り当てるシステム・メモリーの量を決定する。実施形態では、アプリケーション102に対するこのようなリソース使用プロファイルは、アプリケーション102が実行中に使用すると予想されるシステム・メモリーの量を指定する予測リソース使用量を含む。代わりに、リソース使用プロファイル・アプリケーション102は、このような予測リソース使用量を導き出すことができるデーターを含んでもよい。更に他の実施形態では、データー・ストア106内にアプリケーション102に対するリソース使用プロファイルが存在しない場合、デフォルトの予測リソース使用量をアプリケーション102に割り当てることもできる。このようなデフォルトの予測リソース使用量は、全てのアプリケーションに対して同じであってもよく、またはアプリケーション・タイプ毎に異なってもよい。
[0051] 一旦リソース・マネージャー132がアプリケーション102に対して予測リソース使用量を決定したなら、リソース・マネージャー132は次にメモリー・マネージャー122と通信して、予測リソース使用量が現在使用可能であるか否か判定を行う。予測リソース使用量が現在使用可能である場合、リソース・マネージャー132は予測リソース使用量をアプリケーション102に割り当て、アプリケーション102が実行することを許可することができる。しかしながら、予測リソース使用量が現在使用可能でない場合、リソース・マネージャー132はアプリケーション102が実行することを禁止することができる。更に、予測リソース使用量が現在使用可能でない場合、リソース・マネージャー132は、アプリケーション102のためにシステム・メモリーを解放するために、計算デバイス上で現在実行している1つ以上の他のプロセスを終了させることもできる。このような他のプロセスとは、プロセス優先順方式にしたがってアプリケーション102よりも低い優先順位が割り当てられたプロセスとすればよい。一旦十分なシステム・メモリーがこのようにして再度確保されたなら、リソース・マネージャー132はアプリケーション102が実行することを許可することができる。
[0052] アプリケーション102が実行し始めた後、リソース・マネージャー132は、アプリケーション102が実際に使用しているシステム・メモリーがどれくらいなのか監視する。このように、リソース・マネージャー132は、予測リソース使用量にしたがって最初に割り当てられたよりも多いシステム・メモリーをアプリケーション102が利用していると判定することもある。この場合、リソース・マネージャー132は、アプリケーション102が適正に実行するために十分なシステム・メモリーが使用可能であることを確保するために、計算デバイス100上で同時に実行している1つ以上のプロセスを終了させることを試すことができる。また、リソース・マネージャー132は、アプリケーション102がシステム・メモリー使用の既定上限を超えていると判定した場合、またはそれ以外でアプリケーション102によるシステム・メモリー使用量が容認できないと判定した場合、アプリケーション102の実行を終了させることもできる。
[0053] また、リソース・マネージャー132は、アプリケーション102によって使用されているシステム・メモリーがどれくらいか監視することによって得た情報を利用して、データー・ストア106に格納されている、アプリケーション102に対する予測リソース使用量を更新する。予測リソース使用量を更新するための種々のアルゴリズムについては、以下で詳細に説明する。このように、リソース・マネージャー132は、アプリケーション102がどのように振る舞うか、そして計算デバイス100のユーザーによってどのように利用されているかに応答するような方法で、アプリケーション102に対するリソースの割り当てを、ときの経過につれて自動的に微調整することができる。これによって、計算デバイス100は、特にマルチタスク処理のシナリオの間、ユーザー体験の改善および性能の向上を図ることができるという利点がある。
[0054] リソース・マネージャー132がデバイス特定またはユーザー特定のリソース使用プロファイルにしたがって計算デバイス100のリソースを管理するように動作する経過(manner)について、これより図2のフローチャート200を参照しながら説明する。フローチャート200のステップは、図1の計算デバイス100のコンポーネントを引き続き参照しながら説明するが、本方法は他のコンポーネントによって全体的に実行できることは理解されよう。
[0055] 図2に示すように、フローチャート200の方法はステップ202において開始し、リソース・マネージャー132は、計算デバイス100によって実行されている間にアプリケーションの第1インスタンスによって使用されるリソースの第1量を判定する。例えば、前述のように、リソース・マネージャー132は、アプリケーション102の第1インスタンスが計算デバイス100によって実行されている間にアプリケーション102の第1インスタンスによって使用されているシステム・メモリーの第1量を判定することができる。
[0056] 実施形態では、リソース・マネージャー132は、アプリケーションに関連するフォアグラウンド・プロセスおよびアプリケーションに関連する1つ以上のバックグラウンド・タスクによって使用されるリソースの量を判定することによって、第1量を判定する。フォアグラウンド・プロセスとは、アプリケーションの第1インスタンスのためにユーザー・インターフェースを現在提供しており、計算デバイス100に関連するディスプレイの少なくとも一部を占有しているプロセスである場合もある。しかしながら、多くの最新アプリケーションの実行は、1つ以上のバックグラウンド・プロセス(ここではバックグラウンド・タスクとも呼ぶ)の実行も伴う。このようなバックグラウンド・タスクは、フォアグラウンド・タスクと同時に実行されることもあり、場合によってはフォアグラウンド・プロセスによって始動させられることもある。このようなバックグラウンド・タスクの例には、バックグラウンドオーディオの生成、ボイス・オーバー・インターネット・プロトコル(VoIP)コールの実行、電子メールの同期、コンテンツ共有等が含まれるが、決してこれらに限定されるのではない。フォアグラウンド・プロセスと同様、これらのバックグラウンド・タスクもシステム・リソースを消費する。しかしながら、従来のアプリケーション・リソース使用の観念は、通例、このようなバックグラウンド・タスクによって消費されるリソースを含まない(encompass)。実施形態は、実行中のアプリケーションに関連するフォアグラウンド・プロセスおよび同じアプリケーションに関連する1つ以上のバックグラウンド・タスクの双方によるリソース使用を追跡し、双方のタイプのリソース使用を組み合わせてこのアプリケーションの総合リソース使用量を求めることによって、これに取り組むという利点がある。
[0057] ステップ204において、リソース・マネージャー132は、少なくとも第1量に基づいて、アプリケーションの第1予測リソース使用量を計算する。例えば、リソース・マネージャー132は、少なくとも第1量に基づいて、アプリケーション102について第1予測システム・メモリー使用量を計算することができる。このステップをどのように実行することができるかについては、以下で種々のアルゴリズム例を示す。
[0058] ステップ206において、リソース・マネージャー132は第1予測リソース使用量をデーター・ストア106に格納する。例えば、リソース・マネージャー132は、アプリケーション102に対する第1予測システム・メモリー使用量をデーター・ストア106に格納することができる。
[0059] ステップ206の実行後ある時点において、アプリケーションの第2インスタンスが計算デバイス100上において実行されようとしていることが、リソース・マネージャー132に通知される。ステップ208において、リソース・マネージャー132は、少なくともデーター・ストア106に格納されている第1予測リソース使用量に基づいて、アプリケーションの第2インスタンスに割り当てるリソースの第2量を決定する。例えば、リソース・マネージャー132は、少なくともデーター・ストア106に格納されているアプリケーション102に対する第1予測システム・メモリー使用量に基づいて、アプリケーション102の第2インスタンスに割り当てるシステム・メモリーの第2量を決定することができる。システム・メモリーの第2量の決定は、例えば、システム・メモリーの第2量を第1予測システム・メモリー使用量に設定することを含んでもよい。
[0060] ステップ204においてアプリケーションについて第1予測リソース使用量を計算するためには、種々の方法を使用することができる。例えば、一実施形態では、一定回数の実行にわたってアプリケーションによって使用された最大リソース量に基づいて、第1予測リソース使用量を計算する。この手法は、図3のフローチャート300によって表されている。
[0061] 具体的には、図3は、実施形態にしたがってアプリケーションについて予測リソース使用量を計算する方法のフローチャート300を示す。図3に示すように、フローチャート300の方法はステップ302において開始し、リソース・マネージャー132は、ステップ202の間に判定された第1量を、アプリケーションの以前に実行された1つ以上のインスタンスに関連する1つ以上の以前に判定された量と比較することによって、アプリケーションについて最大リソース使用量を求める。ステップ304において、リソース・マネージャー132は、この最大リソース使用量に基づいて、第1予測リソース使用量を決定する。
[0062] この手法の例をこれより示す。この例によれば、リソース・マネージャー132は、アプリケーション102の5回の別個の実行中にこれによるシステム・メモリー使用を追跡し、このような実行におけるアプリケーション102の最大システム・メモリー使用を、予測リソース使用量として選択する。例えば、アプリケーションの最後の4回の実行中に、アプリケーション102は、それぞれ、システム・メモリーの内100MB、120MB、160MB、および140MBを使用したと仮定する。次いで、ステップ202の間に、リソース・マネージャー132は、アプリケーション102の現在実行中のインスタンスがシステム・メモリーの内150MBを使用していると判定する。この場合、リソース・マネージャー132は、第1予測リソース使用量を160MB(または、恐らく、160MB+何らかのバッファ量)を設定することができる。何故なら、これはアプリケーション102の最後の5回の実行にわたるその最大システム・メモリー使用であるからである。
[0063] 他の実施形態では、一定の実行回数にわたってアプリケーションによって使用された平均リソース量に基づいて、第1予測リソース使用量を計算する。この手法は、図4のフローチャート400によって表されている。
[0064] 具体的には、図4は、実施形態にしたがってアプリケーションについて予測リソース使用量を計算する方法のフローチャート400を示す。図4に示すように、フローチャート400の方法はステップ402において開始し、リソース・マネージャー132は、ステップ202の間に判定された第1量、およびアプリケーションの1つ以上の以前に実行されたインスタンスに関連する1つ以上の以前に判定された量に基づいて、アプリケーションについて平均リソース使用量を求める。ステップ404において、リソース・マネージャー132は、平均リソース使用量に基づいて、第1予測リソース使用量を計算する。
[0065] これよりこの手法の例を示す。この例によれば、リソース・マネージャー132は、アプリケーション102の5回の個々の実行中におけるそのシステム・メモリー使用を追跡し、これらの値の平均を計算し、次いでこの平均値を予測リソース使用量として使用する。例えば、アプリケーション102の最後の4回の実行中に、アプリケーション102は、それぞれ、システム・メモリーの内100MB、120MB、160MB、および140MBを使用したと仮定する。次いで、ステップ202の間に、リソース・マネージャー132は、アプリケーション102の現在実行中のインスタンスがシステム・メモリーの内150MBを使用していると判定する。この場合、リソース・マネージャー132は、アプリケーション102の平均リソース使用量が((100MB+120MB+160MB+140MB+150MB)/5)であると判定する。これは134MBに等しい。この結果、リソース・マネージャー132は、第1予測リソース使用量を134MB(または、恐らく134MB+何らかのバッファ量)に設定することができる。
[0066] ステップ402において説明した平均リソース使用量を求めることができる他の方法について、これより説明する。この手法によれば、リソース使用量の移動平均を、最新のリソース使用量と組み合わせて、新たな長期移動平均を求める。この組み合わせは、古い長期移動平均または最新リソース使用量のいずれかに、より大きな重みが適用されるように重み付けされてもよい。代わりに、双方の量に等しく重み付けしてもよい。この手法は、以下の式を使用して表すことができる。
Figure 2017514209
ここで、RAVG_NEWは、リソース使用量の新たな移動平均を表し、RAVG_OLDはリソース使用量の古い移動平均を表し、RNEWは最後に観察されたリソース使用量を表し、αは重み付けを決定する変数となる。
[0067] 例えば、リソース使用量の古い移動平均RAVG_OLDが130MBに等しく、最後に観察されたリソース使用量RAVG_NEWが160MBであり、重み係数αが0.25であると仮定する。この場合、リソース使用量の新たな移動平均RAVG_NEWは、((0.25×130MB)+(0.75×160MB))に等しくなり、これは152.5MBである。この結果、リソース・マネージャー132は、第1予測リソース使用量を152.5MB(または、恐らく152.5MB+いくらかのバッファ量)に設定することができる。
[0068] 移動平均を使用してアプリケーションに対する平均リソース使用量を求める以上の方法を、図5のフローチャート500に示す。図5に示すように、フローチャート500の方法はステップ502において開始し、リソース・マネージャー132は、ステップ202の間に得られた第1量(即ち、最後に観察されたリソース使用量)を第1重み係数と乗算する。ステップ504の間、リソース・マネージャー132は、少なくとも1つ以上の以前に判定された量(即ち、以前に観察されたリソース使用量)に基づいて得られた移動平均リソース使用量に、第2重み係数を乗算して、第2積を求める。ステップ506において、リソース・マネージャー132は、第1積および第2積を合計して、新たな平均リソース使用量を求める。
[0069] 図2を参照して先に注記したように、フローチャート200のステップ208において、リソース・マネージャー132は、少なくとも第1予測リソース使用量に基づいて、計算デバイス100によって実行されるアプリケーションの第2インスタンスに割り当てられるリソース(例えば、システム・メモリー)の第2量を決定する。第2量は、予測アルゴリムに基づく推定値であるので、アプリケーションの第2インスタンスが、割り当てられた第2量よりも多く消費するかもしれないことは常に可能性がある。このシナリオに取り組むために、リソース・マネージャー132は、アプリケーションの第2インスタンスが、それに割り当てられたリソースの取り分(share)よりも多くを消費していると判定するように構成することができ、応答して、リソースを解放するために計算デバイス100上で同時に実行している他のプロセスを終了させることができる。例えば、リソース・マネージャー132は、プロセス優先順方式にしたがって、そのアプリケーションよりも低い優先順位が指定されたある種のプロセスを終了させることもできる。
[0070] このプロセスを図6のフローチャート600に示す。具体的には、図6に示すように、フローチャート600の方法はステップ602において開始し、リソース・マネージャー132は、計算デバイス100によって実行されている間にアプリケーションの第2インスタンスによって使用されるリソースの量が、第2量を超過すると判定する。この判定に応答して、ステップ604において、リソース・マネージャー132は、計算デバイス上で同時に実行している1つ以上のプロセスを終了させる。加えてまたは代わりに、リソース・マネージャー132は、計算デバイス100上で同時に実行している1つ以上のプロセスと通信し、これらのプロセスにそれらのリソース消費を削減するように命令することもできる。
[0071] また、更に可能なのは、リソース・マネージャー132が、メモリー・マネージャー122または何らかの他の手段との通信によって、アプリケーションの第2インスタンスに割り当てられるリソースの第2量が現在使用可能でないことを判定するのでもよいことである。この場合、リソース・マネージャー132はアプリケーションの第2インスタンスの実行を禁止することができる。
[0072] このプロセスを図7のフローチャート700に示す。具体的には、図7に示すように、フローチャート700の方法はステップ702において開始し、リソース・マネージャー132は、リソースの第2量が現在使用可能でないと判定する。この判定に応答して、ステップ704において、リソース・マネージャー132はアプリケーションの第2インスタンスの実行を禁止する。
[0073] リソース・マネージャー132が、アプリケーションの第2インスタンスに割り当てられるリソースの第2量は現在使用可能でないと判定した場合、リソース・マネージャー132は、リソースを解放するために、計算デバイス100上で実行している1つ以上のプロセスを終了させることもできる。例えば、リソース・マネージャー132は、プロセス優先順方式にしたがって、そのアプリケーションよりも低い優先順位が指定されたある種のプロセスを終了させることができる。このような他のプロセスによるリソース消費が削減された後、リソース・マネージャー132は次にアプリケーションの第2インスタンスに実行することを許すことができる。
[0074] このプロセスを図8のフローチャート800に示す。具体的には、図8に示すように、フローチャート800の方法はステップ802において開始し、リソース・マネージャー132は、リソースの第2量が現在使用可能でないと判定する。この判定に応答して、ステップ804において、リソース・マネージャー132は、計算デバイス100上で現在実行している1つ以上のプロセスを終了させる。加えてまたは代わりに、リソース・マネージャー132は、計算デバイス100上で現在実行している1つ以上のプロセスと通信し、これらのプロセスにそのリソース消費を削減するように命令することもできる。
[0075] スマートフォンのような多くの計算デバイスにとって、典型的な使用モデルは、計算デバイス毎に1人のユーザーである。この場合、計算デバイスに対するリソース使用プロファイルを格納することは、特定のユーザーに対するリソース使用プロファイルを格納することと本質的に同じである。しかしながら、計算デバイスは、多数のユーザーをサポートするために使用されることもある。例えば、同じ家庭の多数の異なる構成員が、各々、同じタブレット・コンピューター、デスクトップ・コンピューター、またはゲーミング・コンソールを使用してアプリケーションを実行することもあり得る。これらのユーザーの各々は、異なるアプリケーションを使用するかもしれないし、または同じアプリケーションを異なる方法で使用するかもしれず、その結果、リソース消費レベルが変動する。このシナリオに取り組むために、ある種の実施形態では、リソースの予測割り当てを、現在計算デバイスを使用している特定のユーザーに合わせて決める(tailor)ように、アプリケーションおよびユーザー双方によるリソース使用プロファイルを計算デバイス上に格納する。これらのリソース使用プロファイルは、ユーザー特定リソース使用プロファイルとして考えることができる(以前に説明したデバイス特定リソース使用プロファイルではなく)。
[0076] 図9は、実施形態にしたがって、ユーザー特定リソース使用プロファイルにしたがって計算デバイスのリソースを管理するために計算デバイスによって実装される方法のフローチャート900を示す。これより、図1を参照して先に説明した計算デバイス100のコンポーネントを引き続き参照しながら、フローチャート900の方法について説明する。しかしながら、本方法はこの実施形態に限定されるのではない。
[0077] 図9に示すように、フローチャート900の方法はステップ902において開始し、リソース・マネージャー132は、第1ユーザーの代わりに計算デバイス100によって実行されている間にアプリケーションの第1インスタンスによって使用されるリソースの第1量を判定する。例えば、リソース・マネージャー132は、第1ユーザーの代わりに計算デバイス100によってアプリケーション102の第1インスタンスが実行されている間に、アプリケーション102の第1インスタンスによって使用されているシステム・メモリーの第1量を判定することができる。第1ユーザーの代わりにアプリケーション102の第1インスタンスが実行されているという事実は、多種多様な方法のいずれでも判定することができる。ユーザーが計算デバイス100にログインすることができる実施形態では、現在のログイン情報を使用して、この判定を行うこともできる。しかしながら、この例は限定であることを意図しておらず、計算デバイスのユーザーの個人情報(identity)を判定するための適した方法であればいずれでも使用することができる。
[0078] ステップ904において、リソース・マネージャー132は、少なくとも第1量に基づいて、アプリケーションにおよび第1ユーザー対する第1予測リソース使用量を計算する。例えば、リソース・マネージャー132は、少なくとも第1量に基づいて、アプリケーション102および第1ユーザーに対する第1予測システム・メモリー使用量を計算することができる。このステップをどのように実行すればよいか実証するために、種々のアルゴリズム例を既に示した。
[0079] ステップ906において、リソース・マネージャー132は第1予測リソース使用量をデーター・ストア106に格納する。例えば、リソース・マネージャー132は、アプリケーション102および第1ユーザーに対する第1予測システム・メモリー使用量をデーター・ストア106に格納することができる。
[0080] ステップ906の実行後のある時点において、リソース・マネージャー132に、アプリケーションの第2インスタンスが、第1ユーザーの代わりに、計算デバイス100上で実行されることが通知される。ステップ908において、リソース・マネージャー132は、データー・ストア106に格納されている第1予測リソース使用量に少なくとも基づいて、アプリケーションの第2インスタンスに割り当てられるリソースの第2量を決定する。例えば、リソース・マネージャー132は、データー・ストア106に格納されているアプリケーション102および第1ユーザーに対する第1予測システム・メモリー使用量に少なくとも基づいて、アプリケーション102の第2インスタンスに割り当てられるシステム・メモリーの第2量を決定することができる。システム・メモリーの第2量の決定は、例えば、システム・メモリーの第2量を第1予測システム・メモリー使用量に設定することを含んでもよい。
[0081] ステップ910において、リソース・マネージャー132は、第2ユーザーの代わりに、計算デバイス100によって実行されている間にアプリケーションの第3インスタンスによって使用されるリソースの第3量を判定する。ここで、第2ユーザーは第1ユーザーとは異なる。例えば、リソース・マネージャー132は、第2ユーザーの代わりに計算デバイス100によってアプリケーション102の第3インスタンスが実行されている間に、アプリケーション102の第3インスタンスによって使用されているシステム・メモリーの第3量を判定することができる。第2ユーザーの代わりにアプリケーション102の第3インスタンスが実行されているという事実は、多種多様の方法の内任意のものによって判定することができる。ユーザーが計算デバイス100にログインすることができる実施形態では、現在のログイン情報を使用してこの判定を行うことができる。しかしながら、この例は限定することを意図するのではなく、計算デバイスのユーザーの個人情報を判定するための適した方法であればいずれでも使用することができる。
[0082] ステップ912において、リソース・マネージャー132は、少なくとも第3量に基づいて、アプリケーションおよび第2ユーザーに対する第2予測リソース使用量を計算する。例えば、リソース・マネージャー132は、少なくとも第3量に基づいて、アプリケーション102および第2ユーザーに対する第1予測システム・メモリー使用量を計算することができる。このステップをどのように実行すればよいか実証するために、種々のアルゴリズム例を既に示した。
[0083] ステップ914において、リソース・マネージャー132は第2予測リソース使用量をデーター・ストア106に格納する。例えば、リソース・マネージャー132は、アプリケーション102および第2ユーザーに対する第2予測システム・メモリー使用量をデーター・ストア106に格納することができる。
[0084] ステップ914の実行後のある時点において、リソース・マネージャー132には、アプリケーションの第4インスタンスが、第2ユーザーの代わりに、計算デバイス100上で実行されることを通知される。ステップ916において、リソース・マネージャー132は、少なくともデーター・ストア106に格納されている第2予測リソース使用量に基づいて、アプリケーションの第4インスタンスに割り当てられるリソースの第4量を決定する。例えば、リソース・マネージャー132は、データー・ストア106に格納されているアプリケーション102および第2ユーザーに対する第2予測システム・メモリー使用量に少なくとも基づいて、アプリケーション102の第4インスタンスに割り当てられるシステム・メモリーの第4量を決定することができる。システム・メモリーの第4量の決定は、例えば、システム・メモリーの第4量を第2予測システム・メモリー使用量に設定することを含んでもよい。
[0085] 図10は、実施形態にしたがって、デバイス特定またはユーザー特定リソース使用プロファイルにしたがってアプリケーションの起動を管理する方法のフローチャート1000を示す。これより、図1を参照して先に説明した計算デバイス100のコンポーネントを引き続き参照しながら、フローチャート1000の方法について説明する。しかしながら、本方法はこの実施形態に限定されるのではない。
[0086] 図10に示すように、フローチャート1000の方法はステップ1002において開始し、アプリケーションを起動する要求を受ける。例えば、アプリケーション102を起動する要求は、例えば、システム・サービス130によっておよび/またはリソース・マネージャー132によって受けてもよい。
[0087] ステップ1004において、リソース・マネージャー132はこのアプリケーションに対する予測リソース使用量を求める。例えば、リソース・マネージャー132は、アプリケーション102に対する予測リソース使用量を求めることができる。予測リソース使用量は、計算デバイス100によるアプリケーションの1回以上の以前の実行中に監視した計算デバイス100のリソース使用に基づく。予測リソース使用量、またはこのような予測リソース使用量を計算するために必要とされる情報は、データー・ストア206に格納することができる、アプリケーションに対するリソース使用プロファイルから得ることができる。リソースは、揮発性または不揮発性メモリー・リソース、CPUリソース、I/Oリソース、ネットワーク・リソース、電力リソース、およびセンサー・リソースの内1つ以上を含むことができる。予測リソース使用量は、アプリケーションに関連するフォアグラウンド・プロセスおよびアプリケーションに関連する1つ以上のバックグラウンド・タスクの双方による計算デバイス100のリソースの使用を監視することに基づくことができる。
[0088] 判断ステップ1006において、リソース・マネージャー132は、予測リソース使用量を、現在使用可能なリソースの量と比較することによって、十分な量のリソースが使用可能か否か判断する。例えば、リソースがシステム・メモリーである実施形態では、リソース・マネージャー132は、現在使用可能なシステム・メモリーの量をメモリー・マネージャー122から得て、次いでアプリケーションに対する予測システム・メモリー使用量を、現在使用可能なシステム・メモリーと比較して、十分な量のシステム・メモリーが使用可能か否か判断することができる。
[0089] リソース・マネージャー132が、十分な量のリソースが使用可能であると少なくとも判断した場合、リソース・マネージャー132は、ステップ1008に示すように、アプリケーションを起動させる。例えば、リソース・マネージャー132が、十分なシステム・メモリーが使用可能であると少なくとも判断した場合、リソース・マネージャー132はアプリケーション102を起動させる。尚、リソース・マネージャー132がアプリケーションを起動させるためには、満たさなければならない他の条件もあり得ることを注記しておく。
[0090] リソース・マネージャー132が十分な量のリソースが使用可能でないと判断した場合、リソース・マネージャー132は、ステップ1010に示すように、アプリケーションを起動させない。例えば、リソース・マネージャー132が十分なシステム・メモリーが使用可能でないと判断した場合、リソース・マネージャー132はアプリケーション102を起動させない。加えて、リソース・マネージャー132は、1つ以上の現在実行中のプロセスを終了させる、またはそれ以外でそのリソース使用を削減させることによって、リソースを解放しようとすることもできる。
[0091] 実施形態では、リソース・マネージャー132は、時間、位置、特定のリソース使用挙動に関連するイベントというような、アプリケーションおよび/またはユーザーによるリソース使用に関係する他の情報を追跡することもできる。このような情報は、ユーザーが起動することを試す前であっても、計算デバイスのリソースをアプリケーションに予測的に割り当てるために使用することができるという利点がある。更に、アプリケーションおよび/またはアプリケーション・データーを、ユーザーがそれらにアクセスすると予想される前の時点において、メモリーにロードすることもできる。
[0092] 例えば、ユーザーが特定のアプリケーションを特定の時点、特定の場所において、または特定のイベントに関連して起動しそうであると判断できる場合、リソース・マネージャー132は、ユーザーがアプリケーションを起動することが予想される前に、そして恐らくは直前に、十分なリソースがアプリケーションに割り当てるために使用可能であることを保証するように動作することができる。更に、このような予測分析は、実際に、ユーザーがアプリケーションおよびその機能(feature)への即座のアクセスを得ることができるように、アプリケーションまたはアプリケーション・コンテンツをシステム・メモリーにロードするために使用することができる。
[0093] これを例示し易くするために、図11は、計算デバイスのリソースに関して監視されたユーザーのリソース使用パターン、およびそこから導き出された情報を使用して、リソースをプロセスに予測的に割り当てる方法のフローチャート1100を示す。これより、先に図1を参照して説明した計算デバイス100のコンポーネントを引き続き参照しながら、フローチャート1100の方法について説明する。しかしながら、本方法はこの実施形態に限定されるのではない。
[0094] 図11に示すように、フローチャート1100の方法はステップ1102において開始し、リソース・マネージャー132は、アプリケーションおよび/またはユーザーによる計算デバイス100の少なくとも1つのリソースの使用パターンを監視する。既に論じたように、使用パターンの監視には、アプリケーションおよび/またはユーザーによるリソース使用を監視すること、ならびに時間、位置、特定のリソース使用挙動に関連するイベントというような、このようなリソース使用に関連する他の情報を監視することを伴うこともある。
[0095] ステップ1104において、リソース・マネージャー132は、使用パターンに関連する情報を格納する。リソース・マネージャー132は、例えば、データー・ストア106にこのような情報を格納することができる。
[0096] ステップ1106において、リソース・マネージャー132は、計算デバイス100による実行の前に、格納されている情報を使用して、少なくとも1つのリソースの少なくとも一部を少なくとも1つのプロセスに予測的に割り当てる。一実施形態例では、ステップ1106の間に、リソース・マネージャー132は、計算デバイス100のユーザーまたは任意の他のエンティティがアプリケーションを起動する前に、リソースの少なくとも一部をこのアプリケーションに予測的に割り当てる。少なくとも1つのリソースがシステム・メモリーを含む他の実施形態例では、リソース・マネージャー132は、計算デバイス100のユーザーまたは任意の他のエンティティがアプリケーションを起動する前に、アプリケーションまたはこのアプリケーションに関連するデーターの少なくとも一部を、予測的に割り当てられたシステム・メモリーにロードすることができる。これらの例は、例示のために示されたに過ぎず、限定することを意図するのではない。尚、追加のリソース管理タスクを実行するために、リソース使用パターン情報を利用する更に他の技法が使用されてもよいことを当業者は認めるであろう。ある種の実施形態によれば、多種多様なユーザーおよび計算デバイスからデーターを収集することによって判定された総合的な使用パターンに基づいて、リソースを予測的に割り当てることができ、アプリケーションおよび/またはアプリケーション・データーを特定のユーザーのためにメモリーにロードすることができる。次いで、このような割り当ておよびロードは、特定のユーザーの挙動に基づいて微調整することができる。
III.マルチプロセス・アプリケーション用動的リソース管理システムおよび方法の例
[0097] 実施形態では、図1の計算デバイス100は、そこで実行するアプリケーション(例えば、アプリケーション102)が、計算デバイス100のリソースの内割り当てられた部分をそのアプリケーションに関連する多数のプロセス間でどのように分割するか動的に制御することを可能にする。例えば、計算デバイス100上において実行するアプリケーション102がリソース・マネージャー132と相互作用して、計算デバイス100のリソースの内割り当てられた部分を、このアプリケーションに関連するフォアグラウンド・プロセスおよびこのアプリケーションに関連する1つ以上のバックグラウンド・プロセスの間でどのように分割するとよいか動的に制御することができる。アプリケーションにこの能力を設けることによって、本明細書において説明した実施形態は、アプリケーションが、変化するリソース割り当てに適応し、計算デバイス上で実行しているかもしれない他のプロセスとより良く共存することが可能になり、これによって多種多様のマルチタスク処理のシナリオをより良く実施可能にするという利点がある。
[0098] アプリケーション102およびリソース・マネージャー132がこのような動的リソース管理を実行するために相互作用することができる1つの方法(manner)について、図12のフローチャート1200を参照してこれより説明する。図12に示すように、フローチャート1200の方法はステップ1202において開始し、リソース・マネージャー1202は、アプリケーション102に関連するフォアグラウンド・プロセスに、このアプリケーションがフォアグラウンドで実行していることの通知を送る。
[0099] ステップ1204において、リソース・マネージャー132は、フォアグラウンド・プロセスから、少なくとも1つのメッセージを受ける。このメッセージは、第1リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第1部分、および第1リソース使用バジェットの内アプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第2部分を指定する。
[00100] ステップ1206において、リソース・マネージャー132は、第1リソース使用バジェットの第1部分に等しいリソースの部分を、フォアグラウンド・プロセスに割り当て、第1リソース使用バジェットの第2部分に等しいリソースの部分を少なくとも1つのバックグラウンド・タスクに割り当てる。このリソースは、例えばそして限定ではなく、揮発性または不揮発性メモリー、CPU、I/Oリソース、ネットワーク・リソース、電力リソース、センサー・リソースを含むことができる。
[00101] ステップ1208において、リソース・マネージャー132はフォアグラウンド・プロセスに、アプリケーションを中断または終了させることの通知を送る。
[00102] ステップ1210において、リソース・マネージャー132はフォアグラウンド・プロセスから、少なくとも1つのメッセージを受ける。このメッセージは、第2リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第1部分、および第2リソース使用バジェットの内アプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第2部分を指定する。第2リソース使用バジェットは、第1リソース使用バジェットよりも小さくてもよい。
[00103] ステップ1212において、リソース・マネージャー132は、第2リソース使用バジェットの第1部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、第2リソース使用バジェットの第2部分に等しいリソースの部分を少なくとも1つのバックグラウンド・タスクに割り当てる。所定の時間期間の後、リソース・マネージャー132は、次に、フォアグラウンド・プロセスによって使用されているリソースの量、および少なくとも1つのバックグラウンド・プロセスによって使用されているリソースの量の合計が、第2リソース使用バジェットを超過するか否か判定することができる。合計が第2リソース使用バジェットを超過すると判定したことに応答して、リソース・マネージャー132は、フォアグラウンド・プロセスおよび少なくとも1つのバックグラウンド・プロセスの内1つ以上を終了させることができる。加えてまたは代わりに、リソース・マネージャー132は、アプリケーション102に関連する1つ以上のバックグラウンド・プロセスの起動が、総リソース使用が第2リソース使用バジェットを超過する原因となることを予測的に判定することができる。この予測に基づいて、リソース・マネージャー132は1つ以上のバックグラウンド・タスクを、後の時点まで、起動するのを禁止することができる。
[00104] 一実施形態では、以上の方法においてリソース・マネージャー132とフォアグラウンド・プロセスとの間で交換される通信は、共有APIを介して交換される。このようなAPIをアプリケーションの開発者に露出することができるので、このような開発者はこれらの機能(feature)を利用することができるアプリケーションを開発することができる。
[00105] 図13は、アプリケーションに関連するフォアグラウンド・プロセスおよび1つ以上のバックグラウンド・タスクへの計算デバイスのリソース割り当てを管理するときに、計算デバイス上で実行するアプリケーションがこれを補助することを可能にする他の方法のフローチャート1300を示す。
[00106] 図13に示すように、フローチャート1300はステップ1302において開始し、リソース・マネージャー132は、アプリケーションに関連するフォアグラウンド・プロセスに、リソース使用バジェットを示す少なくとも1つのメッセージを送る。
[00107] ステップ1304において、リソース・マネージャー132は、フォアグラウンド・プロセスから少なくとも1つのメッセージを受ける。このメッセージは、リソース使用バジェットの内フォアグラウンド・プロセスに割り当てられる第1部分、およびリソース使用バジェットの内アプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第2部分を指定する。
[00108] ステップ1306において、リソース・マネージャー132は、リソース使用バジェットの第1部分に等しいリソースの部分をフォアグラウンド・プロセスに割り当て、リソース使用バジェットの第2部分に等しいリソースの部分を少なくとも1つのバックグラウンド・タスクに割り当てる。
[00109] 実施形態では、フォアグラウンド・プロセスに送られる少なくとも1つのメッセージ、およびリソース・マネージャーに送られる少なくとも1つのメッセージは、共有APIを介して送られる。
[00110] 他の実施形態では、リソース使用バジェットは、フォアグラウンドにおいて実行しているアプリケーションに対するリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも1つのメッセージは、アプリケーションがフォアグラウンドで実行していることの通知を含む。
[00111] 更に他の実施形態では、リソース使用バジェットは、保留または終了されられるアプリケーションに対するリソース使用バジェットを含み、リソース使用バジェットを示す少なくとも1つのメッセージは、アプリケーションが保留または終了させられることの通知を含む。
[00112] 更に他の実施形態では、リソース・マネージャー132は、所定の時間期間後、フォアグラウンド・プロセスによって使用されているリソースの量、および少なくとも1つのバックグラウンド・プロセスによって使用されているリソースの量の合計が、リソース使用バジェットを超過するか否か判定し、合計がリソース使用バジェットを超過すると判定したことに応答して、フォアグラウンド・プロセスおよび少なくとも1つのバックグラウンド・プロセスの内1つ以上を終了させる。
IV.移動体デバイスの実施態様例
[00113] 図14は、本明細書において説明した実施形態を実現することができる移動体デバイス例1402のブロック図である。図14に示すように、移動体デバイス1402は種々の随意選択的な(optional)ハードウェアおよびソフトウェア・コンポーネントを含む。移動体デバイス1402におけるいずれのコンポーネントも、他のいずれのコンポーネントと通信することができるが、図示を容易にするために、全ての接続は示されていない。移動体デバイス1402は、種々の計算デバイス(例えば、セル・フォン、スマートフォン、ハンドヘルド・コンピューター、パーソナル・ディジタル・アシスタント(PDA)等)の内任意のものとすることができ、セルラまたは衛星ネットワークのような1つ以上の移動体通信ネットワーク1404、あるいはローカル・エリア・ネットワークまたはワイド・エリア・ネットワークとのワイヤレス双方向通信を可能にすることができる。
[00114] 図示する移動体デバイス1402は、信号コーディング、データー処理、入力/出力処理、電力制御、および/またはその他の機能というようなタスクを実行するために、コントローラーまたはプロセッサー1410(例えば、信号プロセッサー、マイクロプロセッサー、ASIC、またはその他の制御よび処理ロジック回路)を含むことができる。オペレーティング・システム1412は、移動体デバイス1402のコンポーネントの割り当ておよび使用を制御し、1つ以上のアプリケーション・プログラム1414(「アプリケーション」または「アプリ」とも呼ぶ)に対するサポートを提供することができる。アプリケーション・プログラム1414は、共通の移動体計算アプリケーション(例えば、電子メール・アプリケーション、カレンダー、連絡先管理、ウェブ・ブラウザー、メッセージング・アプリケーション)、および任意の他の計算アプリケーション(例えば、文書処理アプリケーション、地図作成アプリケーション、メディア・プレーヤー・アプリケーション)を含むことができる。
[00115] 図示する移動体デバイス1402は、メモリー1420を含むことができる。メモリー1420は、非リムーバブル・メモリー1422および/またはリムーバブル・メモリー1424を含むことができる。非リムーバブル・メモリー1422は、RAM、ROM、フラッシュ・メモリー、ハード・ディスク、あるいは他の周知のメモリー・デバイスまたは技術を含むことができる。リムーバブル・メモリー1424は、フラッシュ・メモリーまたはGSM(登録商標)通信システムにおいては周知である加入者識別モジュール(SIM)カード、あるいは「スマート・カード」のような他の周知のメモリー・デバイスまたは技術を含むことができる。メモリー1420は、データー、および/またはオペレーティング・システム1412やアプリケーション1414を実行するためのコードを格納するために使用することができる。データーの例には、ウェブ・ページ、テキスト、画像、音響ファイル、ビデオ・データー、あるいは1つ以上のネットワーク・サーバーまたは他のデバイスから1つ以上の有線ネットワークまたはワイヤレス・ネットワークを通じて送出および/または受信される他のデーターを含むことができる。メモリー1420は、国際移動体加入者識別(IMSI)のような加入者識別子、および国際移動体機器識別子(IMEI)のような機器識別子を格納するために使用することができる。このような識別子は、ユーザーおよび機器を識別するために、ネットワーク・サーバーに送信することができる。
[00116] 移動体デバイス1402は、タッチ・スクリーン1432、マイクロフォン1434、カメラ1436、物理キーボード1438および/またはトラックボール1440のような1つ以上の入力デバイス1430、ならびにスピーカー1452およびディスプレイ1454のような1つ以上の出力デバイス1450をサポートすることができる。タッチ・スクリーン1432のようなタッチ・スクリーンは、異なる方法で入力を検出することができる。例えば、容量型タッチ・スクリーンは、物体(例えば、指先)が、表面にわたって流れている電流を歪ませたまたは中断させたときのタッチ入力を検出する。他の例として、タッチ・スクリーンは、光センサーからのビームが中断されたときにタッチ入力を検出するために、光センサーを使用することができる。画面の表面との物理的接触は、一部のタッチ・スクリーンによって入力が検出されるためには必要ではない場合もある。
[00117] 他の可能な出力デバイス(図示せず)には、圧電または他の触覚出力デバイスを含むことができる。あるデバイスは、1つよりも多い入力/出力機能を提供することができる。例えば、タッチ・スクリーン1432およびディスプレイ1454を1つの入力/出力デバイスに組み合わせることができる。入力デバイス1430は、自然ユーザー・インターフェース(NUI)を含むことができる。
[00118] ワイヤレス・モデム(1つまたは複数)1460をアンテナ(1つまたは複数)(図示せず)に接続することができ、当技術分野ではよく理解されているように、プロセッサー1410と外部デバイスとの間における双方向通信をサポートすることができる。モデム(1つまたは複数)1460が包括的に示され、移動体通信ネットワーク1404と通信するためのセルラ・モデム1466、および/または他の無線系モデム(例えば、Bluetooth(登録商標)1464および/またはWi−Fi1462)を含むことができる。ワイヤレス・モデム(1つまたは複数)1460の内少なくとも1つは、通例、1つのセルラ・ネットワーク内におけるデーターおよび音声通信のためのGSMネットワークのような1つ以上のセルラ・ネットワークとの通信、セルラ・ネットワーク間の通信、あるいは移動体デバイスと公衆電話交換網(PSTN)との間の通信に合わせて構成される。
[00119] 移動体デバイス1402は、更に、少なくとも1つの入力/出力ポート1480、電源1482、汎地球測位システム(GPS)受信機のような衛星ナビゲーション・システム受信機1484、加速度計1486、および/または物理コネクター14490を含むことができる。物理コネクター1490は、USBポート、IEEE1394(FireWire)ポート、および/またはRS−232ポートとすることができる。移動体デバイス1402の図示したコンポーネントは、必須ではなく、また全てが含まれなくてもよい。これは、当業者には認められるであろうが、任意のコンポーネントを削除することができ、他のコンポーネントを追加することができるからである。
[00120] 実施形態では、移動体デバイス1402のある種のコンポーネントは、デバイス特定またはユーザー特定リソース使用プロファイルに基づいてリソース管理を行い、マルチプロセス・アプリケーションのための動的リソース管理を可能にすることに関して本明細書において説明した機能を実行するように構成される。例えば、一実施形態では、オペレーティング・システム1412は、オペレーティング・システム104がデバイス特定またはユーザー特定リソース使用プロファイルに基づいてリソース管理を行うことを可能にする、オペレーティング・システム104の機能(feature)を含む。他の例として、オペレーティング・システム1412およびアプリケーション1414の少なくとも1つが、マルチプロセス・アプリケーションのために動的リソース管理をこれらのコンポーネントが実行することを可能にする、オペレーティング・システム104およびアプリケーション102の機能を含むこともできる。しかしながら、これは一例に過ぎず、異なるコンポーネントによって異なる機能が実行されてもよい。
[00121] デバイス特定またはユーザー特定のリソース使用プロファイルに基づいてリソース管理を行いマルチプロセス・アプリケーションのために動的リソース管理を可能にすることに関して本明細書において説明した機能を実行するコンピューター・プログラム・ロジックは、メモリー1420に格納されて、プロセッサー1410によって実行することができる。このようなコンピューター・プログラム・ロジックを実行することによって、図1を参照して先に説明した計算デバイス100のコンポーネントの内任意のものの機能(feature)の内任意のものを、プロセッサー1410に実現させることができる。また、このようなコンピューター・プログラム・ロジックを実行することによって、図2〜図13において示したフローチャートの内任意のものまたは全てのステップの内任意のものまたは全てを、プロセッサー1410に実行させることもできる。
V.コンピューター・システムの実施態様例
[00122] 図15は、本明細書において説明した種々の実施形態を実現するために使用することができるプロセッサー・ベースのコンピューター・システム例1500を示す。例えば、システム1500は、図1を参照して先に説明した計算デバイス100のコンポーネントの内任意のものを実現するために使用することができる。また、システム1500は、図2〜図13に示したフローチャートの内任意のものまたは全てのステップの内任意のものまたは全てのステップを実装するために使用することもできる。ここで行うシステム1500の説明は、例示の目的に限って行うのであって、限定することを意図するのではない。関連技術(1つまたは複数)の当業者には分かるであろうが、実施形態は更に他のタイプのコンピューター・システムにおいても実現することができる。
[00123] 図15に示すように、システム1500は、処理ユニット1502、システム・メモリー1504、およびシステム・メモリー1504から処理ユニット1502までを含む種々のシステム・コンポーネントを結合するバス1506を含む。処理ユニット1502は、1つ以上のマイクロプロセッサーまたはマイクロプロセッサー・コアを含むこともできる。バス1506は、様々なタイプのバス構造の内任意のものの1つ以上を表し、メモリー・バスまたはメモリー・コントローラー、周辺バス、加速グラフィクス・ポート、種々のバス・アーキテクチャの内任意のものを使用するプロセッサーまたはローカル・バスを含む。システム・メモリー1504は、リード・オンリー・メモリー(ROM)1508およびランダム・アクセス・メモリー(RAM)1510を含む。基本入力/出力システム1512(BIOS)がROM1508に格納されている。
[00124] また、システム1500は、以下のデバイスの内1つ以上も有する。ハード・ディスクから読み取り更にハード・ディスクに書き込むためのハード・ディスク・ドライブ1514、リムーバブル磁気ディスク1518から読み取り更にリムーバブル磁気ディスク1518に書き込むための磁気ディスク・ドライブ1516、CD ROM、DVD ROM、BLU_RAY(商標)ディスク、または他の光媒体というようなリムーバブル光ディスク1522から読み取り更にリムーバブル光ディスク1522に書き込むための光ディスク・ドライブ1520。ハード・ディスク・ドライブ1514、磁気ディスク・ドライブ1516、および光ディスク・ドライブ1520は、それぞれ、ハード・ディスク・ドライブ・インターフェース1524、磁気ディスク・ドライブ・インターフェース1526、および光ドライブ・インターフェース1528によって、バス1506に接続されている。これらのドライブおよびそれらに付随するコンピューター読み取り可能媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、およびコンピューターのための他のデーターの不揮発性格納に備える。ハード・ディスク、リムーバブル磁気ディスク、およびリムーバブル光ディスクについて説明したが、フラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク、ランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)等のような、他のタイプのコンピューター読み取り可能メモリー・デバイスおよび記憶構造も、データーを格納するために使用することができる。
[00125] ハード・ディスク、磁気ディスク、光ディスク、ROM、またはRAM上には多数のプログラム・モジュールを格納することができる。これらのプログラム・モジュールは、オペレーティング・システム1530、1つ以上のアプリケーション・プログラム1532、他のプログラム・モジュール1534、およびプログラム・データー1536を含む。種々の実施形態によれば、プログラム・モジュールは、図1を参照して先に説明した計算デバイス100の機能(function)および特徴(feature)の内任意のものまたは全てを実行するために、処理ユニット1502によって実行可能なコンピューター・プログラム・ロジックを含むことができる。また、プログラム・モジュールは、処理ユニット1502によって実行されると、図2〜図13のフローチャートを参照して示したまたは説明したステップあるいは動作の内任意のものを実行するコンピューター・プログラム・ロジックも含むことができる。
[00126] ユーザーは、キーボード1538およびポインティング・デバイス1540のような入力デバイスを介して、コマンドおよび情報をシステム1500に入力することができる。他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲーム・コントローラー、スキャナー等を含むことができる。一実施形態では、ディスプレイ1544と併せてタッチ・スクリーンが設けられ、ユーザーがタッチを行う(application of a touch) (例えば、指またはスタイラスによる)ことによってユーザー入力をタッチ・スクリーン上の1つ以上のポイントに供給することを可能にする。これらおよびその他の入力デバイスは、多くの場合、バス1506に結合されたシリアル・ポート・インターフェース1542を介して処理ユニット1502に接続されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)のような他のインターフェースによって接続されてもよい。このようなインターフェースは、有線インターフェースまたはワイヤレス・インターフェースでもよい。
[00127] また、ビデオ・アダプター1546のようなインターフェースを介して、ディスプレイ1544もバス1506に接続されている。ディスプレイ1544に加えて、システム1500は、スピーカーおよびプリンターのような他の周辺出力デバイス(図示せず)も含むことができる。
[00128] システム1500は、ネットワーク・インターフェースまたはアダプター1550、モデム1552、あるいはネットワークを通じて通信を確立するための他の適した手段を介して、ネットワーク1548(例えば、ローカル・エリア・ネットワークまたはインターネットのようなワイド・エリア・ネットワーク)に接続されている。モデム1552は、内蔵型でも外付け型でもよく、シリアル・ポート・インターフェース1542を介してバス1506に接続される。
[00129] 本明細書において使用する場合、「コンピューター・プログラム媒体」、「コンピューター読み取り可能媒体」、および「コンピューター読み取り可能記憶媒体」という用語は、一般に、ハード・ディスク・ドライブ1514に付随するハード・ディスク、リムーバブル磁気ディスク1518、リムーバブル光ディスク1522、更にはフラッシュ・メモリー・カード、ディジタル・ビデオ・ディスク、ランダム・アクセス・メモリー(RAM)、リード・オンリー・メモリー(ROM)等のような他のメモリー・デバイスまたは記憶構造というような、メモリー・デバイスまたは記憶構造を指すために使用される。このようなコンピューター読み取り可能記憶媒体は、通信媒体とは区別され、重複しない(通信媒体を含まない)。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを、搬送波のような変調データー信号内に具体化する。「変調データー信号」という用語は、信号内に情報をエンコードするようなやり方でその特性の内1つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、音響、RF、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体を含む。また、実施形態はこのような通信媒体も対象とする。
[00130] 先に注記したように、コンピューター・プログラムおよびモジュール(アプリケーション・プログラム1532および他のプログラム・モジュール1534を含む)は、ハード・ディスク、磁気ディスク、光ディスク、ROM、またはRAM上に格納することができる。このようなコンピューター・プログラムは、ネットワーク・インターフェース1550、シリアル・ポート・インターフェース1542、または任意の他のインターフェース・タイプを介して受信することもできる。このようなコンピューター・プログラムは、アプリケーションによって実行またはロードされると、コンピューター1500が、本明細書において論じた本発明の実施形態の機能を実現することを可能にする。したがって、このようなコンピューター・プログラムはシステム1500のコントローラーを表す。
[00131] また、実施形態は、任意のコンピューター使用可能媒体上に格納されたソフトウェアを含むコンピューター・プログラム製品も対象とする。このようなソフトウェアは、1つ以上のデーター処理デバイスにおいて実行されると、データー処理デバイス(1つまたは複数)に、本明細書において説明した通りに動作させる。本発明の実施形態は、現在知られているまたは今後知られることになる、任意のコンピューター使用可能媒体またはコンピューター読み取り可能媒体を採用する。コンピューター読み取り可能媒体の例には、RAM、ハード・ドライブ、フロッピー・ディスク、CD ROM、DVD ROM、ジップ・ディスク(zip disk)、テープ、磁気記憶デバイス、光記憶デバイス、MEM、ナノテクノロジーに基づく記憶デバイス等のような、メモリー・デバイスおよび記憶構造が含まれるが、これらに限定されるのではない。
[00132] 代替実施態様では、システム1500がハードウェア・ロジック/電子回路またはファームウェアとして実現されてもよい。更に他の実施形態によれば、これらのコンポーネントの1つ以上がシステム−オン−チップ(SoC)において実現されてもよい。SoCは、プロセッサー(例えば、マイクロコントローラー、マイクロプロセッサー、ディジタル信号プロセッサー(DSP等)、メモリー、1つ以上の通信インターフェース、および/またはその機能を実行するための更に他の回路および/または埋め込みファームウェアの内1つ以上を含む集積回路チップも含むことができる。
VI.結論
[00133] 以上、種々の実施形態について説明したが、これらは一例として紹介されたに過ぎず、限定ではないことは理解されてしかるべきである。関連技術(1つまたは複数)の当業者には、形態および詳細における種々の変更を、本発明の主旨および範囲から逸脱することなく、その範囲内で行うことができることは明白であろう。したがって、本発明の広さおよび範囲は、以上で説明した実施形態例のいずれによっても限定されず、以下の特許請求の範囲およびその均等物にしたがってのみ定められてしかるべきである。

Claims (10)

  1. 計算デバイス上に実装されるシステムであって、
    少なくとも1つのプロセッサーと、
    前記少なくとも1つのプロセッサーによってアクセス可能なメモリーであって、前記少なくとも1つのプロセッサーによる実行のためにコンポーネントを格納する、メモリーと、
    を含み、
    前記コンポーネントが、
    アプリケーションに関連するリソース使用バジェットを維持するように動作可能なリソース・マネージャーを含み、前記リソース使用バジェットが、前記計算デバイスのリソースがどれくらい前記アプリケーションによってその実行中に使用できるか示し、
    前記リソース・マネージャーが、前記リソース使用バジェットを示す少なくとも1つのメッセージを、前記アプリケーションに関連するフォアグラウンド・プロセスに送り、前記リソース使用バジェットの内前記フォアグラウンド・プロセスに割り当てられる第1部分、および前記リソース使用バジェットの内前記アプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第2部分を指定する少なくとも1つのメッセージを、前記フォアグラウンド・プロセスから受けるように動作可能である、システム。
  2. 請求項1記載のシステムにおいて、前記リソース・マネージャーが、更に、前記リソース使用バジェットの第1部分に等しい前記リソースの部分を前記フォアグラウンド・プロセスに割り当て、前記リソース使用バジェットの第2部分に等しい前記リソースの部分を前記少なくとも1つのバックグラウンド・タスクに割り当てるように動作可能である、システム。
  3. 請求項1記載のシステムにおいて、前記リソースが、
    揮発性または不揮発性メモリー・リソースと、
    中央処理ユニット(CPU)リソースと、
    入力/出力(I/O)リソースと、
    ネットワーク・リソースと、
    電力リソースと、または、
    センサー・リソースと、
    を含む、システム。
  4. 請求項1記載のシステムにおいて、前記フォアグラウンド・プロセスに送られる前記少なくとも1つのメッセージ、および前記フォアグラウンド・プロセスから受け取られる前記少なくとも1つのメッセージが、共有アプリケーション・プログラミング・インターフェースを介して伝達される、システム。
  5. 請求項1記載のシステムにおいて、前記リソース使用バジェットが、前記フォアグラウンドにおいて実行しているアプリケーションのためのリソース使用バジェットを含み、前記リソース使用バジェットを示す前記少なくとも1つのメッセージが、前記アプリケーションがフォアグラウンドにおいて実行していることの通知を含む、システム。
  6. 請求項1記載のシステムにおいて、前記リソース使用バジェットが、保留または終了させられるアプリケーションのためのリソース使用バジェットを含み、前記リソース使用バジェットを示す前記少なくとも1つのメッセージが、前記アプリケーションが保留または終了させられることの通知を含む、システム。
  7. 請求項6記載のシステムにおいて、前記リソース・マネージャーが、更に、所定の時間期間の後に、前記フォアグラウンド・プロセスによって使用される前記リソースの量と、前記少なくとも1つのバックグラウンド・プロセスによって使用される前記リソースの量との合計が、前記リソース使用バジェットを超過するか否か判定し、前記合計が前記リソース使用バジェットを超過すると判定したことに応答して、前記フォアグラウンド・プロセスおよび前記少なくとも1つのバックグラウンド・プロセスの内1つ以上を終了させるように動作可能である、システム。
  8. 計算デバイスによって実装される方法であって、
    リソース・マネージャーから、アプリケーションに関連するフォアグラウンド・プロセスに、前記アプリケーションがフォアグラウンドで実行していることの通知を送るステップと、
    前記リソース・マネージャーによって、前記フォアグラウンド・プロセスから、少なくとも1つのメッセージを受けるステップであって、前記少なくとも1つのメッセージが、第1リソース使用バジェットの内前記フォアグラウンド・プロセスに割り当てられる第1部分と、前記第1リソース使用バジェットの内前記アプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第2部分とを指定し、前記第1リソース使用バジェットが、フォアグラウンドにおいて実行しているアプリケーションに関連するリソース使用バジェットを含む、ステップと、
    前記リソース・マネージャーによって、前記第1リソース使用バジェットの前記第1部分に等しいリソースの部分を前記フォアグラウンド・プロセスに割り当て、前記第1リソース使用バジェットの前記第2部分に等しい前記リソースの部分を前記少なくとも1つのバックグラウンド・タスクに割り当てるステップと、
    を含む、方法。
  9. 請求項8記載の方法において、前記リソースが、
    揮発性または不揮発性メモリー・リソースと、
    中央処理ユニット(CPU)リソースと、
    入力/出力(I/O)リソースと、
    ネットワーク・リソースと、
    電力リソースと、または、
    センサー・リソースと、
    を含む、方法。
  10. 請求項8記載の方法であって、更に、
    前記リソース・マネージャーから前記フォアグラウンド・プロセスに、前記アプリケーションが保留または終了させられることの通知を送るステップと、
    前記リソース・マネージャーによって、前記フォアグラウンド・プロセスから、少なくとも1つのメッセージを受けるステップであって、前記少なくとも1つのメッセージが、第2リソース使用バジェットの内前記フォアグラウンド・プロセスに割り当てられる第1部分と、前記第2リソース使用バジェットの内前記アプリケーションに関連する少なくとも1つのバックグラウンド・タスクに割り当てられる第2部分とを指定し、前記第2リソース使用バジェットが、保留または終了させられるアプリケーションに関連するリソース使用バジェットを含む、ステップと、
    前記リソース・マネージャーによって、前記第2リソース使用バジェットの前記第1部分に等しいリソースの部分を前記フォアグラウンド・プロセスに割り当て、前記第2リソース使用バジェットの前記第2部分に等しい前記リソースの部分を前記少なくとも1つのバックグラウンド・タスクに割り当てるステップと、
    を含む、方法。
JP2016557010A 2014-03-10 2015-02-27 マルチプロセス・アプリケーションのための動的リソース管理 Pending JP2017514209A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461950614P 2014-03-10 2014-03-10
US61/950,614 2014-03-10
US14/264,735 2014-04-29
US14/264,735 US9678797B2 (en) 2014-03-10 2014-04-29 Dynamic resource management for multi-process applications
PCT/US2015/017889 WO2015138150A1 (en) 2014-03-10 2015-02-27 Dynamic resource management for multi-process applications

Publications (1)

Publication Number Publication Date
JP2017514209A true JP2017514209A (ja) 2017-06-01

Family

ID=54017466

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016557010A Pending JP2017514209A (ja) 2014-03-10 2015-02-27 マルチプロセス・アプリケーションのための動的リソース管理

Country Status (10)

Country Link
US (1) US9678797B2 (ja)
EP (1) EP3117316A1 (ja)
JP (1) JP2017514209A (ja)
KR (1) KR20160132432A (ja)
CN (1) CN106104485A (ja)
AU (1) AU2015229883A1 (ja)
CA (1) CA2939511A1 (ja)
MX (1) MX2016011541A (ja)
RU (1) RU2016136180A (ja)
WO (1) WO2015138150A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191771B2 (en) * 2015-09-18 2019-01-29 Huawei Technologies Co., Ltd. System and method for resource management
US10169078B2 (en) 2015-10-16 2019-01-01 International Business Machines Corporation Managing thread execution in a multitasking computing environment
CN105740078B (zh) * 2016-01-29 2020-09-08 华为技术有限公司 一种内存管理方法、装置及终端
US10313429B2 (en) * 2016-04-11 2019-06-04 Huawei Technologies Co., Ltd. Distributed resource management method and system
US10541879B2 (en) * 2016-07-29 2020-01-21 Microsoft Technology Licensing, Llc Multi-channel resource control system
CN109791504B (zh) * 2016-09-21 2023-04-18 埃森哲环球解决方案有限公司 针对应用容器的动态资源配置
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
CN108399102A (zh) * 2017-02-08 2018-08-14 阿里巴巴集团控股有限公司 一种资源分配方法和装置
KR102298947B1 (ko) 2017-04-28 2021-09-08 삼성전자주식회사 음성 데이터 처리 방법 및 이를 지원하는 전자 장치
US10884656B2 (en) * 2017-06-16 2021-01-05 Microsoft Technology Licensing, Llc Performing background functions using logic integrated with a memory
US10445208B2 (en) * 2017-06-23 2019-10-15 Microsoft Technology Licensing, Llc Tunable, efficient monitoring of capacity usage in distributed storage systems
KR20200088634A (ko) 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 시스템, 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
KR102387181B1 (ko) 2017-10-31 2022-04-19 에스케이하이닉스 주식회사 컴퓨팅 디바이스 및 그것의 동작방법
US11636014B2 (en) 2017-10-31 2023-04-25 SK Hynix Inc. Memory system and data processing system including the same
KR102394695B1 (ko) * 2017-11-08 2022-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR102455880B1 (ko) 2018-01-12 2022-10-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN110046032A (zh) * 2018-01-12 2019-07-23 广东欧珀移动通信有限公司 应用程序处理方法和装置、电子设备、计算机可读存储介质
JP6968016B2 (ja) * 2018-03-22 2021-11-17 キオクシア株式会社 ストレージデバイスおよびコンピュータシステム
CN108834157A (zh) * 2018-04-27 2018-11-16 努比亚技术有限公司 网络带宽分配方法、移动终端及计算机可读存储介质
US10963310B2 (en) * 2018-07-19 2021-03-30 International Business Machines Corporation Intelligent contentionless processing resource reduction in a multiprocessing system
WO2020024272A1 (en) * 2018-08-03 2020-02-06 Shanghai United Imaging Healthcare Co., Ltd. Systems and methods for computing resources allocation for medical applications
CN109669780B (zh) * 2018-12-25 2020-02-14 上海极链网络科技有限公司 一种视频解析方法及系统
WO2020231196A1 (en) * 2019-05-14 2020-11-19 Samsung Electronics Co., Ltd. Method and system for predicting and optimizing resource utilization of ai applications in an embedded computing system
US11200094B2 (en) * 2020-01-20 2021-12-14 Dell Products L.P. Artificial intelligence-based application guard
US11494236B2 (en) * 2020-05-06 2022-11-08 EMP IP Holding Company, LLC System and method for sharing central processing unit (CPU) resources with unbalanced applications
US11275668B2 (en) * 2020-08-10 2022-03-15 Dell Products L.P. Dynamically enhancing the performance of a foreground application
KR102418991B1 (ko) * 2020-11-26 2022-07-08 성균관대학교산학협력단 적응형 i/o 완료 방법 및 이를 수행하기 위한 컴퓨터 프로그램
US20230100163A1 (en) * 2021-09-24 2023-03-30 Google Llc Allocating computing device resources
KR20230080535A (ko) * 2021-11-30 2023-06-07 삼성전자주식회사 메모리 회수 방법 및 장치
US11960756B2 (en) 2021-12-14 2024-04-16 Micron Technology, Inc. Management of storage space in solid state drives to support proof of space activities
US11941254B2 (en) 2021-12-14 2024-03-26 Micron Technology, Inc. Test memory sub-systems through validation of responses to proof of space challenges
US12045504B2 (en) 2021-12-14 2024-07-23 Micron Technology, Inc. Burn-in solid state drives through generation of proof of space plots in a manufacturing facility
US12015706B2 (en) 2021-12-14 2024-06-18 Micron Technology, Inc. Combined cryptographic key management services for access control and proof of space
US11775188B2 (en) * 2022-02-02 2023-10-03 Micron Technology, Inc. Communications to reclaim storage space occupied by proof of space plots in solid state drives
US12086432B2 (en) 2022-02-02 2024-09-10 Micron Technology, Inc. Gradually reclaim storage space occupied by a proof of space plot in a solid state drive
US11977742B2 (en) 2022-02-02 2024-05-07 Micron Technology, Inc. Solid state drives configurable to use storage spaces of remote devices in activities involving proof of space

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
CN1802635A (zh) 2003-04-14 2006-07-12 皇家飞利浦电子股份有限公司 资源管理方法以及设备
US7900092B2 (en) 2003-07-11 2011-03-01 Computer Associates Think, Inc. Kernel-level method of flagging problems in applications
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7529903B2 (en) 2005-07-05 2009-05-05 International Business Machines Corporation Systems and methods for memory migration
US7673189B2 (en) * 2006-02-06 2010-03-02 International Business Machines Corporation Technique for mapping goal violations to anamolies within a system
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
US7827358B2 (en) 2007-01-07 2010-11-02 Apple Inc. Memory management methods and systems
EP1970804A1 (en) 2007-03-05 2008-09-17 Slipstream Data, Inc. System and method for dynamic memory allocation
US20090028127A1 (en) * 2007-07-26 2009-01-29 Gordon Kent Walker Methods and apparatus for providing computational load allocation in a network environment
US8510743B2 (en) 2007-10-31 2013-08-13 Google Inc. Terminating computer applications
US8139533B2 (en) * 2007-11-05 2012-03-20 Qualcomm Incorporated Division of the scheduling algorithm into background and foreground algorithms
US20100131959A1 (en) * 2008-11-26 2010-05-27 Spiers Adam Z Proactive application workload management
US8321703B2 (en) 2009-12-12 2012-11-27 Microsoft Corporation Power aware memory allocation
US8843526B2 (en) 2009-12-18 2014-09-23 Sap Ag Application specific memory consumption and analysis
US8464023B2 (en) 2010-08-27 2013-06-11 International Business Machines Corporation Application run-time memory optimizer
CN103559080B (zh) * 2011-02-14 2017-04-12 微软技术许可有限责任公司 移动设备上的后台应用代码的受约束执行
US20120324481A1 (en) 2011-06-16 2012-12-20 Samsung Electronics Co. Ltd. Adaptive termination and pre-launching policy for improving application startup time
US9218206B2 (en) 2011-06-20 2015-12-22 Microsoft Technology Licensing, Llc Memory management model and interface for new applications
US9032413B2 (en) * 2011-09-01 2015-05-12 Microsoft Technology Licensing, Llc Decoupling background work and foreground work
US9164803B2 (en) 2012-01-20 2015-10-20 Microsoft Technology Licensing, Llc Background task resource control
US8843912B2 (en) 2012-02-20 2014-09-23 International Business Machines Corporation Optimization of an application to reduce local memory usage
US8924437B2 (en) 2012-03-13 2014-12-30 Microsoft Corporation Memory usage data collection and analysis for dynamic objects
US9201693B2 (en) 2012-09-04 2015-12-01 Microsoft Technology Licensing, Llc Quota-based resource management

Also Published As

Publication number Publication date
RU2016136180A (ru) 2018-03-14
US20150254108A1 (en) 2015-09-10
WO2015138150A1 (en) 2015-09-17
EP3117316A1 (en) 2017-01-18
US9678797B2 (en) 2017-06-13
KR20160132432A (ko) 2016-11-18
CN106104485A (zh) 2016-11-09
AU2015229883A1 (en) 2016-09-08
CA2939511A1 (en) 2015-09-17
MX2016011541A (es) 2016-11-29

Similar Documents

Publication Publication Date Title
US10182018B2 (en) Resource management based on device-specific or user-specific resource usage profiles
JP2017514209A (ja) マルチプロセス・アプリケーションのための動的リソース管理
US8997171B2 (en) Policy based application suspension and termination
EP2893444B1 (en) Quota-based resource management
US10101910B1 (en) Adaptive maximum limit for out-of-memory-protected web browser processes on systems using a low memory manager
US20200356416A1 (en) Task scheduling method and electronic device for implementing same
US10649889B2 (en) Method and apparatus for managing kernel memory of data processing systems
US20120324481A1 (en) Adaptive termination and pre-launching policy for improving application startup time
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
WO2019128542A1 (zh) 应用处理方法、电子设备、计算机可读存储介质
US20230342200A1 (en) System and method for resource management in dynamic systems
US20230342218A1 (en) Automated dynamic resource configuration for hard provisioned virtual machines
US20230342170A1 (en) Automated analysis and dynamic resource configuration for hard provisioned virtual machines
CN116909940A (zh) 一种自适应内存分配方法、装置及电子设备