JP7275171B2 - オンデマンドネットワークコード実行システムにおけるオペレーティングシステムカスタマイゼーション - Google Patents

オンデマンドネットワークコード実行システムにおけるオペレーティングシステムカスタマイゼーション Download PDF

Info

Publication number
JP7275171B2
JP7275171B2 JP2020572443A JP2020572443A JP7275171B2 JP 7275171 B2 JP7275171 B2 JP 7275171B2 JP 2020572443 A JP2020572443 A JP 2020572443A JP 2020572443 A JP2020572443 A JP 2020572443A JP 7275171 B2 JP7275171 B2 JP 7275171B2
Authority
JP
Japan
Prior art keywords
code
user
variant
virtual machine
task
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.)
Active
Application number
JP2020572443A
Other languages
English (en)
Other versions
JP2021530037A (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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2021530037A publication Critical patent/JP2021530037A/ja
Application granted granted Critical
Publication of JP7275171B2 publication Critical patent/JP7275171B2/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

コンピューティングデバイスは通信ネットワークを用いてデータを交換することができる。会社および組織は、多くのコンピューティングデバイスを相互接続するコンピュータネットワークを稼働させて、業務をサポートするか、または第三者にサービスを提供する。コンピューティングシステムは、単一の地理的位置に配置することもできるし、または複数の別個の地理的位置に配置することもできる(たとえば、プライベートまたはパブリック通信ネットワークを介して相互接続されている)。具体的には、データセンタまたはデータ処理センタ(本明細書では、全般的に「データセンタ」と言う)には、多くの相互接続されたコンピューティングシステムが含まれており、データセンタのユーザにコンピューティングリソースを提供することができる。データセンタは、組織の代わりに運営されるプライベートデータセンタの場合もあるし、一般大衆の代わりにもしくは一般大衆の利益のために運営されるパブリックデータセンタの場合もある。
データセンタリソースの利用の増加を促すために、仮想化技術を用いることで、単一の物理コンピューティングデバイスが仮想マシンの1つ以上のインスタンスをホストすることができる。仮想マシンの1つ以上のインスタンスは、データセンタのユーザに対して独立したコンピューティングデバイスのように見えてそのように稼働する。仮想化によって、単一の物理コンピューティングデバイスは、仮想マシンを動的な方法で形成し、保持し、削除し、または他の方法で管理することができる。その結果、ユーザは、データセンタからコンピュータリソース(たとえば、単一のコンピューティングデバイスまたはネットワーク接続されたコンピューティングデバイスの構成)を得ることがリクエストでき、様々な数の仮想マシンリソースを受けることができる。
いくつかのシナリオでは、仮想マシンインスタンスを多くの仮想マシンインスタンスタイプに従って構成して特定の機能を実現してもよい。たとえば、種々のコンピューティングデバイスを、オペレーティングシステムまたはオペレーティングシステム構成、仮想化されたハードウェアリソース、およびソフトウェアアプリケーションの異なる組み合わせと対応付けて、コンピューティングデバイスが異なる所望の機能を実現するかまたは同様の機能をより効率的に実現できるようにする場合がある。これらの仮想マシンインスタンスタイプの構成はデバイスイメージに含まれることが多い。デバイスイメージには、起動すると仮想マシンが実行するソフトウェア(たとえば、OSおよびアプリケーションとともにその構成ファイルおよびデータファイルなど)が含まれる静的データが含まれる。デバイスイメージは典型的には、インスタンスを生成または初期化するために用いるディスクに記憶される。したがって、コンピューティングデバイスは、所望のソフトウェア構成を実施するために、デバイスイメージを処理する場合がある。
オンデマンドコード実行システムが動作して、コード(オンデマンドコード実行システムのユーザが送出してもよい)に対応するタスクを実行することができ、また仮想マシンオペレーティングシステムのカスタマイゼーションを可能にして送出されたコードの実行を容易にすることができる例示的な環境を示すブロック図である。 図1のオンデマンドコード実行システムでのタスクの実行を容易にするために用いられるOSのカスタマイゼーションを容易にするように構成されたOSカスタマイズシステムを提供するコンピューティングデバイスの一般的なアーキテクチャを示す。 図1のオンデマンドコード実行システムにタスクに対応するコードを送信し、オンデマンドコード実行システムが、オンデマンドコード実行システムでのタスクの実行を容易にするためのカスタマイズされたオペレーティングシステムを提供するための例示的な相互作用を示すフロー図である。 図1のオンデマンドコード実行システムで提供されるカスタマイズされたオペレーティングシステムを用いてタスクを実行するための例示的な相互作用を示すフロー図である。 図1のオンデマンドコード実行システムでの実行タスクの分析に基づいて、図1のオンデマンドコード実行システムのカスタマイズされたオペレーティングシステムを変更するための例示的な相互作用を示すフロー図である。 図1のオンデマンドコード実行システムでのタスクの実行を容易にするために生成または選択され得るカスタマイズされたオペレーティングシステムの例示的な可視化を示す図である。 図1のオンデマンドコード実行システムでのタスクの実行を容易にするOS構成を決定するための例示的なルーチンを示すフローチャートである。
概略的に述べると、本開示の態様はオンデマンドコード実行システムに関する。オンデマンドコード実行システムによりコードの迅速な実行が可能になる。コードは、オンデマンドコード実行システムのユーザが供給してもよい。より具体的には、本開示の実施形態は、オンデマンドコード実行システムにおけるコードの迅速な実行を容易にするように仮想マシンオペレーティングシステムをカスタマイズすることに関する。本明細書で詳細に説明するように、オンデマンドコード実行システムによって、オンデマンドコード実行システムで仮想マシンインスタンスが実行すべきコンピュータ実行可能なコードをユーザが送出または指定することができるようにするネットワークアクセス可能なサービスを提供し得る。オンデマンドコード実行システムの各コードセットは、「タスク」を規定してもよく、オンデマンドコード実行システムの仮想マシンインスタンスで実行されたときに、そのタスクに対応する特定の機能を実施してもよい。オンデマンドコード実行システムのタスクの個々の実施態様をタスクの「実行」(または「タスク実行」)と言ってもよい。オンデマンドコード実行システムによってさらに、ユーザが、種々の潜在的なイベント(たとえば、ネットワークベースのストレージシステムにおいて新しいデータを検出すること、オンデマンドコード実行システムにアプリケーションプログラミングインターフェース(「API」)コールを送信すること、またはオンデマンドコード実行システムに特別にフォーマットされたハイパーテキストトランスポートプロトコル(「HTTP」)パケットを送信すること)に基づいて、タスクの実行をトリガーすることができる。こうして、ユーザは、オンデマンドコード実行システムを用いて、任意の指定の実行可能コードを「オンデマンド」で実行することが、コードが実行される基盤となるハードウェアまたはインフラストラクチャの構成またはメンテナンスを必要とせずに可能となる。さらに、オンデマンドコード実行システムを、タスクを迅速に(たとえば、100ミリ秒[ms]未満で)実行するように構成してもよく、その結果、実行タスクを「リアルタイム」で(たとえば、エンドユーザに対する認知できる遅延がほとんどないかまたはまったくない状態で)実行することができる。
オンデマンドコード実行システムによって仮想マシンインスタンスをインスタンス化して、指定のタスクを、オンデマンドで実行してもよい。仮想マシンインスタンスにオペレーティングシステムをプロビジョニングしてもよい。オペレーティングシステムによって、ユーザ指定の実行可能コードが実行中に必要とし得る機能が提供される。たとえば、オペレーティングシステムによって、たとえば、タスクスケジューリング、ファイルシステム管理、メモリ管理、キャッシング、プロファイリング、ネットワーキング、ハードウェアデバイスドライバなどの機能を提供し得る。ある場合には、仮想マシンインスタンスをインスタンス化して、それにオペレーティングシステムをプロビジョニングするために必要な時間は、タスクを実行するために必要な全時間と比べて著しい場合がある。
本開示を考慮すれば当業者に理解されるように、本明細書で開示した実施形態によって、オンデマンドコード実行システムなどのコンピューティングシステムが効率的にコードを実行する能力が向上する。また、本開示の実施形態は、コンピューティングシステム内での固有の技術的な問題に対処する。具体的には、コードを実行する際に用いるコンピューティングリソースの性質が限定されていること、コード実行を容易にするために仮想マシンにオペレーティングシステムをプロビジョニングすることに付随するリソースオーバーヘッド、および使用されていない機能をプロビジョニングすることによって生じる非効率性である。これらの技術的な問題に、本明細書で説明する種々の技術的解決法が対処する。たとえば、実行すべきコードによって要求される機能に基づいて、カスタマイズされたオペレーティングシステムを実行環境にプロビジョニングすることである。したがって、本開示では、全般的に、既存のデータ処理システムおよびコンピューティングシステムに対する改善を表す。
オンデマンドコード実行システムには、仮想マシンインスタンスマネージャであって、仮想マシンインスタンスのユーザ構成を必要とすることなく、ユーザコード(スレッド、プログラムなど、種々のプログラミング言語のいずれかで構成されている)を受け取って、高度に拡張可能で低遅延な方法でコードを実行するように構成されている仮想マシンインスタンスマネージャが含まれていてもよい。具体的には、仮想マシンインスタンスマネージャは、ユーザコードを受け取る前に、またユーザから何らかの特定の仮想マシンインスタンス構成に関する何らかの情報を受け取る前に、所定の構成のセットに従って仮想マシンインスタンスを生成および構成することができる。各構成は種々のランタイム環境のいずれか1つ以上に対応する。その後、仮想マシンインスタンスマネージャは、コードを実行するユーザ開始リクエストを受け取り、リクエストに付随する構成情報に基づいてコードを実行する事前構成済み仮想マシンインスタンスを特定する。仮想マシンインスタンスマネージャはさらに、特定した仮想マシンインスタンスを割り当ててユーザのコードを実行することができ、これは、少なくとも部分的に、割り当てられた仮想マシンインスタンス内にコンテナを生成および構成し、コンテナにタスクのコードならびに依存関係コードオブジェクトをプロビジョニングすることによって行うことができる。仮想マシンインスタンスマネージャを実施するための、および仮想マシンインスタンスでユーザコードを実行するための種々の実施形態が、以下の文献により詳細に説明されている。米国特許第9,323,556号、発明の名称「PROGRAMMATIC EVENT DETECTION AND MESSAGE GENERATION FOR REQUESTS TO EXECUTE PROGRAM CODE」(2014年9月30日に出願)(以下、「’556特許」という)。この文献の全体が参照により本明細書に組み込まれている。
本明細書で用いる場合、用語「仮想マシンインスタンス」は、ソフトウェアを実行し得る環境またはプラットフォーム(「実行環境」)を提供するハードウェアをエミュレートするソフトウェアまたは他の実行可能コードの実行を指すことが意図されている。仮想マシンインスタンスは一般的に、ハードウェアデバイスによって実行される。ハードウェアデバイスは、仮想マシンインスタンスがエミュレートする物理ハードウェアとは異なる場合がある。たとえば、仮想マシンは、第2の種類のプロセッサおよびメモリで実行されている間に、第1の種類のプロセッサおよびメモリをエミュレートしてもよい。したがって、仮想マシンを用いて、第2の実行環境(たとえば、第2のオペレーティングシステム)を実行する物理デバイスで、第1の実行環境(たとえば、第1のオペレーティングシステム)を対象としたソフトウェアを実行することができる。場合によっては、仮想マシンインスタンスがエミュレートするハードウェアは、基盤となるデバイスのハードウェアと同じかまたは同様であってもよい。たとえば、第1の種類のプロセッサを伴うデバイスが、複数の仮想マシンインスタンス(それぞれが、その第1の種類のプロセッサのインスタンスをエミュレートする)を実施してもよい。したがって、仮想マシンインスタンスを用いて、デバイスを多くのロジカルサブデバイス(それぞれを「仮想マシンインスタンス」と言う)に分割することができる。仮想マシンインスタンスは一般的に、基盤となる物理デバイスのハードウェアから離れたレベルの抽象化を提供することができるが、この抽象化は必須ではない。たとえば、デバイスが複数の仮想マシンインスタンス(それぞれが、デバイスが提供するハードウェアと同一のものをエミュレートする)を実施することを想定する。このようなシナリオの下で、各仮想マシンインスタンスによって、ソフトウェアアプリケーションが、基盤となるハードウェアでコードを変換せずに実行することができ、それと同時に、他の仮想マシンインスタンスで実行されるソフトウェアアプリケーション間の論理的な分離を維持することができてもよい。このプロセス(一般的に「ネイティブ実行」と言ってもよい)を用いて、仮想マシンインスタンスの速度または性能を上げてもよい。基盤となるハードウェアの直接利用を可能にする他の技術(たとえば、ハードウェアパススルー技術)を用いてもよい。
本明細書では、実行環境の一例として、オペレーティングシステムを実行する仮想マシンについて説明しているが、他の実行環境も可能である。たとえば、タスクまたは他のプロセスをソフトウェア「コンテナ」内で実行してもよい。「コンテナ」はランタイム環境を提供するが、それ自体はハードウェアの仮想化はもたらさない。コンテナは、さらなるセキュリティを提供するために、仮想マシンの中で実施してもよいし、仮想マシンインスタンスの外で実行してもよい。
前述の態様、および本開示の付随する利点の多くは、添付の図面と関連してとらえると、以下の説明を参照することにより、同様のことがよりよく理解されるようになるため、より容易に理解されるであろう。
図1は、例示的な動作環境100のブロック図である。動作環境100では、オンデマンドコード実行システム110が、ユーザコンピューティングデバイス102、補助サービス106、およびネットワークベースのデータ記憶サービス108との通信に基づいて動作してもよい。例として、種々のユーザコンピューティングデバイス102が、図示では、オンデマンドコード実行システム110と通信している。ユーザコンピューティングデバイス102としては、デスクトップコンピュータ、ラップトップ、および携帯電話が挙げられる。一般的に、ユーザコンピューティングデバイス102は、たとえば、デスクトップ、ラップトップまたはタブレットコンピュータ、パーソナルコンピュータ、ウェアラブルコンピュータ、サーバ、携帯情報端末(PDA)、ハイブリッドPDA/携帯電話、携帯電話、電子ブックリーダ、セットトップボックス、音声コマンドデバイス、カメラ、デジタルメディアプレーヤなどの任意のコンピューティングデバイスとすることができる。オンデマンドコード実行システム110は、ユーザコンピューティングデバイス102に、1つ以上のユーザインターフェース、コマンドラインインターフェース(CLI)、アプリケーションプログラミングインターフェース(API)、および/または他のプログラマチックインターフェースであって、ユーザ実行可能コード(たとえば、アップロードされたコードに対する依存関係コードオブジェクトを特定するメタデータなど)を生成およびアップロードし、ユーザ提供コードを呼び出し(たとえば、オンデマンドコード実行システム110でユーザコードを実行するリクエストを送出し)、イベントベースのジョブまたは時限ジョブをスケジュールし、ユーザ提供コードを追跡し、ならびに/またはそのリクエストおよび/もしくはユーザコードに関する他のログインもしくはモニタリング情報を視認するためのプログラマチックインターフェース、を提供し得る。本明細書では、1つ以上の実施形態についてユーザインターフェースを用いていると説明する場合があるが、当然のことながら、このような実施形態は、それに加えてまたはその代わりに、任意のCLI、API、または他のプログラマチックインターフェースを用いてもよい。
例示的な環境100にはさらに、1つ以上の補助サービス106が含まれている。補助サービス106は、ワンデマンドコード実行環境110と相互に対話して、ユーザの代わりに所望の機能を実施することができる。補助サービス106は、サーバなどのネットワーク接続されたコンピューティングデバイスに対応することができる。これは、ワンデマンドコード実行環境110がアクセス可能なデータを生成するか、または他の方法でワンデマンドコード実行環境110と通信する。たとえば、補助サービス106は、ウェブサービス(たとえば、ユーザコンピューティングデバイス102、オンデマンドコード実行システム110、または第三者と対応付けられる)、データベース、本当にシンプルなシンジケーション(「RSS」)リーダ、ソーシャルネットワーキングサイト、またはネットワークにアクセス可能なサービスの任意の他のソースもしくはデータソース、を含み得る。場合によっては、補助サービス106をオンデマンドコード実行システム110と対応付けて、たとえば、オンデマンドコード実行システム110にビリングまたはロギングサービスを提供してもよい。場合によっては、補助サービス106は、APIコールまたは他のタスクトリガリング情報などの情報を、オンデマンドコード実行システム110に能動的に送信する。場合によっては、オンデマンドコード実行システム110によるアクセスに対してデータが利用可能になるように、補助サービス106は受動的であってもよい。たとえば、オンデマンドコード実行システム110のコンポーネントは、このような受動的なデータソースを定期的にポーリングし、提供されたデータに基づいてオンデマンドコード実行システム110内でタスクの実行をトリガーしてもよい。図1では、ユーザコンピューティングデバイス102およびオンデマンドコード実行システム110とは別個であると示しているが、いくつかの実施形態では、種々の補助サービス106をユーザコンピューティングデバイス102またはオンデマンドコード実行システム110のいずれかが実施してもよい。
例示的な環境100にはさらに、1つ以上のネットワークベースのデータ記憶サービス108(オンデマンドコード実行システム110が1つ以上の永続的なまたは実質的に永続的なデータソースにデータを記憶して取り出すことができるように構成されている)が含まれている。例示的に、ネットワークベースのデータ記憶サービス108は、オンデマンドコード実行システム110が、コードまたはメタデータなどのタスクに対応する情報を記憶し、タスクの依存関係を表すさらなるコードオブジェクトを記憶し、処理すべきデータをタスクの実行中に取り出し、およびその実行に関する情報(たとえば、結果)を記憶することを可能にし得る。ネットワークベースのデータ記憶サービス108は、たとえば、リレーショナルまたは非リレーショナルデータベースを表してもよい。別の例では、ネットワークベースのデータ記憶サービス108は、ネットワーク接続された記憶装置(NAS)(ファイルシステムとして配置されたデータにアクセスするように構成されている)を表してもよい。ネットワークベースのデータ記憶サービス108によってさらに、オンデマンドコード実行システム110が、オンデマンドコード実行システム110内に記憶されたデータに関する情報について問い合わせて取り出すことが、たとえば、多くの関連するファイルまたはレコード、これらのファイルまたはレコードのサイズ、ファイルまたはレコードの名前、ファイルまたはレコードの作成時間などについて問い合わせることによって可能になってもよい。場合によっては、ネットワークベースのデータ記憶サービス108は、データを論理グループ(たとえば、個々のアカウントに対応付けられるグループなど)に分離することができる等のさらなる機能を提供してもよい。補助サービス106とは別個であると示しているが、ネットワークベースのデータ記憶サービス108は、ある場合には、補助サービス106の種類を表してもよい。
ユーザコンピューティングデバイス102、補助サービス106、およびネットワークベースのデータ記憶サービス108は、オンデマンドコード実行システム110とネットワーク104を介して通信してもよい。ネットワーク104としては、任意の有線ネットワーク、無線ネットワーク、またはそれらの組み合わせを挙げてもよい。たとえば、ネットワーク104は、パーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、オーバージエアブロードキャストネットワーク(たとえば、ラジオまたはテレビジョン用)、ケーブルネットワーク、衛星ネットワーク、セルラー電話ネットワーク、またはそれらの組み合わせであってもよい。さらなる例として、ネットワーク104は、リンクされたネットワーク(可能性として、種々の別個の当事者が稼働させる)のうちの公衆アクセス可能なネットワーク、たとえばインターネットであってもよい。いくつかの実施形態では、ネットワーク104は、企業または大学のイントラネットなどのプライベートまたはセミプライベートネットワークであってもよい。ネットワーク104は、モバイル通信用グローバルシステム(GSM)ネットワーク、符号分割多元接続(CDMA)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、または任意の他の種類の無線ネットワークなどの1つ以上の無線ネットワークを含み得る。ネットワーク104は、インターネットまたはその他の前述の種類のネットワークのいずれかを介して通信するためのプロトコルおよびコンポーネントを用いることができる。たとえば、ネットワーク104が用いるプロトコルとしては、ハイパーテキスト転送プロトコル(HTTP)、HTTPセキュア(HTTPS)、メッセージキューテレメトリートランスポート(MQTT)、制約アプリケーションプロトコル(CoAP)などを挙げてもよい。インターネットまたはその他の前述の種類の通信ネットワークのいずれかを介して通信するためのプロトコルおよびコンポーネントは、当業者には良く知られているので、本明細書ではこれ以上詳細には説明しない。
オンデマンドコード実行システム110は、図1では、1つ以上のコンピュータネットワーク(図1に示さず)を用いて相互接続されたいくつかのコンピュータシステムを含む分散コンピューティング環境において動作すると示している。オンデマンドコード実行システム110はまた、図1に例示したものよりも数が少ないかまたは多いデバイスを有するコンピューティング環境内で動作することもできる。したがって、図1のオンデマンドコード実行システム110の表現は例示的なものであって本開示を限定すると考えてはならない。たとえば、オンデマンドコード実行システム110またはその種々の構成要素は、種々のウェブサービスコンポーネント、ホストされたまたは「クラウド」コンピューティング環境、および/またはピアトゥピアネットワーク構成を実施して、本明細書で説明するプロセスの少なくとも一部を実施することができる。
さらに、オンデマンドコード実行システム110は、直接ハードウェアでまたはハードウェアデバイスが実行するソフトウェアで実施してもよく、また、たとえば、本明細書で説明する種々の特徴を実施するためのコンピュータ実行可能命令を実行するように構成された物理コンピュータハードウェアで実施される1つ以上の物理または仮想サーバが含まれていてもよい。1つ以上のサーバは地理的に分散させてもよいし、または地理的に同じ場所(たとえば、1つ以上のデータセンタ)に配置してもよい。ある場合には、1つ以上のサーバは、速やかにプロビジョニングおよびリリースされるコンピューティングリソース(「クラウドコンピューティング環境」と言われることが多い)のシステムの一部として動作してもよい。
図1の例では、オンデマンドコード実行システム110はネットワーク104に接続されているとして例示している。いくつかの実施形態では、オンデマンドコード実行システム110内のコンポーネントのいずれかが、オンデマンドコード実行システム110の他のコンポーネントとネットワーク104を介して通信することができる。他の実施形態では、オンデマンドコード実行システム110のすべてのコンポーネントが仮想環境100の他のコンポーネントと通信できるわけではない。一例では、フロントエンド120(ある場合には複数のフロントエンド120を表すことがある)のみをネットワーク104に接続してもよく、オンデマンドコード実行システム110の他のコンポーネントは環境100の他のコンポーネントとフロントエンド120を介して通信してもよい。
図1において、ユーザは、ユーザコンピューティングデバイス102によって、オンデマンドコード実行システム110と相互に対話して、実行可能コードを提供し、またこのようなコードをいつどのようにオンデマンドコード実行システム110で実行すべきかを規定するルールまたはロジックを設定することによって、「タスク」を設定してもよい。たとえば、ユーザは、コードの一部を、ユーザが開発したウェブまたはモバイルアプリケーションとともに実行することを望む場合がある。コードを実行する1つの方法は、サービスとしてインフラストラクチャを提供するサービスプロバイダから仮想マシンインスタンスを取得し、ユーザのニーズに適合する仮想マシンインスタンスを構成し、構成済み仮想マシンインスタンスを用いてコードを実行することである。このプロセスの複雑さを回避するために、ユーザは代替的に、オンデマンドコード実行システム110にコードを提供して、オンデマンドコード実行システム110がコードを実行することをリクエストしてもよい。オンデマンドコード実行システム110は、コード実行リクエストに基づいてコンピューティング能力(たとえば、コンテナ、インスタンスなど。これらは以下で詳細に説明する)の取得および構成を取り扱うことができ、コンピューティング能力を用いてコードを実行することができる。オンデマンドコード実行システム110は、ボリュームに基づいて自動的にスケールアップおよびスケールダウンしてもよく、その結果、ユーザが過剰利用(たとえば、取得するコンピューティングリソースが少なすぎて性能問題を被る)または過少利用(たとえば、取得するコンピューティングリソースが、コードの実行に必要な量よりも多いために、余分に払う)について心配しなければならない負担から解放される。本開示の実施形態によれば、また以下に詳細に説明するように、オンデマンドコード実行システム110は、カスタマイズされたオペレーティングシステムを用いて仮想マシンインスタンスを構成して、ユーザのコードをより効率的に実行し、コンピューティングリソースの利用を減らしてもよい。
オンデマンドコード実行システム110との相互作用を可能にするために、システム110には1つ以上のフロントエンド120が含まれる。フロントエンド120によって、オンデマンドコード実行システム110との相互作用が可能になる。例示的な実施形態では、フロントエンド120は、オンデマンドコード実行システム110が提供する他のサービスに対する「フロントドア」として機能し、ユーザが(ユーザコンピューティングデバイス102を介して)コンピュータ実行可能コードのリクエスト実行を提供してその結果を視認することができるようにする。フロントエンド120には、オンデマンドコード実行システム110と他のコンピューティングデバイスとの間の相互作用を可能にする種々のコンポーネントが含まれる。たとえば、各フロントエンド120には、ユーザコンピューティングデバイス102が、オンデマンドコード実行システム110にユーザ指定コードをアップロードまたは他の方法で伝達して、その後にそのコードの実行をリクエストできるようにするリクエストインターフェースが含まれていてもよい。一実施形態では、リクエストインターフェースは、外部のコンピューティングデバイス(たとえば、ユーザコンピューティングデバイス102、補助サービス106など)と、グラフィカルユーザインターフェース(GUI)、CLI、またはAPIを介して通信する。フロントエンド120は、リクエストを処理して、リクエストが適切に認証されたことを確かめる。たとえば、フロントエンド120は、リクエストに対応付けられるユーザが、リクエストにおいて指定されるユーザコードにアクセスすることが認証されているか否かを判定してもよい。
本明細書で用いるユーザコードに言及する場合、特定のプログラム言語で記述された任意のプログラムコード(たとえば、プログラム、ルーチン、サブルーチン、スレッドなど)を指す場合がある。本開示では、用語「コード」、「ユーザコード」、および「プログラムコード」を交換可能に用いてもよい。このようなユーザコードを実行して、特定の機能を、たとえばユーザが開発した特定のウェブアプリケーションまたはモバイルアプリケーションとともに実現してもよい。前述したように、ユーザコードの個々の集まり(たとえば、特定の機能を実現するため)を本明細書では「タスク」と言う。一方で、そのコードの特定の実行(たとえば、コードをコンパイルすること、コードをインタープリットすること、または他の方法でコードを実行可能にすることが挙げられる)を「タスク実行」または単純に「実行」と言う。タスクを、非限定的な例として、JavaScript(たとえば、node.js)、Java、Python、および/またはRuby(および/または別のプログラミング言語)で書いてもよい。タスクを、オンデマンドコード実行システム110で種々の方法で実行するために「トリガー」してもよい。一実施形態では、ユーザまたは他のコンピューティングデバイスは、タスクを実行するリクエストを送信してもよく、これは一般的に、タスクの実行に対する「コール」と言うことができる。このようなコールには、実行すべきユーザコード(またはその場所)と、ユーザコードを実行するために用いるべき1つ以上の引数とが含まれていてもよい。たとえば、コールは、タスクのユーザコードを、タスクを実行するリクエストとともに提供してもよい。別の例では、コールは、以前にアップロードしたタスクをその名前または識別子によって特定してもよい。さらに別の例では、タスクに対応するコードを、タスクに対するコールに含めてもよく、ならびに、オンデマンドコード実行システム110がリクエストを受け取る前に、別個の場所(たとえば、補助サービス106の記憶装置またはオンデマンドコード実行システム110内部のストレージシステム)にアップロードしてもよい。前述したように、タスクに対するコードは、オンデマンドコード実行システム110において保持されるさらなるコードオブジェクトの参照を、これらのコードオブジェクトの識別子を用いることによって行って、コードオブジェクトが実行環境におけるタスクのコードと、タスクの実行前に組み合わされるようにしてもよい。オンデマンドコード実行システム110は、タスクに対するコールが処理されるときにタスクのコードが利用可能である場所に基づいて、タスクに対するその実行戦略を変えてもよい。フロントエンド120のリクエストインターフェースは、タスクを実行するコールを、ユーザからのハイパーテキスト転送プロトコルセキュア(HTTPS)リクエストとして受け取ってもよい。また、HTTPSリクエストに含まれる任意の情報(たとえば、ヘッダおよびパラメータ)も処理して、タスクを実行するときに用いてもよい。前述したように、任意の他のプロトコル(たとえば、HTTP、MQTT、およびCoAPが挙げられる)を用いて、タスクコールを含むメッセージをリクエストインターフェース122に伝達してもよい。
タスクを実行するコールによって、タスクに対応するユーザコードと一緒に用いるべき1つ以上のサードパーティライブラリ(ネイティブライブラリを含む)を指定してもよい。一実施形態では、コールは、オンデマンドコード実行システム110に、ユーザコードと実行がリクエストされたタスクに対応する任意のライブラリ(および/またはその記憶場所の特定)とを含むファイルを提供してもよい。いくつかの実施形態では、コールには、メタデータであって、実行すべきタスクのプログラムコード、プログラムコードが記述された言語、コールに対応付けられるユーザ、および/またはプログラムコードを実行するために予約すべきコンピューティングリソース(たとえば、メモリなど)を示すメタデータが含まれる。たとえば、タスクのプログラムコードは、コールを用いて提供してもよいし、ユーザがあらかじめアップロードしてもよいし、オンデマンドコード実行システム110が提供してもよいし(たとえば、標準ルーチン)、および/または第三者が提供してもよい。例示的に、コードがコール内に含まれておらず、ユーザによってあらかじめアップロードもされていない場合、コードに対応付けられるURIを用いることによってタスクのメタデータ内で参照してもよい。いくつかの実施形態では、このようなリソースレベル制約(たとえば、特定のユーザコードを実行するためにどれくらいのメモリを割り当てるべきか)を、特定のタスクに対して指定して、タスクを実行する度に変えなくてもよい。このような場合には、オンデマンドコード実行システム110は、それぞれの個々のコールを受け取る前にこのようなリソースレベル制約にアクセスしてもよく、個々のコールはこのようなリソースレベル制約を指定しなくてもよい。いくつかの実施形態では、コールは、タスクを実行するためにコールがどんな種類の許可または権限を呼び出すかを示す許可データなどの他の制約を指定してもよい。このような許可データをオンデマンドコード実行システム110が用いて、プライベートリソース(たとえば、プライベートネットワーク上の)にアクセスしてもよい。いくつかの実施形態では、個々のコードオブジェクトを許可または認証に対応付けてもよい。たとえば、第三者がコードオブジェクトを送信して、オブジェクトをユーザのサブセットのみが読取可能であると指定してもよい。オンデマンドコード実行システム110には、コードオブジェクトに対するこれらの許可または認証を実行する機能が含まれていてもよい。
いくつかの実施形態では、コールは、コールを取り扱うために採用すべき動作を指定してもよい。このような実施形態では、コールには、コール内で参照されたタスクを実行する1つ以上の実行モードを可能にするためのインジケータが含まれていてもよい。たとえば、コールには、タスクをデバッグモードで実行すべきか否かを示すためのフラッグまたはヘッダが含まれていてもよい。デバッグモードでは、タスクの実行に関連して生成され得るデバッギングおよび/またはログイン出力がユーザに戻される(たとえば、コンソールユーザインターフェースを介して)。このような例では、オンデマンドコード実行システム110はコールを検査してフラッグまたはヘッダを探してもよく、存在する場合には、オンデマンドコード実行システム110は、タスクが実行されるコンテナの動作(たとえば、ロギングファシリティ)を変更して、出力データをユーザに戻してもよい。いくつかの実施形態では、オンデマンドコード実行システム110によってユーザに提供されたユーザインターフェースによって、動作/モードインジケータがコールに加えられる。ソースコードプロファイリング、リモートデバッギングなどの他の特徴も、コールで提供される表示に基づいて有効または無効にしてもよい。
コード実行に対するリクエストを管理するために、フロントエンド120に実行キュー(図1に示さず)を含めることができる。実行キューは、リクエストされたタスク実行の記録を保持することができる。例示的に、オンデマンドコード実行システム110による同時のタスク実行の数は限定されている。したがって、オンデマンドコード実行システム110において開始される新しいタスク実行(たとえば、APIコールを介して、実行済みまたは実行中タスクからのコールを介して等)を、実行キュー124に配置して、たとえば、先入れ先出しの順番で処理してもよい。いくつかの実施形態では、オンデマンドコード実行システム110には、複数の実行キュー(たとえば、各ユーザアカウントに対する個々の実行キュー)が含まれていてもよい。たとえば、オンデマンドコード実行システム110のユーザは、オンデマンドコード実行システム110でのタスク実行のレートを限定したいと希望する場合がある(たとえば、コスト的な理由で)。したがって、オンデマンドコード実行システム110は、アカウント特有の実行キューを用いて、特定のユーザアカウントによる同時のタスク実行のレートを抑えてもよい。場合によっては、オンデマンドコード実行システム110がタスク実行に優先順位を付けて、特定のアカウントまたは指定の優先権のタスク実行が実行キュー内で回避されるかまたは優先されるようにしてもよい。他の場合では、オンデマンドコード実行システム110は、タスクの実行を、そのタスクに対するコールを受け取った直後または実質的に直後に行ってもよく、したがって実行キューを省略してもよい。
前述したように、ユーザコンピューティングデバイス102からの明示的コールに基づいて(たとえば、リクエストインターフェースにおいて受け取ったときに)、タスクをオンデマンドコード実行システム110において実行するようにトリガーしてもよい。その代わりにまたはそれに加えて、1つ以上の補助サービス106またはネットワークベースのデータ記憶サービス108から取り出したデータに基づいて、タスクをオンデマンドコード実行システム110において実行するようにトリガーしてもよい。補助サービス106との相互作用を容易にするために、フロントエンド120にはポーリングインターフェース(図1に示さず)を含めることができる。ポーリングインターフェースは、補助サービス106またはデータ記憶サービス108に、データに対してポーリングするように動作する。例示的に、ポーリングインターフェースは、1つ以上のユーザ指定の補助サービス106またはデータ記憶サービス108にリクエストを定期的に送信して、任意の新たに利用可能なデータ(たとえば、ソーシャルネットワーク「ポスト」、ニュース記事、ファイル、レコードなど)を取り出し、そのデータが、オンデマンドコード実行システム110上でのタスクの実行をトリガーするユーザ設定の基準に対応するか否かを判定してよい。例示的に、タスクの実行に対する基準は、これに限定するものではないが、補助サービス106またはデータ記憶サービス108において新しいデータが利用できるか否か、データの種類もしくは内容、またはデータに対応するタイミング情報を挙げてもよい。場合によっては、補助サービス106またはデータ記憶サービス108は、フロントエンド120に新しいデータが利用できることを通知するように機能してもよく、したがって、ポーリングサービスはこのようなサービスに対しては不要であってもよい。
補助サービス106からの明示的なユーザコールおよびデータに基づいて実行されるタスクに加えて、オンデマンドコード実行システム110は、ある場合には、タスクの実行を独立にトリガーするように動作してもよい。たとえば、オンデマンドコード実行システム110は、多くの指定の時間間隔ごと(たとえば、10分ごと)にタスクの実行をトリガーするように動作してもよい(ユーザからの命令に基づいて)。
フロントエンド120にはさらに、オンデマンドコード実行システム110でのタスクの実行に関する情報を出力するように構成された出力インターフェース(図1に示さず)を含めることができる。例示的に、出力インターフェースは、タスク実行に関するデータ(たとえば、タスクの結果、タスク実行に関するエラー、またはタスク実行の詳細、たとえば、実行を終了するのに必要な合計時間、実行によって処理された合計データなど)を、ユーザコンピューティングデバイス102または補助サービス106(たとえば、ビリングサービスまたはロギングサービスが含まれていてもよい)に送信してもよい。出力インターフェースによってさらに、補助サービス106へのデータ送信(たとえば、サービスコール)が可能になってもよい。たとえば、出力インターフェースをタスクの実行中に用いて、APIリクエストを外部サービス106に送信してもよい(たとえば、タスクの実行中に生成されたデータを記憶するため)。
いくつかの実施形態では、オンデマンドコード実行システム110には複数のフロントエンド120が含まれていてもよい。このような実施形態では、ロードバランサ(図1に示さず)を提供して、複数のフロントエンド120に入力コールを、たとえばラウンドロビン方式で分配してもよい。いくつかの実施形態では、ロードバランサが複数のフロントエンド120に入力コールを分配する方法は、オンデマンドコード実行システム110の他のコンポーネントの場所または状態に基づいてもよい。たとえば、ロードバランサは、地理的に近くのフロントエンド120にまたはコールをサービスする能力があるフロントエンドに、コールを分配してもよい。各フロントエンド120がオンデマンドコード実行システムの別のコンポーネント(たとえば、後述するアクティブプール140A)の個々のインスタンスに対応する場合には、ロードバランサは、これら他のコンポーネント上の容量または負荷に従ってコールを分配してもよい。後に詳細に説明するように、コールを、ある場合には、フロントエンド120間に確定的に分配して、タスクを実行する所与のコールが常に(またはほとんど常に)同じフロントエンド120にルーティングされるようにしてもよい。これは、たとえば、タスクに対する正確な実行記録を保持するのを助けて、タスクが所望の回数だけ実行されるのを確実にしてもよい。ロードバランサを介してコールを分配することについて例示的に説明しているが、エニーキャストルーティングなどの他の分配技術も当業者には明らかである。
タスクを実行するために、オンデマンドコード実行システム110には1つ以上の事前構成済みOSライブラリ130が含まれており、その結果、1つ以上の事前構成済みオペレーティングシステムバリアントが含まれている。図1に例示した例では、事前構成済みOSライブラリ130には、事前構成済みOS132(カーネル132Aおよびモジュール132Bが含まれる)と、事前構成済みOS134(カーネル134Aが含まれる)とが含まれる。いくつかの実施形態では、以下に詳細に説明するように、カーネル132Aおよびカーネル134Aは同じであってもよく、事前構成済みOS132と事前構成済みOS134との違いはモジュール132Bの有無であってもよい。他の実施形態では、異なる事前構成済みOS132および134は、異なるカーネル132Aおよび134Aを有していてもよい。たとえば、カーネル134Aには、カーネル132Aが実施するオペレーティングシステム機能のサブセットが含まれていてもよく、カーネル132Aおよび134Aはそれぞれ別個の機能を提供してもよい。他の実施形態では、事前構成済みOSライブラリ130には、事前構成済みOSのライブラリが含まれるのではなく、オペレーティングシステムを組み立てるためのカーネルモジュールまたは他の「ビルディングブロック」が含まれていてもよい。事前構成済みOS132と事前構成済みOS134とは、いくつかの実施形態では、同じオペレーティングシステムのバリアントであってもよく、ユーザレベルで提供されるかまたは組み込まれる機能(たとえば、アプリケーション、ランタイム、ユーザ選好、非ネイティブライブラリなど)とは対照的に、オペレーティングシステムレベルでカーネル132Aおよび134Aに組み込まれる機能(「カーネル空間機能」)の点で異なっていてもよい。
事前構成済みOSライブラリ130は、仮想マシンインスタンス(たとえば、仮想マシンインスタンス150および152)を迅速にプロビジョニングおよび構成することをサポートする。一実施形態では、特定のライブラリ130における事前構成済みOSを、同じかまたは実質的に同様の方法で事前構成してもよい。たとえば、事前構成済みOSは、特定のカーネルサブシステムまたはモジュールが含まれているかまたは除外されている、特定のOSライブラリが含まれているかまたは除外されている、特定のデバイスドライバが含まれているかまたは除外されている等の特定のオペレーティングシステムのバリアントであってもよい。別の例として、特定のライブラリ130における事前構成済みOSはすべて、特定のセットのオペレーティングシステム機能(たとえば、ファイルシステムAPIまたはネットワーキングAPI)を省略してもよい。いくつかの実施形態では、事前構成済みOSライブラリ130をそれぞれ、特定のワーカーマネージャ140に対応付けてもよい。ワーカーマネージャ140は、ライブラリ130の事前構成済みOSに対応するリソースを管理してもよい。たとえば、特定のワーカーマネージャ140を、記憶媒体にアクセスすることなくプロビジョニングしてもよく、ファイルシステム機能をもたらさないオペレーティングシステムの事前構成済みOSライブラリ130に対応付けてもよい。
オンデマンドコード実行システム110にはさらに、OS構成システム160が含まれている。OS構成システム160は、本開示の態様(たとえば、特定のタスクに対して、カスタマイズされたOSバリアントを生成または選択することなど)を実施する。いくつかの実施形態では、OS構成システム160には静的ランタイムアナライザ162が含まれている。静的ランタイムアナライザ162は、ユーザがフロントエンド120を介してコードを送信して、送出されたコードとともに用いるべきOSバリアントを決定するときに呼び出してもよい。以下に詳細に説明するように、静的ランタイムアナライザ162はユーザのコードを分析して、たとえば、APIコール、オペレーティングシステムコール、関数呼び出し、または実行中にコードが必要とするOS機能の他の表示を特定してもよい。種々の実施形態では、静的ランタイムアナライザ162は、キーワード、シンボル、ヘッダ、指令、またはユーザのコードの他の態様を分析してもよい。さらなる実施形態では、オンデマンドコード実行システム110には動的ランタイムアナライザ164が含まれている。動的ランタイムアナライザ164は、ユーザのコードがそれを実行して、コードの実行中に実際に使用されるOS機能を分析するときに呼び出してもよい。動的ランタイムアナライザ164は、たとえば、特定のOS機能を必要とするが実行中にめったにまたは全く到達しないソースコード部分を特定してもよい。たとえば、ユーザのコードは特定のエラー状態に遭遇した場合にログファイルに書き込んでもよいが、エラーは比較的まれであってもよく(たとえば、ユーザのコードはエラー状態に遭遇することなく完了まで実行されることが多い)、他の場合にはコードは何らのファイルシステム読み出しも書き込みも行わなくてもよい。
本開示の態様によれば、OS構成システム160にはさらに、プロビジョニングユニット166が含まれている。プロビジョニングユニット166は、カスタマイズされたOSを、静的ランタイムアナライザ162、動的ランタイムアナライザ164、または両方によって特定された機能でプロビジョニングするように構成されている。具体的には、以下でより詳細に述べるように、プロビジョニングユニット166は、事前構成済みOSライブラリ130から事前構成済みOSをプロビジョニングしてもよいし、またはOSを選択するか、生成するか、もしくはプロビジョニングするための命令または他の構成情報を生成してもよい。構成情報を記憶して(たとえば、データ記憶サービス108に)、後にコード実行がリクエストされたときにワーカーマネージャ140が後で用いることに備えてもよい。したがって、プロビジョニングユニット166は、オペレーティングシステムから未使用コードを取り除いてインスタンスのオーバーヘッド要件を低減することによって、仮想マシンインスタンスをプロビジョニングする間に全体としてシステム110の動作を改善するように動作することができる。
オンデマンドコード実行システムにはさらに、タスクを実行する入力コールをサービスするために使用されるインスタンスを管理する1つ以上のワーカーマネージャ140が含まれている。図1に例示した例では、各ワーカーマネージャ140は、アクティブプール140Aを管理する。アクティブプール140Aは、仮想マシンインスタンスのグループ(しばしば、プールと言われる)であり、1人以上のユーザに現時点で割り当てられている1つ以上の物理ホストコンピューティングデバイスによって実施される。本明細書では仮想マシンインスタンスを特定のユーザに割り当てていると説明しているが、いくつかの実施形態では、インスタンスをユーザのグループに割り当てて、インスタンスがユーザのグループに結びつけられ、グループの任意のメンバーがインスタンス上でリソースを使用できるようにしてもよい。たとえば、同じグループ内のユーザが同じセキュリティグループに(たとえば、それらのセキュリティ証明書に基づいて)属して、特定のインスタンスでコンテナ内のあるメンバーのタスクの実行を、同じインスタンスで別のコンテナ内の別のメンバーのタスクを実行した後に行っても、セキュリティリスクが生じないようにしてもよい。同様に、ワーカーマネージャ140は、インスタンスおよびコンテナの割り当てを、どのリクエストをどのコンテナ内で実行できるかおよびどのインスタンスをどのユーザに割り当てるかを指示する1つ以上のポリシーに従って、行ってもよい。ポリシー例としては、インスタンスを、同じアカウント(たとえば、オンデマンドコード実行システム110が提供するサービスにアクセスするためのアカウント)を共有するユーザの集まりに割り当てることを指定してもよい。いくつかの実施形態では、同じユーザグループに対応付けられるリクエストは、同じコンテナを共有してもよい(たとえば、それに対応付けられるユーザコードが同一である場合)。いくつかの実施形態では、タスクは、グループの異なるユーザを区別せず、単にタスクに対応付けられるユーザが属するグループを示す。
タスクを実行するトリガー事象をフロントエンド120が正常に処理したら、フロントエンド120はワーカーマネージャ140にリクエストを送ってタスクを実行する。一実施形態では、各フロントエンド120を、対応するワーカーマネージャ140(たとえば、フロントエンド120と同じ場所に配置されているかまたは地理的に近くのワーカーマネージャ140)に対応付けてもよく、したがって、フロントエンド120はリクエストの大部分または全部をそのワーカーマネージャ140に送ってもよい。別の実施形態では、フロントエンド120には、実行リクエストを送る先のワーカーマネージャ140を決定するように構成されたロケーションセレクタが含まれていてもよい。一実施形態では、ロケーションセレクタは、コールを受け取るワーカーマネージャ140の決定を、コールをハッシングし、ハッシュした値に基づいて(たとえば、ハッシュリングを介して)選択したワーカーマネージャ140にコールを分配することに基づいて行ってもよい。ワーカーマネージャ140間でコールを分配するための他の種々のメカニズムが当業者には明らかである。本開示の実施形態によれば、ワーカーマネージャ140は、仮想マシンインスタンスをプロビジョニングするときにOS構成および/または事前構成済みOSを取得することができる。
図1に示すように、インスタンスはオペレーティングシステム(OS)、言語ランタイム、およびコンテナを有していてもよい。コンテナは、OS、ランタイム、およびそこにロードされた種々のタスクに対応するユーザコードの個々のコピーを有していてもよい。図1の例では、ワーカーマネージャ140が管理するアクティブプール140Aにはインスタンス150および152が含まれる。インスタンス150は、事前構成済みOS150A、ランタイム150Bおよび150C、ならびにコンテナ150Dおよび150Eを有している。コンテナ150Dには、ランタイム150Bのコピーとコード150D-1のコピーとが含まれている。コンテナ150Eには、ランタイム150Cのコピーとコード150E-1のコピーとが含まれている。インスタンス152は、事前構成済みOS152A、ランタイム152B、152C、152E、および152F、コンテナ152D、およびコード152Gおよび152Hを有している。コンテナ152Dは、ランタイム152Bのコピーとコード152D-1のコピーとを有している。図1に例示するように、インスタンスにはユーザコードがロードされていてもよく、そのインスタンス内のコンテナにもユーザコードがロードされていてもよい。いくつかの実施形態では、ランタイムもユーザ提供であってもよい。オンデマンドコード実行システムでユーザ提供のランタイムを利用することについての説明例が以下の文献に記載されている。米国特許出願第15/841,132号、発明の名称「MANAGING CUSTOM RUNTIMES IN AN ON-DEMAND CODE EXECUTION SYSTEM」(2017年12月13日に出願)(以下、「’132出願」という)。この文献の全体が参照により本明細書に組み込まれている。いくつかの実施形態では、ワーカーマネージャ140は、アクティブプール140A内にインスタンスのリストを保持してもよい。インスタンスのリストはさらに、インスタンスの構成(たとえば、OS、ランタイム、コンテナなど)を指定してもよい。いくつかの実施形態では、ワーカーマネージャ140は、ウォーミングプール内のインスタンスのリスト(たとえば、インスタンスの数および種類など)にアクセスしてもよい。他の実施形態では、ワーカーマネージャ140は、ウォーミングプール内の仮想マシンインスタンスを知ることなく、ウォーミングプールマネージャからコンピューティング能力をリクエストする。
図1に例示した例では、タスクは、コンテナと言われる隔離された実行環境(たとえば、コンテナ150D、150E、152D)内で実行される。コンテナは、そのインスタンスで利用可能なリソースを用いて仮想マシンインスタンス内に作成された論理ユニットである。たとえば、各ワーカーマネージャ140は、タスクを実行するコール内で指定された情報に基づいて、新しいコンテナを作成してもよいし、または既存のコンテナをアクティブプール140A内のインスタンスの1つに配置して、コンテナをタスクの実行を取り扱うコールに割り当ててもよい。
本明細書では、いくつかの機能について、オンデマンドコード実行システム110の個々のコンポーネントを参照して概略的に述べているが、それに加えてまたはその代わりに、他のコンポーネントまたはコンポーネントの組み合わせがこのような機能を実施してもよい。たとえば、ワーカーマネージャ140は、事前構成済みOSを選択するように動作してもよいし、またはOS構成システム160を参照して本明細書で説明したものと同様または同一の方法でOSを生成するように動作してもよい。
図2に、オンデマンドコード実行システム110内のOSバリアントを決定するように動作するコンピューティングシステムの一般的なアーキテクチャ(OS構成システム160と参照する)を示す。図2に示したOS構成システム160の一般的なアーキテクチャには、本開示の態様を実施するために用いてもよいコンピュータハードウェアおよびソフトウェアモジュールの配置が含まれる。ハードウェアモジュールは物理的な電子デバイスを用いて実施してもよい。これについては後で詳述する。OS構成システム160には、図2に示したものよりも多い(または少ない)要素が含まれていてもよい。しかし、実施可能な程度の開示を提供するためにこれらの一般的に従来の要素をすべて示す必要はない。さらに、図2に例示した一般的なアーキテクチャを用いて、図1に例示した他のコンポーネントのうちの1つ以上を実施してもよい。例示するように、OS構成システム160には、処理ユニット290、ネットワークインターフェース292、コンピュータ可読媒体ドライブ294、および入出力装置インターフェース296が含まれている。これらはすべて、通信バスによって互いに通信してもよい。ネットワークインターフェース292によって、1つ以上のネットワークまたはコンピューティングシステムに接続性を提供してもよい。その結果、処理ユニット290は、ネットワーク104を介して他のコンピューティングシステムまたはサービスから情報および命令を受け取ってもよい。また処理ユニット290はメモリ280との間で通信してもよく、さらに入出力装置インターフェース296を介して任意的なディスプレイ(図示せず)に対する出力情報を提供してもよい。また入出力装置インターフェース296は任意的な入力デバイス(図示せず)から入力を受け入れてもよい。
メモリ280には、1つ以上の本開示の態様を実施するために処理ユニット290が実行するコンピュータプログラム命令(いくつかの実施形態ではモジュールとしてグループ化されている)が含まれていてもよい。メモリ280には一般的に、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、および/または他の永続的な補助または非一時的なコンピュータ可読媒体が含まれている。メモリ280には、OS構成システム160の一般管理および動作において処理ユニット290が用いるためのコンピュータプログラム命令を提供するオペレーティングシステム284を記憶してもよい。メモリ280にはさらに、本開示の態様を実施するためのコンピュータプログラム命令および他の情報が含まれていてもよい。たとえば、一実施形態では、メモリ280にはユーザインターフェースユニット282が含まれている。ユーザインターフェースユニット282は、たとえば、ナビゲーションおよび/または閲覧インターフェース(たとえば、コンピューティングデバイスにインストールされたブラウザまたはアプリケーション)を介して、コンピューティングデバイスに表示させるためのユーザインターフェース(および/またはそれに対する命令)を生成する。加えて、メモリ280は、1つ以上のデータリポジトリ(図示せず)を含みおよび/またはそれと通信して、たとえば、ユーザプログラムコードおよび/またはライブラリにアクセスしてもよい。
ユーザインターフェースユニット282に加えておよび/またはそれと組み合わせて、メモリ280には、静的ランタイムアナライザ162、動的ランタイムアナライザ164、およびプロビジョニングユニット166(処理ユニット290が実行してもよい)が含まれていてもよい。一実施形態では、静的ランタイムアナライザ162、動的ランタイムアナライザ164、およびプロビジョニングユニット166は、本開示の種々の態様を別個にまたは一括して実施する。たとえば、オンデマンドコード実行システム110内のカスタマイズされたオペレーティングシステムバリアントを生成または選択する、コードまたはコード実行を分析して必要なOS機能を決定する等である。これらについては、以下でさらに説明する。
静的ランタイムアナライザ162、動的ランタイムアナライザ164、およびプロビジョニングユニット166を、図2ではOS構成システム160の一部として示しているが、他の実施形態では、静的ランタイムアナライザ162、動的ランタイムアナライザ164、およびプロビジョニングユニット166の全部または一部を、オンデマンドコード実行システム110の他のコンポーネントおよび/または別のコンピューティングデバイスが実施してもよい。たとえば、本開示のある実施形態では、オンデマンドコード実行システム110と通信している別のコンピューティングデバイスに、OS構成システム160の一部として例示したモジュールおよびコンポーネントに対して同様に動作するいくつかのモジュールまたはコンポーネントが含まれていてもよい。
いくつかの実施形態では、OS構成システム160にはさらに、図2に例示したもの以外のコンポーネントが含まれていてもよい。たとえば、メモリ280にはさらに、タスクに実行環境を割り当てるためのインスタンス割り当てユニット、実行環境内でのタスクの実行を容易にするユーザコード実行ユニット、または仮想マシンインスタンス内でのコンテナの形成、準備、および構成を管理するためのコンテナマネージャが含まれていてもよい。
図3を参照して、OSバリアントを決定するための例示的な相互作用を示す。図3の相互作用は(1)から始まる。ここでは、ユーザデバイス102が、オンデマンドコード実行システム110で実行するためのタスクコードを生成してもよい。例示的に、ユーザは、コードとして、種々のシステムコールを行い、したがって、対応する機能が得られるオペレーティングシステムを必要とするコードを生成してもよい。(2)において、ユーザデバイス102は、フロントエンド120にタスクコードを、たとえばフロントエンド120のAPIまたは他のインターフェースを用いて送出する。(3)において、フロントエンド120は送出されたタスクコードを検証する。検証としては、たとえば、オンデマンドコード実行システム110がタスクコードを実行できることを検証することを挙げることができる。
(4)において、フロントエンド120はOS構成システム160に、タスクに対するOSバリアントを生成または選択するようリクエストを送信する。その結果、(5)においてOS構成システム160はタスクコードを分析して、好適なOSバリアントを決定する。例示的に、OS構成システムの静的ランタイムアナライザ162は、タスクコードを書くプログラミング言語(複数可)、たとえば、Perl、Ruby、Python、JavaScript、Javaなどを特定してもよい。静的ランタイムアナライザ162はさらに、オペレーティングシステム機能に対応付けられる言語キーワードを特定してもよい。たとえば、静的ランタイムアナライザ162は、Javaで記述されたタスクがJava.io.fileパッケージをインポートすることを決定してもよく、したがって、ファイルシステム機能を含むOSを必要としてもよい。静的ランタイムアナライザ162はさらに、タスクコードを分析して、特定の機能に対応付けられる特定のキーワードまたは動作を特定してもよい。たとえば、静的ランタイムアナライザ162は以下のことを決定してもよい。すなわち、タスクコードは、ネットワーク接続されたデータストリームからのUDPデータグラムの読み出しをOSが容易にすることを必要とするが、データストリームへの書き込みをOSが容易にすることも、データストリームをバッファに入れることも、UDP以外のネットワークプロトコルも、他のネットワーキング機能も必要としないということである。
いくつかの実施形態では、OS構成システム160は、事前構成済みOSを図1の事前構成済みOSライブラリ130などのライブラリから選択することによって、タスクに対するOSバリアントを決定してもよい。たとえば、OS構成システム160は、タスクコードが必要とするOS機能を特定してもよく、またこの機能を提供する1つ以上の事前構成済みOSを特定してもよい。いくつかの実施形態では、OS構成システム160は、必要な機能を提供する多くの事前構成済みOSの中から、リソース要件、負荷時間、応答時間などの基準または適格なOSを比較もしくはランク付けする他の基準に基づいて、OSバリアントを選択してもよい。さらなる実施形態では、事前構成済みOSライブラリ130は、事前構成済みOSに関するランク付けまたは等級付けを記憶してもよく、OS構成システム160は、必要な機能を提供する事前構成済みOSを、ランク付けまたは等級付けに基づいて選択してもよい。
一例として、OS構成システム160は、特定のタスクに対するタスクコードが、仮想マシンインスタンスに割り当てられた物理メモリを使い果たすことなく完了まで実行できることを決定してもよい。したがって、OS構成システム160は、仮想マシンインスタンスのOSバリアントは、スワッピング、ページング、アドレストランスレーションなどのメモリ管理機能を実施する必要がないと判断することができる。なぜならば、これらの機能は仮想マシンインスタンスのライフサイクルにおいて必要でないからである。その結果、OS構成システム160は、事前構成済みOSバリアントとして、これらの機能を実施せず、タスクコードが要求する機能(たとえば、スレッディングおよびプロセス間通信に関する機能)を実施するOSバリアントを取得する。
いくつかの実施形態では、OS構成システム160は、タスクが要求する特定の機能を提供するOSバリアントを生成してもよい。たとえば、OS構成システムは、ローダブルカーネルモジュール、ユーザスペースプロセス、または必要な機能を提供する他のコンポーネントのセットを特定してもよく、これらの特定のコンポーネントを含むOSバリアントを生成してもよい。いくつかの実施形態では、OS構成システム160はマイクロカーネルアーキテクチャを実施または使用して、カスタムOSバリアントを生成してもよい。他の実施形態では、OS構成システム160は、前述したように、異なるモノリシックカーネルを伴う事前構成済みOSバリアントのライブラリを用いてもよい。
(6)において、OS構成システム160は、決定されたOSバリアント(および、いくつかの実施形態では、検証されたタスクコード)を特定する情報をデータ記憶装置108などの記憶装置に記憶してもよい。その結果、オンデマンドコード実行システム110は、タスクコードを実行するリクエストを受け取ったときにコードの分析およびOSバリアントの決定に費やす時間を削減できる場合がある。これについては、以下でより詳細に述べる。
いくつかの実施形態では、前述した動作の順序付けおよび実施態様を変更してもよいし、またはこれらの相互作用を、オンデマンドコード実行システム110の付加的または代替的な要素が行ってもよい。たとえば、一実施形態では、フロントエンド120が、ライブラリ130(またはライブラリ130内の利用可能なOSのサブセット)から事前構成済みOSをユーザ選択することを可能にしてもよく、またOS構成システム160がタスクコードを分析して、タスクコードをユーザ選択のOSバリアントによって実行することを妨げる任意の問題点を特定および報告してもよい。さらなる例として、別の実施形態では、OS構成システム160は、図1のアクティブプール140A内で、現時点で使用中のOSバリアントのセットの中からOSバリアントを特定してもよい。さらにまた、別の実施形態では、ワーカーマネージャ140をそれらが実行するOSバリアント(複数可)に従って分類してもよく、OS構成システム160は、タスクコードを実行してもよいワーカーマネージャ(複数可)140を指定することによって、OSバリアントを選択してもよい。
決定されたOSバリアントを用いてオンデマンドコード実行システム110でタスクを実行するための例示的な相互作用について、図4を参照して説明する。(1)において、ユーザデバイス102はタスク実行をリクエストしてもよい。いくつかの実施形態では、前述したように、フロントエンド120は、リクエストを受け取ることなくタスク実行を開始してもよい。この場合、(1)における相互作用は省略してもよい。
(2)において、フロントエンド120は実行用のタスクをワーカーマネージャ140に分配する。タスク実行を分配する前に、フロントエンド120は、リクエストをキューに入れる、リクエストを検証するなどのいくつかのさらなる相互作用のいずれかを始めてもよい。これについては、’556特許(前述で参照により組み込まれている)の中でより詳細に説明されている。
(3)において、ワーカーマネージャ140は、タスクに対するOSバリアントを特定する情報をリクエストする。いくつかの実施形態では、前述したように、タスクのコードが検証用に送出されたとき(たとえば、図3に例示した相互作用を行うことによって)、OSバリアントを決定してもよい。図5を参照して後述するように、他の実施形態では、OSバリアントを以前のタスク実行の分析(複数可)に基づいて決定または更新してもよい。(4)において、ワーカーマネージャ140は、データ記憶装置108から、以前に決定したOSバリアントを特定する情報を受け取る。いくつかの実施形態では、ワーカーマネージャ140はまた、タスクに対応付けられるユーザ送出コードをリクエストして受け取ってもよい。他の実施形態では、ワーカーマネージャ140は、タスクが実行に対して分配されたときに、フロントエンド120からユーザ送出コードを受け取ってもよい。
その後、(5)において、ワーカーマネージャ140は、事前構成済みOSライブラリ130から、決定したOSバリアントに対応する事前構成済みOSをリクエストする。いくつかの実施形態では、前述したように、ワーカーマネージャ140は、その代わりに、所望のOSバリアントを有するそのアクティブプール内の仮想マシンインスタンスを特定してもよい。他の実施形態では、ワーカーマネージャ140は、カスタマイズされたOSの生成をリクエストしてもよいし、またはカスタマイズされたOSをコンポーネントまたはモジュールを組み立てることによって生成してもよい。(6)において、ワーカーマネージャ140はリクエストされたOSを受け取る。いくつかの実施形態では、ワーカーマネージャ140は、特定したOSバリアントを仮想マシンにプロビジョニングするのに十分なリソースを有していないと決定してもよいし、またはより早い段階で(たとえば、(3)における相互作用の前に)、OSバリアントとは関係なくタスクを実行するのに十分なリソースを有していないと判定してもよい。たとえば、ワーカーマネージャ140は、データ記憶装置が含まれていないリソースのプールを管理してもよく、特定したOSバリアントはファイルシステム機能を提供するものであってもよい。このような実施形態では、ワーカーマネージャ140は、図1のプロビジョニングユニット166(またはオンデマンドコード実行システム110の別のコンポーネント)が代替的なワーカーマネージャ140を選択してタスクを実行することをリクエストしてもよい。他の実施形態では、ワーカーマネージャ140は、特定したOSバリアントを実行するあらかじめインスタンス化された仮想マシンをワーカーマネージャ140が有さないときはいつも、プロビジョニングユニット166が代替的なワーカーマネージャ140を選択してタスクを実行することを、リクエストしてもよい。このような構成は、たとえば、特定したOSバリアントを実行するあらかじめインスタンス化された仮想マシンによって、ワーカーマネージャ140が多くのまたはすべての実行をサービスすることが予想されるため、相互作用(5)および(6)に対する必要性を減らすかまたは無くしてもよい。さらに多くの実施形態において、ワーカーマネージャ140でOSバリアントを実行する仮想マシンを生成することを、プロビジョニングユニット166が処理してもよい。したがって、たとえば、特定したOSバリアントを実行するあらかじめインスタンス化された仮想マシンがワーカーマネージャ140には利用できないとワーカーマネージャ140が決定した場合、ワーカーマネージャ140は、ワーカーマネージャ140の制御下にあるホスト装置でこのような仮想マシンをプロビジョニングユニット166が生成することをリクエストしてもよい。
(7)において、ワーカーマネージャ140は、OSバリアントおよびタスクコードによって仮想マシンインスタンスを構成し(および、いくつかの実施形態ではプロビジョニングし)、そしてタスクを実行する。タスクの実行には、たとえば、実行環境を配置およびプロビジョニングすることが含まれていてもよい。これについては、参照により組み込まれている’556特許内で、より詳細に説明されている。
いくつかの実施形態では、前述した動作の順序付けおよび実施態様を変更してもよいし、またはこれらの相互作用を、オンデマンドコード実行システムの付加的または代替的な要素が行ってもよい。たとえば、一実施形態では、フロントエンド120を、前述の相互作用(3)および(4)に従ってOSバリアントをリクエストするように構成してもよい。これらの相互作用は、たとえば、ワーカーマネージャ140にタスク実行が分配される前に行ってもよい。ワーカーマネージャ140は次に、タスク実行および対応付けられるOSバリアントの分配を受け取って、実行環境にタスクを実行するように指示を出す。このような命令に基づいて、環境は次に相互作用(4)および(5)を実施して、事前構成済みOSをライブラリ130から取得してもよい。その後、実行環境はタスクのコードを実行することによって、フロントエンド120の実行命令を遂行してもよい。タスクを実行するために環境がコードオブジェクトを特定して取り出す例示的なメカニズムについては、’132出願(前述で参照により組み込まれている)の中でより詳細に説明されている。
図5に、タスクコードの実行(複数可)に基づいてOSバリアントを決定するための例示的な相互作用を示す。(1)において、ワーカーマネージャ140は仮想マシンインスタンス内でタスクを実行する。いくつかの実施形態では、タスクを、標準またはデフォルトのOSなどの未構成のOSによって仮想マシンインスタンスで実行してもよい。他の実施形態では、仮想マシンインスタンスで、コードが送出されたときに決定されたOSバリアントによって(たとえば、図3を参照して前述したように)タスクを実行してもよく、または図5に示した相互作用を行うことによって以前に決定されたOSバリアントによってタスクを実行してもよい。
(2)において、OS構成システム160は、仮想マシンインスタンス内でのタスクの実行をモニタしてもよい。例示的に、OS構成システム160の動的ランタイムアナライザ164は、タスクの実行中に形成されたシステムコールを特定して、タスクが必要とするOS機能を決定してもよい。たとえば、動的ランタイムアナライザ164は、タスクの実行(複数可)が、あるハードウェアデバイスドライバ、スレッディングおよびプロセススケジューリング、ならびにメモリ管理に関するOS機能を呼び出したが、ネットワーキングまたはファイルシステムに関するOS機能は呼び出さなかったと判定してもよい。その後、(3)において、OS構成システム160はOSバリアントを決定してもよい。前述したように、OS構成システム160は、タスクを実行するために必要な機能を提供する一方で、OSのリソースフットプリントを最小限にするOSバリアントを決定してもよい。
いくつかの実施形態では、OS構成システム160は、タスクが特定のOS機能または機能のセットを必要とする確率を決定してもよい。たとえば、OS構成システム160は、特定のタスクの複数の実行をモニタして、タスクは典型的にネットワーキング機能を必要としないがまれに必要とすることを判定してもよい。その結果、OS構成システム160は費用便益分析を行って、OS内の機能を提供した場合と提供しない場合のどちらの方がタスクの実行が効率的であるかを評価してもよい。たとえば、機能を提供することに付随するリソースコスト(たとえば、負荷時間、メモリフットプリント、待ち時間など)を決定してもよい。このリソースを、機能を提供しないことに付随するリソースコスト、ならびに機能は必要だったが提供されなかった状況から回復することに付随するリソースコストと比べてもよい。たとえば、OS構成システム160は、機能を提供するOSで構成された第2の仮想マシンインスタンスでタスクの全部または一部をリロードおよび再実行することに付随するコストを決定してもよい。いくつかの実施形態では、状態情報、部分的な結果、または他の情報をある仮想マシンインスタンスから別の仮想マシンインスタンスへ伝達して、OS機能は必要だったが提供されなかった状況からの回復を促進してもよい。さらなる実施形態では、OS構成システム160は、特定した機能を提供しないOSバリアントと特定した機能を提供する「フォールバック」OSバリアントとを決定してもよく、また欠けている機能が必要となった場合に回復を促進するための命令を記憶してもよい。さらに他の実施形態では、OS構成システム160は、デフォルトのフル機能OSで構成された仮想マシンインスタンスでタスク全体を再実行する方が、カスタマイズされたOSバリアントによって仮想マシンインスタンスでタスクを実行する試みの全部または一部を救い出すことを試みるよりも、速い(または他の場合には、効率的である)と判定してもよい。
(4)において、OS構成システム160は、決定されたOSバリアント(複数可)をデータストア(たとえば、データ記憶サービス108)に記憶してもよい。いくつかの実施形態では、OS構成システム160は、タスクのOS要件の動的分析(たとえば、実行タスク上で行われる分析)が、以前に行った静的分析(たとえば、送出されたタスクコード上で行われた分析)と一致しているか否かを判定してもよく、それに応じて、静的分析に対するそのパラメータを更新してもよい。たとえば、OS構成システム160は、タスクコードの特定の要素(たとえば、特定のモジュールをインポートする指令)と、あるOS機能を必要とすることとの間の関係を決定してもよく、さらなら静的分析を行うときにこの関係を考慮に入れてもよい。いくつかの実施形態では、OS構成システム160は、モジュールまたは他のコンポーネントからOSバリアントを構築するための「レシピ」または他の命令を記憶してもよい。他の実施形態では、OS構成システム160は、事前構成済みOSを特定する情報、タスクコードが要求するOS機能に関する情報、または他の情報であって、ワーカーマネージャ140が、インスタンスが実行するタスクコードに対してカスタマイズされたOSを仮想マシンインスタンスにプロビジョニングおよび構成することができるようにする情報を記憶してもよい。
事前構成済みオペレーティングシステムの例示的な可視化を図6に示す。例示的な可視化には、事前構成済みOS132、134、および136が含まれ、オペレーティングシステムが提供する種々の機能は、機能ブロックまたはモジュールとして表している。種々の実施形態では、これらのブロックは、OSカーネルのモジュールもしくは要素、ユーザスペースプロセスもしくはサブシステム、ライブラリ、ドライバ、またはオペレーティングシステムの他の要素であって互いに機能的に分離することができるものを表してもよい。
図6に示す可視化において、事前構成済みOS132はフルセットOS機能を含む「フル」オペレーティングシステムである。事前構成済みOS132は、たとえば、一般的に利用可能なOS(たとえば、標準リナックスディストロ)に対応してもよい。いくつかの実施形態では、事前構成済みOS132は、カスタムOSとして、オンデマンドコード実行システムがサポートする機能のすべてを実施するが、一般的に、オペレーティングシステムがサポートする機能のすべては実施しないカスタムOSに対応してもよい。たとえば、オンデマンドコード実行システムは、単純化されたファイルシステム(たとえば、ディレクトリを伴わない「フラット」ファイルシステム)のみをサポートしてもよく、事前構成済みOS132は、ファイルシステム関連のシステムコールのサブセットのみを実施してもよい。例示した実施形態では、事前構成済みOS132には、スケジューラ632A、メモリ管理サブシステム632B、ファイルシステム管理サブシステム632C、ネットワーキングサブシステム632D、およびハードウェアデバイスドライバ632Eが含まれている。当業者であれば分かるように、コンポーネント632A~Eのリストは例を目的として示しており、本開示には、オペレーティングシステムのコンポーネントが図6に示したものと比べて多い、少ない、または異なる実施形態も含まれる。たとえば、事前構成済みOS132には、ファイルシステムに読み出しおよびファイルシステムに書き込むための別個のモジュール、または異なるネットワークプロトコル(たとえば、TCP/IPネットワーキングモジュールおよびUDPネットワーキングモジュール)に対する異なるネットワーキングサブシステムが含まれていてもよい。
事前構成済みOS134は、事前構成済みOS132が提供する機能のサブセットを実施するバリアントであり、スケジューラ634A、メモリ管理サブシステム634B、およびネットワーキングサブシステム634Dが含まれる。事前構成済みOS134には、ファイルシステム管理またはハードウェアデバイスドライバに関する機能は含まれておらず、そのため、これらの機能を必要としないタスクに対してのみ好適であり得る。いくつかの実施形態では、スケジューラ634Aは、スケジューラ632Aと同じ機能を提供してもよい(またはスケジューラ632Aと同一であってもよい)し、または異なる機能を提供してもよい。事前構成済みOS136にはさらに、スケジューラ636Aのみを提供する最小のOSバリアントが例示されており、図6に示す他の機能のどれも含まれていない。一実施形態では、事前構成済みOSライブラリ(たとえば、図1の事前構成済みOSライブラリ130)には、事前構成済みOS132、134、および136上での数十または数百の他の変形が含まれていてもよい(たとえば、スケジューラがもたらされていない変形)。別の実施形態では、ライブラリ内の事前構成済みOSはすべて、タスクスケジューリングなどのある「コア」OS機能を実施してもよく、他の機能については異なっていてもよい。さらなる実施形態では、事前構成済みOSは、図6に示すサブシステムまたはモジュールのうちの1つ内で実施される機能については異なっていてもよい。たとえば、事前構成済みOSは、ハードウェアデバイスドライバが別の事前構成済みOSの場合と比べて少なくても、多くても、もしくは異なっていてもよいし、または読み取り専用ネットワーキングを実施してもよい。
いくつかの実施形態では、前述したように、図1のOS構成システム160(またはオンデマンドコード実行システム110の別のコンポーネント)は、OS134などの事前構成済みOSを選択するのではなく、個々のモジュールまたは要素からOSバリアントを構築してもよい。たとえば、OS構成システム160は、特定のタスクが、タスクスケジューリング、メモリ管理、およびネットワーキングなどのOS機能を必要とすることを決定してもよく、したがって、個々のコンポーネント、たとえば、スケジューラ632A、メモリ管理サブシステム632B、ネットワーキングサブシステム632D、および他のこのようなコンポーネントから、OSを組み立ててもよい。さらなる実施形態では、OS構成システム160は、最小機能を含むベースOSから始めてもよく、そしてタスクが必要とする場合がある特定の機能を加えてもよい。他の実施形態では、OS構成システム160は、フル機能OSから始めてもよく、タスクが必要としない場合がある機能を取り除いてもよい。
図7を参照して、オンデマンドコード実行システム110でタスクを実行するためのOSバリアントを決定するための1つの例示的なルーチン700について説明する。ルーチン700は、たとえば、図1のOS構成システム160が行ってもよい。一実施形態では、ルーチン700の全部または一部(たとえば、ブロック702~706)を、オンデマンドコード実行システム110上のタスクを形成することとともに行う。別の実施形態では、ルーチン700の全部または一部(たとえば、ブロック706~716)を、オンデマンドコード実行システム110でタスクを実行することとともに行ってもよい。それに加えてまたはその代わりに、ルーチン700の全部または一部を、他のときに、たとえば、定期的に(たとえば、日、週、月に1回など)または実行メトリクスもしくはリソース利用メトリクスが閾値から外れたことを検出したことに基づいて行ってもよい。
ルーチン700はブロック702から開始する。ここでは、OS構成システム160がタスクに対するコード(たとえば、ユーザが送出したもの)を取得する。一実施形態では、タスクに対するコードをコードオブジェクト(たとえば、タスクに対するソースコードを含む圧縮ファイル)として表す。次にルーチン700はブロック704および706へと続き、OS構成システム160が、タスクに対するOSバリアントを決定する(図7ではブロック集まり720として示す)。
ブロック704において、OS構成システム160は、取得したタスクコードを分析して、コード実行中に必要とされ得るOS機能を特定する。例示的に、OS構成システム160は、システムコール、APIコール、ライブラリ、プログラミング言語機能、または特定のOS機能が必要とし得る他の表示(すでにより詳細に説明している)を特定してもよい。いくつかの実施形態では、OS構成システム160は、取得したタスクコードをオンデマンドコード実行システム110が実行する他のタスクコードと比べてもよく、必要なOS機能を特定する類似性または共通の特徴を特定してもよい。他の実施形態では、OS構成システム160は、取得したタスクコードの以前の実行を特定して、これらの実行中に必要なOS機能を決定してもよい。種々の実施形態では、OS機能を、特定のセットの機能(たとえば、ネットワーキング機能)として、特定のAPIもしくはサブシステムとして、または個々の機能もしくはシステムコールとして特定してもよい。
ブロック706において、OS構成システム160は、ブロック704で特定した機能を含む事前構成済みOSを特定する。いくつかの実施形態では、前述したように、OS構成システム160は、特定した機能を含む複数の事前構成済みOSを特定してもよく、また種々の基準(事前構成済みOSの負荷時間、実行速度、等級付け、またはランク付けなど)を適用して、どの事前構成済みOSを選択するかを決定してもよい。他の実施形態では、OS構成システム160は、上記でより詳細に説明したように、必要な機能を伴うOSを生成または組み立ててもよい。いくつかの実施形態では、OS構成システム160は、特定したOS構成およびタスクコードをデータストアに記憶して、後で用いることに備えてもよく、またブロック706の後のルーチン700の部分を、タスクコードを実行したときに別個のルーチンとして呼び出してもよい。
ブロック708において、フロントエンド120(またはオンデマンドコード実行システム110の別の要素)が、タスクコードを実行するリクエストを受け取る。一実施形態では、オンデマンドコード実行システム110は、リクエストなしでタスクコードを実行してもよい。たとえば、オンデマンドコード実行システム110は、前述したように、定期的にタスクコードを実行してもよいし、またはある基準が満足されたときにタスクコードを実行してもよい。
ブロック710において、ワーカーマネージャ140または別のコンポーネントは、特定した事前構成済みOSおよびタスクコードを仮想マシンインスタンスにプロビジョニングする。種々の実施形態では、ワーカーマネージャ140は、事前構成済みOSがすでにプロビジョニングされた既存の仮想マシンインスタンス(たとえば、ウォーミングプールまたは他のスタンドバイモード内の仮想マシンインスタンスなど。’556特許(前述で参照により組み込まれている)で説明されている)を選択してもよいし、コンポーネントからカスタムOSを構築してもよいし、または他の場合には、タスクコードが必要とし得る機能を提供するOSバリアントを仮想マシンにプロビジョニングしてもよい。他の実施形態では、ワーカーマネージャ140を特定のOSバリアント(複数可)またはバリアントに対応付けてもよく、フロントエンド120または別のコンポーネントが、そのワーカーマネージャ140がサポートするOSバリアント(複数可)に基づいて、特定のワーカーマネージャ140を選択してもよい。
ブロック712において、ワーカーマネージャ140はタスクコードを実行する。ブロック714において、OS構成システム160は、タスクコードの実行を分析して、実行中に必要となるOS機能を特定してもよい。OS構成システム160は、たとえば、ログファイル、ネットワークアクティビティ、ファイルシステムアクティビティ、またはタスクコードの実行中に生成もしくは収集した他の情報を分析してもよい。ブロック714における分析はブロック704で行う分析と同様の目的であるが、コードを分析してそれがどの機能を呼び出し得るかを決定するではなく、実行中に実際に呼び出される機能を分析する。したがって、ブロック714における分析は、特定のOS機能を必要とするが、実行中にめったに呼び出されないか、または全く呼び出されないタスクコード部分を特定してもよい。たとえば、OSが特定のデバイスドライバを提供することを、コード中のサブルーチンが要求してもよいが、コードはブロック712における実行中にサブルーチンに到達しなくてもよい。いくつかの実施形態では、OS構成システム160は、前述したように、タスクコードのいくつかの実行を分析して、実行中に特定のOS機能が必要とされる確率を決定してもよい。
判定ブロック716において、OS構成システム160は、タスクコードが要求する機能と特定したOSバリアントが提供する機能との間に不一致があるか否かを判定してもよい。当然のことながら、不一致は両方向であってもよい。たとえば、OS構成システム160は、特定したOSバリアントはタスクの実行に必要なものよりも多い機能を提供すると判定してもよく、その結果、異なるOSバリアントを特定することによってさらなる効率向上を実現してもよい。代替的に、OS構成システム160は、特定したOSバリアントが必要な機能をすべて提供するわけではないと判定してもよい。たとえば、OS構成システム160は、ワーカーマネージャ140が、最初に特定したものとは異なるOSバリアントによりタスクコードの実行を再開しなければならなかったと判定してもよい。いくつかの実施形態では、OSバリアントは、ワーカーマネージャ140にこの状況を修正させるために必要な機能が欠けているという「カーネルパニック」または他の表示を生成してもよい。判定ブロック716における判定が、異なるOSバリアントが必要であるというものならば、ルーチン700は分岐してブロック706へ行き、新しいOSバリアントを特定する。そうでない場合は、ルーチン700は分岐してブロック708へ行き、タスクコードを実行する次のリクエストを待ち、これは最新のOSバリアントによって実現される。
本開示の実施形態では、前述したルーチンのブロックは変わってもよい。たとえば、いずれかのルーチンのいくつかの実施態様において、OS構成システム160を、さらなるOSバリアントを生成および記憶することなどのさらなる機能を実施するように構成してもよい。したがって、種々の実施形態により、ルーチンにはさらなるブロックが含まれていてもよいし、またはルーチンのブロックを並べ替えてもよい。
前述した本方法およびプロセスはすべて、1つ以上のコンピュータまたはプロセッサが実行するソフトウェアコードモジュールによって具体化してもよく、また完全に自動化してもよい。コードモジュールを、任意の種類の非一時的コンピュータ可読媒体または他のコンピュータ記憶装置に記憶してもよい。代替的に、本方法の一部または全部を専用のコンピュータハードウェアで具体化してもよい。
条件付き言語、たとえば、とりわけ、「できる(can)」、「できる(could)」、「してもよい(might)」、または「してもよい(may)」は、特に記載のない限り、一般的に用いられる場合と同様に、本来、文脈内で理解され、ある実施形態には、ある特徴、要素、および/またはステップが含まれるが、他の実施形態には含まれていない、ということを示している。したがって、このような条件付き言語は一般的に、特徴、要素、および/もしくはステップが多少なりとも1つ以上の実施形態にとって必要であるということ、または1つ以上の実施形態には必ず、ロジックとして、ユーザ入力またはプロンプティングがあってもなくても、これらの特徴、要素、および/もしくはステップが何らかの特定の実施形態に含まれているかもしくはそこで行うべきかを決定するロジックが含まれるということを意味するものではないことが意図されている。
離接的な言葉、たとえば語句「X、Y、またはZのうちの少なくとも1つ」は、特に記載のない限り、一般的に用いられる場合と同様に、本来、文脈を用いて理解され、事項、用語などは、X、Y、もしくはZ、またはそれらの任意の組み合わせ(たとえば、X、Y、および/またはZ)であり得るということを示している。したがって、このような離接的な言葉は一般的に、ある実施形態ではXのうちの少なくとも1つ、Yのうちの少なくとも1つ、またはZのうちの少なくとも1つがそれぞれ存在する必要があるということを意味することは意図しておらず、また意味すべきではない。
特に明記しない限り、「a」または「an」などの冠詞は一般的に、記載事項を1つ以上含むと解釈すべきである。したがって、「構成されたデバイス」などの語句は、説明したデバイスを1つ以上含むことが意図されている。このような1つ以上の説明したデバイスを、述べた説明を実施するように一括して構成することができる。たとえば、「説明A、B、およびCを行うように構成されたプロセッサ」には、説明Aを行うように構成された第1のプロセッサが、説明BおよびCを行うように構成された第2のプロセッサとともに動作することを含めることができる。
本明細書で説明したおよび/または添付図に示したフロー図における任意のルーチン記載、要素、またはブロックは、1つ以上のルーチン内の特定の論理機能または要素を実施するための実行可能命令が含まれるモジュール、セグメント、またはコード部分を潜在的に表すと理解すべきである。本明細書で説明する実施形態の範囲には、代替的な実施態様が含まれ、すなわち、当業者であれば理解されるように、含まれる機能に応じて、要素もしくは機能が削除される場合があり、または図示もしくは説明したもの(たとえば、実質的に同期してもしくは逆の順序で)から順序が外れて実行される場合がある。
前述の実施形態に対して多くの変形および変更を行ってもよく、その要素は他の許容できる例の中にあると理解すべきであることを、強調しておかなければならない。このような変更および変化はすべて、本明細書では、本開示の範囲に含まれ、以下の特許請求の範囲によって保護されることが意図されている。
本開示の実施形態の例は、以下の条項に鑑みて説明することができる。
条項1.
システムであって、
複数のオペレーティングシステム(「OS」)バリアントを記憶する物理データストアであって、前記複数のOSバリアントの個々のOSバリアントは、対応するOS機能の組を提供する、前記物理データストアと、
コンピューティングデバイスであって、前記コンピューティングデバイスは実行可能命令によって、
オンデマンドコード実行システムで実行可能なユーザ送出コードを受け取ることと、
前記オンデマンドコード実行システムで実行されたときに前記ユーザ送出コードが呼び出すことが予想される第1の組のOS機能を決定することと、
前記複数のOSバリアントのうちの第1のOSバリアントを特定することであって、第1のOS構成は少なくとも前記第1の組のOS機能を提供する、前記特定することと、
前記ユーザ送出コードの実行をリクエストすることに応じて、前記第1のOSバリアントと前記ユーザ送出コードとを仮想マシンインスタンスにプロビジョニングすることと、
を行うように構成された、前記コンピューティングデバイスと、
を含む、前記システム。
条項2.
前記コンピューティングデバイスはさらに、前記ユーザ送出コード内の1つ以上のシステムコールを特定するように構成され、
前記第1の組のOS機能は、少なくとも部分的に前記1つ以上のシステムコールに基づいて決定される、条項1に記載のシステム。
条項3.
前記第1の組のOS機能には、ページング機能、キャッシング機能、ファイルシステム機能、ネットワーキング機能、スレッディング機能、プロファイリング機能、スケジューリング機能、1つ以上のネットワーキングプロトコル実施態様、または1つ以上のハードウェアデバイスドライバのうちの1つ以上が含まれる、条項1に記載のシステム。
条項4.
前記コンピューティングデバイスはさらに、
前記複数のOSバリアントのうちの第2のOSバリアントを特定することであって、前記第2のOSバリアントは少なくとも前記第1の組のOS機能を提供する、前記特定することと、
前記第1のOSバリアントは、前記第2のOSバリアントよりも第1のコンピューティングリソースの使用量が少ないことを判定することと、
を行うように構成されている、条項1に記載のシステム。
条項5.
前記第1のコンピューティングリソースには、処理時間、プロセッサ容量、バンド幅、メモリ、ストレージ、または待ち時間のうちの1つ以上が含まれる、条項4に記載のシステム。
条項6.
コンピュータ実装方法であって、
オンデマンドコード実行システムで実行可能なユーザ送出コードを受け取ることと、
少なくとも部分的に前記ユーザ送出コードに基づいて、前記オンデマンドコード実行システムで前記ユーザ送出コードを実行することに対応付けられる第1の組のOS機能を決定することと、
少なくとも部分的に前記第1の組のOS機能に基づいて、複数のOSバリアントのうちの第1のOSバリアントを特定することと、
前記ユーザ送出コードの実行をリクエストすることに応じて、第1の仮想マシンインスタンスで前記ユーザ送出コードを実行することであって、前記第1の仮想マシンインスタンスは前記第1のOSバリアントを有する、前記実行することと、
を含む、前記コンピュータ実装方法。
条項7.
前記第1の仮想マシンインスタンスに前記第1のOSバリアントをプロビジョニングすることをさらに含む、条項6に記載のコンピュータ実装方法。
条項8.
複数の事前構成済み仮想マシンインスタンスから前記第1のOSバリアントを有する前記第1の仮想マシンインスタンスを選択することをさらに含む、条項6に記載のコンピュータ実装方法。
条項9.
前記第1のOSバリアントを特定することは、少なくとも部分的に前記ユーザ送出コードの1つ以上の以前の実行に基づく、条項6に記載のコンピュータ実装方法。
条項10.
前記ユーザ送出コードの一部は、前記第1のOSバリアントが提供しない少なくとも1つの機能を必要とする、条項6に記載のコンピュータ実装方法。
条項11.
少なくとも部分的に前記ユーザ送出コードの1つ以上の以前の実行に基づいて、前記少なくとも1つの機能を必要とする前記ユーザ送出コードの前記一部が実行される確率を決定することをさらに含む、条項10に記載のコンピュータ実装方法。
条項12.
さらに、
前記第1のOSバリアントに対応付けられる第1のリソースを取得することと、
第2のOSバリアントに対応付けられる第2のリソースを取得することであって、前記第2のOSバリアントは前記少なくとも1つの機能を提供する、前記取得することと、を含み、
前記第1のOSバリアントを特定することは、少なくとも部分的に、前記第1のリソースと、前記第2のリソースと、前記少なくとも1つの機能を必要とする前記ユーザ送出コードの前記一部が実行される前記確率とに基づく、条項11に記載のコンピュータ実装方法。
条項13.
さらに、
前記第1の仮想マシンインスタンスで前記ユーザ送出コードを実行する間に、前記少なくとも1つの機能を必要とする前記ユーザ送出コードの前記実行を決定することと、
第2のOSバリアントを有する第2の仮想マシンインスタンスで前記ユーザ送出コードを実行することであって、前記第2のOSバリアントは前記少なくとも1つの機能を提供する、前記実行することと、
を含む、条項10に記載のコンピュータ実装方法。
条項14.
前記第2のOSバリアントはデフォルトのOSバリアントに対応する、条項13に記載のコンピュータ実装方法。
条項15.
さらに前記第1の仮想マシンインスタンスから前記第2の仮想マシンインスタンスに状態情報を伝達することを含む、条項13に記載のコンピュータ実装方法。
条項16.
コンピュータ実行可能命令を含む非一時的なコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、オンデマンドコード実行システムで実行されると、前記オンデマンドコード実行システムに、
オンデマンドコード実行システムで実行可能なユーザ送出コードを取得することと、
少なくとも部分的に前記ユーザ送出コードに基づいて、前記ユーザ送出コードを実行することに対応付けられる第1の組のOS機能を決定することと、
少なくとも部分的に前記第1の組のOS機能に基づいて、第1のOSバリアントを決定することと、
前記ユーザ送出コードを実行するリクエストに応じて、前記第1のOSバリアントを有する第1の仮想マシンインスタンスで前記ユーザ送出コードを実行することと、
を行わせる、前記非一時的なコンピュータ可読媒体。
条項17.
前記命令はさらに、前記オンデマンドコード実行システムに、前記第1のOSバリアントを生成することを行わせる、条項16に記載の非一時的なコンピュータ可読媒体。
条項18.
前記命令はさらに、前記オンデマンドコード実行システムに、前記第1のOSバリアントを生成することを行わせる、条項17に記載の非一時的なコンピュータ可読媒体。
条項19.
前記第1のOSバリアントは複数の所定のOS構成から選択される、条項16に記載の非一時的なコンピュータ可読媒体。
条項20.
前記命令はさらに、前記オンデマンドコード実行システムに、前記ユーザ送出コードを実行する第2のリクエストに応じて、前記第1のOSバリアントを有する第2の仮想マシンで前記ユーザ送出コードを実行することを行わせる、条項16に記載の非一時的なコンピュータ可読媒体。

Claims (14)

  1. 複数のOSバリアントを記憶する物理データストアであって、前記複数のOSバリアントの個々のOSバリアントは、対応するOS機能の組を提供する物理データストアと、
    コンピューティングデバイスと、
    を含むシステムであって、
    前記コンピューティングデバイスは、実行可能命令によって、
    オンデマンドコード実行システムで実行可能なユーザ送出コードを受け取ることと、
    記ユーザ送出コードに基づいて、前記オンデマンドコード実行システムで前記ユーザ送出コードを実行することに対応付けられる第1の組のOS機能を決定することと、
    記第1の組のOS機能に基づいて、前記複数のOSバリアントのうちの第1のOSバリアントを特定することと、
    前記ユーザ送出コードの実行をリクエストすることに応じて、前記第1のOSバリアントと前記ユーザ送出コードとを仮想マシンインスタンスにプロビジョニングすることと、
    を行うように構成されている、
    システム。
  2. 前記コンピューティングデバイスは、さらに、前記ユーザ送出コード内の1つ以上のシステムコールを特定するように構成され、
    前記第1の組のOS機能は、前記1つ以上のシステムコールに基づいて決定される、
    請求項1に記載のシステム。
  3. 前記第1の組のOS機能には、ページング機能、キャッシング機能、ファイルシステム機能、ネットワーキング機能、スレッディング機能、プロファイリング機能、スケジューリング機能、1つ以上のネットワーキングプロトコル実施態様、または、1つ以上のハードウェアデバイスドライバのうちの1つ以上が含まれる、
    請求項1に記載のシステム。
  4. 前記コンピューティングデバイスは、さらに、
    前記複数のOSバリアントのうちの第2のOSバリアントを特定することであって、前記第2のOSバリアントは少なくとも前記第1の組のOS機能を提供することと、
    前記第1のOSバリアントが前記第2のOSバリアントよりも第1のコンピューティングリソースの使用量が少ないことを決定することと、
    を行うように構成されている、
    請求項1に記載のシステム。
  5. コンピュータ実装方法であって、
    オンデマンドコード実行システムで実行可能なユーザ送出コードを受け取ることと、
    記ユーザ送出コードに基づいて、前記オンデマンドコード実行システムで前記ユーザ送出コードを実行することに対応付けられる第1の組のOS機能を決定することと、
    記第1の組のOS機能に基づいて、複数のOSバリアントのうちの第1のOSバリアントを特定することと、
    前記ユーザ送出コードの実行をリクエストすることに応じて、第1の仮想マシンインスタンスで前記ユーザ送出コードを実行することであって、前記第1の仮想マシンインスタンスは、前記第1のOSバリアントを有することと、
    を含むコンピュータ実装方法。
  6. 前記コンピュータ実装方法は、複数の事前構成済み仮想マシンインスタンスから前記第1のOSバリアントを有する前記第1の仮想マシンインスタンスを選択することをさらに含む、
    請求項5に記載のコンピュータ実装方法。
  7. 前記ユーザ送出コードの一部は、前記第1のOSバリアントが提供しない少なくとも1つの機能を必要とする、
    請求項5に記載のコンピュータ実装方法。
  8. 前記コンピュータ実装方法は
    記ユーザ送出コードの1つ以上の以前の実行に基づいて、前記少なくとも1つの機能を必要とする前記ユーザ送出コードの前記一部が実行される確率を決定することと、
    前記第1のOSバリアントに対応付けられる第1のリソースコストを取得することと、
    第2のOSバリアントに対応付けられる第2のリソースコストを取得することであって、前記第2のOSバリアントは、前記少なくとも1つの機能を提供することと、
    をさらに含み、
    前記第1のOSバリアントを特定することは、前記第1のリソースコストと、前記第2のリソースコストと、前記少なくとも1つの機能を必要とする前記ユーザ送出コードの前記一部が実行される前記確率と、に基づく、
    請求項7に記載のコンピュータ実装方法。
  9. 前記コンピュータ実装方法は、さらに、
    前記第1の仮想マシンインスタンスで前記ユーザ送出コードを実行する間に、前記少なくとも1つの機能を必要とする前記ユーザ送出コードの前記実行を決定することと、
    第2のOSバリアントを有する第2の仮想マシンインスタンスで前記ユーザ送出コードを実行することであって、前記第2のOSバリアントは、前記少なくとも1つの機能を提供することと、
    を含む、
    請求項7に記載のコンピュータ実装方法。
  10. 前記コンピュータ実装方法は、さらに、前記第1の仮想マシンインスタンスから前記第2の仮想マシンインスタンスに状態情報を伝達することを含む、
    請求項9に記載のコンピュータ実装方法。
  11. コンピュータ実行可能命令を含む非一時的なコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、オンデマンドコード実行システムで実行されると、前記オンデマンドコード実行システムに、
    オンデマンドコード実行システムで実行可能なユーザ送出コードを取得することと、
    記ユーザ送出コードに基づいて、前記ユーザ送出コードを実行することに対応付けられる第1の組のOS機能を決定することと、
    記第1の組のOS機能に基づいて、第1のOSバリアントを決定することと、
    前記ユーザ送出コードを実行するリクエストに応じて、前記第1のOSバリアントを有する第1の仮想マシンインスタンスで前記ユーザ送出コードを実行することと、
    を行わせる非一時的なコンピュータ可読媒体。
  12. 前記命令は、さらに、前記オンデマンドコード実行システムに、前記第1のOSバリアントを生成することを行わせる、
    請求項11に記載の非一時的なコンピュータ可読媒体。
  13. 前記第1のOSバリアントは、マイクロカーネルおよび1つ以上のシステムプロセスを含む、
    請求項12に記載の非一時的なコンピュータ可読媒体。
  14. 前記命令は、さらに、前記オンデマンドコード実行システムに、前記ユーザ送出コードを実行する第2のリクエストに応じて、前記第1のOSバリアントを有する第2の仮想マシンインスタンスで前記ユーザ送出コードを実行することを行わせる、
    請求項11に記載の非一時的なコンピュータ可読媒体。
JP2020572443A 2018-06-29 2019-06-26 オンデマンドネットワークコード実行システムにおけるオペレーティングシステムカスタマイゼーション Active JP7275171B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/023,852 2018-06-29
US16/023,852 US10949237B2 (en) 2018-06-29 2018-06-29 Operating system customization in an on-demand network code execution system
PCT/US2019/039246 WO2020006081A1 (en) 2018-06-29 2019-06-26 Operating system customization in an on-demand network code execution system

Publications (2)

Publication Number Publication Date
JP2021530037A JP2021530037A (ja) 2021-11-04
JP7275171B2 true JP7275171B2 (ja) 2023-05-17

Family

ID=67303517

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020572443A Active JP7275171B2 (ja) 2018-06-29 2019-06-26 オンデマンドネットワークコード実行システムにおけるオペレーティングシステムカスタマイゼーション

Country Status (6)

Country Link
US (1) US10949237B2 (ja)
EP (1) EP3814895A1 (ja)
JP (1) JP7275171B2 (ja)
KR (1) KR102541295B1 (ja)
CN (1) CN112513811A (ja)
WO (1) WO2020006081A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11875173B2 (en) 2018-06-25 2024-01-16 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
CA3085009A1 (en) 2017-12-08 2019-06-13 Net-Thunder, Llc Automatically deployed information technology (it) system and method
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11055112B2 (en) * 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11113186B1 (en) * 2019-12-13 2021-09-07 Amazon Technologies, Inc. Testing and publishing of resource handlers in a cloud environment
US11132226B2 (en) * 2020-01-03 2021-09-28 International Business Machines Corporation Parallel resource provisioning
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US20230195882A1 (en) * 2021-12-21 2023-06-22 Cyberark Software Ltd. Orchestration and generation of minimal surface optimized unikernels
US11983525B2 (en) 2022-06-28 2024-05-14 Red Hat, Inc. Automated container size reduction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012078893A (ja) 2010-09-30 2012-04-19 Hitachi Solutions Ltd 計算機システム、及び管理計算機
JP2012104150A (ja) 2012-01-19 2012-05-31 Intel Corp ネットワーク環境におけるスペースのカスタマイズ
US20170177391A1 (en) 2015-02-04 2017-06-22 Amazon Technologies, Inc. Stateful virtual compute system

Family Cites Families (598)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949254A (en) 1988-09-29 1990-08-14 Ibm Corp. Method to manage concurrent execution of a distributed application program by a host computer and a large plurality of intelligent work stations on an SNA network
US5283888A (en) 1991-08-27 1994-02-01 International Business Machines Corporation Voice processing interface unit employing virtual screen communications for accessing a plurality of primed applications
DE19500957A1 (de) 1994-07-19 1996-01-25 Bosch Gmbh Robert Verfahren zur Steuerung von technischen Vorgängen oder Prozessen
GB2302966A (en) * 1995-06-30 1997-02-05 Ibm Transaction processing with a reduced-kernel operating system
US5970488A (en) 1997-05-05 1999-10-19 Northrop Grumman Corporation Real-time distributed database system and method
JPH1153326A (ja) 1997-07-30 1999-02-26 Internatl Business Mach Corp <Ibm> 分散処理システム、クライアントノード、サーバノードおよび分散処理方法
US6463509B1 (en) 1999-01-26 2002-10-08 Motive Power, Inc. Preloading data in a cache memory according to user-specified preload criteria
US6501736B1 (en) 1999-03-19 2002-12-31 Lucent Technologies Inc. System for increasing the call capacity of a wireless communication system
JP2000305796A (ja) 1999-04-22 2000-11-02 Hitachi Ltd 電子計算機間のジョブ転送方法およびジョブ転送システム
US6523035B1 (en) 1999-05-20 2003-02-18 Bmc Software, Inc. System and method for integrating a plurality of disparate database utilities into a single graphical user interface
US7472349B1 (en) 1999-06-01 2008-12-30 Oracle International Corporation Dynamic services infrastructure for allowing programmatic access to internet and other resources
US6708276B1 (en) 1999-08-03 2004-03-16 International Business Machines Corporation Architecture for denied permissions in Java
US20050027610A1 (en) 1999-08-26 2005-02-03 Wharton Brian K. Electronic commerce systems and methods providing unified checkout steps
US6854114B1 (en) 1999-10-21 2005-02-08 Oracle International Corp. Using a virtual machine instance as the basic unit of user execution in a server environment
DE10048942B4 (de) 1999-12-01 2008-07-03 International Business Machines Corp. Verfahren und System zur Wartung von Software über ein Netz
JP2001331333A (ja) 2000-05-18 2001-11-30 Hitachi Ltd 計算機システム及び計算機システムの制御方法
US20040098154A1 (en) 2000-10-04 2004-05-20 Mccarthy Brendan Method and apparatus for computer system engineering
US8719326B2 (en) 2003-08-18 2014-05-06 S.F. Ip Properties 14 Llc Adaptive data transformation engine
JP2002287974A (ja) 2001-03-26 2002-10-04 Ricoh Co Ltd アプリケーションプログラムの登録制御及び起動制御に係る方法及び該制御装置
US7009939B2 (en) 2001-05-21 2006-03-07 Lucent Technologies Inc. Adaptive resource management in a communication system
JP2004536405A (ja) 2001-07-16 2004-12-02 ユキング レン 組み込みソフトウェア更新システム
US20040205493A1 (en) 2001-08-08 2004-10-14 Simpson Shell S. Web based imaging application that creates customized content based on user selections
US7028030B2 (en) 2001-08-30 2006-04-11 Bea Systems, Inc. Cluster caching with concurrency checking
US7594182B2 (en) 2001-10-12 2009-09-22 National Insturments Corporation Dynamic and user-defined events for a graphical program
US7269833B2 (en) 2001-12-12 2007-09-11 Sun Microsystems, Inc. Scriptable plug-in application programming interface
US7174566B2 (en) 2002-02-01 2007-02-06 Intel Corporation Integrated network intrusion detection
US7093004B2 (en) 2002-02-04 2006-08-15 Datasynapse, Inc. Using execution statistics to select tasks for redundant assignment in a distributed computing platform
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US8527408B2 (en) 2002-05-06 2013-09-03 Bottom Line Technologies (De), Inc. Integrated payment system
US20030229794A1 (en) 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US7228354B2 (en) 2002-06-28 2007-06-05 International Business Machines Corporation Method for improving performance in a computer storage system by regulating resource requests from clients
US7107585B2 (en) 2002-07-29 2006-09-12 Arm Limited Compilation of application code in a data processing apparatus
US7386855B2 (en) 2002-08-12 2008-06-10 Ntt Docomo, Inc. Application mobility service
US7747989B1 (en) 2002-08-12 2010-06-29 Mips Technologies, Inc. Virtual machine coprocessor facilitating dynamic compilation
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
JP2004102597A (ja) 2002-09-09 2004-04-02 Fujitsu Ltd コンパイル処理プログラム、コンパイル処理方法、およびコンパイル処理プログラム記録媒体
JP4571509B2 (ja) 2002-12-02 2010-10-27 エスアーペー アーゲー セッション復帰可能な、処理状態を把握するウェブアプリケーション
US7031958B2 (en) 2003-02-06 2006-04-18 International Business Machines Corporation Patterned based query optimization
US7774191B2 (en) 2003-04-09 2010-08-10 Gary Charles Berkowitz Virtual supercomputer
US20050193113A1 (en) 2003-04-14 2005-09-01 Fujitsu Limited Server allocation control method
US20040249947A1 (en) 2003-05-22 2004-12-09 Hewlett-Packard Development Company, L.P. Concurrent cluster environment
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7340522B1 (en) * 2003-07-31 2008-03-04 Hewlett-Packard Development Company, L.P. Method and system for pinning a resource having an affinity to a user for resource allocation
US8776050B2 (en) 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US20050044301A1 (en) 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
US7441244B2 (en) 2003-12-10 2008-10-21 International Business Machines Corporation Workload scheduler with cumulative weighting indexes
US20050193283A1 (en) 2003-12-30 2005-09-01 Reinhardt Steven K. Buffering unchecked stores for fault detection in redundant multithreading systems using speculative memory support
US7743029B2 (en) 2003-12-30 2010-06-22 Sap Ag Log configuration and online deployment services
JP2005198201A (ja) 2004-01-09 2005-07-21 Ntt Docomo Inc ネットワークトポロジー構成方法及びノード
US7665090B1 (en) 2004-03-08 2010-02-16 Swsoft Holdings, Ltd. System, method, and computer program product for group scheduling of computer resources
US7565661B2 (en) 2004-05-10 2009-07-21 Siew Yong Sim-Tang Method and system for real-time event journaling to provide enterprise data services
US7587721B2 (en) 2004-05-20 2009-09-08 Sap Ag Sharing objects in runtime systems
US7359834B2 (en) 2004-08-13 2008-04-15 Sun Microsystems, Inc. Monitoring system-calls to identify runaway processes within a computer system
US20060080678A1 (en) 2004-09-07 2006-04-13 Bailey Mark W Task distribution method for protecting servers and tasks in a distributed system
US8146073B2 (en) 2004-09-30 2012-03-27 Microsoft Corporation Updating software while it is running
JP2006107599A (ja) 2004-10-04 2006-04-20 Sekisui Chem Co Ltd 光ディスク
US20060129684A1 (en) 2004-11-10 2006-06-15 Chutney Technologies, Inc. Apparatus and method for distributing requests across a cluster of application servers
JP4191672B2 (ja) 2004-12-14 2008-12-03 ザイオソフト株式会社 ボリュームレンダリング等の画像処理システム
US8321554B2 (en) 2004-12-17 2012-11-27 International Business Machines Corporation System and program to automatically identify a server on which to deploy an application
US7793290B2 (en) 2004-12-20 2010-09-07 Sap Ag Grip application acceleration by executing grid application based on application usage history prior to user request for application execution
FR2881854B1 (fr) 2005-02-04 2008-01-11 Radiotelephone Sfr Procede de gestion securisee de l'execution d'une application
CN100337218C (zh) 2005-02-23 2007-09-12 北京邦诺存储科技有限公司 网络存储系统中的数据管理方法及其构建的网络存储系统
US8782231B2 (en) 2005-03-16 2014-07-15 Adaptive Computing Enterprises, Inc. Simple integration of on-demand compute environment
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US20060242647A1 (en) 2005-04-21 2006-10-26 Kimbrel Tracy J Dynamic application placement under service and memory constraints
JP4515319B2 (ja) 2005-04-27 2010-07-28 株式会社日立製作所 コンピュータシステム
JP4690767B2 (ja) 2005-05-11 2011-06-01 株式会社日立製作所 ネットワークシステム、サーバ装置および通信方法
US7707579B2 (en) 2005-07-14 2010-04-27 International Business Machines Corporation Method and system for application profiling for purposes of defining resource requirements
US8571913B2 (en) 2005-08-04 2013-10-29 Jeffrey K. Johnson System and method for managing data within a calendaring framework
US8407785B2 (en) 2005-08-18 2013-03-26 The Trustees Of Columbia University In The City Of New York Systems, methods, and media protecting a digital data processing device from attack
JP4580845B2 (ja) 2005-08-24 2010-11-17 パナソニック株式会社 タスク実行装置
US7730464B2 (en) 2005-09-14 2010-06-01 Microsoft Corporation Code compilation management service
US8429630B2 (en) 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US20070101325A1 (en) 2005-10-19 2007-05-03 Juraj Bystricky System and method for utilizing a remote memory to perform an interface save/restore procedure
JP4650203B2 (ja) 2005-10-20 2011-03-16 株式会社日立製作所 情報システム及び管理計算機
US7756972B2 (en) 2005-12-06 2010-07-13 Cisco Technology, Inc. System for power savings in server farms
US8099726B2 (en) 2005-12-07 2012-01-17 Microsoft Corporation Implementing strong atomicity in software transactional memory
US7725574B2 (en) 2006-01-23 2010-05-25 International Business Machines Corporation Web browser-based programming language error determination and reporting
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7818798B2 (en) 2006-02-03 2010-10-19 Microsoft Corporation Software system with controlled access to objects
KR20080098410A (ko) 2006-02-13 2008-11-07 마리아 가오스 선택된 애플리케이션에 기초하여 플랫폼 에뮬레이션을 생성하고 실행하기 위한 시스템 및 방법
US8769511B2 (en) 2006-02-16 2014-07-01 The Regents Of The University Of California Dynamic incremental compiler and method
US20070220009A1 (en) 2006-03-15 2007-09-20 Morris Robert P Methods, systems, and computer program products for controlling access to application data
US8190682B2 (en) 2006-03-31 2012-05-29 Amazon Technologies, Inc. Managing execution of programs by multiple computing systems
US7801128B2 (en) 2006-03-31 2010-09-21 Amazon Technologies, Inc. Managing communications between computing nodes
US7792944B2 (en) 2006-03-31 2010-09-07 Amazon Technologies, Inc. Executing programs based on user-specified constraints
US7831464B1 (en) 2006-04-06 2010-11-09 ClearPoint Metrics, Inc. Method and system for dynamically representing distributed information
US7702843B1 (en) 2006-04-27 2010-04-20 Vmware, Inc. Determining memory conditions in a virtual machine
US9754265B2 (en) 2006-05-01 2017-09-05 At&T Intellectual Property I, L.P. Systems and methods to automatically activate distribution channels provided by business partners
US8046765B2 (en) 2006-07-25 2011-10-25 Hewlett-Packard Development Company, L.P. System and method for determining allocation of resource access demands to different classes of service based at least in part on permitted degraded performance
US8209695B1 (en) 2006-07-28 2012-06-26 Hewlett-Packard Development Company, L.P. Reserving resources in a resource-on-demand system for user desktop utility demand
US8015294B2 (en) 2006-08-22 2011-09-06 Embarq Holdings Company, LP Pin-hole firewall for communicating data packets on a packet network
US7823186B2 (en) 2006-08-24 2010-10-26 Novell, Inc. System and method for applying security policies on multiple assembly caches
CA2557343C (en) 2006-08-28 2015-09-22 Ibm Canada Limited-Ibm Canada Limitee Runtime code modification in a multi-threaded environment
US7996855B2 (en) 2006-09-15 2011-08-09 Oracle International Corporation Personal messaging application programming interface for integrating an application with groupware systems
US20150052258A1 (en) 2014-09-29 2015-02-19 Weaved, Inc. Direct map proxy system and protocol
US8161475B2 (en) 2006-09-29 2012-04-17 Microsoft Corporation Automatic load and balancing for virtual machines to meet resource requirements
US8010990B2 (en) 2006-10-26 2011-08-30 Intel Corporation Acceleration of packet flow classification in a virtualized system
US8584109B2 (en) 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
US8185893B2 (en) 2006-10-27 2012-05-22 Hewlett-Packard Development Company, L.P. Starting up at least one virtual machine in a physical machine by a load balancer
US7644204B2 (en) 2006-10-31 2010-01-05 Hewlett-Packard Development Company, L.P. SCSI I/O coordinator
US8315171B2 (en) 2006-10-31 2012-11-20 Oracle America, Inc. Adaptive management of computing resources
JP4308241B2 (ja) 2006-11-10 2009-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
US8112747B2 (en) 2006-11-27 2012-02-07 Sap Ag Integrated software support for a distributed business application with seamless backend communications
CN101196974B (zh) 2006-12-06 2011-08-24 国际商业机器公司 用于软件应用程序的自动配置的方法和系统
JP2010514028A (ja) 2006-12-22 2010-04-30 バーチャルロジックス エスエイ 単一データ処理を共有するために複数の実行環境を有効化するシステム
WO2008084826A1 (ja) 2007-01-11 2008-07-17 Nec Corporation プロビジョニングシステム、方法、及び、プログラム
US8554981B2 (en) 2007-02-02 2013-10-08 Vmware, Inc. High availability virtual machine cluster
US8655623B2 (en) 2007-02-13 2014-02-18 International Business Machines Corporation Diagnostic system and method
US8793676B2 (en) 2007-02-15 2014-07-29 Microsoft Corporation Version-resilient loader for custom code runtimes
US20080201455A1 (en) 2007-02-15 2008-08-21 Husain Syed M Amir Moving Execution of a Virtual Machine Across Different Virtualization Platforms
US8065682B2 (en) 2007-02-27 2011-11-22 Microsoft Corporation Enforcing system resource usage limits on query requests based on grouping query requests into workgroups and assigning workload groups to resource pools
JP5018133B2 (ja) 2007-02-27 2012-09-05 富士通株式会社 ジョブ管理装置、クラスタシステム、およびジョブ管理プログラム
US8856782B2 (en) 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
JP5293595B2 (ja) 2007-03-20 2013-09-18 富士通株式会社 コンピュータプログラム、更新システム、及びプログラム実行装置
US8667471B2 (en) 2007-03-30 2014-03-04 Sap Ag Method and system for customizing profiling sessions
US8522209B2 (en) 2007-03-30 2013-08-27 Sap Ag Method and system for integrating profiling and debugging
US8065676B1 (en) 2007-04-24 2011-11-22 Hewlett-Packard Development Company, L.P. Automated provisioning of virtual machines for a virtual machine buffer pool and production pool
US8219987B1 (en) 2007-08-24 2012-07-10 Vmware, Inc. Optimized virtual machine specification for provisioning application specific runtime environment
US8051266B2 (en) 2007-06-11 2011-11-01 International Business Machines Corporation Automatic memory management (AMM)
US9588821B2 (en) 2007-06-22 2017-03-07 Red Hat, Inc. Automatic determination of required resource allocation of virtual machines
US20090006897A1 (en) 2007-06-27 2009-01-01 Microsoft Corporation Automated service testing
US8161476B2 (en) 2007-07-04 2012-04-17 International Business Machines Corporation Processor exclusivity in a partitioned system
US8074229B2 (en) 2007-07-18 2011-12-06 Sap Ag Co-execution of objects from divergent runtime environments
US20090055810A1 (en) 2007-08-21 2009-02-26 Nce Technologies Inc. Method And System For Compilation And Execution Of Software Codes
WO2009029549A2 (en) 2007-08-24 2009-03-05 Virtualmetrix, Inc. Method and apparatus for fine grain performance management of computer systems
US8171473B2 (en) 2007-08-31 2012-05-01 International Business Machines Corporation Method and apparatus for determining a service cluster topology based on static analysis
US7827299B2 (en) 2007-09-11 2010-11-02 International Business Machines Corporation Transitioning between historical and real time data streams in the processing of data change messages
US8402472B2 (en) 2007-09-14 2013-03-19 International Business Machines Corporation Network management system event notification shortcut
US20090193410A1 (en) 2007-09-28 2009-07-30 Xcerion Aktiebolag Network operating system
US8166304B2 (en) 2007-10-02 2012-04-24 International Business Machines Corporation Support for multiple security policies on a unified authentication architecture
US20090204964A1 (en) 2007-10-12 2009-08-13 Foley Peter F Distributed trusted virtualization platform
US8127284B2 (en) 2007-10-16 2012-02-28 Microsoft Corporation On-demand loading of types of software code of a program executing on a computing device
US8566835B2 (en) 2007-12-13 2013-10-22 Hewlett-Packard Development Company, L.P. Dynamically resizing a virtual machine container
US20110040812A1 (en) 2007-12-20 2011-02-17 Virtual Computer, Inc. Layered Virtual File System
US8473956B2 (en) 2008-01-15 2013-06-25 Microsoft Corporation Priority based scheduling system for server
US8560694B2 (en) 2008-02-01 2013-10-15 Microsoft Corporation Virtual application server with version control
US9928260B2 (en) 2008-02-11 2018-03-27 Nuix Pty Ltd Systems and methods for scalable delocalized information governance
US8156503B2 (en) 2008-02-12 2012-04-10 International Business Machines Corporation System, method and computer program product for accessing a memory space allocated to a virtual machine
US8387075B1 (en) 2008-03-28 2013-02-26 Emc Corporation Common scheduling and synchronization primitives
US9086924B2 (en) 2008-04-24 2015-07-21 International Business Machines Corporation Executing a distributed java application on a plurality of compute nodes
US7886021B2 (en) 2008-04-28 2011-02-08 Oracle America, Inc. System and method for programmatic management of distributed computing resources
US8473594B2 (en) 2008-05-02 2013-06-25 Skytap Multitenant hosted virtual machine infrastructure
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8543998B2 (en) 2008-05-30 2013-09-24 Oracle International Corporation System and method for building virtual appliances using a repository metadata server and a dependency resolution service
US20090300599A1 (en) 2008-05-30 2009-12-03 Matthew Thomas Piotrowski Systems and methods of utilizing virtual machines to protect computer systems
JP5120121B2 (ja) 2008-07-15 2013-01-16 コニカミノルタビジネステクノロジーズ株式会社 中継サーバ、中継方法および中継プログラム
JP5157717B2 (ja) 2008-07-28 2013-03-06 富士通株式会社 仮想バッテリを備えた仮想マシンシステムおよび仮想バッテリを備えた仮想マシンシステム用プログラム
US20100036925A1 (en) 2008-08-07 2010-02-11 Tactara, Llc Alias management platforms
JP5215779B2 (ja) 2008-09-01 2013-06-19 キヤノン株式会社 情報処理装置及び情報処理方法
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
WO2010030703A1 (en) 2008-09-09 2010-03-18 Kace Networks, Inc. Deployment and management of virtual containers
US20100094816A1 (en) 2008-09-09 2010-04-15 Lockheed Martin Corporation Safety-Critical Data Checking In Object-Oriented Systems
US20100070678A1 (en) 2008-09-12 2010-03-18 Vmware, Inc. Saving and Restoring State Information for Virtualized Computer Systems
US9098698B2 (en) 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US10365935B1 (en) 2008-09-23 2019-07-30 Open Invention Network Llc Automated system and method to customize and install virtual machine configurations for hosting in a hosting environment
US7937625B2 (en) 2008-09-26 2011-05-03 Microsoft Corporation Evaluating effectiveness of memory management techniques selectively using mitigations to reduce errors
US20100106926A1 (en) 2008-10-25 2010-04-29 International Business Machines Corporation Second failure data capture problem determination using user selective memory protection to trace application failures
US9141381B2 (en) 2008-10-27 2015-09-22 Vmware, Inc. Version control environment for virtual machines
US9176786B2 (en) 2008-11-04 2015-11-03 Novell, Inc. Dynamic and automatic colocation and combining of service providers and service clients in a grid of resources for performing a data backup function
US8214795B2 (en) 2008-11-26 2012-07-03 Optumsoft, Inc. Efficient automated translation of procedures in constraint-based language
US20100131959A1 (en) 2008-11-26 2010-05-27 Spiers Adam Z Proactive application workload management
US8336079B2 (en) 2008-12-31 2012-12-18 Hytrust, Inc. Intelligent security control system for virtualized ecosystems
US8769206B2 (en) 2009-01-20 2014-07-01 Oracle International Corporation Methods and systems for implementing transcendent page caching
US8775544B2 (en) 2009-02-04 2014-07-08 Citrix Systems, Inc. Methods and systems for dynamically switching between communications protocols
US8336049B2 (en) 2009-02-05 2012-12-18 Vmware, Inc. Virtual machine utility computing method and system
JP5419500B2 (ja) 2009-03-12 2014-02-19 キヤノン株式会社 プログラムおよび情報処理装置
CN102349052A (zh) 2009-03-30 2012-02-08 日本电气株式会社 服务提供装置、服务提供系统、用于处理服务提供装置中的数据的方法以及计算机程序
US8321558B1 (en) 2009-03-31 2012-11-27 Amazon Technologies, Inc. Dynamically monitoring and modifying distributed execution of programs
US9817695B2 (en) 2009-04-01 2017-11-14 Vmware, Inc. Method and system for migrating processes between virtual machines
US9563866B2 (en) 2009-04-06 2017-02-07 Accenture Global Services Limited Estimating a computing job complexity
US8291416B2 (en) 2009-04-17 2012-10-16 Citrix Systems, Inc. Methods and systems for using a plurality of historical metrics to select a physical host for virtual machine execution
US10768611B2 (en) 2009-06-16 2020-09-08 Applied Materials, Inc. Counter and timer constraints
US8955108B2 (en) 2009-06-17 2015-02-10 Microsoft Corporation Security virtual machine for advanced auditing
US8140668B2 (en) 2009-06-24 2012-03-20 Red Hat Israel, Ltd. Pre-scheduling the timelines of virtual machines
US20100329149A1 (en) 2009-06-29 2010-12-30 Fiberlink Communications Corporation Universal connections data collection
US8799879B2 (en) 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US20110010690A1 (en) 2009-07-07 2011-01-13 Howard Robert S System and Method of Automatically Transforming Serial Streaming Programs Into Parallel Streaming Programs
US8769529B2 (en) * 2009-07-24 2014-07-01 Novell, Inc. Generating and automatically loading reduced operating system based on usage pattern of applications
CA2674402C (en) 2009-07-31 2016-07-19 Ibm Canada Limited - Ibm Canada Limitee Optimizing on demand allocation of virtual machines using a stateless preallocation pool
US8769083B2 (en) 2009-08-31 2014-07-01 Red Hat, Inc. Metering software infrastructure in a cloud computing environment
US8271653B2 (en) 2009-08-31 2012-09-18 Red Hat, Inc. Methods and systems for cloud management using multiple cloud management schemes to allow communication between independently controlled clouds
US20110055683A1 (en) 2009-09-02 2011-03-03 Facebook Inc. Page caching for rendering dynamic web pages
US8448165B1 (en) 2009-09-15 2013-05-21 Symantec Corporation System and method for logging operations of virtual machines
US8276139B2 (en) 2009-09-30 2012-09-25 International Business Machines Corporation Provisioning virtual machine placement
US8412856B2 (en) 2009-10-26 2013-04-02 Sony Computer Entertainment America Llc. File input/output scheduler using immediate data chunking
US9086922B2 (en) 2009-10-26 2015-07-21 Microsoft Technology Licensing, Llc Opportunistically scheduling and adjusting time slices
US8875128B2 (en) 2009-11-30 2014-10-28 Red Hat Israel, Ltd. Controlling permissions in virtualization environment using hierarchical labeling
US8311032B2 (en) 2009-12-03 2012-11-13 International Business Machines Corporation Dynamically provisioning virtual machines
US8650565B2 (en) 2009-12-14 2014-02-11 Citrix Systems, Inc. Servicing interrupts generated responsive to actuation of hardware, via dynamic incorporation of ACPI functionality into virtual firmware
US8924569B2 (en) 2009-12-17 2014-12-30 Intel Corporation Cloud federation as a service
US8683465B2 (en) 2009-12-18 2014-03-25 International Business Machines Corporation Virtual image deployment with a warm cache
US8949408B2 (en) 2009-12-18 2015-02-03 Microsoft Corporation Session monitoring of virtual desktops in a virtual machine farm
US20110154353A1 (en) 2009-12-22 2011-06-23 Bmc Software, Inc. Demand-Driven Workload Scheduling Optimization on Shared Computing Resources
US9805322B2 (en) 2010-06-24 2017-10-31 Bmc Software, Inc. Application blueprint and deployment model for dynamic business service management (BSM)
JP5282046B2 (ja) 2010-01-05 2013-09-04 株式会社日立製作所 計算機システム及びその可用化方法
US8346935B2 (en) 2010-01-15 2013-01-01 Joyent, Inc. Managing hardware resources by sending messages amongst servers in a data center
US9274821B2 (en) 2010-01-27 2016-03-01 Vmware, Inc. Independent access to virtual machine desktop content
US8478878B2 (en) 2010-03-11 2013-07-02 International Business Machines Corporation Placement of virtual machines based on server cost and network cost
US8271814B2 (en) 2010-03-22 2012-09-18 Microsoft Corporation Migrating a client computer to a virtual machine server when the client computer is deemed to be idle
US8413142B2 (en) 2010-03-30 2013-04-02 Citrix Systems, Inc. Storage optimization selection within a virtualization environment
US9229783B2 (en) 2010-03-31 2016-01-05 International Business Machines Corporation Methods and apparatus for resource capacity evaluation in a system of virtual containers
US8996611B2 (en) 2011-01-31 2015-03-31 Microsoft Technology Licensing, Llc Parallel serialization of request processing
US8959496B2 (en) 2010-04-21 2015-02-17 Microsoft Corporation Automatic parallelization in a tracing just-in-time compiler system
US8627426B2 (en) 2010-04-26 2014-01-07 Vmware, Inc. Cloud platform architecture
US8713565B2 (en) 2010-04-28 2014-04-29 International Business Machines Corporation Automated tuning in a virtual machine computing environment
US20110276963A1 (en) 2010-05-04 2011-11-10 Riverbed Technology, Inc. Virtual Data Storage Devices and Applications Over Wide Area Networks
US9461996B2 (en) 2010-05-07 2016-10-04 Citrix Systems, Inc. Systems and methods for providing a single click access to enterprise, SAAS and cloud hosted application
US8566792B2 (en) 2010-05-07 2013-10-22 Salesforce, Inc. Validating visual components
WO2011143103A2 (en) 2010-05-10 2011-11-17 Citrix Systems, Inc. Redirection of information from secure virtual machines to unsecure virtual machines
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
JP5513997B2 (ja) 2010-06-07 2014-06-04 日本電信電話株式会社 通信システムおよび通信システム更新方法
US8656387B2 (en) 2010-06-17 2014-02-18 Gridcentric Inc. Method and system for workload distributing and processing across a network of replicated virtual machines
US8887163B2 (en) 2010-06-25 2014-11-11 Ebay Inc. Task scheduling based on dependencies and resources
US8719415B1 (en) 2010-06-28 2014-05-06 Amazon Technologies, Inc. Use of temporarily available computing nodes for dynamic scaling of a cluster
US8739170B1 (en) 2010-06-30 2014-05-27 Amazon Technologies, Inc. Managing requests for computing capacity
US8473949B2 (en) 2010-07-08 2013-06-25 Microsoft Corporation Methods for supporting users with task continuity and completion across devices and time
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US20120016721A1 (en) 2010-07-15 2012-01-19 Joseph Weinman Price and Utility Optimization for Cloud Computing Resources
US8612413B2 (en) 2010-08-12 2013-12-17 Cdnetworks Co., Ltd. Distributed data cache for on-demand application acceleration
US8359496B1 (en) 2010-08-31 2013-01-22 Google Inc. Fault-resistant just-in-time compiler
US8490088B2 (en) 2010-09-10 2013-07-16 International Business Machines Corporation On demand virtual machine image streaming
JP5476261B2 (ja) 2010-09-14 2014-04-23 株式会社日立製作所 マルチテナント型情報処理システム、管理サーバ及び構成管理方法
US8694400B1 (en) 2010-09-14 2014-04-08 Amazon Technologies, Inc. Managing operational throughput for shared resources
JP5653151B2 (ja) 2010-09-17 2015-01-14 キヤノン株式会社 クラウドコンピューティングシステム、クラウドコンピューティングシステムの制御方法、および管理アプリケーション
JP5644307B2 (ja) 2010-09-17 2014-12-24 富士通株式会社 情報処理装置、情報処理装置の制御方法及び制御プログラム
US8661120B2 (en) 2010-09-21 2014-02-25 Amazon Technologies, Inc. Methods and systems for dynamically managing requests for computing capacity
US8661076B2 (en) 2010-09-23 2014-02-25 Salesforce.Com, Inc. Business networking information feed alerts
CN103154926B (zh) 2010-09-30 2016-06-01 亚马逊技术股份有限公司 用专用实施资源进行虚拟资源成本追踪
WO2012049728A1 (ja) 2010-10-12 2012-04-19 富士通株式会社 シミュレーション装置,方法,およびプログラム
US9069610B2 (en) 2010-10-13 2015-06-30 Microsoft Technology Licensing, Llc Compute cluster with balanced resources
US8607054B2 (en) 2010-10-15 2013-12-10 Microsoft Corporation Remote access to hosted virtual machines by enterprise users
US8904190B2 (en) 2010-10-20 2014-12-02 Advanced Micro Devices, Inc. Method and apparatus including architecture for protecting sensitive code and data
US8375389B2 (en) 2010-10-20 2013-02-12 Microsoft Corporation Ordered scheduling of suspended processes based on resumption events
US9753713B2 (en) 2010-10-22 2017-09-05 Microsoft Technology Licensing, Llc Coordinated upgrades in distributed systems
JP2014038364A (ja) 2010-10-27 2014-02-27 Hitachi Ltd リソース管理サーバ、リソース管理方法及びリソース管理プログラム
US9645839B2 (en) 2010-10-27 2017-05-09 Microsoft Technology Licensing, Llc Stateful applications operating in a stateless cloud computing environment
US8756696B1 (en) 2010-10-30 2014-06-17 Sra International, Inc. System and method for providing a virtualized secure data containment service with a networked environment
US9253016B2 (en) 2010-11-02 2016-02-02 International Business Machines Corporation Management of a data network of a computing environment
US8959220B2 (en) 2010-11-02 2015-02-17 International Business Machines Corporation Managing a workload of a plurality of virtual servers of a computing environment
US9081613B2 (en) 2010-11-02 2015-07-14 International Business Machines Corporation Unified resource manager providing a single point of control
RO127693A2 (ro) 2010-12-02 2012-07-30 Adobe Systems Incorporated Transmitere html nativă integrată
US20120151479A1 (en) 2010-12-10 2012-06-14 Salesforce.Com, Inc. Horizontal splitting of tasks within a homogenous pool of virtual machines
US8601323B2 (en) 2010-12-13 2013-12-03 Sap Ag Advanced management of runtime errors
US8745734B1 (en) 2010-12-29 2014-06-03 Amazon Technologies, Inc. Managing virtual computing testing
US8713566B2 (en) 2011-01-31 2014-04-29 International Business Machines Corporation Method and system for delivering and executing virtual container on logical partition of target computing device
US8756581B2 (en) 2011-02-03 2014-06-17 International Business Machines Corporation Adaptive next-executing-cycle trace selection for trace-driven code optimizers
US9967318B2 (en) 2011-02-09 2018-05-08 Cisco Technology, Inc. Apparatus, systems, and methods for cloud agnostic multi-tier application modeling and deployment
US8555281B1 (en) 2011-02-16 2013-10-08 Google Inc. Scheduling of tasks based upon historical execution times
US8495648B1 (en) 2011-02-28 2013-07-23 Amazon Technologies, Inc. Managing allocation of computing capacity
US9552215B2 (en) 2011-03-08 2017-01-24 Rackspace Us, Inc. Method and system for transferring a virtual machine
US9141410B2 (en) 2011-03-08 2015-09-22 Rackspace Us, Inc. Pluggable allocation in a cloud computing system
US8886937B2 (en) 2011-03-11 2014-11-11 Resource Interactive, Llc PCI DSS compliant proxy service
US8429282B1 (en) 2011-03-22 2013-04-23 Amazon Technologies, Inc. System and method for avoiding system overload by maintaining an ideal request rate
US8910156B1 (en) 2011-04-29 2014-12-09 Netapp, Inc. Virtual machine dependency
WO2012173175A1 (ja) 2011-06-14 2012-12-20 日本電気株式会社 コンテンツ配信システム、制御装置およびコンテンツ配信方法
US20120324236A1 (en) 2011-06-16 2012-12-20 Microsoft Corporation Trusted Snapshot Generation
US9450838B2 (en) 2011-06-27 2016-09-20 Microsoft Technology Licensing, Llc Resource management for cloud computing platforms
FR2977116A1 (fr) 2011-06-27 2012-12-28 France Telecom Procede de fourniture de service d'execution de logiciel a la demande
US8615589B1 (en) 2011-06-27 2013-12-24 Amazon Technologies, Inc. Resource optimization recommendations
CN103620552A (zh) 2011-06-29 2014-03-05 惠普发展公司,有限责任合伙企业 采用动态操作系统容器的应用迁移
KR101507919B1 (ko) 2011-07-01 2015-04-07 한국전자통신연구원 가상 데스크탑 서비스를 위한 방법 및 장치
US8671407B2 (en) 2011-07-06 2014-03-11 Microsoft Corporation Offering network performance guarantees in multi-tenant datacenters
US8819679B2 (en) 2011-07-28 2014-08-26 International Business Machines Corporation Methods and systems for on-boarding applications to a cloud
US8813074B2 (en) 2011-08-05 2014-08-19 Vmware, Inc. Detecting and correcting network interruptions using network address translation
US8533715B2 (en) 2011-08-09 2013-09-10 International Business Machines Corporation Virtual machine management
US9152405B2 (en) 2011-08-22 2015-10-06 International Business Machines Corporation Rapid provisioning of virtual machines based on multi-dimensional user request patterns in a cloud
US9516368B2 (en) 2011-08-25 2016-12-06 At&T Intellectual Property I, L.P. System for consolidating heterogeneous data centers through virtualization of services
EP2748705A4 (en) 2011-08-25 2015-05-20 Virtustream Inc SYSTEMS AND METHODS FOR HOST-RELATED RESOURCE MANAGEMENT WITH CLUSTER-BASED RESOURCE POOLS
US8898676B2 (en) 2011-08-26 2014-11-25 Vmware, Inc. Management of software updates for software components in a virtualized environment of a datacenter using dependency relationships
US8832035B2 (en) 2011-08-30 2014-09-09 Netapp, Inc. System and method for retaining deduplication in a storage object after a clone split operation
US8635607B2 (en) 2011-08-30 2014-01-21 Microsoft Corporation Cloud-based build service
US8621439B2 (en) 2011-09-06 2013-12-31 Microsoft Corporation Modern application tracing
US20130061220A1 (en) 2011-09-06 2013-03-07 Xerox Corporation Method for on-demand inter-cloud load provisioning for transient bursts of computing needs
US8863082B2 (en) 2011-09-07 2014-10-14 Microsoft Corporation Transformational context-aware data source management
JP5740257B2 (ja) 2011-09-08 2015-06-24 株式会社日立ソリューションズ OSGiプログラム、OSGiシステム
US8578394B2 (en) 2011-09-09 2013-11-05 Microsoft Corporation Exempting applications from suspension
JP2013061700A (ja) 2011-09-12 2013-04-04 Sony Corp 情報処理装置、情報処理方法、記録媒体および情報処理システム
US8839035B1 (en) 2011-09-14 2014-09-16 Amazon Technologies, Inc. Cloud-based test execution
US8825863B2 (en) 2011-09-20 2014-09-02 International Business Machines Corporation Virtual machine placement within a server farm
US8825964B1 (en) 2011-09-26 2014-09-02 Emc Corporation Adaptive integration of cloud data services with a data storage system
WO2013048986A1 (en) 2011-09-26 2013-04-04 Knoa Software, Inc. Method, system and program product for allocation and/or prioritization of electronic resources
US9497136B1 (en) 2011-09-28 2016-11-15 Emc Corporation Method and system for providing usage metrics to manage utilzation of cloud computing resources
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
US8914515B2 (en) 2011-10-28 2014-12-16 International Business Machines Corporation Cloud optimization using workload analysis
US9213503B2 (en) 2011-10-30 2015-12-15 Hewlett-Packard Development Company, L.P. Service provider management of virtual instances corresponding to hardware resources managed by other service providers
JP5624973B2 (ja) 2011-11-04 2014-11-12 株式会社日立製作所 フィルタリング装置
US9003141B2 (en) 2011-11-14 2015-04-07 Ca, Inc. Enhanced software application platform
CN103930898B (zh) 2011-11-15 2016-10-12 国立研究开发法人科学技术振兴机构 程序分析/验证服务提供系统及其控制方法、程序分析/验证装置、程序分析/验证工具管理装置
TWI478063B (zh) 2011-11-21 2015-03-21 Inst Information Industry 於虛擬機器提供應用程式之系統以及方法以及儲存其之電腦可讀取記錄媒體
CA2889387C (en) 2011-11-22 2020-03-24 Solano Labs, Inc. System of distributed software quality improvement
US8924954B2 (en) 2011-11-22 2014-12-30 Huawei Technologies Co., Ltd. Application software installation method and application software installation apparatus
TW201322022A (zh) 2011-11-24 2013-06-01 Alibaba Group Holding Ltd 分散式資料流處理方法及其系統
US8826277B2 (en) 2011-11-29 2014-09-02 International Business Machines Corporation Cloud provisioning accelerator
EP2788889A4 (en) 2011-12-07 2015-08-12 Seven Networks Inc FLEXIBLE AND DYNAMIC INTEGRATION SCHEMES OF A TRAFFIC MANAGEMENT SYSTEM WITH VARIOUS NETWORK OPERATORS TO REDUCE NETWORK TRAFFIC
US8769519B2 (en) 2011-12-08 2014-07-01 Microsoft Corporation Personal and pooled virtual machine update
US8694995B2 (en) 2011-12-14 2014-04-08 International Business Machines Corporation Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment
US9635132B1 (en) 2011-12-15 2017-04-25 Amazon Technologies, Inc. Service and APIs for remote volume-based block storage
US10310878B2 (en) 2011-12-16 2019-06-04 Vmware, Inc. Execution of an application in a runtime environment installed in a virtual appliance
US9609020B2 (en) 2012-01-06 2017-03-28 Optio Labs, Inc. Systems and methods to enforce security policies on the loading, linking, and execution of native code by mobile applications running inside of virtual machines
US8904008B2 (en) 2012-01-09 2014-12-02 Microsoft Corporation Assignment of resources in virtual machine pools
US9372735B2 (en) 2012-01-09 2016-06-21 Microsoft Technology Licensing, Llc Auto-scaling of pool of virtual machines based on auto-scaling rules of user associated with the pool
US9170849B2 (en) 2012-01-09 2015-10-27 Microsoft Technology Licensing, Llc Migration of task to different pool of resources based on task retry count during task lease
US20130179894A1 (en) 2012-01-09 2013-07-11 Microsoft Corporation Platform as a service job scheduling
US20130185729A1 (en) 2012-01-13 2013-07-18 Rutgers, The State University Of New Jersey Accelerating resource allocation in virtualized environments using workload classes and/or workload signatures
US9223607B2 (en) 2012-01-17 2015-12-29 Microsoft Technology Licensing, Llc System for replicating or migrating virtual machine operations log by throttling guest write iOS based on destination throughput
US9208007B2 (en) 2012-01-18 2015-12-08 International Business Machines Corporation Open resilience framework for simplified and coordinated orchestration of multiple availability managers
WO2013112151A1 (en) 2012-01-26 2013-08-01 Empire Technology Development Llc Data center with continuous world switch security
US9262238B2 (en) 2012-01-31 2016-02-16 Red Hat, Inc. Connection management for an application in a computing platform
US9110728B2 (en) 2012-01-31 2015-08-18 Vmware, Inc. Elastic allocation of computing resources to software applications
WO2013119195A1 (en) 2012-02-06 2013-08-15 Empire Technology Development Llc Multicore computer system with cache use based adaptive scheduling
TWI459296B (zh) 2012-02-21 2014-11-01 Hon Hai Prec Ind Co Ltd 增加伺服器的虛擬機配置數量的方法
US20130227710A1 (en) 2012-02-27 2013-08-29 Computer Associates Think, Inc. System and method for securing leased images in a cloud environment
US9720668B2 (en) 2012-02-29 2017-08-01 Red Hat, Inc. Creating and maintaining multi-tenant applications in a platform-as-a-service (PaaS) environment of a cloud computing system
US9047133B2 (en) 2012-03-02 2015-06-02 Vmware, Inc. Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud environment
CN103294554A (zh) 2012-03-05 2013-09-11 中兴通讯股份有限公司 片上系统soc的多处理器的调度方法及装置
US9009734B2 (en) 2012-03-06 2015-04-14 Autodesk, Inc. Application level speculative processing
US8725702B1 (en) 2012-03-15 2014-05-13 Symantec Corporation Systems and methods for repairing system files
US9026658B2 (en) 2012-03-28 2015-05-05 Microsoft Technology Licensing, Llc Enhanced computer cluster operation using resource allocation requests
US20130263117A1 (en) 2012-03-28 2013-10-03 International Business Machines Corporation Allocating resources to virtual machines via a weighted cost ratio
US9462081B2 (en) 2012-04-17 2016-10-04 Igt Cloud based virtual environment validation
US9053603B2 (en) 2012-04-17 2015-06-09 Igt Cloud based virtual environment authentication
US8997093B2 (en) 2012-04-17 2015-03-31 Sap Se Application installation management by selectively reuse or terminate virtual machines based on a process status
US9256413B2 (en) 2012-04-17 2016-02-09 Sap Se Automatic identification of services
CN104303168B (zh) 2012-04-25 2016-12-07 英派尔科技开发有限公司 用于灵活资源需求应用的认证
US8918510B2 (en) 2012-04-27 2014-12-23 Hewlett-Packard Development Company, L. P. Evaluation of cloud computing services
US8955091B2 (en) 2012-04-30 2015-02-10 Zscaler, Inc. Systems and methods for integrating cloud services with information management systems
US10404551B2 (en) 2012-04-30 2019-09-03 Entit Software Llc Automated event management
US8850514B2 (en) 2012-05-01 2014-09-30 Red Hat, Inc. Cartridges in a multi-tenant platforms-as-a-service (PaaS) system implemented in a cloud computing environment
US8843935B2 (en) 2012-05-03 2014-09-23 Vmware, Inc. Automatically changing a pre-selected datastore associated with a requested host for a virtual machine deployment based on resource availability during deployment of the virtual machine
GB2501757A (en) 2012-05-04 2013-11-06 Ibm Instrumentation of software applications for configuration thereof
DK2663052T3 (da) 2012-05-09 2021-04-12 Netflix Inc API Platform, der indbefatter serverudført, klientbaseret kode
US9098528B2 (en) 2012-05-15 2015-08-04 Hitachi, Ltd. File storage system and load distribution method
US8806644B1 (en) * 2012-05-25 2014-08-12 Symantec Corporation Using expectation measures to identify relevant application analysis results
US8850432B2 (en) 2012-05-30 2014-09-30 Red Hat, Inc. Controlling utilization in a multi-tenant platform-as-a-service (PaaS) environment in a cloud computing system
US8904402B2 (en) 2012-05-30 2014-12-02 Red Hat, Inc. Controlling capacity in a multi-tenant platform-as-a-service environment in a cloud computing system
US9317689B2 (en) 2012-06-15 2016-04-19 Visa International Service Association Method and apparatus for secure application execution
US8799236B1 (en) 2012-06-15 2014-08-05 Amazon Technologies, Inc. Detecting duplicated content among digital items
US8782632B1 (en) 2012-06-18 2014-07-15 Tellabs Operations, Inc. Methods and apparatus for performing in-service software upgrade for a network device using system virtualization
US9342326B2 (en) 2012-06-19 2016-05-17 Microsoft Technology Licensing, Llc Allocating identified intermediary tasks for requesting virtual machines within a trust sphere on a processing goal
US9141432B2 (en) 2012-06-20 2015-09-22 International Business Machines Corporation Dynamic pending job queue length for job distribution within a grid environment
US8959484B2 (en) 2012-06-21 2015-02-17 Microsoft Corporation System for hosted, shared, source control build
US8869157B2 (en) 2012-06-21 2014-10-21 Breakingpoint Systems, Inc. Systems and methods for distributing tasks and/or processing recources in a system
US8832820B2 (en) 2012-06-25 2014-09-09 International Business Machines Corporation Isolation and security hardening among workloads in a multi-tenant networked environment
US9098308B2 (en) 2012-06-26 2015-08-04 Marvell World Trade Ltd. Method and apparatus for code performance analysis based on execution trace information
US10031782B2 (en) 2012-06-26 2018-07-24 Juniper Networks, Inc. Distributed processing of network device tasks
US20140007097A1 (en) 2012-06-29 2014-01-02 Brocade Communications Systems, Inc. Dynamic resource allocation for virtual machines
US9152443B2 (en) 2012-07-13 2015-10-06 Ca, Inc. System and method for automated assignment of virtual machines and physical machines to hosts with right-sizing
US9396008B2 (en) 2012-07-13 2016-07-19 Ca, Inc. System and method for continuous optimization of computing systems with automated assignment of virtual machines and physical machines to hosts
US9298497B2 (en) 2012-07-13 2016-03-29 Wisconsin Alumni Research Foundation Computer processor providing exception handling with reduced state storage
US8972956B2 (en) 2012-08-02 2015-03-03 International Business Machines Corporation Application deployment in heterogeneous environments
US9563480B2 (en) 2012-08-21 2017-02-07 Rackspace Us, Inc. Multi-level cloud computing system
US8825550B2 (en) 2012-08-23 2014-09-02 Amazon Technologies, Inc. Scaling a virtual machine instance
US20140059552A1 (en) 2012-08-24 2014-02-27 International Business Machines Corporation Transparent efficiency for in-memory execution of map reduce job sequences
US9110844B2 (en) 2012-08-27 2015-08-18 Microsoft Technology Licensing, Llc State maintenance as a service
US9575871B2 (en) 2012-09-04 2017-02-21 Salesforce.Com, Inc. System and method for dynamically debugging data in a multi-tenant database environment
US8966495B2 (en) 2012-09-05 2015-02-24 Cisco Technology, Inc. Dynamic virtual machine consolidation
US8978035B2 (en) 2012-09-06 2015-03-10 Red Hat, Inc. Scaling of application resources in a multi-tenant platform-as-a-service environment in a cloud computing system
US20140073300A1 (en) 2012-09-10 2014-03-13 Genband Us Llc Managing Telecommunication Services using Proximity-based Technologies
US9379995B2 (en) 2012-09-11 2016-06-28 Vmware, Inc. Resource allocation diagnosis on distributed computer systems based on resource hierarchy
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US9116680B2 (en) 2012-09-26 2015-08-25 International Business Machines Corporation Dynamically building locale objects or subsections of locale objects based on historical data
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
JP2014075046A (ja) 2012-10-04 2014-04-24 International Business Maschines Corporation トレース生成方法、装置、プログラム、及び該方法を利用したマルチレベルのコンパイレーション
US9507586B2 (en) 2012-10-05 2016-11-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Virtual machine based controller and upgrade mechanism
US9189645B2 (en) 2012-10-12 2015-11-17 Citrix Systems, Inc. Sharing content across applications and devices having multiple operation modes in an orchestration framework for connected devices
US9081682B2 (en) 2012-10-15 2015-07-14 Red Hat Israel, Ltd. Virtual machine installation image caching
US20140109176A1 (en) 2012-10-15 2014-04-17 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US9600316B2 (en) 2012-10-17 2017-03-21 Microsoft Technology Licensing, Llc Augmented allocation of virtual machines for application
US20160019536A1 (en) 2012-10-17 2016-01-21 Royal Bank Of Canada Secure processing of data
US9229759B2 (en) 2012-10-17 2016-01-05 Microsoft Technology Licensing, Llc Virtual machine provisioning using replicated containers
US9262212B2 (en) 2012-11-02 2016-02-16 The Boeing Company Systems and methods for migrating virtual machines
US9622202B2 (en) 2012-11-05 2017-04-11 Lg Electronics Inc. Method and apparatus for generating synchronous signal in wireless access system for supporting super-high frequency band
US9038068B2 (en) 2012-11-15 2015-05-19 Bank Of America Corporation Capacity reclamation and resource adjustment
IN2015DN02059A (ja) 2012-11-19 2015-08-14 Hitachi Ltd
US9052935B1 (en) 2012-11-27 2015-06-09 Symantec Corporation Systems and methods for managing affinity rules in virtual-machine environments
US9092837B2 (en) 2012-11-29 2015-07-28 International Business Machines Corporation Use of snapshots to reduce risk in migration to a standard virtualized environment
US9363367B2 (en) 2012-12-05 2016-06-07 Future Dial, Inc. Using automatically collected device problem information to route and guide users' requests
US9052932B2 (en) 2012-12-17 2015-06-09 International Business Machines Corporation Hybrid virtual machine configuration management
US9086902B2 (en) 2012-12-18 2015-07-21 International Business Machines Corporation Sending tasks between virtual machines based on expiration times
US9063795B2 (en) 2012-12-19 2015-06-23 International Business Machines Corporation Adaptive resource usage limits for workload management
US9459856B2 (en) 2013-01-02 2016-10-04 International Business Machines Corporation Effective migration and upgrade of virtual machines in cloud environments
US9384517B2 (en) 2013-03-14 2016-07-05 Google Inc. Rendering
US9304793B2 (en) 2013-01-16 2016-04-05 Vce Company, Llc Master automation service
US8886769B2 (en) 2013-01-18 2014-11-11 Limelight Networks, Inc. Selective content pre-warming in content delivery networks based on user actions and content categorizations
US9329888B2 (en) 2013-01-28 2016-05-03 International Business Machines Corporation Computing optimized virtual machine allocations using equivalence combinations
US10552774B2 (en) 2013-02-11 2020-02-04 Amazon Technologies, Inc. Cost-minimizing task scheduler
WO2014128948A1 (ja) 2013-02-25 2014-08-28 株式会社日立製作所 仮想サーバおよび非仮想サーバ混在環境におけるテナントネットワーク構成の管理方法
US9336031B2 (en) 2013-02-27 2016-05-10 International Business Machines Corporation Managing allocation of hardware resources in a virtualized environment
US9027087B2 (en) 2013-03-14 2015-05-05 Rackspace Us, Inc. Method and system for identity-based authentication of virtual machines
US9524489B2 (en) 2013-03-14 2016-12-20 Samsung Electronics Co., Ltd. Computing system with task transfer mechanism and method of operation thereof
US8677359B1 (en) 2013-03-14 2014-03-18 Joyent, Inc. Compute-centric object stores and methods of use
US9311221B2 (en) 2013-03-15 2016-04-12 Ab Initio Technology Llc Recording program execution
US9092238B2 (en) 2013-03-15 2015-07-28 Joyent, Inc. Versioning schemes for compute-centric object stores
US9910896B2 (en) 2013-03-15 2018-03-06 Cisco Technology, Inc. Suspending and resuming continuous queries over data streams
US10430332B2 (en) 2013-03-25 2019-10-01 Salesforce.Com, Inc. System and method for performance tuning of garbage collection algorithms
US8893088B2 (en) 2013-04-02 2014-11-18 Apple Inc. Dynamic program evaluation for system adaptation
US20160048606A1 (en) 2013-04-13 2016-02-18 Kiss Digital Media Pty Ltd. Methods, Systems, Apparatus, Products, Articles and Data Structures for Cross-Platform Digital Content
US9329881B2 (en) 2013-04-23 2016-05-03 Sap Se Optimized deployment of data services on the cloud
US9929916B1 (en) 2013-05-02 2018-03-27 Aspen Technology, Inc. Achieving stateful application software service behavior in distributed stateless systems
US10572124B2 (en) 2013-05-20 2020-02-25 Citrix Systems, Inc. Bound based contextual zoom
US9628332B2 (en) 2013-05-20 2017-04-18 Microsoft Technology Licensing, Llc Resource allocation to game titles in a remote gaming environment
US9110732B1 (en) 2013-06-07 2015-08-18 Amazon Technologies, Inc. Proxy for injecting configuration information
US9489227B2 (en) 2013-06-10 2016-11-08 Electronics And Telecommunications Research Institute Apparatus and method for virtual desktop service
US9141461B2 (en) 2013-06-23 2015-09-22 Intel Corporation Machine check architecture execution environment for non-microcoded processor
US9652617B1 (en) 2013-06-25 2017-05-16 Amazon Technologies, Inc. Analyzing security of applications
WO2015015473A1 (en) 2013-08-02 2015-02-05 Ologn Technologies Ag A secure server on a system with virtual machines
US9990499B2 (en) 2013-08-05 2018-06-05 Netflix, Inc. Dynamic security testing
US9111037B1 (en) 2013-08-21 2015-08-18 Ca, Inc. Method and apparatus to enable mainframe computer testing for software testing management platform
US9591003B2 (en) 2013-08-28 2017-03-07 Amazon Technologies, Inc. Dynamic application security verification
US20150067019A1 (en) 2013-08-28 2015-03-05 Soeren Balko Method and system for using arbitrary computing devices for distributed data processing
US20150074659A1 (en) 2013-09-06 2015-03-12 Vmware, Inc. Methods and Apparatus to Perform Web-Based Installations and/or Upgrade Architectures for Enterprise Software
US9680772B2 (en) 2013-09-09 2017-06-13 Vmware, Inc. System and method for managing configuration of virtual switches in a virtual machine network
US10339236B2 (en) 2013-09-10 2019-07-02 Vmware, Inc. Techniques for improving computational throughput by using virtual machines
US9298633B1 (en) 2013-09-18 2016-03-29 Emc Corporation Adaptive prefecth for predicted write requests
US20150106805A1 (en) 2013-10-15 2015-04-16 Cisco Technology, Inc. Accelerated instantiation of cloud resource
US10193963B2 (en) 2013-10-24 2019-01-29 Vmware, Inc. Container virtual machines for hadoop
US10635644B2 (en) 2013-11-11 2020-04-28 Amazon Technologies, Inc. Partition-based data stream processing framework
US9805202B2 (en) 2013-11-13 2017-10-31 Evident.io, Inc. Automated SDK ingestion
US9298485B2 (en) 2013-11-19 2016-03-29 International Business Machines Corporation Maintaining virtual machines for cloud-based operators in a streaming application in a ready state
US9417918B2 (en) 2013-11-20 2016-08-16 International Business Machines Corporation Computing session workload scheduling and management of parent-child tasks
EP2955637B1 (en) 2013-11-20 2017-08-16 Huawei Technologies Co., Ltd. Method, system and apparatus for generating snapshot
CN104142858B (zh) 2013-11-29 2016-09-28 腾讯科技(深圳)有限公司 阻塞任务调度方法及装置
US20160306613A1 (en) 2013-12-03 2016-10-20 Hewlett Packard Enterprise Development Lp Code routine performance prediction using test results from code integration tool
RU2571723C2 (ru) 2013-12-05 2015-12-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ для снижения нагрузки на операционную систему при работе антивирусного приложения
US9164754B1 (en) 2013-12-18 2015-10-20 Amazon Technologies, Inc. Runtime patching of native-code programs
US9477507B2 (en) 2013-12-20 2016-10-25 Vmware, Inc. State customization of forked virtual machines
US9501345B1 (en) 2013-12-23 2016-11-22 Intuit Inc. Method and system for creating enriched log data
US10809866B2 (en) 2013-12-31 2020-10-20 Vmware, Inc. GUI for creating and managing hosts and virtual machines
CN104765620B (zh) 2014-01-02 2018-01-26 国际商业机器公司 一种程序模块部署的方法和系统
EP2894564A1 (en) 2014-01-10 2015-07-15 Fujitsu Limited Job scheduling based on historical job data
US10218703B2 (en) 2014-01-20 2019-02-26 Hewlett-Packard Development Company, L.P. Determining a permission of a first tenant with respect to a second tenant
CA2931750C (en) 2014-02-07 2023-03-07 Oracle International Corporation Cloud service custom execution environment
US10133741B2 (en) 2014-02-13 2018-11-20 Amazon Technologies, Inc. Log data service in a virtual environment
WO2015130262A1 (en) 2014-02-25 2015-09-03 Hewlett-Packard Development Company, L.P. Multiple pools in a multi-core system
US10296362B2 (en) 2014-02-26 2019-05-21 Red Hat Israel, Ltd. Execution of a script based on properties of a virtual device associated with a virtual machine
US9110770B1 (en) 2014-03-04 2015-08-18 Amazon Technologies, Inc. Assessing quality of code in an open platform environment
US20150254248A1 (en) 2014-03-07 2015-09-10 Printeron Inc. System for suggesting network resource for use by a network terminal based on network resource ranking
US9632835B2 (en) 2014-03-17 2017-04-25 Ca, Inc. Deployment of virtual machines to physical host machines based on infrastructure utilization decisions
WO2015140531A1 (en) 2014-03-18 2015-09-24 British Telecommunications Public Limited Company User authentication
JP2015210718A (ja) 2014-04-28 2015-11-24 富士通株式会社 記憶制御装置、ストレージシステム、および記憶制御プログラム
US9223966B1 (en) 2014-05-04 2015-12-29 Symantec Corporation Systems and methods for replicating computing system environments
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US9678778B1 (en) 2014-05-07 2017-06-13 Google Inc. Virtual cluster as a service (VCIaaS)
US9858060B2 (en) 2014-05-09 2018-01-02 International Business Machines Corporation Automated deployment of a private modular cloud-computing environment
US20150324229A1 (en) 2014-05-09 2015-11-12 International Business Machines Corporation Propagation of task progress through the use of coalesced time intervals
US20150332195A1 (en) 2014-05-13 2015-11-19 Linkedln Corporation Facilitating performance monitoring for periodically scheduled workflows
US9250893B2 (en) 2014-05-14 2016-02-02 Western Digital Technologies, Inc. Virtualized and automated software build system
US9213840B2 (en) 2014-05-15 2015-12-15 Lynx Software Technologies, Inc. Systems and methods involving features of hardware virtualization, hypervisor, APIs of interest, and/or other features
FR3021108B1 (fr) 2014-05-16 2016-05-06 Thales Sa Procede d'execution de services en temps reel, notamment de gestion de vol et systeme temps reel mettant en oeuvre un tel procede
US9525893B2 (en) 2014-05-28 2016-12-20 Verizon Patent And Licensing Inc. Methods and systems for managing storage of media program copies within a network digital video recording system
US9703681B2 (en) 2014-05-29 2017-07-11 Microsoft Technology Licensing, Llc Performance optimization tip presentation during debugging
US9361102B2 (en) 2014-06-09 2016-06-07 Lehigh University Methods for enforcing control flow of a computer program
US9390260B2 (en) 2014-06-09 2016-07-12 Lehigh University Methods for enforcing control flow of a computer program
US9218176B1 (en) 2014-06-13 2015-12-22 International Business Machines Corporation Software deployment in a distributed virtual machine environment
US20150371244A1 (en) 2014-06-23 2015-12-24 Ca, Inc. Forecasting information technology workload demand
US9424065B2 (en) 2014-06-26 2016-08-23 Vmware, Inc. Methods and apparatus to scale application deployments in cloud computing environments using virtual machine pools
US10432699B2 (en) 2014-06-26 2019-10-01 Vmware, Inc. Crowd-sourced operational metric analysis of virtual appliances
US9361145B1 (en) 2014-06-27 2016-06-07 Amazon Technologies, Inc. Virtual machine state replication using DMA write records
US9760443B2 (en) 2014-06-28 2017-09-12 Vmware, Inc. Using a recovery snapshot during live migration
US20150378762A1 (en) 2014-06-30 2015-12-31 Vmware, Inc. Monitoring and dynamic configuration of virtual-machine memory-management
US9483299B2 (en) 2014-06-30 2016-11-01 Bmc Software, Inc. Capacity risk management for virtual machines
US20160294614A1 (en) 2014-07-07 2016-10-06 Symphony Teleca Corporation Remote Embedded Device Update Platform Apparatuses, Methods and Systems
US9983901B2 (en) 2014-07-09 2018-05-29 Google Llc Dynamic shard allocation adjustment
CN107077691B (zh) 2014-07-14 2021-07-13 甲骨文国际公司 用于确定数据库高速缓存命中的基于年龄的策略
US20160019081A1 (en) 2014-07-21 2016-01-21 Vmware,Inc. Viewing a snapshot of a virtual machine
US9612859B2 (en) 2014-07-21 2017-04-04 Vmware, Inc. Comparing states of a virtual machine
US20160026486A1 (en) 2014-07-25 2016-01-28 Soft Machines, Inc. An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture
US20160070714A1 (en) 2014-09-10 2016-03-10 Netapp, Inc. Low-overhead restartable merge operation with efficient crash recovery
US9875121B2 (en) 2014-09-17 2018-01-23 International Business Machines Corporation API server
US9436555B2 (en) 2014-09-22 2016-09-06 Commvault Systems, Inc. Efficient live-mount of a backed up virtual machine in a storage management system
US9823983B2 (en) 2014-09-25 2017-11-21 Nxp Usa, Inc. Electronic fault detection unit
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9652273B2 (en) 2014-10-02 2017-05-16 Vmware, Inc. Method and system for creating a hierarchy of virtual machine templates in a virtualized computing system
TWI537827B (zh) 2014-10-06 2016-06-11 第五代虛擬科技股份有限公司 應用軟體試用系統、方法及其伺服器與使用者裝置
US9563513B2 (en) 2014-10-09 2017-02-07 International Business Machines Corporation O(1) virtual machine (VM) snapshot management
US9501420B2 (en) 2014-10-22 2016-11-22 Netapp, Inc. Cache optimization technique for large working data sets
US9930133B2 (en) 2014-10-23 2018-03-27 Netapp, Inc. System and method for managing application performance
JP5904514B1 (ja) 2014-10-28 2016-04-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想マシンのスナップショットに対して更新を自動的に適用する方法、並びに、そのコンピュータ・システム及びコンピュータ・システム用プログラム
US10241691B2 (en) 2014-11-04 2019-03-26 Rubrik, Inc. Data management system
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9864636B1 (en) 2014-12-10 2018-01-09 Amazon Technologies, Inc. Allocating processor resources based on a service-level agreement
US9661011B1 (en) 2014-12-17 2017-05-23 Amazon Technologies, Inc. Techniques for data routing and management using risk classification and data sampling
US20160191420A1 (en) 2014-12-27 2016-06-30 Intel Corporation Mitigating traffic steering inefficiencies in distributed uncore fabric
US11494447B2 (en) 2015-01-13 2022-11-08 Google Llc Distributed file system for virtualized computing clusters
US10033570B2 (en) 2015-01-15 2018-07-24 International Business Machines Corporation Distributed map reduce network
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9471775B1 (en) 2015-02-04 2016-10-18 Amazon Technologies, Inc. Security protocols for low latency execution of program code
KR20170117565A (ko) * 2015-02-20 2017-10-23 프리스틴 머신 엘엘씨 시스템 계층들 간에 데이터 연산 기능을 분할하는 방법
US9921864B2 (en) 2015-02-26 2018-03-20 Vmware, Inc. Dynamic host performance tuning of a network stack
US9965309B2 (en) 2015-03-23 2018-05-08 Empire Technology Development Llc Virtual machine placement
US9658942B2 (en) 2015-04-02 2017-05-23 International Business Machines Corporation Dynamic tracing framework for debugging in virtualized environments
US9632846B2 (en) 2015-04-02 2017-04-25 Microsoft Technology Licensing, Llc Complex event processor for historic/live/replayed data
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
EP3082038A1 (en) 2015-04-15 2016-10-19 Hybridserver Tec AG Method, device and system for creating a massively parallelized executable object
US20160350099A1 (en) 2015-05-29 2016-12-01 Hewlett Packard Enterprise Development Lp Application deployment to virtual machines
US9715416B2 (en) 2015-06-03 2017-07-25 Intel Corporation Adaptive queued locking for control of speculative execution
US9785424B2 (en) 2015-06-05 2017-10-10 Apple Inc. Capability attributes based application packaging
US9612865B2 (en) 2015-06-15 2017-04-04 International Business Machines Corporation Managed services coordinator
US10481982B2 (en) 2015-06-16 2019-11-19 Mongodb, Inc. System and method for facilitating replication in a distributed database
US9921885B2 (en) 2015-06-19 2018-03-20 Vmware, Inc. Resource management for containers in a virtualized environment
US9880837B2 (en) 2015-06-24 2018-01-30 Vmware, Inc. Artifact manager for release automation
US11429442B2 (en) 2015-06-29 2022-08-30 Vmware, Inc. Parallel and distributed computing using multiple virtual machines
US20160378547A1 (en) 2015-06-29 2016-12-29 Amazon Technologies, Inc. Preserving state during virtual machine instance migration
US10146635B1 (en) 2015-06-30 2018-12-04 EMC IP Holding Company LLC Virtual machine backup
US9946874B2 (en) 2015-08-06 2018-04-17 International Business Machines Corporation Authenticating application legitimacy
US10198281B2 (en) 2015-08-28 2019-02-05 Vmware, Inc. Hybrid infrastructure provisioning framework tethering remote datacenters
US10235209B2 (en) 2015-08-28 2019-03-19 Vmware, Inc. Hybrid task framework
US10083073B2 (en) 2015-09-14 2018-09-25 Dynatrace Llc Method and system for real-time causality and root cause determination of transaction and infrastructure related events provided by multiple, heterogeneous agents
CN106548262B (zh) 2015-09-21 2020-11-06 阿里巴巴集团控股有限公司 用于处理任务的资源的调度方法、装置和系统
US10007710B2 (en) 2015-09-21 2018-06-26 Splunk Inc. Adaptive control of data collection requests sent to external data sources
US10104123B2 (en) 2015-09-23 2018-10-16 Ca, Inc. Fetching a policy definition library from a policy server at mobile device runtime of an application package to control access to mobile device resources
IN2015CH05184A (ja) 2015-09-28 2015-10-16 Wipro Ltd
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US10356206B2 (en) 2015-11-08 2019-07-16 Vmware, Inc. Deploying an application in multiple cloud computing environments
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9514037B1 (en) 2015-12-16 2016-12-06 International Business Machines Corporation Test program scheduling based on analysis of test data sets
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9787779B2 (en) 2015-12-21 2017-10-10 Amazon Technologies, Inc. Analyzing deployment pipelines used to update production computing services using a live pipeline template process
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US11089152B2 (en) 2016-02-08 2021-08-10 Aawaaz Inc. Placement of a missed call
US10608908B2 (en) 2016-02-10 2020-03-31 Nicira, Inc. On-demand connection ping
US10379824B2 (en) 2016-02-26 2019-08-13 Oracle International Corporation Method for static security enforcement of a DSL
WO2017160765A1 (en) 2016-03-15 2017-09-21 Carbon Black, Inc. System and method for process hollowing detection
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
CN108885568B (zh) 2016-03-30 2022-01-28 亚马逊技术有限公司 用于通过按需代码执行环境处理数据源内的多个数据项的系统和计算机实现的方法
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US10310820B2 (en) 2016-05-12 2019-06-04 Basal Nuclei Inc Programming model and interpreted runtime environment for high performance services with implicit concurrency control
JP6719079B2 (ja) 2016-05-31 2020-07-08 パナソニックIpマネジメント株式会社 情報機器、データ処理システム、データ処理方法およびコンピュータプログラム
US10592279B2 (en) 2016-06-23 2020-03-17 Advanced Micro Devices, Inc. Multi-processor apparatus and method of detection and acceleration of lagging tasks
US10139876B2 (en) 2016-06-23 2018-11-27 Vmware Inc. Efficient reboot of an operating system executed in a virtual machine
US10650241B2 (en) 2016-06-27 2020-05-12 Facebook, Inc. Systems and methods for identifying matching content
US20190020913A9 (en) 2016-06-27 2019-01-17 Facebook, Inc. Systems and methods for identifying matching content
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US9977691B2 (en) 2016-06-29 2018-05-22 Amazon Technologies, Inc. Adjusting variable limit on concurrent code executions based on communication between frontends
US11625257B2 (en) 2016-06-29 2023-04-11 Vmware, Inc. Provisioning executable managed objects of a virtualized computing environment from non-executable managed objects
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
CN109478134B (zh) 2016-06-30 2022-08-26 亚马逊技术有限公司 用跨账户别名执行按需网络代码
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US9596350B1 (en) 2016-07-21 2017-03-14 Genesys Telecommunications Laboratories, Inc. Virtual interactions in contact center operations
US10089135B2 (en) 2016-08-09 2018-10-02 International Business Machines Corporation Expediting the provisioning of virtual machines based on cached repeated portions of a template
US9977670B2 (en) 2016-08-10 2018-05-22 Bank Of America Corporation Application programming interface for providing access to computing platform definitions
US20180060221A1 (en) 2016-08-24 2018-03-01 Google Inc. Multi-layer test suite generation
US10831641B2 (en) 2016-09-08 2020-11-10 At&T Intellectual Property I, L.P. Method and apparatus for determining a performance impact by a software upgrade of a mobile user endpoint device
US10545792B2 (en) 2016-09-12 2020-01-28 Seven Bridges Genomics Inc. Hashing data-processing steps in workflow environments
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
CN110326255B (zh) 2016-11-28 2022-08-30 亚马逊技术有限公司 管理消息传递协议通信
US10417049B2 (en) 2016-11-28 2019-09-17 Amazon Technologies, Inc. Intra-code communication in a localized device coordinator
US20180239636A1 (en) 2017-02-22 2018-08-23 Nutanix, Inc. Task execution framework using idempotent subtasks
US10754685B2 (en) 2017-03-03 2020-08-25 Microsoft Technology Licensing Llc Cross-device task registration and resumption
EP3379413A1 (en) 2017-03-21 2018-09-26 Nokia Solutions and Networks Oy Optimization of a software image layer stack
US10360067B1 (en) * 2017-03-28 2019-07-23 Amazon Technologies, Inc. Dynamic function calls in an on-demand network code execution system
US10514909B2 (en) 2017-03-29 2019-12-24 Technion Research & Development Foundation Limited Similarity of binaries
US10459822B1 (en) * 2017-05-04 2019-10-29 Amazon Technologies, Inc. Iterative static analysis using stored partial results
US10445140B1 (en) 2017-06-21 2019-10-15 Amazon Technologies, Inc. Serializing duration-limited task executions in an on demand code execution system
US10725826B1 (en) 2017-06-21 2020-07-28 Amazon Technologies, Inc. Serializing duration-limited task executions in an on demand code execution system
US11047837B2 (en) 2017-09-06 2021-06-29 Green Ocean Sciences, Inc. Mobile integrated device and electronic data platform for chemical analysis
US10587412B2 (en) 2017-11-07 2020-03-10 International Business Machines Corporation Virtual machine structure
US10565083B2 (en) 2017-12-08 2020-02-18 Cisco Technology, Inc. Simulating hosted application performance
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10803180B2 (en) 2017-12-13 2020-10-13 Jayant Shukla Deterministic method for detecting and blocking of exploits on interpreted code
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10402178B2 (en) 2018-01-26 2019-09-03 Accenture Global Solutions Limited Cross platform content management and distribution system
US10503626B2 (en) 2018-01-29 2019-12-10 Oracle International Corporation Hybrid instrumentation framework for multicore low power processors
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US11157300B2 (en) 2018-02-13 2021-10-26 Sophos Limited Managing virtual machine security resources
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10860367B2 (en) 2018-03-14 2020-12-08 Microsoft Technology Licensing, Llc Opportunistic virtual machine migration
US10466986B2 (en) 2018-03-30 2019-11-05 Oracle International Corporation Optimized recompilation using hardware tracing
US10503634B1 (en) 2018-05-25 2019-12-10 Microsoft Technology Licensing, Llc Semantic comparison of computer compiler traces
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
EP3811209A1 (en) 2018-06-25 2021-04-28 Amazon Technologies Inc. Execution of auxiliary functions in an on-demand network code execution system
US10817331B2 (en) * 2018-06-25 2020-10-27 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US10911367B2 (en) * 2018-06-27 2021-02-02 Oracle International Corporation Computerized methods and systems for managing cloud computer services
US10877774B2 (en) 2018-07-17 2020-12-29 Sap Se Cloud integration of application runtime
US10713080B1 (en) 2018-07-25 2020-07-14 Amazon Technologies, Inc. Request-based virtual machine memory transitioning in an on-demand network code execution system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US10740208B2 (en) 2018-10-03 2020-08-11 Capital One Services, Llc Cloud infrastructure optimization
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012078893A (ja) 2010-09-30 2012-04-19 Hitachi Solutions Ltd 計算機システム、及び管理計算機
JP2012104150A (ja) 2012-01-19 2012-05-31 Intel Corp ネットワーク環境におけるスペースのカスタマイズ
US20170177391A1 (en) 2015-02-04 2017-06-22 Amazon Technologies, Inc. Stateful virtual compute system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11875173B2 (en) 2018-06-25 2024-01-16 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system

Also Published As

Publication number Publication date
KR20210019533A (ko) 2021-02-22
EP3814895A1 (en) 2021-05-05
CN112513811A (zh) 2021-03-16
US20200004571A1 (en) 2020-01-02
KR102541295B1 (ko) 2023-06-13
JP2021530037A (ja) 2021-11-04
WO2020006081A1 (en) 2020-01-02
US10949237B2 (en) 2021-03-16

Similar Documents

Publication Publication Date Title
JP7275171B2 (ja) オンデマンドネットワークコード実行システムにおけるオペレーティングシステムカスタマイゼーション
US11875173B2 (en) Execution of auxiliary functions in an on-demand network code execution system
US10884722B2 (en) Cross-environment application of tracing information for improved code execution
US10528390B2 (en) Idempotent task execution in on-demand network code execution systems
US10564946B1 (en) Dependency handling in an on-demand network code execution system
US11243953B2 (en) Mapreduce implementation in an on-demand network code execution system and stream data processing system
US10817331B2 (en) Execution of auxiliary functions in an on-demand network code execution system
US10776091B1 (en) Logging endpoint in an on-demand code execution system
US11836516B2 (en) Reducing execution times in an on-demand network code execution system using saved machine states
US10303492B1 (en) Managing custom runtimes in an on-demand code execution system
US10360067B1 (en) Dynamic function calls in an on-demand network code execution system
US10725752B1 (en) Dependency handling in an on-demand network code execution system
US11714675B2 (en) Virtualization-based transaction handling in an on-demand network code execution system
US10277708B2 (en) On-demand network code execution with cross-account aliases
US20200192707A1 (en) Performance-based hardware emulation in an on-demand network code execution system
US9928108B1 (en) Metaevent handling for on-demand code execution environments
CA2962633C (en) Programmatic event detection and message generation for requests to execute program code
US11119813B1 (en) Mapreduce implementation using an on-demand network code execution system
US9146764B1 (en) Processing event messages for user requests to execute program code
EP3811209A1 (en) Execution of auxiliary functions in an on-demand network code execution system
US20180004553A1 (en) On-demand network code execution with cross-account aliases
WO2018005829A1 (en) On-demand code execution using cross-account aliases
US11144359B1 (en) Managing sandbox reuse in an on-demand code execution system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221005

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230302

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230502

R150 Certificate of patent or registration of utility model

Ref document number: 7275171

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150