(57)【要約】電力消費を低減させるようにネットワークリクエストをスケジューリングするための技術は、ネットワークアプリケーションからネットワークリクエストを受信し、ネットワークアプリケーションの実行制約に基づいて、ネットワークリクエストが遅延可能かどうかを判定するよう構成されたモバイルコンピューティングデバイスを含む。実行制約は、必要とされる処理リソース、許容可能な遅延、優先度、アプリケーションクラス、及びその他を含み得る。ネットワークリクエストが遅延可能である場合、モバイルコンピューティングデバイスは、閾数の遅延可能なリクエストが受信されるまで、あるいは、遅延可能でないリクエストが受信されるまで、ネットワークリクエストを遅延させることができる。モバイルコンピューティングデバイスは、遅延されたネットワークリクエストと、後に受信された全てのリクエストと、を並行して実行する。実行制約は、各ネットワークアプリケーションにより提供されてもよいし、観測を通じてモバイルコンピューティングデバイスにより決定されてもよい。他の実施形態も説明され特許請求される。
2016528648.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションをスケジューリングするためのモバイルコンピューティングデバイスであって、
前記モバイルコンピューティングデバイスの第１のネットワークアプリケーションから第１のネットワークリクエストを受信し、
前記第１のネットワークアプリケーションに関する１以上の第１の実行制約を判別し、
前記１以上の第１の実行制約に基づいて、前記第１のネットワークリクエストが遅延可能かどうかを判定し、
前記第１のネットワークリクエストが遅延可能であるという判定に応じて、遅延されて実行されるように前記第１のネットワークリクエストをスケジューリングし、
前記モバイルコンピューティングデバイスの第２のネットワークアプリケーションから第２のネットワークリクエストを受信し、
前記第２のネットワークリクエストの受信に応じて、並行して実行されるように前記第１のネットワークリクエスト及び前記第２のネットワークリクエストをスケジューリングする
アプリケーションスケジューラモジュール
を備えたモバイルコンピューティングデバイス。
【請求項２】
前記１以上の第１の実行制約を判別することは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションの緊急度レベルを判別することを含み、
前記第１のネットワークリクエストが遅延可能かどうかを判定することは、前記緊急度レベルが閾緊急度レベルに満たないかどうかを判定することを含む、請求項１記載のモバイルコンピューティングデバイス。
【請求項３】
前記緊急度レベルは、前記第１のネットワークアプリケーションの優先度を含み、前記閾緊急度レベルは、閾優先度を含む、請求項２記載のモバイルコンピューティングデバイス。
【請求項４】
前記緊急度レベルは、前記第１のネットワークアプリケーションのアプリケーションクラスを含み、
前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定することは、前記アプリケーションクラスが、緊急アプリケーションクラスの予め定められたセットに属するかどうかを判定することを含む、請求項２記載のモバイルコンピューティングデバイス。
【請求項５】
前記緊急度レベルは、前記第１のネットワークアプリケーションの許容可能な遅延を含み、
前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定することは、前記許容可能な遅延が閾遅延値を超えているかどうかを判定することを含む、請求項２記載のモバイルコンピューティングデバイス。
【請求項６】
前記１以上の第１の実行制約を判別することは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションのリソース要件を判別することを含み、
前記第１のネットワークリクエストが遅延可能かどうかを判定することは、前記リソース要件が閾リソース要件に満たないかどうかを判定することを含む、請求項１記載のモバイルコンピューティングデバイス。
【請求項７】
前記リソース要件は、前記第１のネットワークアプリケーションのプロセッサ要件を含み、前記閾リソース要件は、閾プロセッサ要件を含む、請求項６記載のモバイルコンピューティングデバイス。
【請求項８】
前記アプリケーションスケジューラモジュールは、さらに、
前記第２のネットワークアプリケーションに関する１以上の第２の実行制約を判別し、
前記１以上の第２の実行制約に基づいて、前記第２のネットワークリクエストが遅延可能かどうかを判定し、
前記第２のネットワークリクエストが遅延可能であるという判定に応じて、遅延されて実行されるように前記第２のネットワークリクエストをスケジューリングし、
前記第２のネットワークリクエストのスケジューリングに応じて、閾数を超えるネットワークリクエストが、遅延されて実行されるようにスケジューリングされているかどうかを判定し、
前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、前記閾数を超えるネットワークリクエストが、遅延されて実行されるようにスケジューリングされているという判定に応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することを含む、請求項１乃至７いずれか一項記載のモバイルコンピューティングデバイス。
【請求項９】
前記アプリケーションスケジューラモジュールは、さらに、
前記第２のネットワークアプリケーションに関する１以上の第２の実行制約を判別し、
前記１以上の第２の実行制約に基づいて、前記第２のネットワークリクエストが遅延可能かどうかを判定し、
前記第２のネットワークリクエストが遅延可能でないという判定に応じて、直ちに実行されるように前記第２のネットワークリクエストをスケジューリングし、
前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、直ちに実行されるように前記第２のネットワークリクエストがスケジューリングされたことに応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを並行して実行することを含む、請求項１乃至７いずれか一項記載のモバイルコンピューティングデバイス。
【請求項１０】
前記１以上の第２の実行制約を判別することは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションの緊急度レベルを判別することを含み、
前記第２のネットワークリクエストが遅延可能かどうかを判定することは、該緊急度レベルが閾緊急度レベルに満たないかどうかを判定することを含む、請求項９記載のモバイルコンピューティングデバイス。
【請求項１１】
前記１以上の第２の実行制約を判別することは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションのリソース要件を判別することを含み、
前記第２のネットワークリクエストが遅延可能かどうかを判定することは、該リソース要件が閾リソース要件に満たないかどうかを判定することを含む、請求項９記載のモバイルコンピューティングデバイス。
【請求項１２】
前記リソース要件は、前記第２のネットワークアプリケーションのプロセッサ要件を含み、前記閾リソース要件は、閾プロセッサ要件を含む、請求項１１記載のモバイルコンピューティングデバイス。
【請求項１３】
前記１以上の第１の実行制約を判別することは、前記モバイルコンピューティングデバイスの実行制約データベースから前記１以上の第１の実行制約を判別することを含む、請求項１乃至７いずれか一項記載のモバイルコンピューティングデバイス。
【請求項１４】
前記１以上の第１の実行制約は、前記第１のネットワークリクエストの受信前に、前記第１のネットワークアプリケーションにより、前記実行制約データベースに提供されている、請求項１３記載のモバイルコンピューティングデバイス。
【請求項１５】
アプリケーションをスケジューリングするための方法であって、
モバイルコンピューティングデバイスにより、前記モバイルコンピューティングデバイスの第１のネットワークアプリケーションから第１のネットワークリクエストを受信するステップと、
前記モバイルコンピューティングデバイスにより、前記第１のネットワークアプリケーションに関する１以上の第１の実行制約を判別するステップと、
前記モバイルコンピューティングデバイスにより、前記１以上の第１の実行制約に基づいて、前記第１のネットワークリクエストが遅延可能かどうかを判定するステップと、
前記モバイルコンピューティングデバイスにより、前記第１のネットワークリクエストが遅延可能であるという判定に応じて、遅延されて実行されるように前記第１のネットワークリクエストをスケジューリングするステップと、
前記モバイルコンピューティングデバイスにより、前記モバイルコンピューティングデバイスの第２のネットワークアプリケーションから第２のネットワークリクエストを受信するステップと、
前記モバイルコンピューティングデバイスにより、前記第２のネットワークリクエストの受信に応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを並行して実行するステップと、
を含む方法。
【請求項１６】
前記１以上の第１の実行制約を判別するステップは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションの緊急度レベルを判別するステップを含み、
前記第１のネットワークリクエストが遅延可能かどうかを判定するステップは、前記緊急度レベルが閾緊急度レベルに満たないかどうかを判定するステップを含む、請求項１５記載の方法。
【請求項１７】
前記緊急度レベルを判別するステップは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションの許容可能な遅延を判別するステップを含み、
前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定するステップは、前記許容可能な遅延が閾遅延値を超えているかどうかを判定するステップを含む、請求項１６記載の方法。
【請求項１８】
前記１以上の第１の実行制約を判別するステップは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションのリソース要件を判別するステップを含み、
前記第１のネットワークリクエストが遅延可能かどうかを判定するステップは、前記リソース要件が閾リソース要件に満たないかどうかを判定するステップを含む、請求項１５記載の方法。
【請求項１９】
前記モバイルコンピューティングデバイスにより、前記第２のネットワークアプリケーションに関する１以上の第２の実行制約を判別するステップと、
前記モバイルコンピューティングデバイスにより、前記１以上の第２の実行制約に基づいて、前記第２のネットワークリクエストが遅延可能かどうかを判定するステップと、
前記モバイルコンピューティングデバイスにより、前記第２のネットワークリクエストが遅延可能であるという判定に応じて、遅延されて実行されるように前記第２のネットワークリクエストをスケジューリングするステップと、
前記モバイルコンピューティングデバイスにより、前記第２のネットワークリクエストのスケジューリングに応じて、閾数を超えるネットワークリクエストが、遅延されて実行されるようにスケジューリングされているかどうかを判定するステップと、
をさらに含み、
前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、前記閾数を超えるネットワークリクエストが、遅延されて実行されるようにスケジューリングされているという判定に応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することを含む、請求項１５記載の方法。
【請求項２０】
前記モバイルコンピューティングデバイスにより、前記第２のネットワークアプリケーションに関する１以上の第２の実行制約を判別するステップと、
前記モバイルコンピューティングデバイスにより、前記１以上の第２の実行制約に基づいて、前記第２のネットワークリクエストが遅延可能かどうかを判定するステップと、
前記モバイルコンピューティングデバイスにより、前記第２のネットワークリクエストが遅延可能でないという判定に応じて、直ちに実行されるように前記第２のネットワークリクエストをスケジューリングするステップと、
をさらに含み、
前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、直ちに実行されるように前記第２のネットワークリクエストがスケジューリングされたことに応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを並行して実行することを含む、請求項１５記載の方法。
【請求項２１】
前記１以上の第２の実行制約を判別するステップは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションの緊急度レベルを判別するステップを含み、
前記第２のネットワークリクエストが遅延可能かどうかを判定するステップは、該緊急度レベルが閾緊急度レベルに満たないかどうかを判定するステップを含む、請求項２０記載の方法。
【請求項２２】
前記１以上の第２の実行制約を判別するステップは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションのリソース要件を判別するステップを含み、
前記第２のネットワークリクエストが遅延可能かどうかを判定するステップは、該リソース要件が閾リソース要件に満たないかどうかを判定するステップを含む、請求項２０記載の方法。
【請求項２３】
コンピューティングデバイスであって、
プロセッサと、
複数の命令を記憶しているメモリであって、前記複数の命令は、前記プロセッサにより実行されたときに、前記コンピューティングデバイスに、請求項１５乃至２２いずれか一項記載の方法を実行させる、メモリと、
を備えたコンピューティングデバイス。
【請求項２４】
請求項１５乃至２２いずれか一項記載の方法をコンピューティングデバイスに実行させるプログラム。
【請求項２５】
請求項１５乃至２２いずれか一項記載の方法を実行する手段を備えたコンピューティングデバイス。
【請求項２６】
請求項２４記載のプログラムを記憶したマシン読み取り可能な記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
高速無線ネットワークに接続されるスマートフォン、タブレット、及びノートブックコンピュータ等のポータブルコンピューティングデバイスは、帯域幅集中型ネットワークアプリケーションの使用を大いに増大させている。ほとんどのポータブルデバイスは、メディアストリーミング、ビデオチャット、インタラクティブメッセージング、及びクラウドデータストレージアプリケーションを含む、利用可能な多くのネットワーク負荷の高いアプリケーションを有する。しかしながら、ポータブルコンピューティングデバイスは、通常、制限されたバッテリ容量しか有していない。ポータブルコンピューティングデバイスの使用の増大、特に、無線ネットワーク無線機の使用の増大は、ポータブルデバイスの電力消費量を増加させ、したがって、使用可能なバッテリ寿命を低減させる。
【図面の簡単な説明】
【０００２】
本明細書で説明するコンセプトが、限定ではなく例として、添付の図面に示される。例示の単純さ及び明瞭さのため、図面に示される要素は、必ずしも縮尺通りに描かれてはいない。適切であると考えられる場合には、対応要素又は類似要素を示すために、参照レベルが複数の図面の間で繰り返される。
【図１】ネットワークアプリケーション並行スケジューリングのためのシステムの少なくとも１つの実施形態の簡略化されたブロック図。
【図２】図１のモバイルコンピューティングデバイスにより確立され得る環境の少なくとも１つの実施形態の簡略化されたブロック図。
【図３】図１及び図２のシステムのモバイルコンピューティングデバイスにより実行され得る、ネットワークリクエストをスケジューリングするための方法の少なくとも１つの実施形態の簡略化されたフロー図。
【図４】図１及び図２のモバイルコンピューティングデバイスにより実行され得る、ネットワークリクエストを並行実行するための方法の少なくとも１つの実施形態の簡略化されたフロー図。
【図５】図１及び図２のモバイルコンピューティングデバイスにより実行され得る、ネットワークリクエストが遅延可能かどうかを判定するための方法の少なくとも１つの実施形態の簡略化されたフロー図。
【図６】図１及び図２のモバイルコンピューティングデバイスにより達成され得る例示的な結果を示すチャート。
【発明を実施するための形態】
【０００３】
本開示のコンセプトは、様々な変形形態及び代替形態を受け入れる余地があるが、その特定の実施形態が、例として図面に示され、本明細書で詳細に説明される。しかしながら、本開示のコンセプトを、開示する特定の形態に限定する意図はなく、反対に、意図は、本開示及び添付の特許請求の範囲と整合する全ての変形形態、均等形態、及び代替形態をカバーすることにあることを理解すべきである。
【０００４】
「一実施形態」、「ある実施形態」、「例示的な実施形態」等の本明細書における言及は、説明する実施形態が、特定の特徴、構造、又は特性を含み得るが、全ての実施形態が、そのような特定の特徴、構造、又は特性を含んでもよいし、又は、必ずしもそのような特定の特徴、構造、又は特性を含む必要がなくてもよいことを示す。さらに、このような語句は、必ずしも同じ実施形態を指すわけではない。さらに、特定の特徴、構造、又は特性がある実施形態との関連で記載されている場合には、明示されていようといまいと、他の実施形態との関連でそのような特徴、構造、又は特性を実装することは当業者の知識の範囲内であるとする。さらに、「Ａ、Ｂ、及びＣのうち少なくとも１つ」という形のリストに含まれる項目は、（Ａ）；（Ｂ）；（Ｃ）；（Ａ及びＢ）；（Ａ及びＣ）；（Ｂ及びＣ）；又は（Ａ、Ｂ、及びＣ）を意味し得ることを理解すべきである。同様に、「Ａ、Ｂ、又はＣのうち少なくとも１つ」という形でリストされる項目は、（Ａ）；（Ｂ）；（Ｃ）；（Ａ及びＢ）；（Ａ及びＣ）；（Ｂ及びＣ）；又は（Ａ、Ｂ、及びＣ）を意味し得る。
【０００５】
開示する実施形態は、場合に応じて、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組合せにより実装することができる。開示する実施形態はまた、１以上のプロセッサにより読み出されて実行され得る、一時的又は非一時的な１以上のマシン読み取り可能な記憶媒体（例えば、コンピュータ読み取り可能な記憶媒体）により運ばれる命令又はそのような媒体に記憶される命令として実装することができる。マシン読み取り可能な記憶媒体は、マシンにより読み取ることができる形式で情報を記憶又は伝送する任意の記憶デバイス、メカニズム、又は他の物理的構造（例えば、揮発性メモリ、不揮発性メモリ、メディアディスク、又は他のメディアデバイス）として具現化することができる。
【０００６】
図面において、いくつかの構造的特徴又は方法的特徴が、特定の配置及び／又は順序で示され得る。しかしながら、そのような特定の配置及び／又は順序が必要とされるわけではないことを理解すべきである。そうではなく、いくつかの実施形態においては、そのような特徴は、例示する図面に示される態様及び／又は順序と異なる態様及び／又は順序で構成することもできる。さらに、特定の図面内に構造的特徴又は方法的特徴が含まれることは、そのような特徴が全ての実施形態において必要とされることを意味しないし、いくつかの実施形態においては、そのような特徴が含まれないことを意味しない、又はそのような特徴が他の特徴と組み合わされないことを意味しない。
【０００７】
次に図１を参照すると、例示的な実施形態において、ネットワークアプリケーション並行スケジューリングのためのシステム１００は、モバイルコンピューティングデバイス１０２及び１以上のアプリケーションサーバ１０４を含む。モバイルコンピューティングデバイス１０２及びアプリケーションサーバ１０４は、ネットワーク１０６を介して互いと通信することができる。以下でより詳細に説明するように、使用の際、モバイルコンピューティングデバイス１０２は、アプリケーションサーバ１０４と通信する複数のネットワークアプリケーションを実行する。モバイルコンピューティングデバイス１０２は、それらのアプリケーションから複数のネットワークリクエストを受信し、それらのリクエストが、ネットワークアプリケーション又はその使用に悪影響を及ぼすことなく、遅延可能かどうかを判定する。モバイルコンピューティングデバイス１０２は、可能であれば、リクエストが、別の遅延可能なリクエスト又は遅延可能でないリクエストと並行して実行され得るまで、リクエストを遅延させる。例えば、モバイルコンピューティングデバイス１０２は、各ネットワークアプリケーションの実行の少なくとも一部が、互いとオーバーラップするように、又は、互いとほぼ同時に生じるように、遅延された１以上のアプリケーションを、別の遅延されたアプリケーション又は遅延されていないアプリケーションとともに実行することができる。いくつかの実施形態において、モバイルコンピューティングデバイス１０２は、互いと同じ時間に又は互いとほぼ同時に開始するように並行実行されるアプリケーションをスケジューリングすることができ、これらのアプリケーションが、並列に又は交互に（in  an  interleaved  manner）実行され得る（例えば、各並行実行されるアプリケーションは、モバイルコンピューティングデバイス１０２のネットワークインタフェース又は他のハードウェアに交互にアクセスすることができる）。そのような実施形態において、ネットワークアプリケーションの実行は、異なる時間に終了し得ることを理解すべきである。他の実施形態においては、遅延されたアプリケーションは、別のアプリケーションの実行の開始のいくらかあとにこの遅延されたアプリケーションの実行を開始することにより、この別のアプリケーションと並行して実行され得る。
【０００８】
例えば、いくつかの実施形態において、第１のネットワークアプリケーションは、アプリケーションサーバ１０４ａに接続するリクエストを発することがある。モバイルコンピューティングデバイス１０２は、別のアプリケーションからのアプリケーションサーバ１０４ｂに接続するリクエストが受信されるまで、アプリケーションサーバ１０４ａに接続するこのリクエストを遅延させることができる。この例において、モバイルコンピューティングデバイス１０２は、アプリケーションサーバ１０４ａ及び１０４ｂに接続するこれらのリクエストを並行して処理する（service）。
【０００９】
ネットワークアプリケーション並行スケジューリングは、ネットワークリクエストを順次的に又は個々に処理する場合と比較して、モバイルコンピューティングデバイス１０２の電力消費を低減させることができる。さらに、多くの無線ネットワーク１０６に関して、並行実行は、各ネットワークアプリケーションのパフォーマンスに悪影響を及ぼし得ない。詳細には、アプリケーションサーバ１０４が、利用可能な帯域幅に関して、アプリケーションサーバ１０４の帯域幅使用を抑制（throttle）又は制限するとき（これは、多くのメディアストリーミングアプリケーションにとって一般的である）、パフォーマンス全体及びユーザエクスペリエンスは、並行ネットワーク実行により変わらないままであり得る。
【００１０】
モバイルコンピューティングデバイス１０２は、本明細で説明する機能を実行することができる任意のタイプのデバイスとして具現化することができる。そのようなデバイスは、スマートフォン、携帯電話機、ハンドセット、コンピュータ、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、メッセージングデバイス、車両テレマティックスデバイス、ネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、及び／又はコンシューマ電子デバイスを含むが、これらに限定されるものではない。図１に示されるように、モバイルコンピューティングデバイス１０２は、プロセッサ１２０、入力／出力サブシステム１２２、メモリ１２４、データ記憶デバイス１２６、及び通信回路１３０を含む。もちろん、モバイルコンピューティングデバイス１０２は、他の実施形態においては、スマートフォンにおいて一般的に見つけられるコンポーネント等の他のコンポーネント又はさらなるコンポーネント（例えば、様々な入力／出力デバイス）を含んでもよい。さらに、いくつかの実施形態においては、図示されるコンポーネントのうちの１以上のコンポーネントは、別のコンポーネントに組み込まれてもよいし、別のコンポーネントの一部を形成してもよい。例えば、いくつかの実施形態においては、メモリ１２４又はメモリ１２４の一部は、プロセッサ１２０に組み込まれてもよい。
【００１１】
プロセッサ１２０は、本明細書で説明する機能を実行することができる任意のタイプのプロセッサとして具現化することができる。例えば、プロセッサ１２０は、シングルコアプロセッサ、マルチコアプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、又は、他のプロセッサ若しくは処理／制御回路として具現化することができる。同様に、メモリ１２４は、本明細書で説明する機能を実行することができる任意のタイプの揮発性メモリ、不揮発性メモリ、又はデータストレージとして具現化することができる。動作中、メモリ１２４は、モバイルコンピューティングデバイス１０２の動作中に使用される、オペレーティングシステム、アプリケーション、プログラム、ライブラリ、及びドライバ等の様々なソフトウェア及びデータを記憶することができる。メモリ１２４は、Ｉ／Ｏサブシステム１２２を介して、プロセッサ１２０に通信可能に接続される。Ｉ／Ｏサブシステム１２２は、モバイルコンピューティングデバイス１０２のプロセッサ１２０、メモリ１２４、及び他のコンポーネントによる入力／出力オペレーションを円滑にする回路及び／又はコンポーネントとして具現化することができる。例えば、Ｉ／Ｏサブシステム１２２は、メモリコントローラハブ、入力／出力制御ハブ、ファームウェアデバイス、通信リンク（すなわち、ポイントツーポイントリンク、バスリンク、ワイヤ、ケーブル、ライトガイド、プリント回路基板トレース等）、並びに／又は、入力／出力オペレーションを円滑にする他のコンポーネント及びサブシステムとして具現化されてもよいし、これらを含んでもよい。いくつかの実施形態において、Ｉ／Ｏサブシステム１２２は、システムオンチップ（ＳｏＣ）の一部を形成して、モバイルコンピューティングデバイス１０２のプロセッサ１２０、メモリ１２４、及び他のコンポーネントとともに、単一の集積回路チップに組み込むことができる。
【００１２】
データ記憶デバイス１２６は、データの短期記憶又は長期記憶のために構成される任意のタイプの１以上のデバイスとして具現化することができる。そのようなデバイスとして、例えば、メモリデバイス及び回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、又は他のデータ記憶デバイス等がある。データ記憶デバイス１２６は、モバイルコンピューティングデバイス１０２にインストールされた様々なネットワークアプリケーション及び／又はモバイルコンピューティングデバイス１０２上で実行される様々なネットワークアプリケーションのネットワーク要件、処理要件、及び他のリソース要件を規定するために使用される１以上のアプリケーション実行制約１２８を記憶することができる。以下でより詳細に説明するように、モバイルコンピューティングデバイス１０２は、特定のアプリケーションに関連付けられた１以上のアプリケーション実行制約に基づいて、アプリケーションの実行が遅延可能かどうかを判定することができる。
【００１３】
モバイルコンピューティングデバイス１０２の通信回路１３０は、ネットワーク１０６を介する、モバイルコンピューティングデバイス１０２、アプリケーションサーバ１０４、及び／又は他のリモートデバイスの間の通信を可能にすることができる任意の通信回路、通信デバイス、又はこれらの集合として具現化することができる。通信回路１３０は、任意の１以上の通信技術（例えば、無線通信又は有線通信）と関連プロトコル（例えば、３Ｇ、ＬＴＥ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｗｉ−Ｆｉ（登録商標）、ＷｉＭＡＸ（登録商標）等）とを使用してそのような通信を実現するよう構成することができる。例示的な通信回路１３０は、無線通信を用いてネットワーク１０６と通信する。しかしながら、本開示は、有線ネットワーク接続（例えば、Ｅｔｈｅｒｎｅｔ（登録商標））にも等しく適用可能であることを理解すべきである。
【００１４】
例示的な実施形態において、モバイルコンピューティングデバイス１０２は、ディスプレイ１３２をさらに含む。モバイルコンピューティングデバイス１０２のディスプレイ１３２は、デジタル情報を表示することができる任意のタイプのディスプレイとして具現化することができる。そのようなディスプレイとして、例えば、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）、プラズマディスプレイ、陰極線管（ＣＲＴ）、又は他のタイプのディスプレイデバイスがある。いくつかの実施形態においては、ディスプレイ１３２は、モバイルコンピューティングデバイス１０２とのユーザインタラクションを可能にするように、タッチスクリーンに接続されてもよい。
【００１５】
アプリケーションサーバ１０４の各々は、モバイルコンピューティングデバイス１０２の１以上のアプリケーションにネットワークサービスを提供するよう構成される。例えば、アプリケーションサーバ１０４は、電話サービス（例えば、ＶｏＩＰサービス）、ビデオサービス、ウェブサービス、電子メール、クラウドデータサービス、又は任意の他のネットワークサービスを提供することができる。例えば、例示的な実施形態において、アプリケーションサーバ１０４ａは、ウェブサービスを提供することができ、アプリケーションサーバ１０４ｂは、ＶｏＩＰサービスを提供することができる。各アプリケーションサーバ１０４は、本明細書で説明する機能を実行することができる任意のタイプのサーバコンピューティングデバイス又はデバイスの集合として具現化することができる。そのようなものとして、各アプリケーションサーバ１０４は、単一のサーバコンピューティングデバイス又はサーバの集合、及び関連デバイスとして具現化することができる。例えば、いくつかの実施形態において、各アプリケーションサーバ１０４は、ネットワーク１０６にわたって分散された複数のコンピューティングデバイスから形成され、パブリッククラウド又はプライベートクラウドにおいて動作する「仮想サーバ」として具現化することができる。したがって、１以上のアプリケーションサーバ１０４が、図１において、単一のサーバコンピューティングデバイスとして具現化されたものとして示されているが、各アプリケーションサーバ１０４は、以下で説明する機能を促進するために協働する複数のデバイスとして具現化されてもよいことを理解すべきである。さらに、各アプリケーションサーバ１０４は、説明を明瞭にするために図１には示されていないプロセッサ、Ｉ／Ｏサブシステム、メモリ、データ記憶デバイス、通信回路、及び様々な周辺デバイス等の、モバイルコンピューティングデバイス１０２及び／又は一般的なデータサーバと同様のコンポーネント及び特徴を含み得る。
【００１６】
以下でより詳細に説明するように、モバイルコンピューティングデバイス１０２及び１以上のアプリケーションサーバ１０４は、ネットワーク１０６を介して、互いとの間で、且つ／又は、システム１００の他のデバイスとの間で、データを送受信するよう構成することができる。ネットワーク１０６は、任意の数の様々な有線ネットワーク及び／又は無線ネットワークとして具現化することができる。例えば、ネットワーク１０６は、有線ローカルエリアネットワーク（ＬＡＮ）又は無線ＬＡＮ、有線ワイドエリアネットワーク（ＷＡＮ）又は無線ＷＡＮ、セルラネットワーク、及び／又は、インターネット等のパブリックにアクセス可能な全世界的ネットワークとして具現化されてもよいし、これらを含んでもよい。したがって、ネットワーク１０６は、システム１００のデバイス間における通信を円滑にするための、さらなるコンピュータ、ルータ、及びスイッチ等の任意の数のさらなるデバイスを含み得る。
【００１７】
次に図２を参照すると、例示的な実施形態において、モバイルコンピューティングデバイス１０２は、動作中に環境２００を確立する。環境２００は、複数のネットワークアプリケーション２０２、アプリケーションスケジューラモジュール２０６、及びネットワーク通信モジュール２１２を含む。環境２００は、アプリケーション実行制約２１４をさらに含む。環境２００の様々なモジュールは、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組合せとして具現化することができる。
【００１８】
ネットワークアプリケーション２０２はそれぞれ、アプリケーションサーバ１０４のうちの１以上により提供されるサービスにアクセスする任意のアプリケーションとして具現化することができる。ネットワークアプリケーション２０２の各々は、アプリケーションサーバ１０４にアクセスする前に、ネットワークリクエストをアプリケーションスケジューラモジュール２０６に送信するよう構成される。追加的又は代替的に、アプリケーションスケジューラモジュール２０６は、アプリケーション２０２によるネットワークアクセスを「トラップする」よう構成されてもよい。いくつかの実施形態において、各ネットワークアプリケーション２０２は、ネットワークリクエストを送信するときに、又は、アプリケーション２０２のインストール中等といったネットワークリクエストを送信するよりも前に、関連付けられたアプリケーション実行制約２０４をアプリケーションスケジューラモジュール２０６に送信することができる。これらのアプリケーション実行制約２０４は、以下で説明するように、環境２００内に確立されたアプリケーション実行制約２１４に記憶され得る。アプリケーション２０２が、ネットワークアプリケーションとして図示され説明されているが、本開示は、モバイルコンピューティングデバイス１０２上で実行可能な任意の種類のアプリケーションにも等しく適用可能であることを理解すべきである。
【００１９】
アプリケーションスケジューラモジュール２０６は、ネットワークアプリケーション２０２からネットワークリクエストを受信し、直ちに実行されるように又は遅延されて実行されるように各ネットワークリクエストをスケジューリングするよう構成される。アプリケーションスケジューラモジュール２０６は、ネットワークアプリケーション２０２に関連付けられたアプリケーション実行制約２１４に基づいて、遅延されて実行されるようにネットワークリクエストをスケジューリングするかどうかを判定する。以下で説明するように、ネットワークリクエストは、アプリケーション２０２の許容可能な遅延、優先度、アプリケーションクラス、又は任意の他の実行制約に基づいて、遅延可能であり得る。アプリケーションスケジューラモジュール２０６は、さらに、総電力消費量を低減させるために、並行実行されるようにネットワークリクエストをスケジューリングするよう構成される。リクエストのスケジューリングを管理するために、アプリケーションスケジューラモジュール２０６は、遅延されて実行されるようにスケジューリングされたネットワークリクエストのキューを保持することができ、リクエストが許容されるパラメータ内に実行されることを確実にするためのタイマを保持することができる。いくつかの実施形態において、これらの機能は、サブモジュール（例えば、遅延リクエストキュー２０８又は遅延タイマ２１０）により実行され得る。
【００２０】
ネットワーク通信モジュール２１２は、アプリケーションスケジューラモジュール２０６により、実行されるようにスケジューリングされているネットワークリクエストを実行又は促進するよう構成される。ネットワークリクエストを実行することは、ネットワーク接続をオープンすること、データを送受信すること、及び、ネットワークアプリケーション２０２により必要とされる任意の他の処理を含み得る。ネットワーク通信モジュール２１２は、ネットワークリクエストを実行するための適切なアプリケーション２０２をアクティブ化し、アプリケーション２０２により提供されるタスク、スレッド、又はプロセスを実行してネットワークリクエストを実行することができる、又は、ネットワークリクエストを独立して実行することができる。
【００２１】
アプリケーション実行制約２１４は、許容可能なパフォーマンス及び／又はユーザエクスペリエンスのためにネットワークアプリケーション２０２により必要とされるリソース要件、時間制限、及び／又は他のパラメータを規定するものである。以下でさらに説明するように、アプリケーション実行制約２１４は、ネットワークリソース、処理リソース、必要とされるタイミング、又はネットワークアプリケーション２０２の緊急度を表すことができる。いくつかの実施形態において、アプリケーション実行制約２１４は、各ネットワークアプリケーション２０２により提供され得る。例えば、各ネットワークアプリケーション２０２の開発者は、アプリケーション２０２がインストールされるときにアプリケーション実行制約２１４にインストールされる制約を提供することができる。追加的又は代替的に、モバイルコンピューティングデバイス１０２は、使用中のネットワークアプリケーション２０２の挙動を経時的にモニタリングすることにより、アプリケーション実行制約２１４を決定してもよい。アプリケーション実行制約２１４は、例えばローカルデータベースとして、任意のデータフォーマットで記憶され得る。
【００２２】
次に図３を参照すると、使用の際、モバイルコンピューティングデバイス１０２は、ネットワークアプリケーションのスケジューリングのための方法３００を実行することができる。方法３００は、ブロック３０２で開始する。ブロック３０２において、モバイルコンピューティングデバイス１０２は、ネットワークリクエストをモニタリングする。ネットワークリクエストは、任意の抽象レベルで、ネットワークアプリケーション２０２と１以上のアプリケーションサーバ１０４との間でネットワークデータを送信又は受信する任意のリクエストとして具現化され得る。ネットワークアプリケーション２０２は、標準化されたアプリケーションプログラミングインタフェース（「ＡＰＩ」）を用いてネットワークリクエストを送信することができる。例えば、ネットワークリクエストは、アプリケーションサーバ１０４に対するＴＣＰ接続をオープンするリクエスト、又は、特定のインターネットアドレスからファイルをダウンロードするリクエストとして具現化され得る。ブロック３０４において、モバイルコンピューティングデバイス１０２は、ネットワークリクエストが受信されたかどうかを判定する。リクエストが受信されていない場合、方法３００は、ブロック３０２にループバックして、ネットワークリクエストをモニタリングすることを続ける。ネットワークリクエストが受信された場合、方法３００は、ブロック３０６に進む。
【００２３】
ブロック３０６において、モバイルコンピューティングデバイス１０２は、ネットワークリクエストを行ったネットワークアプリケーション２０２に関する１以上のアプリケーション実行制約２１４を判別する。いくつかの実施形態において、モバイルコンピューティングデバイス１０２は、モバイルコンピューティングデバイス１０２上に以前に確立された制約のデータベースからアプリケーション実行制約２１４を取得することができる。追加的又は代替的に、いくつかの実施形態においては、モバイルコンピューティングデバイス１０２は、例えば標準化されたＡＰＩを介して、アプリケーション２０２から直接アプリケーション実行制約２１４を受信してもよい。
【００２４】
ブロック３０８において、モバイルコンピューティングデバイス１０２は、アプリケーション実行制約２１４に基づいて、ネットワークリクエストが遅延可能かどうかを判定する。すなわち、モバイルコンピューティングデバイス１０２は、アプリケーション２０２のパフォーマンス又はユーザエクスペリエンスに悪影響を及ぼすことなく、ネットワークリクエストが遅延可能かどうかを判定する。例えば、いくつかの実施形態において、ネットワークリクエストは、低優先度アプリケーション２０２を理由として遅延可能である場合もあるし、アプリケーション２０２が高ネットワーク遅延を許容できることを理由として遅延可能である場合もある。反対に、いくつかの実施形態において、ネットワークリクエストは、高優先度アプリケーション２０２を理由として遅延可能でない場合もあるし、低遅延アプリケーション２０２を理由として遅延可能でない場合もあるし、アプリケーション２０２が大量の処理リソースを必要とすることを理由として遅延可能でない場合もある。リクエストが遅延可能かどうかを判定するための方法の一実施形態が、図５に関連して以下で説明される。ネットワークリクエストが遅延可能でない場合、以下でさらに説明するように、方法３００は、ブロック３１６に分岐する。ネットワークリクエストが遅延可能である場合、方法３００は、ブロック３１０に分岐する。
【００２５】
ブロック３１０において、モバイルコンピューティングデバイス１０２は、遅延されて実行されるようにネットワークリクエストをスケジューリングする。図４に関連して以下で説明するように、ネットワークリクエストの実行を遅延させることにより、モバイルコンピューティングデバイス１０２は、電力消費の低減を実現するために、後の時間に実行されるようにネットワークリクエストを日和見的にスケジューリングすることが可能になる。モバイルコンピューティングデバイス１０２は、遅延されて実行されるようにネットワークリクエストをスケジューリングするための任意の利用可能な技術を使用することができる。例えば、モバイルコンピューティングデバイス１０２は、アプリケーション２０２のプロセス、タスク、又はスレッドに、実行を中止、中断、ブロック、又は放棄させることができる。追加的又は代替的に、アプリケーション２０２は実行を続けてもよいが、別のネットワークリクエストタスク、プロセス、又はスレッドが中断され得る。いくつかの実施形態においては、ブロック３１２において、モバイルコンピューティングデバイス１０２は、ネットワークリクエストを遅延リクエストキュー２０８に追加してもよい。したがって、複数のネットワークリクエストを遅延リクエストキュー２０８に記憶することにより、モバイルコンピューティングデバイス１０２は、遅延されて実行されるように２以上のネットワークリクエストをスケジューリングすることができる。
【００２６】
いくつかの実施形態においては、ブロック３１４において、モバイルコンピューティングデバイス１０２は、アプリケーション２０２のアプリケーション実行制約２１４に基づいて、ネットワークリクエストに対して遅延タイマ２１０を設定してもよい。以下でさらに説明するように、遅延タイマ２１０を設定することにより、モバイルコンピューティングデバイス１０２は、ネットワークリクエストが所望の時間期間内に実行されることを確実にすることが可能になる。例えば、モバイルコンピューティングデバイス１０２は、遅延タイマ２１０を、アプリケーション実行制約２１４において指定されている最大の許容可能な遅延に設定することができる。この例を続けると、遅延タイマ２１０は、例えば、電子メール更新アプリケーション２０２に関しては１０分に、バックアップアプリケーション２０２に関しては２４時間に設定され得る。遅延されて実行されるようにネットワークリクエストをスケジューリングした後、方法３００は、ブロック３０２にループバックして、さらなるネットワークリクエストを待つ。
【００２７】
ブロック３０８に戻り、ネットワークリクエストが遅延可能でない場合、方法３００は、ブロック３１６に分岐する。ブロック３１６において、モバイルコンピューティングデバイス１０２は、直ちに実行されるようにネットワークリクエストをスケジューリングする。モバイルコンピューティングデバイス１０２は、直ちに実行されるようにネットワークリクエストをスケジューリングするための任意の利用可能な技術を使用することができる。例えば、モバイルコンピューティングデバイス１０２は、ネットワークリクエストを処理するプロセス、タスク、又はスレッドの実行を開始することができる。追加的又は代替的に、モバイルコンピューティングデバイス１０２は、リクエストされたネットワーク接続をオープンして、リクエスト元のアプリケーション２０２にそのネットワーク接続を返してもよいし、アプリケーション２０２を、オペレーティングシステムプロセススケジューラ又は実行キュー（図示せず）に送信してもよい。
【００２８】
いくつかの実施形態においては、ブロック３１８において、モバイルコンピューティングデバイス１０２は、現在のネットワークリクエストが直ちに実行されるようにスケジューリングされたことが決定されたときに、直ちに実行されるように他の遅延されたネットワークリクエストをスケジューリングしてもよい。例えば、モバイルコンピューティングデバイス１０２は、遅延リクエストキュー２０８に含まれる全ての遅延されたネットワークリクエストを開始してもよい。以前に遅延されたリクエストは、開始されると、ブロック３１６において開始されたリクエストと並行して実行される。したがって、全ての以前に遅延されたネットワークリクエストは、後に到達した直ちに実行されるリクエストに対して実行を「ピギーバックする（piggyback）」ことができる。他の遅延されたリクエストを開始する前に、モバイルコンピューティングデバイス１０２は、並行実行が、現在のアプリケーション２０２のアプリケーション実行制約２１４と整合するかどうかを判定することができる。例えば、並行実行は、大量の処理リソースを必要とする現在のアプリケーション２０２と整合し得ない（例えば、現在のアプリケーション２０２がプロセッサ１２０を占有している場合）。直ちに実行されるように１以上のネットワークリクエストをスケジューリングした後、方法３００は、ブロック３０２にループバックして、さらなるネットワークリクエストをモニタリングする。
【００２９】
次に図４を参照すると、使用の際、モバイルコンピューティングデバイス１０２は、ネットワークリクエストを並行実行するための方法４００を実行することができる。方法３００及び方法４００は、別々の方法として図示されているが、方法４００は、ネットワークリクエストをスケジューリングするための方法３００と並行して実行されることもあるし、方法３００と協調されることもある。方法４００は、ブロック４０２で開始する。ブロック４０２において、モバイルコンピューティングデバイス１０２は、遅延されて実行されるように以前にスケジューリングされた全てのネットワークリクエストを識別する。いくつかの実施形態においては、ブロック４０４において、モバイルコンピューティングデバイス１０２は、遅延リクエストキュー２０８に含まれる全ての遅延されたネットワークリクエストを列挙してもよい。図３に関連して上述したように、ネットワークリクエストは、ネットワークアプリケーション２０２からモバイルコンピューティングデバイス１０２により受信された後に、遅延リクエストキュー２０８に追加されたものであり得る。
【００３０】
ブロック４０６において、モバイルコンピューティングデバイス１０２は、遅延されたネットワークリクエストの数が、リクエストの閾数を超えているかどうかを判定する。いくつかの実施形態において、リクエストの閾数は、単に１つのリクエストであってよい。すなわち、モバイルコンピューティングデバイス１０２は、遅延されて実行されるようにスケジューリングされた２以上のネットワークリクエストが現在存在するかどうかを判定することができる。もちろん、他の実施形態においては、リクエストの閾数は、２つのリクエスト又は３つのリクエスト等、１より大きくてもよい。リクエストの数が閾数を超えている場合、以下で説明するように、方法４００は、分岐してブロック４１２に進む。リクエストの数が閾数を超えていない場合、方法４００は、ブロック４０８に進む。
【００３１】
ブロック４０８において、モバイルコンピューティングデバイス１０２は、遅延タイマ２１０がいずれかのネットワークリクエストに関して満了したかどうかを判定する。すなわち、モバイルコンピューティングデバイス１０２は、遅延されたネットワークリクエストのいずれかに関して、許容可能な遅延を超えたかどうか（又は、許容可能な遅延を超えそうであるかどうか）を判定することができる。モバイルコンピューティングデバイス１０２は、遅延タイマ２１０が満了したかどうかを判定するための任意の技術を使用することができる。例えば、モバイルコンピューティングデバイス１０２は、遅延タイマ２１０が満了したかどうかを判定するために、遅延リクエストキュー２０８の遅延されたネットワークリクエストの全てを繰り返すことができる。追加的又は代替的に、モバイルコンピューティングデバイス１０２は、例えば、遅延タイマ２１０により発生されたイベントをキャプチャすることにより、遅延タイマ２１０が満了したかどうかを非同期的に判定してもよい（図示せず）。
【００３２】
ブロック４１０において、モバイルコンピューティングデバイス１０２は、遅延タイマ２１０が満了したかどうかを判定する。タイマが満了していない場合、方法４００は、ブロック４０２にループバックして、遅延されたネットワークリクエストを識別することを続ける。したがって、この状況においては、遅延されたネットワークリクエストは、十分な遅延されたネットワークリクエストが受信されるまで、あるいは、いずれかのネットワークリクエストの最大遅延を超えるまで、遅延リクエストキュー２０８内に存在し続け得る。遅延タイマ２１０が満了した場合、方法４００は、ブロック４１２に進む。
【００３３】
ブロック４１２において、モバイルコンピューティングデバイス１０２は、直ちに並行して実行されるように、遅延されたネットワークリクエストをスケジューリングする。モバイルコンピューティングデバイス１０２は、遅延リクエストキュー２０８に含まれる全てのネットワークリクエストを実行することができ、実行が終わったときに遅延リクエストキュー２０８を空にすることができる。モバイルコンピューティングデバイス１０２は、直ちに実行されるようにネットワークリクエストをスケジューリングするための任意の利用可能な技術を使用することができる。例えば、モバイルコンピューティングデバイス１０２は、各ネットワークリクエストを処理するプロセス、タスク、又はスレッドの実行を開始することができる。いくつかの実施形態において、モバイルコンピューティングデバイス１０２は、リクエストされたネットワーク接続をオープンして、リクエスト元の各アプリケーション２０２にそのネットワーク接続を返してもよいし、各アプリケーション２０２を、オペレーティングシステムプロセススケジューラ又は実行キュー（図示せず）に送信してもよい。ネットワークリクエストの全てが、並行して実行されるようにスケジューリングされる。ネットワークリクエストをスケジューリングした後、方法４００は、ブロック４０２にループバックして、遅延されたネットワークリクエストを識別することを続ける。
【００３４】
次に図５を参照すると、使用の際、モバイルコンピューティングデバイス１０２は、ネットワークリクエストが遅延可能かどうかを判定するための方法５００を実行することができる。方法５００は、例えば、図３に関連して上述したブロック３０８の一部として実行することができる。方法５００は、ブロック５０２で開始する。ブロック５０２において、モバイルコンピューティングデバイス１０２は、現在のアプリケーション２０２に関連付けられたアプリケーション実行制約２１４のリソース実行制約を判別する。リソース実行制約は、ネットワークリクエストを完了するためにアプリケーション２０２により必要とされる、モバイルコンピューティングデバイス１０２のリソースを規定するものである。例えば、リソース実行制約は、必要とされるメモリリソース、データストレージリソース、又はプロセッサリソースを表すことができる。いくつかの実施形態においては、ブロック５０４において、モバイルコンピューティングデバイス１０２は、アプリケーション２０２に関する処理リソース制約を判別してもよい。処理リソース制約は、アプリケーション２０２により必要とされる、モバイルコンピューティングデバイス１０２のプロセッサ、プロセッサコア、プロセッササイクル、又は他の処理リソースの数を表すことができる。例えば、リソース実行制約は、アプリケーション２０２が必要とすることになるとアプリケーション２０２が予測する利用可能な処理リソースのパーセンテージを表すことができる。いくつかの実施形態においては、リソース実行制約は、単に、「高」処理要件又は「低」処理要件を有するものとしてアプリケーション２０２を識別するものであってもよい。
【００３５】
ブロック５０６において、モバイルコンピューティングデバイス１０２は、アプリケーション２０２がリソース集約的（resource-intensive）であるかどうかを判定する。すなわち、モバイルコンピューティングデバイス１０２は、リソース実行制約が閾リソース要件を超えているかどうかを判定する。例えば、モバイルコンピューティングデバイス１０２は、アプリケーション２０２が、全ての利用可能なプロセッササイクルを使用することになるかどうか、又は、アプリケーション２０２が、「高」処理要件を有するものとしてラベリングされているかどうかを判定することができる。アプリケーション２０２がリソース集約的である場合、方法５００は、ブロック５０８に分岐し、ブロック５０８において、方法５００は、アプリケーション２０２が遅延可能でないと返す。図３に関連して上述したように、アプリケーション２０２が遅延可能でない場合、ネットワークリクエストは、直ちに実行されるようにスケジューリングされ得る。ブロック５０６に戻り、アプリケーション２０２がリソース集約的でない場合、方法５００は、ブロック５１０に進む。
【００３６】
ブロック５１０において、モバイルコンピューティングデバイス１０２は、現在のアプリケーション２０２に関連付けられたアプリケーション実行制約２１４の緊急度実行制約を判別する。緊急度実行制約は、時間遅延に対するアプリケーション２０２の許容度を規定するものである。いくつかの実施形態においては、ブロック５１２において、モバイルコンピューティングデバイス１０２は、遅延制約を取得してもよい。遅延制約は、現在のアプリケーション２０２に関する許容可能なネットワーク遅延を表し、経過時間の観点で測定され得る。例えば、デイリーバックアップアプリケーション２０２は、数時間の遅延を許容し得、電子メールアプリケーション２０２は、数分の遅延を許容し得、リアルタイム電話アプリケーション２０２は、遅延を許容し得ない。いくつかの実施形態においては、ブロック５１４において、モバイルコンピューティングデバイス１０２は、優先度制約を取得してもよい。優先度制約は、アプリケーション２０２の相対的な重要度を表す。例えば、システムアプリケーション２０２又はユーザにより開始されるインタラクティブアプリケーション２０２は、高優先度を有し得るのに対し、バックグラウンドアプリケーション２０２は、低優先度を有し得る。いくつかの実施形態においては、ブロック５１６において、モバイルコンピューティングデバイス１０２は、アプリケーション２０２に関するアプリケーションクラスを取得してもよい。アプリケーションクラスは、アプリケーション２０２の一般的なネットワーク使用パターンを表すことができる。例えば、アプリケーションクラスは、リアルタイム通信アプリケーション、インタラクティブアプリケーション、又はバックグラウンドアプリケーションを含み得る。アプリケーションクラスは、各アプリケーション２０２に関して予め定められてもよいし、使用中のアプリケーション２０２の観測（observation）に基づいて、モバイルコンピューティングデバイス１０２により割り当てられてもよい。
【００３７】
ブロック５１８において、モバイルコンピューティングデバイス１０２は、現在のネットワークリクエストが緊急であるかどうかを判定する。モバイルコンピューティングデバイス１０２は、前に判別された緊急度実行制約が閾緊急度レベルを超えているかどうかを判定することができる。モバイルコンピューティングデバイス１０２は、緊急度の可能な尺度（measure）のうちの任意のものを使用することができる。例えば、モバイルコンピューティングデバイス１０２は、許容される遅延が閾遅延値に満たない場合に、リクエストが緊急であると判定することができる。いくつかの実施形態において、許容可能な遅延を要さない場合に、リクエストは緊急であり得る。別の例として、モバイルコンピューティングデバイス１０２は、優先度レベルが閾優先度レベルを超えている場合に、リクエストが緊急であると判定することができる。第３の例として、モバイルコンピューティングデバイス１０２は、アプリケーションクラスが、リアルタイム通信アプリケーション又はインタラクティブアプリケーション等の、緊急アプリケーションクラスの予め定められたセットに属する場合に、リクエストが緊急であると判定することができる。さらに、モバイルコンピューティングデバイス１０２は、ユーザにより提供される入力又はインジケーション（例えば、アプリケーションは高優先度アクセスを有するべきであるというインジケーション）に基づいて、リクエストが緊急であると判定することができる。リクエストが緊急である場合、方法５００は、ブロック５０８に分岐し、上述したように、遅延可能でないと返す。リクエストが緊急でない場合、方法５００は、ブロック５２０に分岐し、ブロック５２０において、方法５００は、アプリケーション２０２が遅延可能であると返す。図３に関連して上述したように、アプリケーション２０２が遅延可能である場合、ネットワークリクエストは、遅延されて実行されるようにスケジューリングされ得る。
【００３８】
次に図６を参照すると、チャート６００は、本開示に従ったモバイルコンピューティングデバイスにより達成され得る例示的な結果を示している。チャート６００に提示される結果は例示に過ぎず、他の実施形態においては、他の結果が生成され得ることを理解すべきである。チャート６００は、異なるアプリケーションワークロードを別々に実行している間と並行して実行している間との、モバイルコンピューティングデバイスの測定電力消費量を示している。例示的な表現において、アプリケーション６０２は、ＶｏＩＰアプリケーション（すなわち、遅延されて実行されるようにはスケジューリングすることができないアプリケーション）である。別々に実行された場合、アプリケーション６０２は、例えば、１１０８ｍＷの電力を消費する。例示的なアプリケーション６０４は、ウェブサーバからのファイルダウンロードであり、別々に実行された場合、例えば、１０３３ｍＷの電力を消費する。例示的なアプリケーション６０６は、ウェブサーバへのファイルアップロードであり、別々に実行された場合、例えば、１４６０ｍＷの電力を消費する。アプリケーション６０２、６０４は、並行して実行された場合、例えば、１３２４ｍＷの電力を消費し、別々に実行された場合と比較すると、電力消費量が３８％改善している。アプリケーション６０２、６０６は、並行して実行された場合、例えば、１５５５ｍＷの電力を消費し、別々に実行された場合と比較すると、電力消費量が３９％改善している。アプリケーション６０２、６０４、６０６は、並行して実行された場合、例えば、１６４３ｍＷの電力を消費し、別々に実行された場合と比較すると、電力消費量が５４％改善している。
【００３９】
本開示が、ネットワークアプリケーション２０２の観点で主に説明されたが、同じスケジューリング技術は、他のタイプのアプリケーションに関しても、電力消費を低減させることができることを理解すべきである。同様に、本開示が、無線ネットワーク１０６を介して通信するモバイルコンピューティングデバイス１０２の観点で主に説明されたが、同じスケジューリング技術は、デスクトップ及びサーバ等の固定型のコンピュータ又は基本的には固定型のコンピュータに関してだけでなく、有線ネットワークを介する通信に関しても、電力消費を低減させることができることを理解すべきである。
【００４０】
例
本明細書で開示した技術の例示的な例が、以下に提供される。本技術の実施形態は、以下に記載の例の任意の１以上と任意の組合せとを含み得る。
【００４１】
例１は、アプリケーションをスケジューリングするためのモバイルコンピューティングデバイスであって、前記モバイルコンピューティングデバイスの第１のネットワークアプリケーションから第１のネットワークリクエストを受信し、前記第１のネットワークアプリケーションに関する１以上の第１の実行制約を判別し、前記１以上の第１の実行制約に基づいて、前記第１のネットワークリクエストが遅延可能かどうかを判定し、前記第１のネットワークリクエストが遅延可能であるという判定に応じて、遅延されて実行されるように前記第１のネットワークリクエストをスケジューリングし、前記モバイルコンピューティングデバイスの第２のネットワークアプリケーションから第２のネットワークリクエストを受信し、前記第２のネットワークリクエストの受信に応じて、並行して実行されるように前記第１のネットワークリクエスト及び前記第２のネットワークリクエストをスケジューリングするアプリケーションスケジューラモジュールを備えたモバイルコンピューティングデバイスを含む。
【００４２】
例２は、例１の主題を含み、前記１以上の第１の実行制約を判別することは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションの緊急度レベルを判別することを含み、前記第１のネットワークリクエストが遅延可能かどうかを判定することは、前記緊急度レベルが閾緊急度レベルに満たないかどうかを判定することを含む。
【００４３】
例３は、例１及び２のいずれかの例の主題を含み、前記緊急度レベルは、前記第１のネットワークアプリケーションの優先度を含み、前記閾緊急度レベルは、閾優先度を含む。
【００４４】
例４は、例１〜３のいずれかの例の主題を含み、前記緊急度レベルは、前記第１のネットワークアプリケーションのアプリケーションクラスを含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定することは、前記アプリケーションクラスが、緊急アプリケーションクラスの予め定められたセットに属するかどうかを判定することを含む。
【００４５】
例５は、例１〜４のいずれかの例の主題を含み、前記緊急度レベルは、前記第１のネットワークアプリケーションの許容可能な遅延を含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定することは、前記許容可能な遅延が閾遅延値を超えているかどうかを判定することを含む。
【００４６】
例６は、例１〜５のいずれかの例の主題を含み、遅延されて実行されるように前記第１のネットワークリクエストをスケジューリングすることは、前記第１のネットワークアプリケーションの前記許容可能な遅延に基づいて、遅延タイマを設定することを含み、前記アプリケーションスケジューラモジュールは、さらに、前記遅延タイマが満了したかどうかを判定し、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、前記遅延タイマが満了したという判定に応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを並行して実行することを含む。
【００４７】
例７は、例１〜６のいずれかの例の主題を含み、前記１以上の第１の実行制約を判別することは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションのリソース要件を判別することを含み、前記第１のネットワークリクエストが遅延可能かどうかを判定することは、前記リソース要件が閾リソース要件に満たないかどうかを判定することを含む。
【００４８】
例８は、例１〜７のいずれかの例の主題を含み、前記リソース要件は、前記第１のネットワークアプリケーションのプロセッサ要件を含み、前記閾リソース要件は、閾プロセッサ要件を含む。
【００４９】
例９は、例１〜８のいずれかの例の主題を含み、前記アプリケーションスケジューラモジュールは、さらに、前記第２のネットワークアプリケーションに関する１以上の第２の実行制約を判別し、前記１以上の第２の実行制約に基づいて、前記第２のネットワークリクエストが遅延可能かどうかを判定し、前記第２のネットワークリクエストが遅延可能であるという判定に応じて、遅延されて実行されるように前記第２のネットワークリクエストをスケジューリングし、前記第２のネットワークリクエストのスケジューリングに応じて、閾数を超えるネットワークリクエストが、遅延されて実行されるようにスケジューリングされているかどうかを判定し、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、前記閾数を超えるネットワークリクエストが、遅延されて実行されるようにスケジューリングされているという判定に応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することを含む。
【００５０】
例１０は、例１〜９のいずれかの例の主題を含み、前記アプリケーションスケジューラモジュールは、さらに、前記第２のネットワークアプリケーションに関する１以上の第２の実行制約を判別し、前記１以上の第２の実行制約に基づいて、前記第２のネットワークリクエストが遅延可能かどうかを判定し、前記第２のネットワークリクエストが遅延可能でないという判定に応じて、直ちに実行されるように前記第２のネットワークリクエストをスケジューリングし、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、直ちに実行されるように前記第２のネットワークリクエストがスケジューリングされたことに応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを並行して実行することを含む。
【００５１】
例１１は、例１〜１０のいずれかの例の主題を含み、前記１以上の第２の実行制約を判別することは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションの緊急度レベルを判別することを含み、前記第２のネットワークリクエストが遅延可能かどうかを判定することは、該緊急度レベルが閾緊急度レベルに満たないかどうかを判定することを含む。
【００５２】
例１２は、例１〜１１のいずれかの例の主題を含み、前記緊急度レベルは、前記第２のネットワークアプリケーションの優先度を含み、前記閾緊急度レベルは、閾優先度を含む。
【００５３】
例１３は、例１〜１２のいずれかの例の主題を含み、前記緊急度レベルは、前記第２のネットワークアプリケーションのアプリケーションクラスを含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定することは、該アプリケーションクラスが、緊急アプリケーションクラスの予め定められたセットに属するかどうかを判定することを含む。
【００５４】
例１４は、例１〜１３のいずれかの例の主題を含み、前記緊急度レベルは、前記第２のネットワークアプリケーションの許容可能な遅延を含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定することは、該許容可能な遅延が閾遅延値を超えているかどうかを判定することを含む。
【００５５】
例１５は、例１〜１４のいずれかの例の主題を含み、前記１以上の第２の実行制約を判別することは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションのリソース要件を判別することを含み、前記第２のネットワークリクエストが遅延可能かどうかを判定することは、該リソース要件が閾リソース要件に満たないかどうかを判定することを含む。
【００５６】
例１６は、例１〜１５のいずれかの例の主題を含み、前記リソース要件は、前記第２のネットワークアプリケーションのプロセッサ要件を含み、前記閾リソース要件は、閾プロセッサ要件を含む。
【００５７】
例１７は、例１〜１６のいずれかの例の主題を含み、前記１以上の第１の実行制約を判別することは、前記モバイルコンピューティングデバイスの実行制約データベースから前記１以上の第１の実行制約を判別することを含む。
【００５８】
例１８は、例１〜１７のいずれかの例の主題を含み、前記１以上の第１の実行制約は、前記第１のネットワークリクエストの受信前に、前記第１のネットワークアプリケーションにより、前記実行制約データベースに提供されている。
【００５９】
例１９は、アプリケーションをスケジューリングするための方法であって、モバイルコンピューティングデバイスにより、前記モバイルコンピューティングデバイスの第１のネットワークアプリケーションから第１のネットワークリクエストを受信するステップと、前記モバイルコンピューティングデバイスにより、前記第１のネットワークアプリケーションに関する１以上の第１の実行制約を判別するステップと、前記モバイルコンピューティングデバイスにより、前記１以上の第１の実行制約に基づいて、前記第１のネットワークリクエストが遅延可能かどうかを判定するステップと、前記モバイルコンピューティングデバイスにより、前記第１のネットワークリクエストが遅延可能であるという判定に応じて、遅延されて実行されるように前記第１のネットワークリクエストをスケジューリングするステップと、前記モバイルコンピューティングデバイスにより、前記モバイルコンピューティングデバイスの第２のネットワークアプリケーションから第２のネットワークリクエストを受信するステップと、前記モバイルコンピューティングデバイスにより、前記第２のネットワークリクエストの受信に応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを並行して実行するステップと、を含む方法を含む。
【００６０】
例２０は、例１９の主題を含み、前記１以上の第１の実行制約を判別するステップは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションの緊急度レベルを判別するステップを含み、前記第１のネットワークリクエストが遅延可能かどうかを判定するステップは、前記緊急度レベルが閾緊急度レベルに満たないかどうかを判定するステップを含む。
【００６１】
例２１は、例１９及び２０のいずれかの例の主題を含み、前記緊急度レベルを判別するステップは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションの優先度を判別するステップを含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定するステップは、前記優先度が閾優先度に満たないかどうかを判定するステップを含む。
【００６２】
例２２は、例１９〜２１のいずれかの例の主題を含み、前記緊急度レベルを判別するステップは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションのアプリケーションクラスを判別するステップを含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定するステップは、前記アプリケーションクラスが、緊急アプリケーションクラスの予め定められたセットに属するかどうかを判定するステップを含む。
【００６３】
例２３は、例１９〜２２のいずれかの例の主題を含み、前記緊急度レベルを判別するステップは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションの許容可能な遅延を判別するステップを含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定するステップは、前記許容可能な遅延が閾遅延値を超えているかどうかを判定するステップを含む。
【００６４】
例２４は、例１９〜２３のいずれかの例の主題を含み、遅延されて実行されるように前記第１のネットワークリクエストをスケジューリングするステップは、前記第１のネットワークアプリケーションの前記許容可能な遅延に基づいて、遅延タイマを設定するステップを含み、前記方法は、前記モバイルコンピューティングデバイスにより、前記遅延タイマが満了したかどうかを判定するステップをさらに含み、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、前記遅延タイマが満了したという判定に応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを並行して実行することを含む。
【００６５】
例２５は、例１９〜２４のいずれかの例の主題を含み、前記１以上の第１の実行制約を判別するステップは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションのリソース要件を判別するステップを含み、前記第１のネットワークリクエストが遅延可能かどうかを判定するステップは、前記リソース要件が閾リソース要件に満たないかどうかを判定するステップを含む。
【００６６】
例２６は、例１９〜２５のいずれかの例の主題を含み、前記リソース要件を判別するステップは、前記１以上の第１の実行制約に基づいて、前記第１のネットワークアプリケーションのプロセッサ要件を判別するステップを含み、前記リソース要件が前記閾リソース要件に満たないかどうかを判定するステップは、前記プロセッサ要件が閾プロセッサ要件に満たないかどうかを判定するステップを含む。
【００６７】
例２７は、例１９〜２６のいずれかの例の主題を含み、前記モバイルコンピューティングデバイスにより、前記第２のネットワークアプリケーションに関する１以上の第２の実行制約を判別するステップと、前記モバイルコンピューティングデバイスにより、前記１以上の第２の実行制約に基づいて、前記第２のネットワークリクエストが遅延可能かどうかを判定するステップと、前記モバイルコンピューティングデバイスにより、前記第２のネットワークリクエストが遅延可能であるという判定に応じて、遅延されて実行されるように前記第２のネットワークリクエストをスケジューリングするステップと、前記モバイルコンピューティングデバイスにより、前記第２のネットワークリクエストのスケジューリングに応じて、閾数を超えるネットワークリクエストが、遅延されて実行されるようにスケジューリングされているかどうかを判定するステップと、をさらに含み、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、前記閾数を超えるネットワークリクエストが、遅延されて実行されるようにスケジューリングされているという判定に応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することを含む。
【００６８】
例２８は、例１９〜２７のいずれかの例の主題を含み、前記モバイルコンピューティングデバイスにより、前記第２のネットワークアプリケーションに関する１以上の第２の実行制約を判別するステップと、前記モバイルコンピューティングデバイスにより、前記１以上の第２の実行制約に基づいて、前記第２のネットワークリクエストが遅延可能かどうかを判定するステップと、前記モバイルコンピューティングデバイスにより、前記第２のネットワークリクエストが遅延可能でないという判定に応じて、直ちに実行されるように前記第２のネットワークリクエストをスケジューリングするステップと、をさらに含み、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを実行することは、直ちに実行されるように前記第２のネットワークリクエストがスケジューリングされたことに応じて、前記第１のネットワークリクエスト及び前記第２のネットワークリクエストを並行して実行することを含む。
【００６９】
例２９は、例１９〜２８のいずれかの例の主題を含み、前記１以上の第２の実行制約を判別するステップは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションの緊急度レベルを判別するステップを含み、前記第２のネットワークリクエストが遅延可能かどうかを判定するステップは、該緊急度レベルが閾緊急度レベルに満たないかどうかを判定するステップを含む。
【００７０】
例３０は、例１９〜２９のいずれかの例の主題を含み、前記緊急度レベルを判別するステップは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションの優先度を判別するステップを含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定するステップは、該優先度が閾優先度に満たないかどうかを判定するステップを含む。
【００７１】
例３１は、例１９〜３０のいずれかの例の主題を含み、前記緊急度レベルを判別するステップは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションのアプリケーションクラスを判別するステップを含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定するステップは、該アプリケーションクラスが、緊急アプリケーションクラスの予め定められたセットに属するかどうかを判定するステップを含む。
【００７２】
例３２は、例１９〜３１のいずれかの例の主題を含み、前記緊急度レベルを判別するステップは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションの許容可能な遅延を判別するステップを含み、前記緊急度レベルが前記閾緊急度レベルに満たないかどうかを判定するステップは、該許容可能な遅延が閾遅延値を超えているかどうかを判定するステップを含む。
【００７３】
例３３は、例１９〜３２のいずれかの例の主題を含み、前記１以上の第２の実行制約を判別するステップは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションのリソース要件を判別するステップを含み、前記第２のネットワークリクエストが遅延可能かどうかを判定するステップは、該リソース要件が閾リソース要件に満たないかどうかを判定するステップを含む。
【００７４】
例３４は、例１９〜３３のいずれかの例の主題を含み、前記リソース要件を判別するステップは、前記１以上の第２の実行制約に基づいて、前記第２のネットワークアプリケーションのプロセッサ要件を判別するステップを含み、前記リソース要件が前記閾リソース要件に満たないかどうかを判定するステップは、該プロセッサ要件が閾プロセッサ要件に満たないかどうかを判定するステップを含む。
【００７５】
例３５は、例１９〜３４のいずれかの例の主題を含み、前記１以上の第１の実行制約を判別するステップは、前記モバイルコンピューティングデバイスの実行制約データベースから前記１以上の第１の実行制約を判別するステップを含む。
【００７６】
例３６は、例１９〜３５のいずれかの例の主題を含み、前記１以上の第１の実行制約は、前記第１のネットワークリクエストの受信前に、前記第１のネットワークアプリケーションにより、前記実行制約データベースに提供されている。
【００７７】
例３７は、コンピューティングデバイスであって、プロセッサと、複数の命令を記憶しているメモリであって、前記複数の命令は、前記プロセッサにより実行されたときに、前記コンピューティングデバイスに、例１９〜３６のいずれかの例の方法を実行させる、メモリと、を備えたコンピューティングデバイスを含む。
【００７８】
例３８は、複数の命令を記憶している１以上のマシン読み取り可能な記憶媒体であって、前記複数の命令が実行されたことに応じて、前記複数の命令は、コンピューティングデバイスに、例１９〜３６のいずれかの例の方法を実行させる、１以上のマシン読み取り可能な記憶媒体を含む。
【００７９】
例３９は、例１９〜３６のいずれかの例の方法を実行する手段を備えたコンピューティングデバイスを含む。
【図１】
2016528648.tif 000003
【図２】
2016528648.tif 000004
【図３】
2016528648.tif 000005
【図４】
2016528648.tif 000006
【図５】
2016528648.tif 000007
【図６】
2016528648.tif 000008
【国際調査報告】
2016528648.tif 000009
2016528648.tif 000010