(57)【要約】サーバーコンピュータは、パフォーマンスモニターモジュールと、スロットリング論理モジュールとを含む。パフォーマンスモニターモジュールは、サーバーコンピュータのシステムパラメーターを監視するパフォーマンスモニターを含む。スロットリング論理モジュールは、パフォーマンスモニターによって監視されるシステムパラメーターが所定のしきい値を超えるか否かを判定する。システムパラメーターが所定のしきい値を超えた場合、スロットリング論理モジュールはスロットリングフラグをセットする。スロットリング論理モジュールは、所定の数の時間スナップショットの各々について少なくとも１つのスロットリングフラグがセットされた場合、サーバーコンピュータにおいてスロットリングを活性化する。スロットリングの活性化は、サーバーコンピュータによって受信された要求メッセージの処理を制限する。
2012521042.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のパフォーマンスモニターを備えるパフォーマンスモニターモジュール（２０２）であって、前記１つまたは複数のパフォーマンスモニターのうちの前記１つまたは複数の各々はサーバーコンピュータ（１１０）のシステムパラメーターを監視する、パフォーマンスモニターモジュール（２０２）と、
パフォーマンスモニターによって監視されるシステムパラメーターが所定のしきい値を超えるか否かを判定し、当該システムパラメーターが所定のしきい値を超えた場合、スロットリングフラグをセットする、スロットリング論理モジュール（２０６）と、
前記１つまたは複数のパフォーマンスモニターによって監視される各システムパラメーターの前記所定のしきい値を記憶し、１つまたは複数のスロットリング論理パラメーターをも記憶する、スロットリング構成モジュール（２０４）と
を備え、
所定の数の時間スナップショットの各々について少なくとも１つのスロットリングフラグがセットされた場合、前記スロットリング論理モジュール（２０６）は前記サーバーコンピュータ（１１０）においてスロットリングを活性化し、前記スロットリングの活性化により、前記サーバーコンピュータ（１１０）によって受信された要求メッセージの処理を制限することを特徴とするサーバーコンピュータ（１１０）。
【請求項２】
前記サーバーコンピュータ（１１０）によって受信された要求メッセージの処理を制限することは、要求メッセージを拒否することを含むことを特徴とする請求項１に記載のサーバーコンピュータ（１１０）。
【請求項３】
前記スロットリングフラグに関連するシステムパラメーターが所定のしきい値を下回った場合、前記スロットリング論理モジュール（２０６）は前記スロットリングフラグを非活性化することを特徴とする請求項１に記載のサーバーコンピュータ（１１０）。
【請求項４】
前記所定の数の時間スナップショットの各々について少なくとも１つのスロットリングフラグがセットされていない場合、前記スロットリング論理モジュール（２０６）はスロットリングを非活性化することを特徴とする請求項１に記載のサーバーコンピュータ（１１０）。
【請求項５】
１つまたは複数の分類器を含む分類器モジュール（２０８）をさらに備え、前記１つまたは複数の分類器の各々は、１つまたは複数の種類の要求メッセージをスロットリングするかスロットリングしないかを識別することを特徴とする請求項１に記載のサーバーコンピュータ（１１０）。
【請求項６】
前記パフォーマンスモニターの前記所定のしきい値を判定するために前記サーバーコンピュータにおいてパフォーマンスデータを分析するパフォーマンス分析モジュール（２１０）をさらに備えることを特徴とする請求項１に記載のサーバーコンピュータ（１１０）。
【請求項７】
インターフェイスモジュール（２１２）をさらに有し、該インターフェイスモジュール（２１２）は前記サーバーコンピュータ上のインターフェイスを使用して前記所定のしきい値と前記スロットリング論理パラメーターとを設定することを特徴とする請求項１に記載のサーバーコンピュータ（１１０）。
【請求項８】
サーバーコンピュータ（１１０）においてメッセージをスロットリングするための方法であって、
前記サーバーコンピュータ（１１０）においてクライアントコンピュータ（１０２）からのＨＴＴＰ要求メッセージを受信するステップと、
前記サーバーコンピュータ（１１０）において前記ＨＴＴＰ要求メッセージを受信するステップに応答して、前記サーバーコンピュータ（１１０）において前記要求メッセージを受け付けるべきか否かを判定するステップであって、
前記サーバーコンピュータ（１１０）においてスロットリングを活性化するか否かを判定するステップと、
前記要求メッセージをスロットリングするか否かを判定するステップと、
前記サーバーコンピュータ（１１０）においてスロットリングがを活性化しない場合、前記サーバーコンピュータ（１１０）において前記要求メッセージを受け付けるステップと、
前記サーバーコンピュータ（１１０）においてスロットリングが活性化され、前記要求メッセージがをスロットリングしない場合、前記サーバーコンピュータ（１１０）において前記要求メッセージを受け付けるステップと、
前記サーバーコンピュータ（１１０）においてスロットリングが活性化され、前記要求メッセージをスロットリングする場合、前記サーバーコンピュータ（１１０）において前記要求メッセージを拒否するステップと
を含む、判定するステップと、
前記サーバーコンピュータ（１１０）において前記要求メッセージを拒否するという判定が行われた場合、応答メッセージを前記クライアントコンピュータ（１０２）に送信するステップであって、前記応答メッセージは、前記サーバーコンピュータ（１１０）において前記要求メッセージが拒否されたことを前記クライアントコンピュータ（１０２、１０４）に通知する、送信するステップと
を含むことを特徴とする方法。
【請求項９】
前記サーバーコンピュータ（１１０）上でスロットリングを活性化するか否かを判定するステップは、
第１の時間スナップショットに対応する時間において、前記サーバーコンピュータ（１１０）上の１つまたは複数のパフォーマンスモニターの状態を監視するステップと、
前記第１の時間スナップショットの前記時間において、前記サーバーコンピュータ（１１０）上の前記１つまたは複数のパフォーマンスモニターの前記状態を監視するステップに応答して、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと判定された場合、第１のスロットリングフラグをセットするステップと、
１つまたは複数の追加の時間スナップショットに対応する時間を判定するステップであって、前記１つまたは複数の追加の時間スナップショットの各々は前記第１の時間スナップショットからの１つまたは複数の所定の時間間隔において発生する、判定するステップと、
前記１つまたは複数の追加の時間スナップショットの各々に対応する時間において、前記サーバーコンピュータ（１１０）上の１つまたは複数のパフォーマンスモニターの状態を監視するステップと、
前記１つまたは複数の追加の時間スナップショットの各々の前記時間において、前記サーバーコンピュータ（１１０）上の１つまたは複数のパフォーマンスモニターの前記状態を監視するステップに応答して、前記１つまたは複数の追加の時間スナップショットの各々において、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つが判定したか否かを判定するステップと、
前記１つまたは複数の追加の時間スナップショットの各々の前記時間において、前記サーバーコンピュータ（１１０）上の前記１つまたは複数のパフォーマンスモニターの状態を監視するステップに応答して、前記１つまたは複数の追加の時間スナップショットの各々において、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと判定された場合、追加のスロットリングフラグをセットするステップと、
前記１つまたは複数の追加の時間スナップショットの最後の時間スナップショットの時間において、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと判定された場合、前記第１のスロットリングフラグがセットされたか否かと、前記１つまたは複数の追加の時間スナップショットの各々についてスロットリングフラグがセットされたか否かとを判定するステップと、
前記１つまたは複数の追加の時間スナップショットの前記最後の時間スナップショットの前記時間において、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと判定され、前記第１のスロットリングフラグがセットされ、前記１つまたは複数の追加の時間スナップショットの各々についてスロットリングフラグがセットされたと判定された場合、前記サーバーコンピュータ（１１０）上のスロットリングを活性化するステップと
を含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記要求メッセージをスロットリングするか否かを判定するステップは、
前記要求メッセージのＨＴＴＰメッセージ型を識別するステップと、
前記要求メッセージの機能を識別するステップと、
前記要求メッセージの識別されたＨＴＴＰメッセージ型が、スロットリングするＨＴＴＰメッセージ型であるか否かを判定するステップと、
前記要求メッセージの識別された機能が、スロットリングしない機能であるか否かを判定するステップと、
前記要求メッセージの識別されたＨＴＴＰメッセージ型が、スロットリングしないＨＴＴＰメッセージ型であるか、または前記要求メッセージの前記識別された機能が、スロットリングしない機能である場合、前記要求メッセージをスロットリングしないと判定するステップと、
前記要求メッセージの前記識別されたＨＴＴＰメッセージ型が、スロットリングしないＨＴＴＰメッセージ型であり、前記要求メッセージの前記識別された機能が、スロットリングしない機能として識別されていない機能である場合、前記要求メッセージをスロットリングすると判定するステップと
を含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記要求メッセージをスロットリングするか否かを判定するステップは、スロットリング用に指定されたＨＴＴＰメッセージ型を識別するために１つまたは複数の分類器を使用するステップをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１２】
時間スナップショットの数は設定可能であることを特徴とする請求項８に記載の方法。
【請求項１３】
前記１つまたは複数のパフォーマンスモニターの各々の前記所定のしきい値は設定可能であることを特徴とする請求項８に記載の方法。
【請求項１４】
前記第１の時間スナップショットと第２の時間スナップショットとの間の前記所定の時間間隔は設定可能であることを特徴とする請求項８に記載の方法。
【請求項１５】
サーバーコンピュータ（１１０）の処理ユニットによって実行された場合、サーバーコンピュータ（１１０）に、
クライアントコンピュータ（１０２）からのＨＴＴＰ要求メッセージを受信することと、
前記ＨＴＴＰ要求メッセージを受信することに応答して、前記要求メッセージを受け付けるべきか否かを判定することであって、
第１の時間スナップショットに対応する時間において、前記サーバーコンピュータ（１１０）上の１つまたは複数のパフォーマンスモニターの状態を監視することと、
前記第１の時間スナップショットの前記時間において、前記サーバーコンピュータ（１１０）上の前記１つまたは複数のパフォーマンスモニターの前記状態を監視することに応答して、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと判定された場合、第１のスロットリングフラグをセットすることと、
１つまたは複数の追加の時間スナップショットに対応する時間を判定することであって、前記１つまたは複数の追加の時間スナップショットの各々は前記第１の時間スナップショットからの１つまたは複数の所定の時間間隔において発生する、判定することと、
前記１つまたは複数の追加の時間スナップショットの各々に対応する時間において、前記サーバーコンピュータ（１１０）上の１つまたは複数のパフォーマンスモニターの状態を監視することと、
前記１つまたは複数の追加の時間スナップショットの各々の前記時間において、前記サーバーコンピュータ（１１０）上の１つまたは複数のパフォーマンスモニターの前記状態を監視することに応答して、前記１つまたは複数の追加の時間スナップショットの各々において、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つが判定したか否かを判定することと、
前記１つまたは複数の追加の時間スナップショットの各々の前記時間において、前記サーバーコンピュータ（１１０）上の前記１つまたは複数のパフォーマンスモニターの前記状態を監視することに応答して、前記１つまたは複数の追加の時間スナップショットの各々において、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと判定された場合、追加のスロットリングフラグをセットすることと、
前記１つまたは複数の追加の時間スナップショットの最後の時間スナップショットの時間において、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと判定された場合、前記第１のスロットリングフラグがセットされたか否かと、前記１つまたは複数の追加の時間スナップショットの各々についてスロットリングフラグがセットされたか否かとを判定することと、
前記１つまたは複数の追加の時間スナップショットの前記最後の時間スナップショットの前記時間において、前記１つまたは複数のパフォーマンスモニターのうちの少なくとも１つによって監視されるシステムパラメーターが所定のしきい値を超えたと判定され、前記第１のスロットリングフラグがセットされ、前記１つまたは複数の追加の時間スナップショットの各々についてスロットリングフラグがセットされたと判定された場合、前記サーバーコンピュータ（１１０）上のスロットリングを活性化することと、
前記要求メッセージのＨＴＴＰメッセージ型を識別することと、
前記要求メッセージの機能を識別することと、
前記要求メッセージの識別されたＨＴＴＰメッセージ型が、スロットリングするＨＴＴＰメッセージ型であるか否かを判定することと、
前記要求メッセージの識別された機能が、スロットリングしない機能であるか否かを判定することと、
前記要求メッセージの識別されたＨＴＴＰメッセージ型が、スロットリングしないＨＴＴＰメッセージ型であるか、または前記要求メッセージの識別された機能が、スロットリングしない機能である場合、前記要求メッセージはスロットリングしないと判定することと、
前記要求メッセージの前記識別されたＨＴＴＰメッセージ型が、スロットリングしないＨＴＴＰメッセージ型であり、前記要求メッセージの識別された機能が、スロットリングしない機能として識別されていない機能である場合、前記要求メッセージをスロットリングすると判定することと、
前記サーバーコンピュータ（１１０）においてスロットリングを活性化しない場合、前記サーバーコンピュータ（１１０）において前記要求メッセージを受け付けることと、
前記サーバーコンピュータ（１１０）においてスロットリングが活性化され、前記要求メッセージをスロットリングしない場合、前記サーバーコンピュータ（１１０）において前記要求メッセージを受け付けることと、
前記サーバーコンピュータ（１１０）においてスロットリングが活性化され、前記要求メッセージをスロットリングする場合、前記サーバーコンピュータ（１１０）において前記要求メッセージを拒否することと
を含む、前記要求メッセージを受け付けるべき否かを判定することと、
前記サーバーコンピュータ（１１０）において前記要求メッセージを拒否するという判定が行われた場合、応答メッセージを前記クライアントコンピュータ（１０２、１０４）に送信することであって、前記応答メッセージは、前記サーバーコンピュータ（１１０）において前記要求メッセージが拒否されたことを前記クライアントコンピュータ（１０２）に通知する、送信することと
を行わせる命令を備えることを特徴とするコンピュータ可読データ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウェブフロントエンドスロットリングに関する。
【背景技術】
【０００２】
ウェブフロントエンドサーバーは、インターネット上のデータベースサーバーからの情報にアクセスしようと試みるクライアントシステムにインターフェイスを提供する。ウェブフロントエンドサーバーは、一般に、クライアント要求を処理し、その要求をデータベースサーバーに転送し、得られたデータをクライアントシステムに戻す。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
オンラインのブラウザベースのドキュメントおよびコラボレーションシステムは、一般に、クライアント要求を扱うための複数のウェブフロントエンドサーバーを提供する。クライアントは、データベースサーバーへのアクセスのそれらの要求が適時に処理されることを期待する。しかしながら、システムがビジーになった場合、ウェブフロントエンドサーバーは、時々過負荷になり、クライアント要求に適時に応答することができない。
【課題を解決するための手段】
【０００４】
本発明の実施形態は、サーバーコンピュータにスロットリング機能を与えることを対象とする。サーバーコンピュータは、パフォーマンスモニターモジュールと、スロットリング論理モジュールと、スロットリング構成モジュールとを含む。パフォーマンスモニターモジュールは１つまたは複数のパフォーマンスモニターを備える。各パフォーマンスモニターはサーバーコンピュータのシステムパラメーターを監視する。スロットリング論理モジュールは、パフォーマンスモニターによって監視されるシステムパラメーターが所定のしきい値を超えるか否かを判定する。システムパラメーターが所定のしきい値を超えた場合、スロットリング論理モジュールはスロットリングフラグをセットする。
【０００５】
スロットリング構成モジュールは、１つまたは複数のパフォーマンスモニターによって監視される各システムパラメーターの所定のしきい値を記憶する。スロットリング構成モジュールはまた、１つまたは複数のスロットリング論理パラメーターを記憶する。スロットリング論理モジュールは、所定の数の時間スナップショットの各々について少なくとも１つのスロットリングフラグがセットされた場合、サーバーコンピュータにおいてスロットリングを活性化する。スロットリングの活性化は、サーバーコンピュータによって受信された要求メッセージの処理を制限する。
【０００６】
１つまたは複数の技法の詳細を添付の図面および以下の説明に記載する。本技法の他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【０００７】
【図１】ウェブフロントエンドスロットリングのための例示的なシステムを示す図である。
【図２】ウェブフロントエンドサーバーの例示的なモジュールを示す図である。
【図３】ウェブフロントエンドスロットリングにおいて使用される例示的なスロットリング機構のための例示的な論理図である。
【図４】例示的なウェブフロントエンドサーバーにおいて実行される例示的な動作のフローチャートを示す図である。
【図５】図４に示す例示的な動作のうちの１つのフローチャートを示す図である。
【図６】図５に示す例示的な動作のうちの１つのフローチャートを示す図である。
【図７】図５に示す例示的な動作のうちの別の例示的な動作のフローチャートを示す図である。
【図８】ウェブフロントエンドスロットリングを実装するシステムのための動作環境を示す図である。
【発明を実施するための形態】
【０００８】
本開示は、ウェブフロントエンドサーバーにスロットリング機能を与えるためのシステムおよび方法を対象とする。本システムおよび方法は、パフォーマンスモニターを使用して、ウェブフロントエンドサーバーのシステムヘルスを監視する。システムリソースが規定された時間期間にわたって所定のしきい値外にあることを１つまたは複数のパフォーマンスモニターが示す場合、ウェブフロントエンドサーバー上でスロットリングが活性化される。ウェブフロントエンドサーバー上でスロットリングが活性化された場合、一般に低い優先度を有する要求メッセージである、いくつかのタイプのクライアント要求メッセージはウェブフロントエンドサーバーによって処理されない。代わりに、一般にシステムビジー状態を示すエラーメッセージが要求元クライアントシステムに戻される。
【０００９】
図１に、ウェブフロントエンド（ＷＦＥ）スロットリングのための例示的なシステム１００を示す。例示的なシステム１００は、クライアント１０２および１０４と、ネットワーク１０６と、ロードバランサー１０８と、ＷＦＥサーバー１１０、１１２、１１４と、バックエンドサーバー１１６とを含む。より多いまたはより少ないクライアント、ＷＦＥ、バックエンドサーバー、ロードバランサー、およびネットワークが使用される。本開示では、ＷＦＥおよびＷＦＥサーバーという用語は互換的に使用される。
【００１０】
例示的な実施形態では、クライアント１０２および１０４は、デスクトップコンピュータ、ラップトップコンピュータ、端末コンピュータ、個人情報端末、またはセルラー電話デバイスなど、コンピューティングデバイスである。クライアント１０２および１０４は、入出力デバイスと、中央処理装置（「ＣＰＵ」）と、データ記憶デバイスと、ネットワークデバイスとを含むことができる。本出願では、クライアントおよびクライアントコンピュータという用語は互換的に使用される。
【００１１】
ＷＦＥ１１０、１１２および１１４は、クライアント１０２および１０４が、ネットワーク１０６を介してロードバランサー１０８によってアクセス可能である。バックエンドサーバー１１６は、ＷＦＥ１１０、１１２および１１４がアクセス可能である。ロードバランサー１０８はサーバーコンピュータである。ロードバランサー１０８と、ＷＦＥ１１０、１１２および１１４と、バックエンドサーバー１１６は、入出力デバイスと、中央処理装置（「ＣＰＵ」）と、データ記憶デバイスと、ネットワークデバイスとを含むことができる。例示的な実施形態では、ネットワーク１０６はインターネットであり、クライアント１０２および１０４は、ＷＦＥ１１０、１１２および１１４、ならびにＷＦＥ１１０、１１２および１１４に接続されたリソースにリモートでアクセスすることができる。本出願では、サーバーおよびサーバーコンピュータという用語は互換的に使用される。
【００１２】
例示的な一実施形態では、例示的なシステム１００は、オンラインのブラウザベースのドキュメントコラボレーションシステムである。オンラインのブラウザベースのドキュメントコラボレーションシステムの例は、マイクロソフト社（ワシントン州レドモンド）のＭｉｃｒｏｓｏｆｔ  ＳｈａｒｅＰｏｉｎｔである。例示的なシステム１００では、バックエンドサーバー１１６は、ＳＱＬサーバー、たとえばマイクロソフト社（ワシントン州レドモンド）のＳＱＬ  Ｓｅｒｖｅｒ２００８である。
【００１３】
例示的なシステム１００において、ＷＦＥ１１０、１１２および１１４は、クライアント１０２および１０４とバックエンドサーバー１１６との間のインターフェイスを提供する。ロードバランサー１０８は、クライアント１０２および１０４からの要求をＷＦＥ１１０、１１２および１１４にダイレクトするサーバーコンピュータである。ロードバランサー１０８は、どのＷＦＥサーバーがクライアント要求を受信したかを判定するために、ＷＦＥ利用率、ＷＦＥへの接続数、および全体的なＷＦＥパフォーマンスなどのファクターを使用する。
【００１４】
例示的なシステム１００において、クライアント要求の例は、バックエンドサーバー１１６に記憶されたドキュメントにアクセスするか、バックエンドサーバー１１６に記憶されたドキュメントを編集するか、またはドキュメントをバックエンドサーバー１１６に記憶することである。ロードバランサー１０８がネットワーク１０６を介してクライアント要求を受信した場合、ロードバランサー１０８は、ＷＦＥサーバー１１０、１１２および１１４のうちのいずれがクライアント要求を受信したかを判定する。ＷＦＥサーバー１１０、１１２、および１１４の間で要求を分散させる試みにもかかわらず、ＷＦＥサーバー１１０、１１２および１１４のうちの１つまたは複数のシステムリソースは、ＷＦＥがクライアント要求を受け付けることができない程度まで枯渇することがある。
【００１５】
例示的なシステム１００中の各ＷＦＥはスロットリング機構を含む。スロットリング機構は、ＷＦＥがスロットリングをいつ活性化するかを判定する。ＷＦＥ上でスロットリングが活性化された場合、低い優先度のクライアント要求メッセージはＷＦＥにおいて拒否され、ＷＦＥビジー状態を示すエラー応答メッセージが、ＷＦＥから、要求を行うクライアント１０２、１０４に送信される。
【００１６】
図２に、例示的なＷＦＥ１１０をより詳細に示す。図２に示すように、例示的なＷＦＥ１１０は、例示的なパフォーマンスモニターモジュール２０２と、例示的なスロットリング構成モジュール２０４と、例示的なスロットリング論理モジュール２０６と、例示的な分類器モジュール２０８と、例示的なパフォーマンス分析モジュール２１０と、例示的なインターフェイスモジュール２１２とを含む。
【００１７】
例示的なパフォーマンスモニターモジュール２０２は、サーバーヘルスを示すＷＦＥ１１０上のシステムパラメーターを追跡する１つまたは複数のパフォーマンスモニターを含む。一般に、ＷＦＥ１１０は、監視されるシステムパラメーターごとに１つのパフォーマンスモニターを含む。パフォーマンスモニターは、一般に、監視している、システムパラメーターの値のカウントを記憶するカウンターである。本開示では、パフォーマンスモニターおよびパフォーマンスカウンターという用語は互換的に使用される。
【００１８】
パフォーマンスカウンターが監視するシステムパラメーターの例には、ＣＰＵ使用の割合やメガバイト単位の利用可能なＷＦＥメモリなどのリソース使用状況パラメーター、およびＷＦＥによってキューイングされた要求の数やミリ秒単位のキュー中での要求待ち時間などのパフォーマンスパラメーターがある。例示的なシステム１００では、キューイングされた例示的な要求はＡＳＰ．ＮＥＴ要求であり、要求待ち時間はＡＳＰ．ＮＥＴ要求待ち時間である。ＡＳＰ．ＮＥＴは、プログラマが動的ウェブサイト、ウェブアプリケーションおよびウェブサービスを構築することが可能な、マイクロソフトによって開発され、発売されたウェブアプリケーションフレームワークである。ＡＳＰ．ＮＥＴは、Ｍｉｃｒｏｓｏｆｔ  ＳｈａｒｅＰｏｉｎｔアプリケーションを構築するために頻繁に使用される。
【００１９】
例示的なスロットリング構成モジュール２０４は各パフォーマンスカウンターのしきい値を記憶する。各しきい値は設定可能な所定のしきい値である。各しきい値は、システム管理者によって手動で設定されるか、またはＷＦＥのパフォーマンス分析に基づいてプログラム的に設定される。各しきい値は、パフォーマンスカウンターによって監視されるシステムパラメーターの限界を表す。監視されるシステムパラメーターに応じて、しきい値はシステムパラメーターの上限または下限を表す。上限を上回るかまたは下限を下回るパフォーマンスカウントは、パフォーマンスに関係する問題を示す。
【００２０】
例示的なスロットリング構成モジュール２０４はまた、１つまたは複数のスロットリング論理パラメーターを記憶する。スロットリング論理パラメーターはスロットリング機構のアスペクトを規定する。例示的なスロットリング論理パラメーターは、スロットリングを活性化すべきか否かを判定するために必要な時間スナップショットの数と、時間スナップショット間の時間間隔とを含む。他のスロットリング論理パラメーターが可能である。各スロットリング論理パラメーターは設定可能である。
【００２１】
例示的なスロットリング論理モジュール２０６は、１つまたは複数のパフォーマンスカウンターを監視し、ＷＦＥのためにスロットリングをいつ活性化すべきかを判定する。一般に、例示的なＷＦＥ１１０のためにスロットリングをいつ活性化すべきかの判定は、ｎステッププロセスである。例示的なｎステッププロセスにおいて、１つまたは複数のパフォーマンスカウンターはｎ個の時点において監視される。第１の時点は時間スナップショット１と呼ばれ、第ｎの時点は時間スナップショットｎと呼ばれる。
【００２２】
例示的なｎステッププロセスにおいて、例示的なスロットリング論理モジュール２０６は、パフォーマンスカウンターによって監視されるシステムパラメーターが所定のしきい値を超えるか否かを判定する。例示的な実施形態では、システムパラメーターが所定のしきい値を超える場合、システムパラメーターの値は、監視されるシステムパラメーターに応じて、上限を上回るかまたは下限を下回るかのいずれかである。たとえば、ＣＰＵ使用率が所定のしきい値を超える場合、ＣＰＵ使用率の値は上限を上回る。しかしながら、利用可能なメモリが所定のしきい値を超える場合、利用可能なメモリの値は下限を下回る。
【００２３】
例示的なｎステッププロセス中の第１のステップは、時間スナップショット１において１つまたは複数のパフォーマンスカウンターを監視することである。時間スナップショット１において１つまたは複数のパフォーマンスカウンターが監視される場合、パフォーマンスカウンターによって監視されるシステムパラメーターが上限しきい値を上回るかまたは下限しきい値を下回ると、パフォーマンスカウンターに関連するパフォーマンスモニターは、そのパフォーマンスモニターについてのスロットリングフラグをセットする。
【００２４】
ｎステッププロセス中の次のステップは、時間スナップショット２において１つまたは複数のパフォーマンスカウンターを監視することである。時間スナップショット２は時間スナップショット１からの所定の時間間隔である。一般に使用される例示的な時間間隔は５秒である。時間間隔は設定可能な値であり、他の時間間隔が使用される。
【００２５】
時間スナップショット２において１つまたは複数のパフォーマンスカウンターが監視される場合、パフォーマンスカウンターによって監視されるシステムパラメーターが上限しきい値を上回るかまたは下限しきい値を下回ると、パフォーマンスカウンターに関連するパフォーマンスモニターについてのスロットリングフラグがまだセットされていなければ、パフォーマンスカウンターに関連するパフォーマンスモニターは、そのパフォーマンスモニターについてのスロットリングフラグをセットする。
【００２６】
ｎステッププロセス中の残りのステップの各々に対して、この同じプロセスが実行される。たとえば、ｎが５に等しい場合、１つまたは複数のパフォーマンスカウンターは、時間スナップショット３、４および５の各々においてさらに監視される。時間スナップショット３、４および５の各々において１つまたは複数のパフォーマンスカウンターが監視される場合、パフォーマンスカウンターによって監視されるシステムパラメーターが上限しきい値を上回るかまたは下限しきい値を下回ると、パフォーマンスカウンターに関連するパフォーマンスモニターについてのスロットリングフラグがまだセットされていなければ、パフォーマンスカウンターに関連するパフォーマンスモニターは、そのパフォーマンスモニターについてのスロットリングフラグをセットする。
【００２７】
時間スナップショットｎにおいて、例示的なスロットリング論理モジュール２０６は、時間スナップショット１において少なくとも１つのスロットリングフラグがセットされたか否か、および（時間スナップショット２から時間スナップショットｎを意味する）時間スナップショット２〜ｎの各々において少なくとも１つのスロットリングフラグがセットされたか否かを判定する。ｎが２に等しい例示的な実施形態では、２つの時間スナップショットのみが使用される。例示的なスロットリング論理モジュール２０６が、時間スナップショット１において少なくとも１つのスロットリングフラグがセットされ、時間スナップショット２〜ｎの各々において少なくとも１つのスロットリングフラグがセットされたと判定した場合、例示的なスロットリング論理モジュール２０６は例示的なＷＦＥ１１０のためにスロットリングを活性化する。ＷＦＥ１１０においてスロットリング状態が活性化された場合、低い優先度を有する、ＷＦＥ１１０において受信されたすべての要求メッセージがＷＦＥ１１０によって処理されない。代わりに、ＷＦＥ１１０は、一般にビジーエラーであるエラーメッセージを、要求を開始したクライアントに送信する。
【００２８】
１つまたは複数のパフォーマンスモニターは、対応するパフォーマンスカウンターに関連するシステムパラメーターを断続的に監視する。パフォーマンスカウンターのスロットリングフラグがセットされた場合、パフォーマンスカウンターによって監視されるシステムパラメーターが上限を上回り続けるかまたは上限を下回ったままであり続ければ、スロットリングフラグはセットされたままである。しかしながら、パフォーマンスカウンターによって監視されるシステムパラメーターが、上限にあるかまたは上限を下回るあるいは下限にあるかまたは下限を上回る許容値に戻った場合、パフォーマンスカウンターのスロットリングフラグはリセットされる。
【００２９】
例示的なＷＦＥ１１０のためにスロットリングを活性化すべきか否かの判定を行う場合、例示的なスロットリング論理モジュール２０６は、どのパフォーマンスカウンターがスロットリングフラグをセットしたかを考慮しない。判定ファクターは、時間スナップショット１において少なくとも１つのスロットリングフラグがセットされたこと、および時間スナップショット２〜ｎの各々において少なくとも１つのスロットリングフラグがセットされたことである。例示的な実施形態では、時間スナップショット１および時間スナップショット２〜ｎの各々において異なるパフォーマンスカウンターがスロットリングフラグをセットするか、または時間スナップショット１および時間スナップショット２〜ｎの各々において同じパフォーマンスカウンターのスロットリングフラグがセットされると、スロットリング状態が活性化される。
【００３０】
時間スナップショットの数ｎは設定可能である。いくつかの例示的な実施形態では、例示的なスロットリング論理モジュール２０６は、２つの時間スナップショットを使用して、例示的なＷＦＥ１１０においてスロットリング状態を活性化すべきか否かに関する判定を行う。例示的なスロットリング論理モジュール２０６は、フォールスアラームスロットリング状態をセットする、パフォーマンス中のスパイクの可能性を最小限に抑えるために、２つの時間スナップショットを使用する。たとえば、ＣＰＵアクティビティを監視するパフォーマンスカウンターがしきい値を超えることを引き起こすＣＰＵアクティビティのバーストがある。ＣＰＵアクティビティのこのバーストは、短い時間期間の間のみ続くスパイクである。アクティビティ中の短いスパイクのために、ＷＦＥのためにスロットリング状態を活性化することは望ましくないので、この例示的な実施形態では、２つの時間スナップショットが使用される。他の例示的な実施形態では、３つ以上の時間スナップショットが使用される。
【００３１】
例示的な分類器モジュール２０８は、メッセージ型に優先度を割り当て、スロットリングが活性化された場合、どのメッセージを処理することができるかを判定すると共に、スロットリングが活性化された場合、どのメッセージを拒否できるかを判定する。一般に、書込み動作は完了され、スロットリングされないことが望ましいが、読取り動作、たとえばウェブページの要求はスロットリングされる可能性が高い。たとえば、クライアント１０２上のユーザーが編集のためにドキュメントを開く場合、ユーザーにドキュメントの編集を完了させ、ＷＦＥがビジーであるためにドキュメントの編集を遅延させないようにすることが望ましい。同様に、クライアント１０４上のユーザーが閲覧のためにウェブページにアクセスしようと試み、ビジーエラーを受信した場合、ユーザーは単に後で再び試行する。
【００３２】
例示的な実施形態では、分類器モジュール２０８は、ＨＴＴＰメッセージ型によっていくつかのメッセージを分類する。たとえば、ＨＴＴＰ  ＰｏｓｔおよびＨＴＴＰ  Ｐｕｔメッセージ型には一般に高い優先度が割り当てられ、ＨＴＴＰ  Ｇｅｔメッセージ型には一般に低い優先度が割り当てられる。例示的な一実施形態では、例示的なＷＦＥ１１０上でスロットリングが活性化され、ＷＦＥ１１０がＨＴＴＰ  ＰｏｓｔまたはＨＴＴＰ  Ｐｕｔメッセージ要求を受信した場合、ＷＦＥ１１０はＨＴＴＰ  ＰｏｓｔまたはＨＴＴＰ  Ｐｕｔメッセージを処理する。同様に、ＷＦＥ１１０上でスロットリングが活性化され、ＷＦＥ１１０がＨＴＴＰ  Ｇｅｔメッセージ要求を受信した場合、ＷＦＥ１１０は、一般にビジーエラーを戻すことによってＨＴＴＰ  Ｇｅｔメッセージを拒否する。
【００３３】
メッセージ型によってメッセージを分類することに加えて、例示的な分類器モジュール２０８はまた、メッセージ機能によってメッセージを分類する。たとえば、例示的なＷＦＥ１１０においてスロットリングが活性化された場合、検索エンジンクローラー（ｃｒａｗｌｅｒ）が、ユーザーによってトリガーされたＨＴＴＰ  Ｐｏｓｔ要求を中断することを防ぐために、検索エンジンクローラーからのメッセージをスロットリングすることが望ましいことがある。
【００３４】
例示的なＷＦＥ１１０は２つ以上の分類器モジュールを含むことができる。たとえば、１つの分類器モジュールはＨＴＴＰ機能型によって要求を分類する。別の分類器モジュールは機能によって要求を分類する。たとえば、ＷＦＥ１１０は、Ｍｉｃｒｏｓｏｆｔ  ＳｈａｒｅＰｏｉｎｔメッセージのための固有の分類器モジュールを含む。１つの分類器モジュールが要求メッセージを高い優先度に指定し、別の分類器モジュールが要求メッセージを低い優先度に指定した場合、要求メッセージは低い優先度を与えられる。ただ１つの分類器モジュールが要求メッセージに適合した場合、要求メッセージは、その分類器に関連する優先度を与えられる。
【００３５】
例示的なパフォーマンス分析モジュール２１０は、パフォーマンスカウンターのしきい値レベルおよび他のスロットリングパラメーターをより正確に設定することができるように、ＷＦＥが１つまたは複数のパフォーマンスモニターを経時的に分析することを可能にする。たとえば、パフォーマンス分析モジュール２１０は、同じパフォーマンスカウンターがしきい値を超えることによって、過剰な数のスロットリング状態が引き起こされていると判定する。この例では、フォールスアラームを最小限に抑えるために、パフォーマンス分析モジュール２１０は、パフォーマンスカウンターのしきい値限界が増加されるべきであると判定する。他の例では、パフォーマンス分析モジュール２１０は、スナップショット間の時間間隔、またはスロットリングを活性化するために必要なスナップショットの数が変更されるべきであると判定する。
【００３６】
例示的なインターフェイスモジュール２１２は、システム管理者がシステムパラメーターを手動で設定することを可能にする。たとえば、システム管理者は、１つまたは複数のパフォーマンスカウンターのシステムパラメーターしきい値を手動で設定可能である。システム管理者は、ｎの値を手動で設定し、それによって、スロットリングを活性化すべきか否かに関する判定を行うために使用される時間スナップショットの数を設定することができる。システム管理者はまた、スナップショット間の時間間隔を手動で設定することができる。他のシステムパラメーターも設定可能とすることができる。
【００３７】
例示的なインターフェイスモジュール２１２は、一般に、システム管理者がシステムパラメーターを設定することを可能にするためのコマンドラインインターフェイスを提供する。いくつかの実施形態では、グラフィカルユーザーインターフェイスが使用される。他のユーザーインターフェイスも使用可能である。
【００３８】
図３に、例示的なスロットリング論理モジュール２０６中で使用される例示的な論理３００を示す。図２に示す例示的なスロットリング論理モジュール２０６の実施形態では、ｎの値は、２ステップスロットリング機構を示す２に等しい。したがって、２つのＯＲゲートおよび２つのスロットリングフラグが示されている。他の例示的な実施形態では、ＯＲゲートの数およびスロットリングフラグの数はｎに等しい。たとえば、３ステップスロットリング機構は、３つの時間スナップショットに対応する３つのＯＲゲートを使用する。ＯＲゲートは一例として示されているにすぎない。例示的な実施形態では、ＯＲゲートおよびＡＮＤゲートによって使用される論理は、他の手段によって、たとえばソフトウェアで実装可能である。
【００３９】
例示的なＯＲゲート３０２は、時間ｔにおいて１つまたは複数のパフォーマンスモニターからの入力を受信する。時間ｔは時間スナップショット１を定める。時間ｔにおいて、１つまたは複数のパフォーマンスモニターのうちのいずれかが、監視されるシステムパラメーターが上限を上回るかまたは下限を下回ると判定した場合、例示的なフラグｔがセットされる。例示的なフラグｔは例示的なＡＮＤゲート３０６への１つの入力である。
【００４０】
例示的なＯＲゲート３０４は、時間ｔ＋１において１つまたは複数のパフォーマンスモニターからの入力を受信する。時間ｔ＋１は時間スナップショット２を定める。時間ｔ＋１において、１つまたは複数のパフォーマンスモニターのうちのいずれかが、監視されるシステムパラメーターが上限を上回るかまたは下限を下回ると判定した場合、例示的なフラグｔ＋１がセットされる。例示的なフラグｔ＋１は例示的なＡＮＤゲート３０６への第２の入力である。
【００４１】
時間ｔ＋１において、フラグｔおよびフラグｔ＋１が両方ともセットされた場合、ＡＮＤゲート３０６は例示的なスロットルオン／オフフラグをセットする。例示的なスロットルオン／オフフラグがセットされた場合、例示的なＷＦＥ１１０においてスロットリングが活性化される。
【００４２】
図４は、例示的なＷＦＥ１１０において実行される例示的な動作４００を示すフローチャートである。動作４０２において、例示的なＷＦＥ１１０は例示的なクライアント１０２からの要求メッセージを受信する。動作４０４において、例示的なＷＦＥ１１０は、追加の処理のための要求メッセージを受け付けるべきか否かを判定する。要求メッセージを受け付けるべきか否かの判定を行う場合、例示的なＷＦＥ１１０は、ＷＦＥ１１０においてスロットリングを活性化するか否かと、要求メッセージが、スロットリングする型および機能であるか否かとを判定する。例示的なＷＦＥ１１０が、動作４０６において、要求メッセージを受け付けるという判定を行った場合、動作４０８において要求メッセージを処理する。例示的なＷＦＥ１１０が、動作４０６において、要求メッセージを拒否するという判定を行った場合、例示的なＷＦＥ１１０は応答メッセージを例示的なクライアント１０２に送信する。応答メッセージは、一般にビジーメッセージであるエラーメッセージであり、例示的なＷＦＥ１１０において要求メッセージが拒否されたことを例示的なクライアント１０２に示す。
【００４３】
図５は、例示的なＷＦＥ１１０において実行される例示的な動作４０４をより詳細に示すフローチャートである。例示的な動作４０４において、例示的なＷＦＥ１１０は、例示的なクライアント１０２からの要求メッセージを受け付けるべきか否かを判定する。
【００４４】
動作５０２において、例示的なＷＦＥ１１０上でスロットリングを活性化するか否かを判定するための確認を行う。動作５０４において、例示的な要求メッセージをスロットリングするか否かの判定を行う。動作５０６において、例示的なＷＦＥ１１０上でスロットリングを活性化しないという判定が行われた場合、動作５０８において、例示的なＷＦＥ１１０において要求メッセージを受け付ける。動作５０６において、例示的なＷＦＥ１１０上でスロットリングを活性化するという判定が行われ、動作５１０において、要求メッセージをスロットリングしないという判定が行われた場合、動作５１２において、例示的なＷＦＥ１１０は例示的な要求メッセージを受け付ける。一般にスロットリングされない例示的な要求メッセージは、ＨＴＴＰ  ＰｏｓｔまたはＨＴＴＰ  Ｐｕｔメッセージ型を有する要求メッセージである。
【００４５】
動作５０６において、例示的なＷＦＥ１１０上でスロットリングを活性化するという判定が行われ、動作５１０において、要求メッセージをスロットリングするという判定が行われた場合、動作５１４において、ＷＦＥ１１０は例示的な要求メッセージを拒否する。一般にスロットリングされる例示的な要求メッセージは、ＨＴＴＰ  Ｇｅｔメッセージ型を有する要求メッセージである。
【００４６】
図６は、例示的なＷＦＥ１１０において実行される例示的な動作６００をより詳細に示すフローチャートである。例示的な動作６００において、例示的なＷＦＥ１１０は、例示的なＷＦＥ１１０においてスロットリングを活性化するか否かを判定する。例示的なＷＦＥ１１０においてスロットリングを活性化するか否かに関する判定は一定の時間間隔で行われる。例示的なＷＦＥ１１０においてスロットリングを活性化するか否かに関する判定は、パフォーマンスの理由で、受信された要求メッセージごとには行われない。
【００４７】
動作６０２において、例示的なＷＦＥ１１０は、時間スナップショット１においてＷＦＥ１１０上のパフォーマンスモニターを監視する。時間スナップショット１においてパフォーマンスモニターによって監視される少なくとも１つのシステムパラメーターが、システムパラメーターにセットされた所定のしきい値を超えた場合、動作６０４において、例示的なＷＦＥ１１０は第１のスロットリングフラグをセットする。
【００４８】
動作６０６において、例示的なＷＦＥ１１０は、時間スナップショット２〜ｎにおいてＷＦＥ１１０上のパフォーマンスモニターを監視し、時間スナップショット２〜ｎは、時間スナップショット２から時間スナップショットｎを意味する。時間スナップショット２〜ｎの各々においてパフォーマンスモニターによって監視される少なくとも１つのシステムパラメーターが、システムパラメーターにセットされた所定のしきい値を超えた場合、動作６０８において、例示的なＷＦＥ１１０はスロットリングフラグをセットする。各時間スナップショット２〜ｎにおいて、パフォーマンスモニターによって監視される少なくとも１つのシステムパラメーターがシステムパラメーターにセットされた所定のしきい値を超える各時間スナップショット２〜ｎについて、別々のスロットリングフラグがセットされる。動作６０６および動作６０８はそれぞれ複数の動作であり、時間スナップショット２〜ｎの各々において１つの動作が実行されることを理解されたい。
【００４９】
動作６１０において、両方のスロットリングフラグがセットされたという判定が行われた場合、動作６１２において、ＷＦＥ１１０は、ＷＦＥ１１０においてスロットリングを活性化する。動作６１０において、両方のスロットリングフラグがセットされていないという判定が行われた場合、動作６１４において、ＷＦＥ１１０は、スロットリングが活性化されていれば、ＷＦＥ１１０においてスロットリングを非活性化する。
【００５０】
図７は、例示的なＷＦＥ１１０において実行される例示的な動作５０４をより詳細に示すフローチャートである。例示的な動作５０４において、例示的なＷＦＥ１１０は、例示的なＷＦＥ１１０において例示的なクライアント１０２からの要求メッセージをスロットリングするか否かを判定する。
【００５１】
動作７０２において、例示的なＷＦＥ１１０は例示的なクライアント１０２からの要求メッセージのＨＴＴＰメッセージ型を識別する。ＨＴＴＰメッセージ型のいくつかの例は、ＨＴＴＰ  Ｐｏｓｔ、ＨＴＴＰ  ＰｕｔおよびＨＴＴＰ  Ｇｅｔである。動作７０４において、例示的なＷＦＥ１１０は要求メッセージの機能を識別する。たとえば、要求メッセージはクローラー検索要求の部分である。
【００５２】
動作７０６において、例示的なＷＦＥ１１０は、識別されたＨＴＴＰメッセージ型を有する要求メッセージをスロットリングするか否かを判定する。一般に低い優先度のＨＴＴＰメッセージ型、たとえばＨＴＴＰ  Ｇｅｔはスロットリングし、高い優先度のＨＴＴＰメッセージ型、たとえばＨＴＴＰ  ＰｏｓｔおよびＨＴＴＰ  Ｐｕｔはスロットリングしない。
【００５３】
動作７０８において、例示的なＷＦＥ１１０は、識別された機能を有する要求メッセージをスロットリングしないか否かを判定する。メッセージが高い優先度であることを示す機能型を有するメッセージについてはスロットリングしない。対照的に、高い優先度を有する機能型として識別されていない機能型を有するメッセージについては、一般にスロットリングする。たとえば、クローラー検索はリソース集約的であり、これらの検索が高い優先度の要求メッセージ、たとえばＨＴＴＰ  ＰｏｓｔまたはＨＴＴＰ  Ｐｕｔ要求を中断することは望ましくないので、クローラー機能を示すメッセージ型については一般にスロットリングする。したがって、クローラー検索は、一般に、スロットリングなしに完了することができない。
【００５４】
動作７１０において、識別されたメッセージ型をスロットリングしないと判定された場合、動作７１２において、要求メッセージをスロットリングしないという判定が行われる。動作７１０において、識別されたメッセージ型をスロットリングすると判定され、動作７１４において、要求メッセージの機能は、要求メッセージをスロットリングしないような機能であると判定された場合、動作７１６において、要求メッセージをスロットリングしないという判定が行われる。動作７１０において、識別されたメッセージ型をスロットリングすると判定され、動作７１４において、要求メッセージの機能は、要求メッセージをスロットリングすることを妨げないと判定された場合、動作７１８において、要求メッセージをスロットリングするという判定が行われる。
【００５５】
いくつかの例示的な実施形態では、メッセージ型とメッセージ機能は同じであると考えられ、別々に考えられない。これらの例示的な実施形態では、動作７０２と動作７０４は結合することができ、動作７０６と動作７０８は結合することができ、動作７１０〜動作７１６は結合することができる。
【００５６】
図８は、電子コンピューティングデバイス８００上の例示的な物理構成要素を示すブロック図である。クライアントシステム１０２および１０４ならびにサーバーシステム１０８、１１０、１１２、１１４および１１６、ならびに／あるいはクライアントシステム１０２および１０４ならびに／あるいはサーバーシステム１０８、１１０、１１２、１１４および１１６内の電子コンピューティングデバイスは、電子コンピューティングデバイス８００の様式で実装される。図８の例に示すように、電子コンピューティングデバイス８００はメモリユニット８０１を備える。メモリユニット８０１は、データおよび命令を記憶することが可能なコンピュータ可読データ記憶媒体である。メモリユニット８０１は、限定はしないが、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）、ＤＤＲ  ＳＤＲＡＭ（ダブルデータレートシンクロナスダイナミックランダムアクセスメモリ）、ｒｅｄｕｃｅｄ  ｌａｔｅｎｃｙ  ＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＤＤＲ３  ＳＤＲＡＭ、Ｒａｍｂｕｓ  ＲＡＭ、または他のタイプのコンピュータ可読データ記憶媒体を含む、様々な異なるタイプのコンピュータ可読データ記憶媒体とすることができる。
【００５７】
さらに、電子コンピューティングデバイス８００は処理ユニット８０２を備える。第１の例では、処理ユニット８０２は、特定の機能を与えることを処理ユニット８０２に行わせるソフトウェア命令を実行する。この第１の例では、処理ユニット８０２は、１つまたは複数の処理コアとして、および／または１つまたは複数の個別のマイクロプロセッサとして実装される。たとえば、この第１の例では、処理ユニット８０２は１つまたは複数のＩｎｔｅｌ  Ｃｏｒｅ２マイクロプロセッサとして実装される。処理ユニット８０２は、ｘ８６命令セット、ＰＯＷＥＲ命令セット、ＲＩＳＣ命令セット、ＳＰＡＲＣ命令セット、ＩＡ−６４命令セット、ＭＩＰＳ命令セット、または別の命令セットなど、命令セット中の命令を実行する。第２の例では、処理ユニット８０２は、特定の機能を与えるＡＳＩＣ（特定用途向け集積回路）として実装される。第３の例では、処理ユニット１００２は、ＡＳＩＣを使用し、ソフトウェア命令を実行することによって、特定の機能を与える。
【００５８】
電子コンピューティングデバイス８００はまた、クライアントシステム（１０２および１０４）またはサーバーシステム（１０８、１１０、１１２、１１４、１１６および１１８）がビデオ情報をディスプレイデバイス８０６に出力することを可能にするビデオインターフェイス８０４を備える。ディスプレイデバイス８０６は様々な異なるタイプのディスプレイデバイスとすることができる。たとえば、ディスプレイデバイス８０６は、陰極線管ディスプレイ、ＬＣＤディスプレイパネル、プラズマスクリーンディスプレイパネル、タッチセンシティブディスプレイパネル、ＬＥＤアレイ、または別のタイプのディスプレイデバイスとすることができる。
【００５９】
さらに、電子デバイス８０２は非揮発性記憶デバイス８０８を含む。不揮発性記憶デバイス８０８は、データおよび／または命令を記憶することが可能なコンピュータ可読データ記憶媒体である。不揮発性記憶デバイス８０８は、様々な異なるタイプの異なる不揮発性記憶デバイスとすることができる。たとえば、不揮発性記憶デバイス８０８は、１つまたは複数のハードディスクドライブ、磁気テープドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＯＭドライブ、ブルーレイディスクドライブ、または不揮発性記憶デバイス上の他のタイプとすることができる。
【００６０】
電子コンピューティングデバイス８００はまた、クライアントシステム１０２および１０４ならびにサーバーシステム１０８、１１０、１１２、１１４および１１６が外部構成要素と通信することを可能にする外部構成要素インターフェイス８１０を含む。図８の例に示すように、外部構成要素インターフェイス８１０は入力デバイス８１２および外部記憶デバイス８１４と通信する。電子コンピューティングデバイス８００の一実装形態では、外部構成要素インターフェイス８１０はＵＳＢ（ユニバーサルシリアルバス）インターフェイスである。電子コンピューティングデバイス８００の他の実装形態では、電子コンピューティングデバイス８００は、電子コンピューティングデバイス８００が入力デバイスおよび／または出力デバイスと通信することを可能にする別のタイプのインターフェイスを含む。たとえば、電子コンピューティングデバイス８００はＰＳ／２インターフェイスを含む。入力デバイス８１２は、限定はしないが、キーボード、マウス、トラックボール、スタイラス入力デバイス、タッチパッド、タッチセンシティブディスプレイデバイス、タッチセンシティブディスプレイスクリーン、または他のタイプの入力デバイスを含む、様々な異なるタイプのデバイスとすることができる。外部記憶デバイス８１４は、磁気テープ、フラッシュメモリモジュール、磁気ディスクドライブ、光ディスクドライブ、および他のコンピュータ可読データ記憶媒体を含む、様々な異なるタイプのコンピュータ可読データ記憶媒体とすることができる。
【００６１】
さらに、電子コンピューティングデバイス８００は、電子コンピューティングデバイス８００が、データをネットワーク１０６に送信し、ネットワーク１０６からデータを受信することを可能にするネットワークインターフェイス８１６を含む。ネットワークインターフェイス８１６は様々な異なるタイプのネットワークインターフェイスとすることができる。たとえば、ネットワークインターフェイス８１６は、イーサネットインターフェイス、トークンリングインターフェイス、光ファイバーインターフェイス、ワイヤレスネットワークインターフェイス（たとえば、ＷｉＦｉ、ＷｉＭａｘなど）、または別のタイプのネットワークインターフェイスとすることができる。
【００６２】
電子コンピューティングデバイス８００はまた、電子コンピューティングデバイス８００の様々な構成要素の間の通信を実行する通信媒体８１８を含む。通信媒体８１８は、限定はしないが、ＰＣＩバス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、ＡＧＰ（アクセラレーテッドグラフィックスポート）バス、Ｉｎｆｉｎｉｂａｎｄ相互接続、シリアルＡＴＡ（Ａｄｖａｎｃｅｄ  Ａｔｔａｃｈｍｅｎｔ）相互接続、パラレルＡＴＡ相互接続、ファイバーチャネル相互接続、ＵＳＢバス、ＳＣＳＩ（小型コンピュータシステムインターフェイス）インターフェイス、または別のタイプの通信媒体を含む、１つまたは複数の異なるタイプの通信媒体を備える。
【００６３】
図８の例には、いくつかのコンピュータ可読データ記憶媒体（すなわち、メモリユニット８０１、不揮発性記憶デバイス８０８、および外部記憶デバイス８１４）が示されている。全体として、これらのコンピュータ可読データ記憶媒体は単一の論理コンピュータ可読データ記憶媒体を構成する。この単一の論理コンピュータ可読データ記憶媒体は、処理ユニット８０２によって実行可能な命令を記憶する。上記の説明において説明した行為は、この単一の論理コンピュータ可読データ記憶媒体に記憶された命令の実行によって起こる。したがって、この説明において、特定の論理モジュールが特定の行為を実行すると言う場合、そのような記述は、ソフトウェアモジュールの命令が処理ユニット８０２などの処理ユニットにその行為を実行させることを意味すると解釈される。
【００６４】
上述の様々な実施形態は、説明のためにのみ与えられ、限定的なものと解釈されるべきではない。様々な改変および変更が、本開示の真の趣旨および範囲から逸脱することなく、上述の実施形態に対して行うことが可能である。
【図１】
2012521042.tif 000003
【図２】
2012521042.tif 000004
【図３】
2012521042.tif 000005
【図４】
2012521042.tif 000006
【図５】
2012521042.tif 000007
【図６】
2012521042.tif 000008
【図７】
2012521042.tif 000009
【図８】
2012521042.tif 000010
【国際調査報告】
2012521042.tif 000011
2012521042.tif 000012