詳細な説明
下記の記載において、説明の便宜上、十分に理解してもらうために、数多くの具体的な詳細について説明する。1つ以上の実施の形態は、これらの具体的な詳細がなくても実施できるであろう。一実施の形態において記載した特徴が、異なる実施の形態で記載した特徴と組み合わされてもよい。いくつかの例では、本発明を不必要に曖昧にしてしまわないよう、周知の構造およびデバイスについては、ブロック図の形式を例に説明する。
1.一般的な概要
2.システムアーキテクチャ
3.サーバー電源制御システム
4.サーバーの電力消費を制御するための方法
5.例示的な実施の形態
6.コンピュータネットワークおよびクラウドネットワーク
7.その他;拡張
8.ハードウェア概要
1.一般的な概要
1つ以上の実施の形態は、冗長電源を備えない(または、少ない数の電源を備える)動作状態においてCPUの生産性とCPUの電力消費とのバランスを実現する。特に、システムは、性能低下イベントの後に性能を高めるために電力消費を慎重に増加させる生産性回復処理を実行する。
先ず、サービスプロセッサは、アラート信号に応答して、CPUが消費する電力を減らす。この信号は、その他の冗長電源の故障により、1つの電源がCPUに電力を供給している(または、少ない数の電源が電力を供給している)動作状態の間に受信され得る。たとえば、CPUが一定期間に実行するプロセッササイクル数を減少させることによって、サービスプロセッサによってCPUが消費する電力が減らされるであろう。CPUの電力消費の低減は、CPUの性能の低下に直接つながる。CPUの電力消費の低減に続いて、サービスプロセッサは、CPUの性能を徐々に向上させることで、CPUの電力消費を増加させる。追加のアラート信号が受信された場合、アラート信号の頻度および/または継続期間を利用して、CPUの性能(およびCPUの電力消費)を低減するか、維持するか、向上させるかを決定する。アラート信号の継続期間および/または頻度が低減基準を満たす場合、サービスプロセッサは、CPUの性能(および、CPUの電力消費)を再び低減する。あるいは、継続期間および/または頻度が低減基準を満たさない場合、サービスプロセッサは、CPUの性能(および、CPUの電力消費)を維持または向上させ得る。
いくつかの例では、システムは、PROCHOT(「processor hot」)信号を用いて、CPUが消費する電力を大幅に低減し得る。この信号はCPUの電力消費および生産性を劇的に低下させるため、システムは、PROCHOTを直ちにディアサートし、その次に、上述した技術を用いて電力消費を制御し得る。
本明細書に記載するおよび/または添付のクレームに記載する1つ以上の実施の形態は、この一般的な概要欄に含まれていない場合がある。
2.アーキテクチャの概要
複数の電源から電力を受電するようにサーバーを構成することは、個々のサーバーアーキテクチャの多くの例では一般的である。いくつかの例では、サーバーの想定される電力需要は、2つ以上の電源の間で分けられ、電源の各々は、電力の一部をサーバーに提供する。1つの電力源が動作不能になったとしてもサーバーへの電力は維持されるが、この電源構成によるリスクは、稼働中の電源が対応する推奨電源定格を超えてしまう可能性があることである。この電源定格を超える(つまり、以前は2つ以上の電源によって供給されていたレベルの電力を提供することによる)リスクは、電源自体またはサーバーファーム(たとえば、データセンター)の電源回路のどこかにある遮断器が作動してしまう可能性があることである。これは、電源が過熱することを防ぎ、そうでない場合、電源が損傷してしまうことを防ぐが、サーバーへの電力の喪失も生じさせてしまう可能性がある。場合によっては、遮断器が最初に作動する電力システム内の場所によっては、複数のサーバーおよび/または複数のラックに電力喪失が生じる可能性がある。クラウドコンピューティングセンターにある1つのサーバーに電力喪失があるだけで、複数のサーバーが、クラウドコンピュータサービスを購入しているエンティティに対しては運用上の重大な問題を生じさせてしまい、クラウドコンピューティングセンターを運用しているエンティティに対しては大きな利益損失を生じさせてしまう可能性がある。
この電力喪失を回避するために、いくつかのサーバー管理システムは、多くのCPUのハードウェアに存在することがあるPROCHOTプロトコルを使用して、電力喪失が検出された場合にサーバーによる電力消費を低減させる場合がある。使用されると、PROCHOTは、CPUの演算アクティビティ(たとえば、単位時間当たりのプロセッササイクル数)を予め定められた期間にわたって劇的に減少させることにより、CPUの電力需要を低減し、残りの電力供給(または、複数の供給)が推奨電力供給範囲を超えないようにする、または、遮断器が作動しないようにする。
手軽に実装できる一方で、電力消費を管理するために従来適用されてきたPROCHOTプロトコルを使用することには、大きなデメリットもある。PROCHOTは、固定期間にわたって固定量(たとえば、様々な例では、25%または30%程度)だけCPUの単位時間当たりのプロセッササイクル数を大幅に減少させることによって、CPUの電力需要を低減する。この大幅な減少は、深刻度に関係なく、PROCHOTをトリガする条件を満たすすべてのイベントに対して均一に、そして一貫して適用される。このプロセッササイクル数の劇的な減少により、サーバーの生産性が劇的に低下し、クラウドコンピューティングを割り当てるためのタスクの完了時間が増える。これらの影響により、不便が生じたり、業務の中断が生じたり、利益損失が発生したり、様々なその他の好ましくない結果が生じるであろう。
後述する実施の形態は、上記のようなPROCHOTの使用または同様の処理によって生じる劇的な中断を回避しつつ、サーバーが少ない電源セットに割り当てた電力需要を管理する。本明細書における実施の形態は、たとえば、複数の電源からなるセットのうち1つの電源からの電力の停止を検出する。その後、システムは、残りの電源(または、残りの電源のいずれか)がしきい値を上回る電力を供給しているかどうかを判断する。いくつかの例では、しきい値は、各電源に固有であり、それどころか、電源のそれぞれに個々に対応付けられてメモリ構造(「レジスタ」)に記憶されてもよい。供給電力が残りのアクティブな電源に対応付けられたしきい値を超えていると判断したことに応答して、残りの電源は、しきい値電力を超えたことをシステムに示す信号(または、「アラート」)を生成し得る。このアラートを受信したことに応答して、システムは、しきい値電力供給値を超えている測定間隔の継続期間に比例して、サーバーが消費する電力を制限し得る。システムは、アラートが受信される連続する測定間隔の割合を継続的に監視し、それに応じてサーバーの電力消費を増加させたり低減したりし得る。このように、PROCHOTを使用することによって生じる一貫した深刻な電力制限とは異なり、深刻度および時間の面でCPUの性能に与える影響が限定される。
図1Aは、1つ以上の実施の形態に係る、システム100を示す図である。図1に示すように、システム100は、サーバー108、112、116、および120を収容するサーバーラック104を備える。この例では、サーバー108、112、116、および120のそれぞれには、電源Aおよび電源Bとして示されている2つの電源によって電力が供給される。より具体的には、サーバー108には、電源A 124および電源B 128によって電力が供給され、サーバー112には、電源A 132および電源B 136によって電力が供給され、サーバー116には、電源A 140および電源B 144によって電力が供給され、サーバー120には、電源A 148および電源B 152によって電力が供給される。
1つ以上の実施の形態では、システム100は、図1に示す構成要素よりも多い構成要素を備えてもよく、図1に示す構成要素よりも少ない構成要素を備えてもよい。図1に示す構成要素は、互いに近くにあってもよく、互いに離れた場所にあってもよい。図1に示す構成要素は、ソフトウェアおよび/またはハードウェアで実現される要素を含んでもよい。各構成要素は、複数のアプリケーションおよび/または複数のマシン間で分散される要素を含んでもよい。複数の構成要素を組み合わせて1つのアプリケーションおよび/またはマシンにしてもよい。1つの構成要素について説明する動作は、別の構成要素によって代わりに実行されてもよい。
いくつかの例では、サーバーラック104は、複数のサーバーが取り付けられる単なるシャーシまたはフレームである。サーバーラック104は、4つのサーバー(たとえば、サーバー108、112、116、および120)を収容していると図示されているが、サーバーラックは、任意の数のサーバー(たとえば、1、2、4、10、20、またはそれ以上)を収容するように構成されてもよい。
サーバーラック104は、サーバーが計算センターに配置および維持されることによる利便性を向上させる。たとえば、サーバーラック104により、複数のサーバーを積み重ねることが可能になるので、計算センター内のサーバーの密度を高める(たとえば、サーバー数および/または平方フィート当たりのコンピューティングサイクル数を増やす)ことができる。いくつかの例では、サーバーラック104などのサーバーラックもサーバーを編成することおよび/または物理的に操作することの利便性を改善する。たとえば、サーバーラックを利用することで、物理サーバーのアドレス指定およびラベリングの利便性が改善し、(たとえば、体系化されたラベリングによって)数百および/または数千のサーバーを有する巨大な計算センター内で特定のデバイスを容易に見つけることができるようになる。
また、サーバーが積み重ねられているにもかかわらず、運用に必要なサーバーの一部へのアクセスを維持することによって、サーバーラック104は、サーバーの利便性、メンテナンス、および動作を改善できる。たとえば、サーバーラック104は、データポートおよび電源ポートを露出させたまま、視覚的ステータスインジケータ(たとえば、電力インジケーター、稼働状態インジケーター)を見えるようにしたまま、そして冷却構造(たとえば、ファン、ヒートシンク)に廃熱を排出するのに十分に物理的ゆとりを与えたままで、積み重ねられたサーバーを固定できる。
サーバー108、112、116、および120は、通信可能に連結されたクライアントデバイスのためにデータを格納し得るおよび/または演算処理機能を実行し得るコンピューティングシステムである。サーバーとして、ファイルサーバー、ウェブサーバ、アプリケーションサーバ、データベースサーバなどが挙げられる。
サーバー112、116、および120を代表して、サーバー108が図1Bに概略的に詳細に示されている。上位レベルでは、サーバー108(および、サーバー112、116、および120)は、CPU(中央処理装置)156と、メモリ160と、サーバー制御システム164とを備える。
サーバー108のCPU156は、要求に応答して命令を実行したりデータを処理したりするように動作する集積ロジック回路(たとえば、マイクロプロセッサ)を含み得る。いくつかの例では、CPU156は、互いに協調して要求に応答して命令を実行したりデータを処理したりするように動作し得る複数の集積回路装置を含み得る。たとえば、CPU156は、集積回路装置の中でも特に、複数の集積ロジックチップ、メモリチップ(たとえば、SRAM(Static Random Access Memory)チップなどの揮発性メモリ)を実際に含み得る。CPU156の構成、構成要素、および設計は、サーバーの使用目的によって異なり得る。たとえば、ウェブサーバは、データベースサーバとは異なる性能目標に従って設計されたCPUまたはCPUチップセットを有し得る。
サーバーのメモリ160は、揮発性および/または不揮発性記憶装置を含み得る。揮発性および/または不揮発性記憶装置は、特に、フラッシュメモリ、DRAM(Dynamic Random Access Memory)素子、SRAM素子、光メモリ、磁気メモリを含む。
CPU156と同様に、メモリ160もサーバー108の機能目的に従って構成され得る。たとえば、要求データを記憶、検索、および表示するために主に機能するデータベースサーバ(たとえば、SQLサーバー)は、複数のクライアントデバイスからの複数のデータ要求を一時的に記憶し、さらに、データ記憶装置から検索された要求データを記憶するのに十分なメモリを備え得る。この例では、メモリ160は、数ギガバイトであり得る揮発性メモリと不揮発性メモリとの組合せを含み得る。
その他の例では、サーバー108のメモリ160は、サーバー自体が使用するデータを記憶してもよい。たとえば、メモリ160は、サーバー108自体の動作を管理するためのデータおよび/もしくは命令、またはサーバー108が実行するよう要求された動作において使用するためのデータおよび/もしくは命令を記憶するように構成されてもよい。たとえば、メモリ160は、PROCHOTおよび/または図3および図4の状況で後述する技術を実行するための実行可能なコードをメモリ構造に記憶してもよい。
サーバー制御システム164は、サーバー108を操作するためのデバイス、システム、および実行可能なコードを備える。図1Bに示す例示的なサーバー制御システム164は、サービスプロセッサ168と記憶装置172とを備えると示されている。サーバー制御システム164はサーバー108の動作を制御するためにサーバー108内に組み込まれたコンピューティングデバイスであるため、サーバー制御システム164は、図示の便宜上図1Bに示されていないデバイスおよびシステムを含み得る。
いくつかの例では、サーバー制御システム164は、サービス108(たとえば、CPU156)の様々な構成要素の動作温度を監視し、サーバー108の信頼性のある動作を最適化するまたは損傷を防ぐために動作状況を変更する(たとえば、CPU156のプロセッササイクル数を減少させる、冷却ファンの速度を上げる、PROCHOTを記憶および実行する)命令を記憶および実行し得る。
サーバー制御システム164は、サーバー108のその他の必要な動作機能を可能にし得、動作の中でも特に、電力供給レベルを監視すること、(たとえば、セキュリティプロトコルを使用し、インターネットプロトコルを介したセキュアな通信を容易にすることによる)サーバー108へのリモートアクセスを可能にすること、電源投入/電源切断プロトコルおよびシステムを使用することなどを可能にする。
サービスプロセッサ168として、マイクロプロセッサ、FPGA(Field Programmable Gate Array)、ASIC(特定用途向け集積回路)などの集積回路が挙げられる。
いくつかの例では、サービスプロセッサ168は、本明細書に記載の技術を実行するためにサービスプロセッサ168が選択的に使用できる複数のプロセッサおよび複数のメモリ構造を含み得る。
メモリ172(サービスプロセッサ168と通信していてもよい)は、上述した記憶装置のうちいずれを含んでもよい。これらは、SRAM、DRAM、フラッシュメモリ、磁気メモリ、光メモリ、またはその他の形態の揮発性および/もしくは不揮発性メモリを含み得る。メモリ172は、実行可能なコードおよび/またはサービスプロセッサ168によって使用されるデータを記憶し得る。
いくつかの例では、メモリ172は、下記の技術の態様に合わせて詳細に設計された別々のメモリ領域、アドレス、レジスタ、および/または素子を含み得る。
サーバー制御システム164の動作の一例では、サービスプロセッサ168は、サーバー108の性能および動作を監視する様々なシステムおよびセンサーと通信していてもよい。たとえば、サービスプロセッサ168は、サーバー108が備える温度センサーからの温度値を監視し得る。サービスプロセッサ168は、冷却ファンの速度および/または監視されている空気入力経路を通る冷却空気の流量など、アクティブな冷却システムのアクティブな動作パラメータも監視し得る。いくつかの例では、その解析を容易にするために、サービスプロセッサ168は、時間の経過に伴う温度値および冷却パラメータをさらに一時的に記憶してもよい。
サービスプロセッサ168は、メモリ172に記憶されている動作しきい値および/または動作範囲を比較し、温度値が最適化されるように冷却ファンの速度を変更する命令を送信し得る。いくつかの例では、サービスプロセッサ168は、メモリ172に記憶されているPROCHOTプロトコルを使用してCPU156の動作温度を下げてもよい。
いくつかの例では、サービスプロセッサ168またはサーバー制御システム164に対応付けられたその他の処理装置(たとえば、FPGA、ASIC)は、サーバー108に電力を提供する複数の電源の動作状況を監視し得る。たとえば、詳細については後述するが、サーバー108と通信している電源のそれぞれは、電源のそれぞれに供給される外部電力のステータス(交流電流(AC)であるか直流電流(DC)であるか)を送信し得る。サービスプロセッサ168またはサーバー制御システム164が備える同様の処理装置は、電源のそれぞれに入力される外部電力がアクティブであるか非アクティブであるかを示す信号を受信し得る。同様に、詳細については後述するが、サーバー108と通信している電源のそれぞれは、電源からサーバー108に伝送される直流電力の供給のステータスを送信し得る。サービスプロセッサ168またはサーバー制御システム164が備える同様の処理装置は、電源のそれぞれからの直流電力がアクティブであるか非アクティブであるかを示す信号を受信し得る。
また、詳細については後述するが、サービスプロセッサ168またはサーバー制御システム164が備える同様の処理装置は、メモリ172と連係して、複数の期間を測定し、電源から受信した信号が供給電力のレベルがしきい値レベルを超えているかどうかを示す各期間の割合を識別し得る。識別すると、サーバー制御システムは、CPU156にそのアクティビティを上げるか下げるかを指示することによってその電力消費を制御し得る。
図1Cを参照すると、電源124が示されている。電源124は、電源124~152の代表である。電源124は、多くの異なる種類の電源で見られる、電気エネルギーを伝達および変換するための要素を備え得る。これらの要素は、図示の便宜上、図1Cでは省略されている。
電源124(および、同様の電源128~152)は、対応するサーバー(図1Aにおいて識別される)に電力を供給する。電源124は、電力源から電力を受電し、対応するサーバーに電力を送電するための導体と電力ケーブルとを備え得る。電源124は、抵抗器、コンデンサ、およびトランスなどの電気素子も備え得る。これらの電気素子は、電力源から受電したAC電力をDC電力に変換し得る。当該DC電力は、電源から接続されたサーバーに送電される。また、これらの電気素子は、電流および電圧などの電気特性を、電力源によって用いられる値からサーバーによって用いられる値に変更し得る。
上述した電源において共通して見つけることができる要素に加えて、電源124(および、同様の電源128~152)は、電力しきい値記憶部176、電力消費監視部180、およびプロセッサ184も備える。
電力しきい値記憶部176は、上限の電力しきい値を記憶する不揮発性記憶装置を含み得る。この電力しきい値は、概して、電源124の最大定格電力供給値よりも低い。詳細については後述するが、このしきい値は、複数の電源からなるセットのうち1つの電源のアクティビティの停止に合わせてサーバーへの電力供給を最適化する、より具体的には、CPUの計算生産性を最適化するために使用され得る。
電力消費監視部180は、接続されたサーバーに供給された電力の瞬時値を記憶するための記憶装置を備え得る、および/またはそうでない場合、瞬時値を監視し得る。たとえば、電力消費監視部は、電源124によって接続されたサーバーに送電される電力のレベルを測定するように構成された1つ以上のデバイスと通信し得る。電力消費監視部180は、時間の経過に伴う電力消費データを測定し得、たとえば、電力測定値を測定時刻に対応するタイムスタンプまたはインデックス値とともに記憶する。いくつかの例では、電力消費監視部180は、電力供給値を連続して監視してもよく、定期的な間隔で監視してもよい。たとえば、電力消費監視部180は、10マイクロ秒、100マイクロ秒、500マイクロ秒、10ミリ秒、100ミリ秒という測定間隔、またはその他の都合のよい間隔にわたって電力供給値を監視してもよい。測定間隔が完了すると、電力消費監視部は、新しい測定間隔のインスタンス化内で測定処理を周期的に再スタートしてもよい。いくつかの例では、電力消費監視部180は、電力消費データをプロセッサ184に送信してもよい。
プロセッサ184として、ロジックマイクロプロセッサ、FPGA、ASICなど、上述したプロセッサが挙げられる。プロセッサ184は、電力消費監視部180からデータを受信し、受信した瞬時データを電力しきい値記憶部176に記憶されているしきい値と比較し得る。
後述する例では、電源124が送電した電力が電力しきい値記憶部176に記憶されているしきい値を超えていることを検出すると、プロセッサ184は、サーバー108に信号を送信し得る。この送信信号は、電力しきい値を超えた状態であることをサーバー108に警告し得る(本明細書において「アラート」信号と称する)。この信号は、電源124のプロセッサ184を対応するイーサネット(登録商標)ポートを経由してサーバー制御システム164と通信している状態にするイーサネットケーブルを経由して送信され得る。その他の例では、信号は、専用の通信チャネルまたは仮想通信ポートを経由して電源124のプロセッサ184からサーバー制御システム164にワイヤレスに(たとえば、Bluetooth(登録商標)またはIEEE802.11ワイヤレス通信プロトコルを介して)送信されてもよい。
いくつかの例では、プロセッサ184は、過剰な電力供給状態の間、定期的または指定の頻度でサーバー108に「アラート」信号を送信し得る。たとえば、プロセッサ184は、電力しきい値記憶部176に記憶されているしきい値を超えていると電力消費監視部180が検出した電力レベル毎に別個のアラート信号をサーバー制御システム164に送信し得る。その他の例では、プロセッサ184は、5個、10個、50個、または100個毎の電力供給値など、複数の電力供給測定値からなるサブセットを表すアラート信号をサーバー制御システム164に送信して得る。その他の例では、プロセッサ184は、電力消費監視部180によって電力供給測定値が収集されるのと同じ頻度またはそれよりも少ない頻度でサーバー制御システム164にアラート信号を送信してもよい。
特定の電源124に対応付けられたプロセッサ184は、特定の電源124に対するサーバーによる電力需要が対応付けられたしきい値を超える場合は常に、サーバー108にアラート信号を送信し得る。しかしながら、サーバーに電力提供する電源がいずれも(または、すべて)アクティブである間は、サーバー108は、アラートを受信したことに応答してCPUのアクティビティおよび電力消費を制限するような措置を講じなくてもよい。
3.サーバー制御システム
サーバー制御システムは、電源が電力提供を停止したことを示す信号と、残りの1つの電源(または、複数の電源)がしきい値レベルを超えて電力を提供していることを示すアラート信号とを受信し得る。これに応じて、後述するサーバー制御システムの実施の形態は、サーバーのCPUのアクティビティを調整し、それに応じてサーバーの電力消費を調整し得る。サーバー制御システム(後述する)によって実行される処理は、残りの電源が供給する実際の電力が電力供給しきい値を超える程度に基づいた程度までCPUの処理アクティビティを抑える。このように、サーバー制御システムは、過剰な電力供給状態が解消されるまで、CPUの処理アクティビティを可能な限りの維持する(たとえば、冗長電力源を再び使用することによって)。電力供給しきい値によって課される限界電力供給範囲が許容できるだけサーバーの電力消費が徐々に増加するよう、残りの電源に対するサーバーによる電力需要を連続した測定間隔内で再評価し得る。
本明細書に記載のサーバー制御システムの動作は、固定期間にわたって固定の電力量だけCPUの電力消費を劇的に低減する従来のPROCHOTプロトコル実行とは異なる。この劇的な低下は、PROCHOTの実行を生じさせる問題の深刻度との均衡を欠いている可能性がある。後述する技術を利用して、CPUの電力消費を下げるための電力消費指示がサーバー制御システムによってメモリレジスタに書き込まれ得る。この電力消費レベルは、連続する測定間隔にわたってメモリレジスタに再び書き込まれ、それによって電力消費が調整され、電力の可用性に基づいてCPUの性能が最大化され得る。いくつかの例では、システムは、CPUの電力消費を制御するために、電力消費指示によって決定された短期間にわたってPROCHOTを使用し得る。その他の例では、CPUの電力消費を制御するために別のプロトコルが使われてもよい。
図2は、サーバー202と、外部電力源204と、第1電源208と、第2電源220とを備える例示的なシステム200を示す図である。
サーバー202の要素は、サーバー108に関して上述した要素と同様であり、分かりやすくするために図2では省略している。
1つ以上の外部電力源204が電源208、220に電力を供給する。外部電力源204は、発電および送電系統の様々な要素をまとめて表している。たとえば、外部電力源204は、電力の点源(たとえば、発電所)であれ、分散型発電システム(たとえば、計算センターの建物の屋根にあるソーラーパネル)における電力のローカルソースであれ、発電システムを含む。また、外部電力源204は、送電線、トランス、変電所、スイッチ、および電力源から負荷(この場合、サーバー202)に電力を送電するために用いられるその他の要素を含み得る。いくつかの例では、外部電力源204は、実際には、電源208、220のそれぞれに電力を個々に提供する複数の独立した電力源204を含む。いくつかのシナリオでは、独立した電力源204のいくつかの組合せが故障する可能性があり、その結果、電源208、220のうち一方のみが影響を受ける。
電源208は、電力しきい値記憶部210と、電力消費監視部212と、プロセッサ216とを備える。電源220は、電力しきい値記憶部224と、電力消費監視部228と、プロセッサ232とを備える。電力しきい値記憶部、電力消費監視部、およびプロセッサの例を図1Cの状況で以上に提示した。これらの要素は、完全を期すため図2に含まれており、図1Cにおけるこれらの要素の上記説明は、図2にも適用可能である。
電源208、220のいずれも、外部電力源から電力を受電し、外部から供給された電力をサーバー202が使える形態に変換または転換する。たとえば、電源208、220は、(特性の中でも特に)受電した電力の電圧値および電流値を、サーバーが動作するために使用できる電圧値および電流値に変更し得る。
電源208、220のそれぞれは、サーバー202に、より具体的には、サーバー202と通信しているサーバー制御システム240に2つの信号(または、2つの副信号から構成される1つの信号)を送信する。電源208、220のそれぞれから最初に送信される信号236A、236Bは、(a)外部電力源204から電源208、220への電力、および(b)対応する電源208、220からサーバー202への電力、のうち一方または両方のステータスを示す。電源208、220のそれぞれから2番目に送信される信号238A、238Bは、電源208、220が電力しきい値記憶部210に記憶されている電力しきい値を超えるレベル(たとえば、ワットで測定される)の電力をサーバー202に提供しているかどうかを示す。いくつかの例では、電源208、220は、プロセッサ216を用いて電力消費をしきい値と比較することによって、このアラート信号238A、238Bを送信するかどうかを判断する。これに代えて、電源208、220は、供給する電力がしきい値210、224を超えると、随時、過剰な電力信号238A、238Bを送信し得る。サーバー制御システムは、アクティブな電源の数に基づいて、受信したアラートに応答して措置を講じるかどうかを判断し得る。
より具体的には、図2に示す例では、電源208からサーバー202への最初の信号は、外部電力/直流電力ステータス信号236Aとして識別される。電源220からサーバー202への信号は、外部電力/直流電力ステータス信号236Bとして識別される。この例では、信号236A、236Bの外部電力ステータス部分は、外部電力源204が電源208、220に現在電力を供給しているかどうかを示す。図示した例では、信号236A、236Bの直流電力ステータス部分は、電源208、220がそれぞれサーバー202に直流電力を提供しているかどうかを示す。図2の矢印238A、238Bは、それぞれのオプションの伝送を鎖線で示している。また、図2は、信号236A、236B、238A、238Bに加えて、電源208、220からサーバー202への電力の伝送を示すために、「電力」とラベル付けられた矢印を含んでいる。
サーバーのサーバー制御システム240は、信号236A、236B、238A、238Bを監視し、後述する複数の例のうち一部に従って応答し得る。サーバー制御システム240は、コントローラ244と、サービスプロセッサ256とを備える。
サーバー制御システム240のコントローラ244は、電力監視部248と、アラート信号継続期間レジスタ252とをさらに備える。サービスプロセッサ256は、PROCHOTプロトコルロジック260と、比較ロジック264と、電力制御ロジック270とをさらに備える。
いくつかの例では、サービスプロセッサ256のコントローラ244および要素は、マイクロプロセッサチップまたはチップセットとしてインスタンス化され得、または、FPGAなどのプログラマブル回路内でインスタンス化され得る。たとえば、コントローラ244および/またはサービスプロセッサ256は、ロジックマイクロプロセッサ、FPGA、ASIC、および/またはDRAM、SRAM、フラッシュメモリなどの記憶素子などを含み得る。
より具体的には、サーバー制御システム240の電力監視部248は、受信した電力信号236A、236B、238A、および238Bを監視する。いくつかの例では、電力監視部248は、第1に、電源208、220のうち一方がもはや電力を供給していないこと(または、信号236A、236Bのうちいずれか一方の停止)を信号236A、236Bのうち一方によって検出すると、電力制御管理処理を開始する。電源208、220のうち一方からの電力の停止を検出した後の例示的処理における2番目のステップは、過剰な電力信号もしくは「アラート」信号238Aまたは238Bによって示されるように、残りの1つのアクティブな電源208または220が電力しきい値を超過して電力を供給しているかどうかを判断することである。
この2番目のステップの先駆けとして、電力監視部248は、残りのアクティブな電源208、220のうち一方の電力しきい値記憶部210、224にある値を、アラートに関連するレベルに書き換え得る。すなわち、場合によっては、電力しきい値記憶部210、224のいずれも、電源208、220の両方が稼働しているときに使われるしきい値電力レベルを最初に記憶し得る。電源208、220のうち一方が電力提供を停止したと判断すると、電力監視部248は、最新のしきい値を、1つの残りの電源208、220の電力しきい値記憶部210、220に書き込み得る。
上述したように、アラート信号は、電源内のプロセッサが、電力消費監視部が測定するサーバーに(たとえば、ワットで)供給される電力を、電力しきい値記憶部に記憶されている電力レベルと比較することによって生成され得る。場合によっては、電源208、220の両方がサーバー202に積極的に電力を提供している場合、1つの残りのアクティブな電源208または220の電力しきい値記憶部210または224に記憶されている電力レベルの値は、電力しきい値記憶部210、224に記憶されている前回値よりも低い。
提供された電力がしきい値を超える状況の間は、サーバー制御システムにアラート信号238Aまたは238Bが(連続してまたは定期的に)送られる。いくつかの例では、サービスプロセッサ256は、アラート信号238A、238Bに応答して、壊滅的な停電を防いでもよい。たとえば、サービスプロセッサ256は、サーバー制御システム240のその他の要素とやり取りして電源208または220に対応付けられた遮断器が作動することを防ぐことにより、サーバー202が完全に停電してしまうことを防いでもよい。いくつかの例では、残りの電源208または220からの「過剰電力アラート」に対して比例応答を使用する前に、サーバー制御システム240は、オプションで、サービスプロセッサ256に、PROCHOTプロトコル260をその従来の形態(所定の固定期間にわたって所定の固定の電力低減レベル)で使用するよう指示し得る。上述したように、この従来のPROCHOTプロトコル260の適用は、CPUのアクティビティを劇的に低下させることにより、電力消費を劇的に低減する。
その他の実施の形態では、サーバー制御システム240は、CPUにサーバー202に届けられる電力に比例してそのアクティビティを抑えるように指示する異なる電力低減アルゴリズムを用いて、電力消費の低減を調整してもよい。その他の例では、システムは、PROCHOTプロトコルを適用してCPUの電力を低減するが、電力低減がサーバー202に届けられる電力に比例するよう、PROCHOTが使用されている期間を限定してもよい。使われている特定のプロトコルに関係なく、このカスタマイズされた手法により、PROCHOTプロトコルを使用することによって引き起こされるCPUの生産性の大幅な低下を回避したり抑えたりすることができるであろう。
このカスタマイズされた手法の一部は、アラート信号継続期間レジスタ252によって実現される。アラート信号継続期間レジスタ252は、期間(または、継続期間が同じ複数の連続した期間)を定めて記録した後に電力監視部248で受信したアラート信号の継続期間をこの定めた期間と比較する記憶媒体(たとえば、DRAM、フラッシュメモリ、周期的記憶メモリ構造)を含む。
サービスプロセッサ256にある比較ロジック264は、アラート信号継続期間レジスタ252に記憶されている期間を、対応する期間中のアラート信号の継続期間と比較する。よって、比較ロジック264は、アラート信号継続期間レジスタ252に記憶されている、アラート信号238Aまたは238Bがアクティブである各連続期間(「測定間隔」とも称す)の割合を判断する。システムは、この割合を、しきい値を超える電力を電源が提供する電力イベントの深刻度の代理として認識する。
サーバー制御システム240、具体的には、電力制御ロジック270は、判断したアラートがアクティブである期間の割合に基づいて、CPUのアクティビティが抑えられる程度をベースにする。具体的には、電力制御ロジック270は、CPUの単位時間当たりの処理サイクル数を減らす命令、CPUのクロック速度を遅くする命令、または、そうでない場合、過剰電力イベントの深刻度に比例してCPUが消費する電力を減らす命令を送信し得る。いくつかの例では、電力制御ロジック270は、測定間隔における判断したアラートがアクティブである時間の割合に基づく期間にわたってアクティブになるようPROCHOTプロトコル260に指示する。その他の例では、別の指示またはプロトコルを用いて、サーバー202(たとえば、CPU)の電力消費を減らしてもよい。
いくつかの例では、電力制御ロジック270は、アラートがアサートされている測定期間の割合を再計算し得る。このように、CPUのアクティビティの低下が抑えられ(すなわち、CPUのアクティビティ自体が増える)測定期間の間のアラート信号の頻度および/または継続期間が減る。すなわち、システムは、より少ないアラート信号で許容される範囲で、より少ない頻度で許容される範囲で、またはより短いアラート信号受信期間で許容される範囲でCPUのアクティビティを増やす。いくつかの実施の形態では、システムは、(従来のPROCHOTの適用によってであれ、その他の手段によってであれ)CPUの電力が最初に低減した後に(たとえば、連続する複数の測定期間において)CPUのアクティビティを徐々に増やしてもよい。後続の測定期間中のアラート信号の頻度および/または継続期間に対する変化にシステムが対応できるよう、上述した監視は継続する。
上記したように、CPUのアクティビティに対するこれらの変更は、CPUの電力消費および/または性能を制御するまたは影響を与える電力消費メモリレジスタに対応する値を書き込むことによって実現され得る。この電力消費メモリレジスタは、サーバー制御システム240(たとえば、コントローラ244、サービスプロセッサ256、電力制御ロジック270)にあってもよく、CPU自体にあってもよい。
この処理には少なくとも2つの利点がある。先ず、この技術は、サーバーが消費する電力が電力供給しきい値を超える程度に比例してCPUの電力消費を減らす。これは、電源がサーバーに供給した電力がしきい値を超える期間に基づいて電力低減が調整されることを意味する。これは、PROCHOTを適用することで生じるCPUの速度および/または生産性の劇的な低下を抑えたり、回避したりすることができる。
次に、サーバーが電力供給しきい値を超える程度は、アラート信号継続期間レジスタ252が定める単位時間(「測定間隔」)毎にシステムによって再評価される。これは、フィードバック機構を適用する。フィードバック機構によって、過剰電力イベントの間にCPUのアクティビティレベルが繰り返し(たとえば、連続する測定間隔にわたって定期的に)調整され得る。これは、予め定められた固定期間にわたってCPUのアクティビティを固定量だけ下げる従来のPROCHOTの適用とは対照的である。
1つ以上の実施の形態では、様々な実施の形態の態様がデータリポジトリに記憶され得る。データリポジトリは、データを記憶するための任意の種類の記憶部および/または装置(たとえば、ファイルシステム、データベース、テーブルのコレクション、またはその他の記憶メカニズム)である。さらには、データリポジトリは、複数の異なる記憶部および/または装置を含んでもよい。複数の異なる記憶部および/または装置は、同じ種類であってもよく、そうでなくてもよく、同じ物理的場所に位置してもよく、そうでなくてもよい。さらには、データリポジトリは、サーバー(たとえば、サーバー202)と同じコンピューティングシステム上に実装または実行されてもよい。これに代えて、またはこれに加えて、データリポジトリは、サーバー202とは別個のコンピューティングシステム上に実装または実行されてもよい。データリポジトリ104は、直接接続によって、またはネットワークを経由してサーバー202に通信可能に連結されてもよい。
情報記述システム100、200および方法300、400は、システム100、200内の任意の構成要素間で実装されてもよい。
1つ以上の実施の形態では、システム100、200は、本明細書に記載する方法300、400の動作を実行するように構成されたハードウェアおよび/またはソフトウェアを指す。
実施の形態では、システム100、200は、1つ以上のデジタルデバイス上に実装される。「デジタルデバイス」という用語は、一般に、プロセッサを備える任意のハードウェアデバイスを指す。デジタルデバイスは、アプリケーションを実行する物理デバイスまたは仮想マシンを指し得る。デジタルデバイスとして、コンピュータ、タブレット端末、ラップトップ、デスクトップ、ネットブック、サーバー、ウェブサーバ、ネットワークポリシーサーバー、プロキシサーバー、汎用機、機能が限定されたハードウェアデバイス、ハードウェアルータ、ハードウェアスイッチ、ハードウェアファイアウォール、ハードウェアファイアウォール、ハードウェアNAT(Network Address Translator)、ハードウェアロードバランサ、メインフレーム、テレビ、コンテンツ受信装置、セットトップボックス、プリンター、携帯電話、スマートフォン、Personal Digital Assistant(「PDA」)、ワイヤレス受信機および/もしくは送信機、基地局、通信管理装置、ルータ、スイッチ、コントローラ、アクセスポイント、ならびに/またはクライアントデバイスなどが挙げられる。
4.サーバー電力消費を制御するための方法
図3および図4は、複数の電源からなるセット(たとえば、2つの電源)のうち電源サブセット(たとえば、1つの電源)がサーバーへの電力供給を停止するイベントの間にCPUの性能を最適化するための例示的な動作を示す図であり、これらの動作をまとめて方法300および方法400とそれぞれ称する。
図3に示す方法300は、システムが、先ず、サーバーと、当該サーバーに接続されて当該サーバーに積極的に電力を供給している少なくとも2つの電源とを識別すること(動作304)から始まる。上記したように、本明細書に記載の技術は、任意の数の電源を含むセットに適用可能であり、当該セットのより小さなサブセットは、電力の提供を停止し得る。下記の例については、便宜上、そして説明をわかりやすくするために、2つの電源があって一方の電源が稼働を停止する状況で説明している。
上述したように、動作304は、電力が積極的に供給されていることを示す信号を(少なくとも)2つの電源の各々がサーバーに送信することによって、上述したように実行され得る。この信号は、実際には、2つの成分を含み得る。信号の第1成分は、電力源入力がアクティブ(たとえば、「外部電力OK」)であることを示し、信号の第2成分は、電源自体からサーバーへの電力がアクティブ(たとえば、「直流電力OK」)であることを示す。
いくつかの例では、電力信号ステータスデータは、特定のデバイス識別子に対応付けられ得る。たとえば、システムは、パケットのメタデータに存在する対応する識別子、または識別子を求める特定のクエリに応答して送信された識別子によってサーバーおよびその接続された電源を識別し得る。識別子として、IPアドレス、MAC(メディアアクセス制御)ID(識別子)、デバイスのシリアル番号、またはその他の一意のデバイス識別子などが挙げられる。
一例において、システムは、1つ以上のサーバーおよび電源にクエリ、ピング、または、そうでない場合、通信を実行し得る。クエリに応答して、サーバーおよび電源は、対応するデバイス識別子と電力ステータスインジケータとを含む、クエリに対する応答を送信し得る。その他の例では、サーバー自体が接続されている電源にクエリまたはピングを送信し、電源に関する識別情報を記憶してもよい。その後、サーバーは、サーバー自体の識別子を接続された電源の識別子とともに提供する通信をシステムに送信し得る。
その他の例では、施設電力システムネットワーク図は、(識別子によって)サーバー、およびその接続された電源を識別し得る。施設電力システムネットワーク図は、記憶装置に記憶され、動作304を実行するためにシステムによってアクセスされ得る。外部の直流電源のステータスを電力システムネットワーク図と対応付けて、施設全体の電力ステータスの視覚的リアルタイム表示を提示してもよい。
その後、システムは、これらの電源のうち1つの電源からの電力の停止を検出し得る(動作308)。システムは、電力ステータス信号のうち1つが「Ok」(電力の伝送を示す)から電力伝送の停止に関連するステータスインジケータに変化したことを検出し得る。いくつかの例では、電力ステータス信号は、システムによって簡単に検出されないであろう。この電力ステータス信号が不在であることは、電力伝送の停止に関係している。この特定の例は、電源自体が物理的な故障または停止した場合に生じ得る。
その他の例では、システムは、「停電」を明確に示す信号を検出することによって、これらの電源のうち1つの電源からの電力伝送が停止していることを検出し得る。その他の状況では、電源自体は、その電力提供体系において検出可能な中断に遭遇し得るが、そうでない場合、システムと動作可能に通信したままでいることができる。電源も同様に、サーバーへの電力伝送が停止していることを明確に示す機能を維持できる。
さらに別の例では、システム自体が、電源がもはやサーバーに電力を伝送していないと検出し得る。たとえば、サーバーは、1つの電源のために各々が確保および割り当てられた個々のポートを通る電力潮流を監視し得る。サーバーは、(たとえば、電力測定メーターによって)電力潮流を監視してもよく、または、単純に、(たとえば、アンプメーターによって)個々の電源ポートを通る電力の存在を監視してもよい。これらの測定技術を用いて、システム自体は、電源のうち1つ電源が電力の提供を停止したことを検出し得る。
いくつかの例では、上述したように、システムは、引き続き電力を提供する電源の電力しきい値レベルを書き換え得る(動作310)。すなわち、いくつかの例では、電力供給における電力しきい値レベルは、サーバーに接続された複数の電源のすべてが稼働している場合よりも高くてもよい。複数の電源のうち1つ(または、それ以上の)電源が非アクティブになりつつあると、この電力しきい値レベルは低下して、電源において発生している過負荷からの保護を強化し得る。
方法300を引き続き参照すると、電力伝送の停止を検出したことに応答して、システムは、残りのアクティブな電力源から消費したサーバーの電力消費率を識別する(動作312)。この電力潮流の測定は、上述したように、残りのアクティブな電力源と通信している適切に構成された電力潮流測定装置によって実行できる。電力潮流測定装置は、残りのアクティブな電力源自体に接続されてもよく、残りのアクティブな電力源からの送電線に接続されてもよく、残りのアクティブな電力源からの送電線専用の電源ポートに接続されてもよい。
システムは、残りのアクティブな電力源から潮流する電力の量を、残りのアクティブな電力源に対応付けられたしきい値電力供給値と比較する(動作316)。上述したように、この電力しきい値は、電源自体に対応付けられた記憶装置に記憶され得る。その他の例では、システム内のサーバーまたはその他の簡便な構造に対応付けられた記憶装置に電力しきい値が記憶されてもよい。
電力しきい値の値は、電源の最大電力定格、遮断器作動値、または、電源に関連するその他の同様の性能基準に関連して選択され得る。たとえば、電源の最大電力定格よりも低い値および/またはシステムと通信している遮断器の遮断器作動値よりも低い値を有するように電力しきい値を選択してもよい。一例示では、電源の定格電力が最大で800ワット(W)の電力を供給するとされた場合、電力しきい値は、700Wに設定されてもよく、600Wに設定されてもよい。
いくつかの例では、電力しきい値は、電源の数、電源の最大定格、および電源が接続されるサーバーの電力需要に関連して選択され得る。たとえば、電力しきい値は、サーバーへの電力を電源間で均等にまたは比例して分割する値に対応し得る。一例示では、サーバーが、通常、1000Wを消費し、2つの電源の各々の定格電力が最大で800Wである場合、電力しきい値を550Wに設定して2つの電源間で電力需要を均等に分散してもよい(すなわち、軽微な電力需要の変動を許容するために、しきい値毎の値が総負荷の50%よりもわずかに大きい)。
その後、システムは、動作312において識別した残りのアクティブな電源を通じてサーバーが消費する電力の量を、電力供給しきい値と比較する(動作316)。図1Cに示すように、比較は電源内のプロセッサによって実行される。これに代えて、サーバーの電源制御システムがこの比較を実行してもよい。
サーバーが消費した電力が電力供給しきい値未満である場合、システムは、サーバーにアラートを送信しない(動作320)。この例では、システムは、しきい値を基準として供給されている電力の量を引き続き監視し得る(連続してまたは定期的に)。
サーバーが消費した電力が電力供給しきい値よりも大きい場合、システムは、サーバーにアラートを送信する(動作324)。このアラート信号は、電力供給しきい値を超えたことを示す。いくつかの例では、このアラートは、すべての電源がアクティブである場合に送信されてもよい。電源のうち1つ以上が非アクティブでない限り、システムは、単純に、アラートに対して行動しない。
電力供給しきい値を超えたことを示すアラート信号を受信したことに応答して、システムは、サーバーの電力消費を低減させ得る(動作328)。いくつかの例では、システムは、CPUの生産性と入力電力量とが均衡するレベルまでサーバーのCPUのアクティビティを下げることによって、サーバーの電力消費を低減させる。これは、CPUのアクティビティおよび電力消費を固定の(通常、かなりの)量だけ電力状況の深刻度に基づかない期間にわたって低減する従来のPROCHOTの適用とは対照的である。
動作328は、サーバーの電力消費(たとえば、CPU)がしきい値を超えている単位時間の割合を判断することを含み得る(動作332)。上述したように、システムにあるメモリ構造は、時間の代理として用いられ得るクロックまたはその他の測定機構(たとえば、カウンタ、システムのクロックサイクル数)と通信し得る。メモリ構造は、クロックによって識別される連続する測定間隔の間にアラート信号ステータスを収集して記憶してもよい。サブ単位時間毎に、システムは、電源からアラート信号を受信したかどうかを判断する。
一例示では、測定間隔は、1秒であり得、測定判別は、1ミリ秒間隔であり得る。システムは、特定の1秒の測定間隔内に100ミリ秒にわたってアラート信号を受信し得る。一例において、アラート信号は、特定の1秒の測定間隔の間、連続する100ミリ秒にわたってアクティブであり得る。別の例では、アラート信号は、アラートがない期間を挟んだ複数のアラートイベントにおいて散発的にアクティブであり得、前者は、特定の1秒の測定間隔内に合計で100ミリ秒である。
とにかく、システムは、これらのデータを用いて、測定間隔(すなわち、測定単位時間)のうち10%の間にサーバーの電力消費がアクティブな電力供給しきい値を超えていたと判断する。
この判断したアラート信号がアクティブであった単位時間の割合に基づいて、システムは、サーバーの電力消費の低減値を決定する(動作336)。いくつかの実施の形態では、システムは、サーバーのCPUの電力消費の低減を具体的に判断し得る。
いくつかの例では、システムは、残りの電源の電力しきい値を超えていた時間の割合に正比例する電力の低減を判断する。前の例を引き続き参照すると、システムは、測定間隔のうち10%で電力供給しきい値を超えていた場合、10%の電力低減を適用すると判断し得る。その他の例では、電力の低減は、電力供給しきい値を超えていた測定期間の割合(たとえば、5%、20%、50%)に比例してもよい。
その後、システムは、決定した低減値に従って、電力消費を低減させる(動作340)。いくつかの例では、システムは、CPUのクロックを遅くしたり、CPUのデューティーサイクルを減らしたりすることによって、CPUのアクティビティおよび電力消費を低減させてもよい。その他の例では、システムは、マルチCPUシステムにおけるいくつかのCPUをアイドル状態にしてもよい。その他の例では、システムは、サーバーの補助機能をアイドル状態にして電力を低減してもよい。いくつかの例では、これは、CPUのアクティビティを制御するためにシステムが利用するCPUのレジスタ(または、電源制御システムのレジスタ)に命令を書き込むことによって実現され得る。
動作340~332の破線の矢印によって示されるように、これらの処理は、システムが電力需要を連続して監視し、それに応じてサーバーの電力レベルを調整するように繰り返され得る。この処理は、電源一式が再び作動されると停止し得る。いくつかの例では、アラート信号の継続期間/頻度が監視されるので、システムは、(たとえば、CPUのクロック速度またはCPUのデューティーサイクルを上げることによって)連続する測定間隔におけるシステムの電力消費を徐々に増加させてもよい。
動作328内の動作のいずれかにおいて、システムは、電力消費の劇的な低減が保証されると判断した場合、オプションで、PROCHOTを作動させてもよい。
図4に示す方法400は、より少ない電源のセットからの「過剰電力」状態を管理するための別の例示的な動作セットを提示している。方法400は、サーバーの電力消費に関するアラートを受信することから開始する(動作404)。上述したように、このアラートは、サーバーがより少ない電源のサブセットから消費する電力がしきい値を超えることを示し得る。動作404は、動作324の状況で説明した実施の形態のうち1つ以上の実施の形態と同様である。動作404のアラートは、動作304、308、および/または312の状況における上述した実施の形態のうち、任意の1つ以上の実施の形態に従って生成され得る。
その後、システムは、サーバーの電力消費がしきい値を超える単位時間の割合を判断する(動作408)。この処理は、図3で示す動作332で説明した処理と同様の処理である。
動作408で判断したこの単位時間の割合に基づいて、システムは、サーバーの中央処理装置の電力消費を減らすかどうかを判断する(動作412)。いくつかの例では、この処理は、図3に示す動作336で説明した処理と同様の処理である。
その他の例では、システムは、動作408において判断した時間の割合をしきい値と比較することによって、CPUの電力を抑えるかどうかを判断し得る。時間の割合がしきい値よりも低く、電源から消費された電力が、わずかの間、限界を超えたことを示す場合、システムは、CPUの電力消費を低減させることを控え得る(動作416)。しかしながら、時間の割合がしきい値よりも高い場合、システムは、CPUの電力消費を低減させると判断し得る。
また、いくつかの例では、システムは、下回った場合はアラートが受信されてもシステムがサーバーの電力消費を下げない、さらに低いしきい値で構成され得る。たとえば、測定期間内に受信されたアラートの頻度が少なすぎて、システムがサーバーの電力消費を低減させる理由にならないであろう。同様に、アラート期間は、あまりにも短すぎて(たとえば、10ミリ秒、100ミリ秒)、措置を講じる理由にならないであろう。しきい値(たとえば、0.5%、1%、2%)と比較した電力消費の大きさが小さすぎて、措置を講じる理由にならないであろう。
その後、システムは、サーバーのCPUの電力消費を低減させる(動作420)。上述したように、システムは、単位時間当たりに実行されるCPU処理の数を減らすことによって電力消費を低減させ得る。これは、一例において、CPUを制御するクロック速度を遅くすることによって実現され得る。その他の技術を用いてCPUの計算アクティビティを低下させてもよい。
動作420においてCPUの電力消費が減らされた後、システムは、動作400を連続する測定間隔にわたって実行することによって電源による電力消費の監視を継続する(動作424)。
たとえば、動作404で受信したアラートは、取り消されてもよく、そうでない場合、後続の測定間隔では受信されなくなってもよい(たとえば、アラートを受信してCPUのアクティビティを下げた後)。この場合、システムは、サーバーのCPU(動作416)のすべての動作を回復させてもよい。
この代わりに、動作404では、後続の測定間隔においてアラートを受信し得る。しかしながら、アラートを受信する期間の割合は、前回の測定期間で検出した期間の割合とは異なり得る(動作412)。この例では、CPUの電力消費を減らす程度は、新たに検出された測定間隔の割合に従って調整される(動作420)。
その他の例では、システムは、連続する測定間隔においてサーバーの電力消費(たとえば、CPUの電力消費)を徐々に増加させ、システムの反応を監視し得る(動作428)。このように、システムは、電力状態が許す限り、徐々にサーバーの生産性を向上させ得る。一例において、動作420における電力低減は、第1の測定間隔または第1の測定期間にわたって適用される。この期間(または、測定間隔)が経過すると、システムは、動作420において適用された電力低減量の一部分だけサーバーの電力消費を増加させる。システムは、アラートの監視を継続する(たとえば、方法400を再び適用する)。アラートを受信しなかった場合、システムは、動作420において適用された電力低減量の別の一部分だけサーバーの電力消費を増加させ得る。アラートを受信した場合、システムは、上述した方法に従って、アラートが受信されなくなるまで、またはアラートがこれ以上電力消費の低減をトリガしなくなくまでサーバーの電力消費を低減させ得る。
システムは、方法400を再び適用することによってこの電力消費を徐々に上げるまたは下げる処理を繰り返すことができ、これにより、連続する期間にわたって状況が許す限りサーバーに届けられる電力を最適化することができる。
5.例示的な実施の形態
明確にするために、詳細な例を後述する。この例を、イベントの進行を例示するための連続した図5A~図5Dの一式として提示する。後述する構成要素および/または動作は、1つの具体例として理解されるべきであり、特定の実施の形態には適用できない場合がある。したがって、後述する構成要素および/または動作が添付のクレームの範囲を限定すると解釈すべきではない。
図5Aは、サーバー500が第1電源512および第2電源516によって電力を供給される最初のシナリオを示す図である。サーバーは、CPU504と、サーバー制御システム508とを備える。CPU504およびサーバー制御508システムのいずれも、上述した機能と同様である。説明の便宜上、図5A~図5Dおよび対応する説明では、この値をCPUの電力消費として説明しているが、この状況では、サーバー500の電力消費は、1200Wである。
電源512および電源516のいずれも、「アクティブ」電源ステータスと、800Wの最大電力定格と、600Wの電力しきい値(対応する電源のメモリ構造に記憶される)とを有すると示されている。
電源512、516のそれぞれから2つの矢印が出ている。電源512、516のそれぞれから出ている「外部電力/直流電力OK」という矢印は、対応する電源が電力源から外部電力を受電し、サーバー500に直流電力を送信していることを示す。2つ目の矢印は、電源512、516によってサーバー500に提供されている電力の量を示している。
図5Aに示す例では、電源512および電源516のいずれも、サーバー500に600Wの電力を提供している。これにより、サーバー500が消費する1200Wの電力が2つの電源512、516の間で均等に分けられている。各電源からのこのレベルの電力(600W)も、各サーバーの最大電力定格である800Wを下回る。これには、電源512、516のうち一方または両方が、最大電力定格である800Wを超えずにサーバー500による電力需要の増加に対応することを可能にする効果がある。電源をこのように構成する(たとえば、複数の電源がそれぞれの対応する最大電力定格よりも下で稼働する)ことにより両方の電源が稼働中にサーバーの電力需要の増加が遮断器を作動させてしまう可能性を減らすことによって、システムの信頼性を改善させる。
図5Bは、「非アクティブな電源ステータス」というラベルで示されているように、電源516がもはや電力を提供していないシナリオを示す図である。上述したように、これは、電源516自体の故障および/または電源516に電力を提供するための電力源(図示せず)の故障によって生じる場合がある。
この電力システムの故障は、「外部電力/直流電力故障」という電力ステータス信号によって示されている。電源516からサーバーへの電力の伝送を示す以前の矢印は、ここでは、「X」によって終了させられていると示されており、電力がもはや伝送されていないことを示している。
電源512が依然として稼働しているにもかかわらず、サーバー500、より具体的には、サーバー制御システム508への電源512の信号は変化した。サーバー512が依然として「外部電力/直流電力OK」信号を送信しているにもかかわらず、送電される電力は、800Wまで増えている。上述したように、これは、600Wという電力しきい値定格を超えている。その結果、電源512もサーバーに、(図5Bの新しい対応するラベル付けられた矢印によって示されている)「過剰電力アラート」を送信する。
電源512から「過剰電力アラート」を受信したことに応答して、サーバー制御システム508は、方法300または400のうち一方を実行し、CPUにアクティビティレベルを下げるよう指示する。図示した例では、CPUの電力消費は、600Wまで減らされることによって電源512の電力しきい値を満たすようになる。電源512は、「過剰電力アラート」をこれ以上送信しない。
上述したように、サーバー制御システム508は、連続する測定間隔の間の電力状態を評価し、サーバーの電力消費を低減させるかどうか、およびどの程度低減させるかを判断する。図5Dは、サーバー制御システム508がサーバー消費をどれくらい低減させるかを判断する基準を模式的に示す図である。
図5Dは、2つのグラフを示す図である。第1グラフ(「電力消費と測定間隔との関係」)は、3つの連続する測定間隔にわたるサーバーによる電力消費を示す。電源(たとえば、電源512)に対応する電力しきい値レベルが図示されている。方法300および400の状況で上述したように、サーバーのCPU、すなわち、サーバーの電力消費は、電源からサーバーへの「アラート」信号によって示されるように、電源の電力しきい値レベルが超えている間隔の割合に従って低減される。システムによって適用される相対的な電力消費の低減の程度は、第2グラフ(「電力低減と測定間隔との関係」)に示されている。
第1グラフを参照すると、第1の測定間隔(X軸上で「1」とラベル付けられている)は、測定間隔全体を通して電力消費が電源の電力しきい値レベルを超えている状態を示す。第2グラフに示すように、システムがアラート信号を受信する第1の測定間隔の割合が高いと、第1の測定間隔の間の電力低減が比較的大きくなる。
第2の測定間隔(X軸上で「1」とラベル付けられている)の間、(「アラート無し」とラベル付けられているバーによって示されているように)第2の測定間隔の前半ではアラート信号は受信されない。アラート信号は、(「アラート」とラベル付けられている縦のバーによって示されているように)第2の測定間隔の後半で受信されている。これにより、サーバーの電力消費の抑制は低くなる(第1の測定間隔の間に適用される場合のおよそ半分)。
第3の測定間隔の間にアラートを受信しない場合、それに応じて電力低減は適用されない。
6.コンピュータネットワークおよびクラウドネットワーク
1つ以上の実施の形態では、コンピュータネットワークは、セットのノード間のコネクティビティを提供する。これらのノードは、互いに近くにあってもよく、および/または互いに遠く離れていてもよい。これらのノードは、一連のリンクによって接続されている。リンクとして、同軸ケーブル、非シールドツイストケーブル、銅ケーブル、光ファイバー、および仮想リンクなどが挙げられる。
サブセットのノードがコンピュータネットワークを実装する。このようなノードとして、スイッチ、ルータ、ファイアウォール、およびNAT(Network Address Translator)などが挙げられる。別のサブセットのノードがコンピュータネットワークを利用する。このようなノード(「ホスト」とも称する)がクライアントプロセスおよび/またはサーバープロセスを実行し得る。クライアントプロセスは、コンピューティングサービス(特定のアプリケーションの実行、および/または特定量のデータの記憶など)を要求する。サーバープロセスは、要求されたサービスを実行するおよび/または対応するデータを返すことによって応答する。
コンピュータネットワークは、物理リンクによって接続された物理ノードを含んだ物理ネットワークであり得る。物理ノードは、任意のデジタルデバイスである。物理ノードは、ハードウェアスイッチ、ハードウェアルータ、ハードウェアファイアウォール、およびハードウェアNATなど、機能が限定されたハードウェアデバイスであり得る。これに加えて、またはこの代わりに、物理ノードは、様々な仮想マシンおよび/またはそれぞれの機能を実行するアプリケーションを実行するように構成された汎用機であってもよい。物理リンクは、2つ以上の物理ノードを接続する物理媒体である。リンクとして、同軸ケーブル、非シールドツイストケーブル、銅ケーブル、および光ファイバーなどが挙げられる。
コンピュータネットワークは、オーバーレイネットワークであり得る。オーバーレイネットワークは、別のネットワーク(物理ネットワークなど)の上に実装されたロジックネットワークである。オーバーレイネットワークにある各ノードは、基礎をなすネットワークにある各ノードに対応する。よって、オーバーレイネットワークにある各ノードは、(オーバーレイノードをアドレス指定するための)オーバーレイアドレス、および(オーバーレイノードを実装するアンダーレイノードをアドレス指定するための)アンダーレイアドレスの両方に対応付けられる。オーバーレイノードは、デジタルデバイスおよび/またはソフトウェア処理(仮想マシン、アプリケーションインスタンス、またはスレッドなど)であり得る。オーバーレイノード同士を接続するリンクは、基礎をなすネットワークを通るトンネルとして実装される。トンネルの両端にあるオーバーレイノードは、その間にある基礎をなすマルチホップ経路を1つのロジックリンクとして扱う。トンネリングは、カプセル化およびカプセル解除によって実行され得る。
実施の形態では、クライアントは、コンピュータネットワークの近くにあってもよく、および/またはコンピュータネットワークから遠く離れていてもよい。クライアントは、当該コンピュータネットワークに、プライベートネットワークまたはインターネットなど、その他のコンピュータネットワーク上でアクセスできる。クライアントは、HTTP(Hypertext Transfer Protocol)などの通信プロトコルを用いてコンピュータネットワークに要求を伝送できる。要求は、クライアントインタフェース(ウェブブラウザなど)、プログラムインタフェース、またはアプリケーションプログラミングインタフェース(API)などのインタフェースを通して伝送される。
実施の形態では、コンピュータネットワークは、クライアントとネットワークリソースとの間にコネクティビティを提供する。ネットワークリソースは、サーバープロセスを実行するように構成されたハードウェアおよび/またはソフトウェアを含む。ネットワークリソースとして、プロセッサ、データ記憶装置、仮想マシン、コンテナ、および/またはソフトウェアアプリケーションなどが挙げられる。ネットワークリソースは、複数のクライアント間で共有される。クライアントは、互いに独立してコンピュータネットワークにコンピューティングサービスを要求する。ネットワークリソースは、要求および/またはクライアントにオンデマンドで動的に割り当てられる。各要求および/またはクライアントに割り当てられたネットワークリソースは、たとえば、(a)特定のクライアントが要求したコンピューティングサービス、(b)特定のテナントが要求した集約されたコンピューティングサービス、および/または(c)コンピュータネットワークが要求する集約されたコンピューティングサービスに基づいてスケールアップされてもよく、スケールダウンされてもよい。このようなコンピュータネットワークを、「クラウドネットワーク」と称する場合がある。
実施の形態では、サービスプロバイダーが、1つ以上のエンドユーザにクラウドネットワークを提供する。SaaS(Software-as-a-Service)、PaaS(Platform-as-a-Service)、およびIaaS(Software-as-a-Service)を含む様々なサービスモデルがクラウドネットワークによって実装され得るが、これらに限定されない。SaaSでは、サービスプロバイダーは、ネットワークリソース上で実行されているサービスプロバイダーのアプリケーションを利用できる機能をエンドユーザに提供する。PaaSでは、サービスプロバイダーは、ネットワークリソース上にカスタムアプリケーションを展開できる機能をエンドユーザに提供する。カスタムアプリケーションは、サービスプロバイダーがサポートするプログラミング言語、ライブラリ、サービス、およびツールを用いて作成できる。IaaSでは、サービスプロバイダーは、ネットワークリソースが提供する処理、ストレージ、ネットワーク、およびその他の基本的なコンピューティングリソースをプロビジョニングできる機能をエンドユーザに提供する。オペレーティングシステムを含む任意のアプリケーションをネットワークリソース上に展開できる。
実施の形態では、プライベートクラウド、パブリッククラウド、およびハイブリッドクラウドを含む、様々なデプロイメントモデルがコンピュータネットワークによって実装され得るが、これらに限定されない。プライベートクラウドでは、1つ以上のエンティティからなる特定のグループによって独占的に利用されるネットワークリソースがプロビジョニングされる(「エンティティ」という用語は、本明細書において使用するとき、企業、組織、個人、またはその他のエンティティを指す)。ネットワークリソースは、特定のエンティティグループの敷地の近くにあってもよく、および/または特定のエンティティグループの敷地から遠く離れていてもよい。パブリッククラウドでは、互いに独立した複数のエンティティ(「テナント」または「顧客」とも称す)のためのクラウドリソースがプロビジョニングされる。コンピュータネットワークおよびそのネットワークリソースは、それぞれ異なるテナントに対応する複数のクライアントによってアクセスされる。このようなコンピュータネットワークを、「マルチテナントコンピュータネットワーク」と称する場合がある。いくつかのテナントが同じ特定のネットワークリソースを異なる時間および/または同じ時間に利用できる。ネットワークリソースは、テナントの敷地の近くにあってもよく、および/またはテナントの敷地から遠く離れていてもよい。ハイブリッドクラウドでは、コンピュータネットワークは、プライベートクラウドとパブリッククラウドから構成される。プライベートクラウドとパブリッククラウドとのインタフェースによって、データおよびアプリケーションポータビリティが可能になる。プライベートクラウドに記憶されたデータとパブリッククラウドに記憶されたデータは、インタフェースを通して交換できる。プライベートクラウドにおいて実装されるアプリケーションと、パブリッククラウドにおいて実装されるアプリケーションは、互いに依存関係にある。このインタフェースを通して、プライベートクラウドにあるアプリケーションからパブリッククラウドにあるアプリケーションへの呼び出し(および、パブリッククラウドにあるアプリケーションからプライベートクラウドにあるアプリケーションへの呼び出し)を実行できる。
実施の形態では、マルチテナントコンピュータネットワークのテナントは、互いに独立している。たとえば、1つのテナントの事業または経営は、別のテナントの事業または経営とは別個であり得る。異なるテナントは、コンピュータネットワークに対して異なるネットワーク要件を要求する。ネットワーク要件として、処理速度、データ記憶容量、セキュリティ要件、性能要件、スループット要件、レイテンシ要件、耐障害性要件、QoS(Quality of Service)要件、テナント分離、および/または整合性などが挙げられる。同じコンピュータネットワークは、異なるテナントが要求する異なるネットワーク要件を実装する必要があるであろう。
1つ以上の実施の形態では、マルチテナントコンピュータネットワークにおいて、それぞれ異なるテナントのアプリケーションおよび/またはデータが互いに共有されないことを保証するためにテナント分離が行われる。様々なテナント分離手法を用いることができる。
実施の形態では、各テナントは、テナントIDに対応付けられる。マルチテナントコンピュータネットワークの各ネットワークリソースは、テナントIDにタグ付けされる。テナントは、当該テナントおよび特定のネットワークリソースが同じテナントIDに対応付けられている場合に限り、当該特定のネットワークリソースへのアクセスが許可される。
実施の形態では、各テナントは、テナントIDに対応付けられる。コンピュータネットワークによって実装される各アプリケーションは、テナントIDにタグ付けされる。これに加えて、またはこの代わりに、コンピュータネットワークによって記憶されている各データ構造および/またはデータセットがテナントIDにタグ付けされる。テナントは、当該テナントおよび特定のアプリケーション、データ構造、ならびに/またはデータセットが同じテナントIDに対応付けられている場合に限り、当該特定のアプリケーション、データ構造、ならびに/またはデータセットへのアクセスが許可される。
例として、マルチテナントコンピュータネットワークによって実装される各データベースをテナントIDにタグ付けできる。対応するテナントIDに対応付けられたテナントのみが特定のデータベースのデータにアクセスできる。別の例として、マルチテナントコンピュータネットワークによって実装されるデータベースの各エントリがテナントIDにタグ付けされてもよい。対応するテナントIDに対応付けられたテナントのみが特定のエントリのデータにアクセスできる。しかしながら、複数のテナント間でデータベースを共有できる。
実施の形態では、サブスクリプション一覧は、どのテナントがどのアプリケーションへのアクセスを許可されているかを示す。アプリケーション毎に、アプリケーションへのアクセスを許可されているテナントのテナントIDの一覧が記憶されている。テナントは、テナントのテナントIDが特定のアプリケーションに対応するサブスクリプション一覧に含まれている場合に限り、当該特定のアプリケーションへのアクセスが許可される。
実施の形態では、それぞれ異なるテナントに対応するネットワークリソース(デジタルデバイス、仮想マシン、アプリケーションインスタンス、およびスレッドなど)は、マルチテナントコンピュータネットワークが保持するテナント固有のオーバーレイネットワークから切り離されている。例として、テナントオーバーレイネットワークにある任意のソースデバイスからのパケットは、同じテナントオーバーレイネットワーク内にあるその他のデバイスにしか送信できない。カプセル化されたトンネルを使用して、テナントオーバーレイネットワーク上のソースデバイスからその他のテナントオーバーレイネットワークにあるデバイスへの送信をすべて禁止する。具体的には、ソースデバイスから受信したパケットは、外側パケット内にカプセル化される。外側パケットは、第1のカプセル化されたトンネルのエンドポイント(テナントオーバーレイネットワークにあるソースデバイスと通信している)から第2のカプセル化されたトンネルのエンドポイント(テナントオーバーレイネットワークにある宛先デバイスと通信している)に送信される。第2のカプセル化されたトンネルのエンドポイントは、外側パケットのカプセル化を解除し、ソースデバイスが送信した元のパケットを取得する。元のパケットは、第2のカプセル化されたトンネルのエンドポイントから同じ特定のオーバーレイネットワークにある宛先デバイスに送信される。
7.その他;拡張
実施の形態は、ハードウェアプロセッサを含む1つ以上のデバイスを有する、本明細書に記載の動作および/または添付のクレームに記載の動作を実行するように構成されたシステムを対象とする。
実施の形態では、非一時的なコンピュータ読み取り可能な記憶媒体は、命令を含む。この命令は、1つ以上のハードウェアプロセッサによって実行されると、本明細書に記載の動作および/または添付のクレームに記載の動作を実行させる。
1つ以上の実施の形態に従って、本明細書に記載の特徴および機能の任意の組合せを用いることができる。前述の明細書では、実施態様によって異なり得る多くの具体的な詳細を例に実施の形態について説明した。したがって、明細書および添付の図面は、限定ではなく例示であるとみなされるべきである。本発明の範囲の唯一かつ排他的な指標、および出願人が本発明の範囲であると意図するものは、本明細書に由来する一連のクレームが公布する特定の形式のこれらのクレームの文字通りの同等な範囲であり、今後の補正を含む。
8.ハードウェア概要
一実施の形態によると、本明細書に記載の技術は、1つ以上の特定用途向けのコンピューティングデバイスによって実現される。複数の特定用途向けのコンピューティングデバイスは、当該技術を実行するように配線で組み込まれてもよく、または、1つ以上のASIC(Application-Specific Integrated Circuit)、1つ以上のFPGA(Field Programmable Gate Array)、または1つ以上のNPU(Network Processing Unit)など、当該技術を実行するように恒常的にプログラムされたデジタル電子デバイスを含んでもよく、または、ファームウェア、メモリ、その他のストレージ、もしくはそれらの組合せに含まれるプログラム命令に従って当該技術を実行するようプログラムされた1つ以上の汎用ハードウェアプロセッサを含んでもよい。また、このような特定用途向けのコンピューティングデバイスは、カスタムハードワイヤードロジック、ASIC、FPGA、またはNPUをカスタムプログラミングと組み合わせて当該技術を実現してもよい。特定用途向けのコンピューティングデバイスは、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルドデバイス、ネットワーク装置、または、ハードワイヤードロジックおよび/またはプログラムロジックを組み込んで当該技術を実装するその他のデバイスであってもよい。
たとえば、図6は、本発明の実施の形態が実装され得るコンピュータシステム600を示すブロック図である。コンピュータシステム600は、バス602または情報を通信するためのその他の通信メカニズムと、バス602に連結された、情報を処理するためのハードウェアプロセッサ604とを備える。ハードウェアプロセッサ604は、たとえば、汎用マイクロプロセッサであってもよい。
また、コンピュータシステム600は、RAM(Random Access Memory)またはその他の動的記憶装置など、バス602に連結された、情報とプロセッサ604によって実行される命令とを記憶するための主メモリ606を備える。また、主メモリ606は、プロセッサ604によって実行される命令の実行中に一時的な変数またはその他の中間情報を記憶するために使われてもよい。このような命令は、プロセッサ604がアクセス可能な非一時的な記憶媒体に記憶されると、コンピュータシステム600を、命令で指定されている動作を実行するようにカスタマイズされた特定用途向けマシンにする。
コンピュータシステム600は、バス602に連結された、プロセッサ604のために静的情報および命令を記憶するためのROM(Read Only Memory)608またはその他の静的記憶装置をさらに備える。情報および命令を記憶するための磁気ディスクまたは光ディスクなどの記憶装置610が設けられ、バス602に連結される。
コンピュータシステム600は、コンピュータのユーザに情報を表示するためのCRT(ブラウン管)などのディスプレイ612にバス602を介して連結され得る。情報およびコマンド選択をプロセッサ604に伝送するための、英数字およびその他のキーを含む入力装置614がバス602に連結される。別の種類のユーザ入力装置は、マウス、トラックボール、またはカーソル方向キーなど、方向情報およびコマンド選択をプロセッサ604に伝送するための、そしてディスプレイ612上でのカーソルの動きを制御するためのカーソルコントローラ616である。この入力装置は、通常、第1の軸(たとえば、X)および第2の軸(たとえば、Y)という2つの軸において2つの自由度を有し、平面においてデバイスが位置を指定できるようにする。
コンピュータシステム600は、カスタマイズされたハードワイヤードロジック、1つ以上のASICもしくは1つ以上のFPGA、ファームウェア、および/またはプログラムロジックを用いて、本明細書に記載の技術を実装できる。カスタマイズされたハードワイヤードロジック、1つ以上のASICもしくは1つ以上のFPGA、ファームウェア、および/またはプログラムロジックは、コンピュータシステムとの組み合わせでコンピュータシステム600を特定用途向けマシンにさせる、または特定用途向けマシンになるようプログラムする。一実施の形態によると、プロセッサ604が主メモリ606に含まれる1つ以上の命令の1つ以上のシーケンスを実行したことに応答して、本明細書に記載の技術がコンピュータシステム600によって実行される。このような命令は、記憶装置610など、別の記憶媒体から主メモリ606に読み込まれてもよい。主メモリ606に含まれている一連の命令の実行により、プロセッサ604に本明細書に記載の処理ステップを実行させる。別の実施の形態では、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて、配線で組み込まれた回路が用いられてもよい。
「記憶媒体」という用語は、本明細書において使用するとき、マシンに特定のやり方で動作させるデータおよび/または命令を記憶する任意の非一時的な媒体を指す。このような記憶媒体は、不揮発性媒体および/または揮発性媒体から構成できる。不揮発性媒体は、たとえば、記憶装置610など、光ディスクまたは磁気ディスクを含む。揮発性媒体は、主メモリ606など、動的メモリを含む。記憶媒体の共通の形式は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、またはその他の磁気データ記憶媒体、CD-ROM、その他の光学データ記憶媒体、パターンの穴を有する任意の物理媒体、RAM、PROM、およびEPROM、FLASH-EPROM、NVRAM、その他のメモリチップもしくはカートリッジ、CAM(連想メモリ)、およびTCAM(三値連想メモリ)を含む。
記憶媒体は、伝送媒体とは異なるが、伝送媒体と連動して使用できる。伝送媒体は、記憶媒体間の情報の転送に加わる。たとえば、伝送媒体は、バス602を構成する電線を含む、同軸ケーブル、銅線、および光ファイバーを含む。伝送媒体は、無線データ通信および赤外線データ通信の間に生成される音波または光波など、音波または光波の形を取ることができる。
実行するために1つ以上の命令の1つ以上のシーケンスをプロセッサ604に運ぶことに、様々な形の媒体が関わってもよい。たとえば、命令は、最初に、リモートコンピュータの磁気ディスクまたはソリッドステートドライブ上で運ばれ得る。リモートコンピュータがその動的メモリに命令をロードして、モデムを用いた電話回線で命令を送信し得る。コンピュータシステム600の近くにあるモデムが電話回線上でこのデータを受信し、赤外線送信機を用いてこのデータを赤外線信号に変換し得る。赤外線信号で運ばれてきたこのデータを赤外線検出器が受信し、適切な回路がデータをバス602上に載せ得る。バス602は、このデータを主メモリ606に運ぶ。主メモリ606からは、プロセッサ604が命令を取得して実行する。主メモリ606が受信した命令は、オプションで、プロセッサ604によって実行される前または後のいずれかで、記憶装置610上に記憶され得る。
また、コンピュータシステム600は、バス602に連結された通信インタフェース618を備え得る。通信インタフェース618は、ローカルネットワーク622に接続されたネットワークリンク620に連結する双方向のデータ通信を提供する。たとえば、通信インタフェース618は、ISDN(Integrated Services Digital Network)カードであってもよく、ケーブルモデムであってもよく、衛星モデムであってもよく、対応する種類の電話回線へのデータ通信接続を提供するためのモデムであってもよい。別の例として、通信インタフェース618は、互換性のあるLANへのデータ通信接続を提供するLAN(ローカルエリアネットワーク)カードであってもよい。また、ワイヤレスリンクが実装されてもよい。任意のこのような実施態様では、通信インタフェース618は、様々な種類の情報を表すデジタルデータストリームを運ぶ電気信号、電磁信号、または光信号を送受信する。
ネットワークリンク620は、通常、その他のデータ装置に1つ以上のネットワークを通してデータ通信を提供する。たとえば、ネットワークリンク620は、ISP(インターネットサービスプロバイダー)626によって操作されるデータ機器、またはホストコンピュータ624に、ローカルネットワーク622を通る接続を提供し得る。次に、ISP626は、現在では一般的に「インターネット」と呼ばれているワールドワイドパケットデータ通信ネットワーク628を通してデータ通信サービスを提供する。ローカルネットワーク622およびインターネット628のいずれも、デジタルデータストリームを運ぶ電気信号、電磁信号、または光信号を使用する。コンピュータシステム600との間でデジタルデータを運ぶ、様々なネットワークを通る信号、ネットワークリンク620上の信号、および通信インタフェース618を通る信号は、伝送媒体の例示的な形である。
コンピュータシステム600は、ネットワーク(複数可)、ネットワークリンク620、および通信インタフェース618と通してメッセージを送信したり、プログラムコードを含むデータを受信したりすることができる。インターネットの例では、サーバー630は、インターネット628、ISP626、ローカルネットワーク622、および通信インタフェース618を通じてアプリケーションプログラムの要求されたコードを送信し得る。
受信されたコードは、受信されると、および/または記憶装置610またはその他の不揮発性ストレージに記憶されると、プロセッサ604によって実行され得る。
前述の明細書では、実施態様によって異なり得る多くの具体的な詳細を例に本発明の実施の形態について説明した。したがって、明細書および添付の図面は、限定ではなく例示であるとみなされるべきである。本発明の範囲の唯一かつ排他的な指標、および出願人が本発明の範囲であると意図するものは、本明細書に由来する一連のクレームが公布する特定の形式のこれらのクレームの文字通りの同等な範囲であり、今後の補正を含む。