JP2019518260A - メモリ・プール・アーキテクチャ用のマルチテナント・メモリ・サービスのための方法、装置、コンピュータ・プログラム製品、データセンタ・ファシリティ - Google Patents

メモリ・プール・アーキテクチャ用のマルチテナント・メモリ・サービスのための方法、装置、コンピュータ・プログラム製品、データセンタ・ファシリティ Download PDF

Info

Publication number
JP2019518260A
JP2019518260A JP2018548198A JP2018548198A JP2019518260A JP 2019518260 A JP2019518260 A JP 2019518260A JP 2018548198 A JP2018548198 A JP 2018548198A JP 2018548198 A JP2018548198 A JP 2018548198A JP 2019518260 A JP2019518260 A JP 2019518260A
Authority
JP
Japan
Prior art keywords
data
memory
tenant
computer program
data block
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.)
Granted
Application number
JP2018548198A
Other languages
English (en)
Other versions
JP6963558B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2019518260A publication Critical patent/JP2019518260A/ja
Application granted granted Critical
Publication of JP6963558B2 publication Critical patent/JP6963558B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】データセンタ運用環境内のデータ処理システムを提供する。【解決手段】メモリ管理サービスが、非集約型計算環境内のメモリ・システム全体のうちの構成可能な部分を占める。このサービスは、システムがアクセスできる実メモリのプールに対する最適化されたデータ編成能力を提供する。このサービスは、さまざまな種類のデータ・ストアを、データ構造レベルなどで、ハードウェア内で実装できるようにする。メモリ・プール全体で、高性能で再利用可能なデータ構造の実装を作成および管理し、その後、データ編成をいつ使用するべきかを決定するために、分析(例えば、マルチテナントの類似性および重複の検出)を使用して、ストレージ容量の節約が可能になる。このサービスは、データの使用パターンおよび分散パターンを前提として、メモリを、より効率的であることがある異なるデータ構造に再編成してもよい。また、このサービスは、有利なことに、自動化されたバックアップを効率的に管理する。【選択図】図2

Description

本開示は、データセンタ運用環境内のデータ処理システムに一般に関する。
よく知られた情報技術(IT:information technology)配信モデルは、クラウド・コンピューティングである。クラウド・コンピューティングによって、共有されたリソース、ソフトウェア、および情報が、インターネットを経由してオンデマンドでコンピュータおよびその他のデバイスに提供される。クラウド・コンピューティングは、ITのコストおよび複雑性を大幅に低減しながら、ワークロード最適化およびサービス配信を改善する。このアプローチでは、アプリケーション・インスタンスがホストされ、例えばHTTP経由で従来のWebブラウザを介して、アクセス可能なインターネットベースのリソースから利用可能になる。クラウドの計算リソースは、通常は仮想化アーキテクチャを使用して、1つまたは複数のネットワーク・アプリケーションを実行する大規模なサーバ・ファームに収容されることが多い。仮想化アーキテクチャでは、アプリケーションは、データセンタ・ファシリティ内の物理サーバにマッピングされた仮想サーバまたはいわゆる「仮想マシン」(VM:virtual machine)内で実行される。
データセンタ自体の内部では、データセンタのネットワークが、通常は、電気的スイッチの複数の層(つまり、アクセス層、集約層、およびコア層)を含んでいる階層設計に従って設計される。データセンタのフロント・エンドでは、コンテンツおよび負荷バランシング・スイッチ(content and load balancing switches)がゲートウェイ・ルータを介してインターネットに接続され、一方、バック・エンドでは、それらがコア・スイッチにリンクされる。通常、コア・スイッチは集約スイッチにリンクされ、集約スイッチはラック・スイッチに接続される。各ラック・スイッチは、ラック内のサーバに接続される。データセンタのネットワーク内のスイッチは、通常は電子スイッチ・ファブリック(electronic switch fabric)上で動作し、それらのスイッチ間のリンクは、銅ケーブルまたは光ファイバのいずれかである。外部ネットワークから要求が来た場合、その要求は、最初に負荷バランシングおよびコンテンツ・スイッチ(load balancing and content switches)に到達し、負荷バランシングおよびコンテンツ・スイッチは、要求を適切なサーバにルーティングする。要求を満たすために、サーバは、同じラックまたは異なるラック内の他のサーバと協調することができる。例えば、アプリケーション・サーバは、データベース・サーバと協調して、要求を処理することができる。要求の完了後に、応答がゲートウェイ・ルータを介して外部ネットワークに送信される。
説明したような従来のデータセンタ・アーキテクチャは、スケーラビリティ、フォールト・トレランス、およびエネルギー効率を含むが、これらに限定されない、多くの課題に直面している。これらの課題のため、多くのデータセンタ・アーキテクチャは、クラウド・コンピューティングの需要の増大に対処することに苦労している。さらに、サーバ(特に、サーバのメモリ)が独立して管理されるため、これらのアーキテクチャは、メモリ管理、データの重複、および非効率的なメモリ割り当てに関して、非常に非効率的である。
拡張メモリとして機能するためにデータセンタ内の他の処理リソースによってアクセスおよび使用され得る「メモリ・プール」を提供することが、従来技術において知られている。これらのアプローチは、コピー方式を容易にするように設計される。そのよう方式では、メモリのチャンクを、拡張メモリから、処理ブレード上のプロセッサに直接配置されたか、または取り付けられたより小さいメモリにコピーまたはページングする。しかし、この直接的な固定されたメモリは、ページング・メカニズムに関連する遅延が一部のコードを妨げることに起因する性能上の問題を引き起こすため、異なるインスタンスのメモリの内容を全体として切り替えることを妨げる。
"Draft NIST Working Definition of Cloud Computing" by Peter Mell and Tim Grance, dated October 7, 2009
これらおよびその他の従来技術のアプローチに関連する非効率性に対処するように、メモリ・プールを実装および管理することが望ましい。従って、発明が解決しようとする課題はメモリ・プール・アーキテクチャ用のマルチテナント・メモリ・サービスを提供することである。
「非集約型サーバ」アーキテクチャは、メモリ管理サービスを提供することによって改良される。非集約型サーバのアプローチでは、データセンタ内の類似する種類のサーバ・リソースが、計算プール、メモリ・プール、およびストレージ・プールなどの各プールに集約される。その後、テナントのワークロードの要件を満たすように、プールから適切な量のリソースを割り当てることによって、サーバが動的に構築される。非集約型サーバのアプローチは、異なるテナントおよび処理コンポーネントの間でメモリ・コンポーネントを使用、再利用、または共有することができるため、従来のデータセンタ・アーキテクチャと比較して、リソース利用率を向上させる。本開示によれば、メモリが他のシステム・コンポーネントとは独立して管理されるため、独自の管理能力を作り出す機会を提供し、大きな恩恵をもたらすことができる。
本開示の第1の態様によれば、マルチテナント計算環境(multi-tenant compute environment)内のメモリを管理するための方法が提供される。この方法は、メモリ・リソース・プールを提供することから開始する。特定のワークロードに関して、メモリ・リソースがメモリ・リソース・プールからプロセッサのセットに割り当てられる。特定のワークロードのデータは、ハッシュ・テーブル、リンク・リストなどのデータ構造に従って、割り当てられたメモリ・リソース内で編成される。ワークロードが処理されるときに、この方法は、特定のワークロードのデータ構造内のデータの再編成が、データ構造によって使用されるメモリの性能を向上させるかどうか、またはそのようなメモリを節約するかどうかを(例えば、分析に基づいて)決定する。再編成がメモリの性能を向上させるということ、またはメモリを節約するということを決定したときに、特定のメモリ管理動作が実行されて、データを管理する。
本開示の第2の態様によれば、計算環境内のリソースを割り当てるための装置が説明される。この装置は、1つまたは複数のハードウェア・プロセッサのセットと、前述したステップなどの一連の処理を実行するためにハードウェア・プロセッサによって実行されるコンピュータ・プログラム命令を保持するコンピュータ・メモリとを備える。
本開示の第3の態様によれば、計算環境内のリソースを割り当てるためにデータ処理システムにおいて使用される、非一時的コンピュータ可読媒体内のコンピュータ・プログラム製品が説明される。コンピュータ・プログラム製品は、データ処理システムにおいて実行され、前述のステップなどの処理を実行するように機能するコンピュータ・プログラム命令を保持する。
本開示の第4の態様によれば、データセンタ・ファシリティが説明される。データセンタは、メモリ・プール、光相互接続、およびメモリ・マネージャを備えている。メモリ管理は、ハードウェア要素内で実行され、メモリ・リソース・プールから複数のテナントのワークロード用のプロセッサのセットへの、メモリ・リソースの割り当てを管理するように機能する。このマネージャは、データ構造に従って特定のテナントのワークロードのデータを編成することと、データ構造内のデータを選択的に再編成して、データ構造の性能を向上させ、特定のテナントのワークロードにサービスを提供するために必要なメモリを削減することとを実行するようにも機能する。
本開示のメモリ・サービスは、好ましくは、メモリ・システム全体のうちの構成可能な部分を占め、メモリ・システムの残りの部分を、標準的な高性能の読み込み/格納処理(load-store operations)のために空いたままにする。このサービスは、システムがすでにアクセスできる実メモリのプールに対する最適化されたデータ編成能力を提供する。この目的で、このメモリ・サービスは、データ構造レベルなどで、ハードウェア内で特定の種類のデータ・ストアを実装する能力を提供する。一実施形態では、このメモリ・サービスは、メモリ・プール全体での高性能で再利用可能なデータ構造の実装の作成および管理を可能にすることによって、ならびにデータの編成を実行する価値があるかどうか、およびいつ実行するかを決定するために、さまざまな分析(例えば、マルチテナントの類似性、重複の検出など)を使用する能力によって、データ構造の性能管理およびストレージ容量の節約を行う。したがって、このサービスは、好ましくは、データ構造内の類似性および重複を(ワークロード間でも)検出することによって、容量の必要性を利用して削減し、メモリ空間を節約する。望ましい場合、このサービスは、データ構造の性能を継続的に改善するために、例えば監視されているデータ使用パターンまたはデータ分散に基づいて、データ構造自体を変更または調整してもよい。さらに別の特徴は、好ましくは、データのコピーがハードウェア・プロセッサを通ることを必要とせずに、自動化されたバックアップを提供できることである。
以上では、開示される主題のより関連する特徴の一部について概説した。これらの特徴は、単に例であると解釈されるべきである。説明されるように、開示された主題を異なる方法で適用することによって、または主題を変更することによって、多くのその他の有益な結果を実現できる。
主題および主題の利点をさらに完全に理解するために、ここで、添付の図面と併せて行われる以下の説明を参照する。
本開示の例示の態様が実装されてよい計算システム環境を示す例示のブロック図である。 例示的な実施形態の態様が実装されてよい、光学的に接続されたメモリ・システムのハードウェア構造の例示のブロック図である。 図2の光学的に接続されたメモリ・システム内のプロセッサ設計のハードウェア構造を示すブロック図である。 プロセッサでメモリにアクセスするためのハードウェア構造を示すブロック図である。 本開示に記載された非集約型計算システムを示す図である。 本開示の手法が実装されてよい代替のデータセンタ・アーキテクチャを示す図である。 本開示の第1の実施形態に記載された、メモリ管理サービスを含むように拡張された図6のデータセンタを示す図である。 本開示の第2の実施形態に記載されたデータセンタを示す図である。 メモリ空間を節約するためにデータ構造内の類似性および重複の検出を使用する容量節約ルーチンのプロセス・フローを示す図である。
本開示の手法は、好ましくは、「非集約型」計算システム環境の文脈において実装され、「非集約型サーバ」(本明細書では、しばしば「サーバ・エンティティ」と呼ばれる)は、共有サーバ・リソース・プール(つまり、計算プール、メモリ・プール、アクセラレータ(例えば、GPUアクセラレータ、ネットワーク・アクセラレータなど)プール、ストレージ・プールなどのうちの1つまたは複数)から選択された(または割り当てられた)サーバ・リソースで構成されるか、そのようなサーバ・リソースを構成する。名前が示すように、「計算」プールは通常、物理プロセッサ(CPUなど)を構成し、「メモリ」プールは通常、物理メモリ・デバイス(デュアル・インライン・メモリ・モジュール(DIMM:dual-inline-memory modules)など)を構成する、などとなっている。特定の共有プールは、好ましくは、特定のリソース・タイプのみを含むが、特定のリソース・プールは、1つまたは複数のリソース・サブタイプで構成されてよい。一般的なリソースが収集されるか、集約されるか、またはその他の任意の適切な方法で結合されてよいため、「プール」という概念は、制限することを意図していない。さらに「プール」は、一般的なタイプまたはサブタイプを持つリソースの専用のセットであるか、またはそのようなリソースの何らかの一時的な集合であってよい。好ましくは、特定のサーバ・エンティティは、サーバ・リソース・プールのうちの1つまたは複数からのサーバ・リソースを備える。
好ましい実施形態では、下で説明されるように、本開示の内容が実践される非集約型計算システムは、メモリの(電気相互接続ではなく)光相互接続を利用するが、これに限定されない。
通常、共有リソース・プールは、特定のデータセンタの物理的制約の範囲内で利用可能であるが、同様に、これに限定されない。したがって、共有リソース・プール自体が、物理データセンタ間で共有されてよい。さらに、特定のサーバ・エンティティが各サーバ・プールからのリソースで構成される必要はない。
光学的に接続されたスイッチング・メモリ・アーキテクチャ(switching optically-connected memory architecture)
背景の目的で、ただし限定することを目的とせず、以下では、本開示の手法(下で説明される)が実践されてよい代表的なコンピュータ環境について説明する。
ここで図1を参照すると、本開示の非集約型計算システムが実装されてよい計算環境の例示のアーキテクチャ10が示されている。コンピュータ・システム10は、通信ポート18およびメモリ・デバイス16に接続された中央処理装置(CPU:central processing unit)を含んでいる。通信ポート18は、通信ネットワーク20と通信する。通信ネットワーク20およびストレージ・ネットワークは、サーバ(ホスト)24および22、ならびにストレージ・システム14を含んでよいストレージ・システムと通信するように構成されてよい。ストレージ・システムは、ハード・ディスク・ドライブ(HDD:hard disk drive)デバイス、半導体デバイス(SSD:solid-state device)などを含んでよく、新磁気ディスク制御機構(RAID:redundant array of independent disks)で構成されてよい。下で説明されるような処理は、システム10内または他の場所にあるストレージ・デバイス14上で実行されてよく、他のCPUデバイス12から独立して、または他のCPUデバイス12と連動して、あるいはその両方で動作する複数のメモリ・デバイス16を含んでよい。メモリ・デバイス16は、電子的消去可能プログラマブル読み取り専用メモリ(EEPROM:electronically erasable programmable read only memory)などのメモリまたは関連するデバイスのホストを含んでよい。メモリ・デバイス16およびストレージ・デバイス14は、信号伝達媒体を介してCPU12に接続される。加えて、CPU12は、通信ポート18を介して通信ネットワーク20に接続されて、複数のその他のホスト・コンピュータ・システム(computer host systems)24および22に接続されている。さらに、メモリ・デバイス16およびCPU12は、計算システム10の各コンポーネントに埋め込まれて含まれてよい。各ストレージ・システムは、分離した、または個別の、あるいはその両方のメモリ・デバイス16およびCPU12を含んでもよく、その場合、メモリ・デバイス16およびCPU12は、分離したメモリ・デバイス16またはCPU12あるいはその両方と連動して、あるいは分離したメモリ・デバイス16またはCPU12あるいはその両方として動作する。
図2は、コンピュータ・システム内で光学的に接続されたメモリ・システムのハードウェア構造を示している例示のブロック図200である。光相互接続ファブリック(optical interconnection fabric)204を介したCPU218からのメモリ214の分離は、高帯域幅遠距離製品(high bandwidth distance product)である光リンク204によって実現可能である。そのような光学的に接続されたメモリ(OCM:Optically-Connected Memory)システム200では、CPU218およびメモリ214は、光リンクおよび少なくとも1つのスイッチング・ファブリック204を介して接続された別々のラック202および208に編成される。メモリ・ラック206内には、メモリ・ブレード208が配置され、他のメモリ・ブレードおよびプロセッサ(CPU)ラック202に通信可能に結合される。各メモリ・ブレード208は複数のメモリ・デバイス214、エージェント212、およびメモリ・コントローラ210を収容する。CPUラック202はプロセッサ・ブレード216を含み、各プロセッサ・ブレード216は他のプロセッサ・ブレード216およびメモリ・ラック206に通信可能に結合される。プロセッサ・ブレード216はプロセッサ218を含み、各プロセッサ218はローカル・メモリ(図示せず)を含んでいる。プロセッサ・ラック216内のプロセッサ218(および各物理計算ノード)は、既知の高速相互接続手段(図示せず)によってローカルに接続され、この高速相互接続手段は、プロセッサ・ブレード216内のプロセッサ218の物理計算ノード間で何らかのトポロジによって直接接続されたネットワーク、またはキャッシュ・コヒーレント対称型マルチプロセッサ(SMP:symmetric multiprocessor)ファブリック(cache coherent symmetric multiprocessor (SMP) fabric)を介してメモリを通るスイッチ、あるいはこれらの組み合わせであることができる。プロセッサ218、プロセッサ・ブレード216、メモリ214、およびメモリ・ブレード208はそれぞれ、複数の光外部リンクを共有する。これらの外部リンクは、超高帯域幅での光スイッチング・ファブリック内のポイントツーポイント接続を最適化するように作られている。この最適化は、そのような高帯域幅を容易にするために使用される物理的実装であるか、または選択されたプロトコルであってよく、好ましくは、1つの物理リンク内、またはいくつかの物理リンクでできた1つの高帯域幅物理リンクのように見える複数の物理リンク内のメモリ・スイッチングをサポートすることができる。これらの外部リンクは、通常、そのデータまたはコンテンツを認識しない少なくとも1つの光スイッチ204を介して回路スイッチングされるので、超軽量の通信プロトコルを使用するべきである。
これらの外部リンクの物理的特性は、WDM(波長分割マルチプレクサ:wavelength division multiplexer)内での複数の光波長の使用を必要とすることがあり、それらの光波長は、1つのファイバまたは1つの外部リンクにすべて結合されるが、両端では分離可能である。ミラーに基づく微小電気機械システム「MEMS」(micro electro mechanical system)光回路スイッチ「OCS」(optical circuit switch)は、波長の数、プロトコル、および信号伝達速度にかかわらず、光学的領域において、それらの外部リンク内で光線を偏向させる。好ましくは、示された実施形態において、これらの外部リンクは、メモリ・ブレードおよびプロセッサ・ブレードすべてに共通している。
好ましいアーキテクチャでは、少なくとも1つの光回路スイッチが光外部リンク間で共有される。また、複数の独立した回路が、光回路スイッチを共有しているプロセッサとメモリ・ブレードの間で確立されてよい。これらの外部リンクは、超高帯域幅でのポイントツーポイント接続を最適化するように作られている。この最適化は、そのような高帯域幅を容易にするために選択されたプロトコルにおいて使用される物理的実装であってよく、1つの物理リンク内、またはいくつかの物理リンクでできた1つの高帯域幅物理リンクのように見える複数の物理リンク内の複数のストリームの集約をサポートすることができる。これらの外部リンクは、そのプロトコル、データ、またはコンテンツを認識しないすべての光スイッチを介して回路スイッチングされるので、超軽量の通信プロトコルが使用される。さらに、これらの外部リンクの物理的特性は、WDM(波長分割マルチプレクサ)内での複数の光波長の使用を必要とすることがあり、それらの光波長は、1つのファイバまたは1つの外部リンクにすべて結合されるが、両端では分離可能である。ミラーに基づく微小電気機械システム「MEMS」(micro electro mechanical system)光回路スイッチ「OCS」(optical circuit switch)は、波長の数、プロトコル、および信号伝達速度にかかわらず、光学的領域において、それらの外部リンク内で光線を偏向させる。これらの外部リンクは、すべてのメモリ・ブレード/プロセッサ・ブレードがこれらの外部リンクのうちの1つまたはすべての上で、直接的に、または相互接続されたプロセッサ・ブレードを通過させることによって、情報を渡すことができるように、すべてのプロセッサ、ブレード、メモリ、および独立した回路に共通している。一実施形態例では、回路スイッチング・スイッチ(circuit-switching switch)が使用される。回路スイッチング・スイッチは、頻繁にスイッチングする必要がないため、構築が非常に単純であることがあり、さまざまな技術(例えば、すべて光学的なMEMSミラーに基づく技術)を使用して、回路、メモリ、およびプロセッサ・ブレードの間を動的に接続することができる。
このような種類の外部リンク(図示せず)および動的スイッチングは、必要に応じて動的に変化する超高スループット(例えば、高帯域幅)の接続を可能にする。マルチコア処理チップは、マルチコア処理チップを他のそのような物理処理ノードまたはメモリ・サブシステムに相互接続するのに超高帯域幅のネットワークを必要とするので、例示的な光学的に接続されたメモリ・アーキテクチャは、メモリ・スイッチング動作によって機能的に可能になるソリューションの提供において、極めて重要な役割を果たす。
光学的に接続されたメモリ・アーキテクチャ200は、次のような多数の恩恵をもたらす。(a)システム・ノード間で透過的にメモリ容量を変更し、(b)メモリのワーストケースのプロビジョニング(worst-case provisioning)の概念を排除し、アプリケーションがワークロードに応じてメモリ・フットプリントを変更できるようにし、(c)CPUのダウンタイムをメモリ・モジュールの故障から切り離し、それによってCPUの可用性を向上させる。下で説明されているように、メモリ管理手法のためのアーキテクチャが提供される。図2に示されているように、プロセッサ・ブレード202が複数のプロセッサ218をホストし、一方メモリ・モジュール214がメモリ・ブレード208内でパッケージ化(例えば、配置)される。プロセッサ・ブレード216およびメモリ・ブレード208は、別々のラック202および206内に編成され、光スイッチング・ファブリック204を介して相互接続される。CPUブレード202内の各プロセッサ218は、より高速なメモリ・アクセスに使用されるローカル・メモリ・プール310a〜nを含んでよい。メモリ・ブレード208は、ダイナミック・ランダム・アクセス・メモリ(DRAM:dynamic random access memory)メモリ・デバイスに加えて、CPUブレード216を変更せずに、フラッシュまたは相変化メモリなどの代替のメモリ・デバイスを統合することができる。
ここで図3を参照すると、図3は、コンピュータ・システム内の光学的に接続されたメモリ・システムにおけるプロセッサ設計のハードウェア構造を示しているブロック図300である。図3に示されているように、プロセッサ側の設計300は、システム内のソフトウェア・スタック302(仮想化なし)および304(仮想化あり)を示しており、プロセッサ・ブレードは、光トランシーバ308および312を介してリモート・メモリ・ブレードと通信する。メモリ・コントローラ306が、ローカル・メモリ・プール310a〜nに関連付けられている。システム・メモリ・アドレス(SMA:System Memory Address)空間(図3の302および304に示されている)が特定の事前に定められた制限を超えた場合、このSMAはリモート・メモリ・アドレス(RMMA:Remote Memory Address)空間408(図4に示されている)にマッピングされ、アクセス要求が適切なチャネルを介してリモート・メモリ・ブレードにルーティングされる。メモリ・ブレード208(図2を参照)が、リモート・メモリ・アドレス(RMMA)空間と呼ばれる別個のアドレス空間を維持するということに注意するべきである。
光学的に接続されたメモリ・システム(図2の200を参照)では、各プロセッサ・ノード218は、リモート・メモリとローカル・メモリの両方に関して、SMA空間を維持する。プロセッサ・ノード218は、ローカル物理メモリを、このアドレス空間のより低い部分にマッピングする。リモート・メモリは、使用可能な(すなわち、より高い)SMAアドレス空間(302および304に示されている)にマッピングされる。リモート・メモリ側では、メモリ・ブレード208はRMMAを維持する。したがって、プロセッサ側での各メモリ・アクセスは、最初にSMA空間(図3の302および304に示されている)にマッピングされるべきである。SMA(302および304に示されている)がリモート・メモリに対応する場合、SMA(図3の302および304に示されている)はRMMAにマッピングされ、このRMMAはリモート・メモリ・ブレード208に送信される。光プレーン(optical plane)がSMA(図3の302および304に示されている)を各RMMAに変換し、図3に示されているようにリモート・メモリと情報をやりとりする。
プロセッサ・ブレード(図3のコンポーネント306、308、および310a〜nと共に示されている)は、例えばNorthbridge(TM)チップセットに接続された、電気−光(EO:Electrical-to-Optical)/光−電気(OE:Optical-to-Electrical)トランシーバ312を介してリモート・メモリに接続される。仮想化システムでは、SMA(図3の302および304に示されている)は、マシン・アドレス(MA:Machine Address)(302および304に示されている)に対応し、仮想化されないシステムでは、SMA(図3の302および304に示されている)は物理アドレス(PA)(図3の302および304に示されている)に対応するということに注意する。図3に示されているように、各プロセッサ・ブレード(コンポーネント306、308、および310a〜nと共に示されている)は、別々のチャネルを介した複数のメモリ・ブレードへの同時接続を含んでよい。ここで、シングルモード光ファイバの場合、チャネルは別個の光トランシーバに対応し、一方、波長分割多重方式(WDM:wavelength-division multiplexing)では、単一のトランシーバが複数のチャネルを提供してよい。
光学的に接続されたシステム(図2の200に示されている)では、プロセッサ・ノードが、プロセッサ・ノードとリモート・メモリ・ブレードの間で確立された独立した回路を介してリモート・メモリにアクセスする。ここで図4を参照すると、コンピュータ・システム内で光相互接続ファブリックを介してメモリをスイッチングするためのハードウェア構造を示している例示のブロック図400が示されている。プロセッサB 402Bは、リモート・ブレードC 406Bとの回路を確立し、プロセッサA 402Aによってすでに保持されているデータへのアクセスを取得する。上で図2〜4において概説したように、プロセッサ・ノードはリモート・メモリ・ブレードへの複数のチャネルを含み、また、各メモリ・ブレードは複数のチャネルを備え、メモリ・ブレードを複数のプロセッサ・ノード間で共有できるようにする。光チャネル(メモリ・ブレードまたはプロセッサ・ノード内にある)は、1つまたは複数の光トランシーバによって提供される。プロセッサ・ノード402(402Aおよび402Bとして示されている)は、メモリ・ブレード406(406A〜Cとして示されている)との回路を開始し、メモリ要求をリモート・メモリ・コントローラに送信することによって、メモリをリモート・メモリ・ブレードから割り当てることができる。そのようなメモリ・システムでは、リモート・メモリ・ブレード内のスーパー・ページを保持しているプロセッサ・ノード402は、別のプロセッサに信号を送って、リモート・メモリ・ブレード406(406A〜Cとして示されている)との回路を確立し、後者のプロセッサ・ノードへのメモリ空間の転送を開始する。前者のプロセッサ・ノード(例えば、プロセッサA 402A)は、RMMAアドレス空間を受信側プロセッサ・ノード(例えば、プロセッサB 402B)に送信することができ、受信側プロセッサ・ノードは、提供されたアドレス空間にある同じデータにアクセスすることができる。送信側プロセッサは、例えばこのメモリ・ブレード(例えば、メモリ・ブレード406B)でスーパー・ページが不要になった場合に、リモート・メモリ・ブレード406(406A〜Cとして示されている)との回路を壊して(例えば、切断して)よい。プロセッサ・ノード間でアドレス空間を転送するそのようなプロセスは、メモリ・スイッチングと呼ばれる。メモリ・スイッチング・プロセスは図4に示されており、プロセッサ・ノードA 402Aが、リモート・メモリ・ブレードC 406に格納されたデータをプロセッサ・ノードB 402Bに送信する。プロセッサB 402Bは、リモート・メモリ・ブレードC 406との回路を開始する。メモリ・ブレード406が複数のチャネルを含んでよいので、メモリ・ブレード406のメモリ空間が複数のプロセッサ・ノード間で共有されてよく、各メモリ空間がメモリ・ブレード406内の空間全体のうちの重複していない部分を占めているということに注意する。また、メモリ・スイッチングの送信元の側はスイッチアウト処理(switch-out operation)と呼ばれ、送信先の側はスイッチイン処理(switch-in operation)と呼ばれることがある。
前述した計算環境は好ましいが、限定することを意図していない。本開示の非集約型計算システムの態様は、サービス配信の従来のクラウド・コンピューティング・モデルを提供するデータセンタ内で実装されてよい。したがって、完全を期すために、以下のセクションでは、クラウド・コンピューティングに関してさらに詳細に説明する。
クラウド・コンピューティング
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にし、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、それらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、“Draft NIST Working Definition of Cloud Computing” by Peter Mell and Tim Grance, dated October 7, 2009において、すべてさらに詳細に説明され、定義されているように、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
特に、標準的な特徴は次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベル(例えば、国、州、データセンタ)では、場所を指定できる場合がある。
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
サービス・モデルは、通常、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能さえも含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
デプロイメント・モデルは、通常、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。このクラウド・インフラストラクチャは、この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。特に、クラウド・コンピューティング・ノード内には、他の多数の汎用または専用のコンピューティング・システム環境または構成と共に運用できるコンピュータ・システム/サーバが存在する。コンピュータ・システム/サーバと共に使用するのに適した既知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。コンピュータ・システム/サーバは、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバは、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実践されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
標準的なクラウド・コンピューティング環境は、フロント・エンドIDマネージャ(front end identity manager)、ビジネス支援サービス(BSS:business support services)機能コンポーネント、運用支援サービス(OSS:operational support services)機能コンポーネント、および計算クラウド・コンポーネントを含む一連の高レベルの機能コンポーネントを含んでいる。IDマネージャは、要求元のクライアントとインターフェイスをとって、ID管理を提供する責任を負い、このコンポーネントは、IBM Corporation(ニューヨーク州アーモンク市)から提供されているTivoli Federated Identity Manager(TFIM)などの、1つまたは複数の既知のシステムと共に実装されてよい。適切な環境では、TFIMは、フェデレーション・シングル・サインオン(F−SSO:federated single sign-on)を他のクラウド・コンポーネントに提供するために使用されてよい。ビジネス支援サービス・コンポーネントは、請求書作成の支援などの特定の管理機能を提供する。運用支援サービス・コンポーネントは、仮想マシン(VM)インスタンスなどの他のクラウド・コンポーネントのプロビジョニングおよび管理を提供するために使用される。クラウド・コンポーネントは、主要な計算リソースを表し、通常は、クラウドを介したアクセスに使用可能なターゲット・アプリケーションを実行するために使用される複数の仮想マシン・インスタンスである。1つまたは複数のデータベースが、ディレクトリ、ログ、およびその他の作業用データの格納に使用される。これらのコンポーネント(フロント・エンドIDマネージャも含まれる)は、すべてクラウド「内」にあるが、これは必須要件ではない。代替の実施形態では、IDマネージャはクラウドの外部で運用されてよい。サービス・プロバイダも、クラウドの外部で運用されてよい。
一部のクラウドは、非従来型のIPネットワークに基づく。したがって、例えば、クラウドは、MACアドレスのハッシュを使用した特殊な単層IPルーティング(single layer IP routing)を伴う2層CLOSベース・ネットワーク(two-tier CLOS-based networks)に基づいてよい。本明細書に記載された手法は、そのような非従来型のクラウドにおいて使用されてよい。
図5は、リソースの仮想化をサポートする標準的なITインフラストラクチャを示しており、このITインフラストラクチャにおいて、下で説明される本開示の手法が全体的または部分的に実装されてもよい。説明の目的で、共有(パブリック)リソースを提供するITデータセンタは「プロバイダ」であり、それらの共有リソースを使用してデータおよびアプリケーションを(あらゆる形態で)ホスト、格納、および管理する顧客または企業は「サブスクライバ」(または「顧客」または「テナント」)である。図5では、仮想マシン・ホスティング環境(あるいは、本明細書ではデータセンタまたは「クラウド」と呼ばれる)の例が示されている。この環境は、通常はハイパーバイザ管理VLAN506を介して物理データセンタ・ネットワーク504に接続されたホスト・マシン(HV)502(例えば、サーバまたは同様の物理マシン・コンピューティング・デバイス)を含んでいる。明示的に示されていないが、通常、この環境は、負荷バランサ、ネットワーク・データ・スイッチ(例えば、トップ・オブ・ラック・スイッチ)、ファイアウォールなども含んでいる。図5に示されているように、物理サーバ502はそれぞれ、仮想化技術を使用して1つまたは複数の仮想マシン(VM)508を動的に提供するように適合される。そのような技術は、例えば、VMware(R)またはその他から市販されている。サーバ仮想化は、当技術分野においてよく知られた手法である。図示されているように、複数のVMが1つのホスト・マシンに配置され、このホスト・マシンのCPU、メモリ、およびその他のリソースを共有することができ、それによって、組織のデータセンタの利用率を向上させる。この環境では、テナント・アプリケーション510がネットワーク・アプライアンス(network appliances)512においてホストされ、テナント・データがデータ・ストアおよびデータベース514に格納される。アプリケーションおよびデータ・ストアは、通常はネットワーク管理/ストレージVLAN516を介して、物理データセンタ・ネットワーク504に接続される。仮想マシン、アプリケーション、およびテナント・データは、集合的に、サブスクライバがアクセスできる仮想化リソース管理ドメイン(virtualized resource management domain)505を表す。このドメインを介して、サブスクライバの従業員は、プロバイダによって割り当てられ、物理ITインフラストラクチャによって支援される仮想化リソースに(さまざまな役割ベースの権限を使用して)アクセスし、管理してよい。インフラストラクチャの最下部は、プロバイダがアクセスできる管理ドメイン515を示している。このドメインは、プロバイダ従業員管理ポータル518、BSS/OSS管理機能520、さまざまなIDおよびアクセス管理機能522、セキュリティ・ポリシー・サーバ524、およびサーバ・イメージ528を管理するための管理機能526を含んでいる。これらの機能は、管理VLAN530を介して物理データセンタ・ネットワークとインターフェイスをとる。プロバイダの従業員は、特殊な権限(および、おそらくは特定のクライアント/ネットワーク)を持ち、それらの権限により、ITデータセンタのインフラストラクチャの管理(例えば、ハードウェアの設置およびソフトウェアのインストール、構成、監視、技術サポート、請求書作成など)に使用する運用支援サービスおよびビジネス支援サービス(OSS/BSS)にアクセスすることができる。
一般的に言うと、クラウド・コンピューティング・インフラストラクチャは、ネットワークおよび1つまたは複数の管理サーバを介して接続されたホスト・マシン(例えば、サーバまたは同様の物理マシン・コンピューティング・デバイス)を含む仮想マシン・ホスト環境を提供する。通常、物理サーバはそれぞれ、VMware ESX/ESXiなどの仮想化技術を使用して1つまたは複数の仮想マシンを動的に提供するように適合される。複数のVMが1つのホスト・マシンに配置され、このホスト・マシンのCPU、メモリ、およびその他のリソースを共有することができ、それによって、組織のデータセンタの利用率を向上させる。管理サーバは、タスクの中でも特に、インフラストラクチャを監視し、必要に応じて、例えば仮想マシンをホスト間で移動させることによって、VM配置を自動的に操作する。
非限定的な実装では、代表的プラットフォーム技術は、VMware vSphere 4.1 Update 1および5.0を含むIBM System x(R)サーバであるが、これに限定されない。
非集約型計算システム
上の説明では、複数の代表的な動作環境を示したが、次に、ハードウェア・クラウド環境内で動作する非集約型計算システムについてさらに詳細に説明する。前述したように、非集約型計算システムは、データセンタ内で(またはデータセンタにまたがって)、サーバ・リソースが「分解」されて、共有サーバ・リソース・プール(つまり、計算プール、メモリ・プール、アクセラレータ・プール、ストレージ・プールなどのうちの1つまたは複数)に入れられる、システムである。サーバは、ワークロード要件に基づいて、これらのリソース・プールから割り当てることによって、動的に(例えば、オンデマンドに)構築される。このような種類の非集約型計算システムは、共有サーバ・リソース・プール内の使用可能なリソースを追跡し、この情報に基づいて、それらのリソースを管理する。
ここで、図6を参照すると、代表的非集約型計算システム600が示されている。一実施形態では、非集約型計算システム600は、光学的に接続されたスイッチング・メモリ・アーキテクチャが使用されるデータセンタ605内で構成される。このアーキテクチャは、図1〜4との関連において上で説明されたが、これに限定することは意図されていない。非集約型計算システム600内には、共有サーバ・プール(例えば、計算プール602、メモリ・プール604、アクセラレータ・プール606、ストレージ・プール608など)が存在している。リソース・プールの1つのインスタンスまたは複数のそのようなインスタンス(「複数のプール」と呼ばれることもある)が存在してよい。本アプローチでは、顧客のワークロードにサービスを提供する特定のサーバは、ワークロード要件に基づいて、これらのリソース・プールから割り当てることによって、動的に(例えば、オンデマンドに)構築される。したがって、例えば、第1のサーバ・エンティティ610は、CPU602a(計算プール602から選択されるか、またはその他の方法で取得される)、メモリ604b(メモリ・プール604から選択されるか、またはその他の方法で取得される)、アクセラレータ606c(アクセラレータ・プール606から選択されるか、またはその他の方法で取得される)、およびストレージ608d(ストレージ・プール608から選択されるか、またはその他の方法で取得される)を備えてよい。第2のサーバ・エンティティ612は、CPU602b、メモリ604a、アクセラレータ606b、およびストレージ608aを備えてよい。これらは、単に代表的例である。特定のサーバ・エンティティを構成する特定のサーバ・プールのリソースは、変化してよい。
好ましくは、リソース・プールの特定のリソースが特定のサーバ・エンティティに関連付けられると、その特定のリソースは、別のサーバ・エンティティを構成するために利用できなくなる。言い換えると、好ましくは、リソース・プールの割り当て済みリソースは、割り当て解除されるまで、サーバ・エンティティに関連付けられたままであり、割り当て解除された時点で、そのリソースはリソース・プールに戻され、別のサーバ・エンティティによって再び使用され得る。限定することは意図されていないが、好ましくは、サーバ・エンティティは、(作成された後に)データセンタの1人の顧客(テナント)のみに関連付けられる。言い換えると、サーバ・エンティティは、好ましくは、テナント間で共有されない。
そのような割り当ておよび割り当て解除を管理するために、非集約型計算システム600は、共有サーバ・リソース・プール内で利用できるリソース、およびさまざまなサーバ・エンティティに対して割り当てられたか、または割り当て解除されたリソースを追跡する能力を有する。この目的で、非集約型計算システム600は、リソース割り当てメカニズム614を備えている追跡システム、および関連するデータベース・システム616を備える(または、それらに関連付けられる)。一般に、追跡システムは、データ処理システムとして実装され、スタンドアロン方式で、あるいは他のシステムのコンポーネントまたはデータセンタ内の機能として動作してよい。
通常、リソース割り当てメカニズム614は、ソフトウェアにおいて(つまり、コンピュータ・プログラム命令のセットとして)実装され、1つまたは複数のハードウェア・プロセッサ内で実行される。リソース割り当てメカニズム614は、1つまたは複数のサブシステムまたはモジュール、プロセス、プログラム、または実行スレッドを備えてよく、そのようなコンポーネントは、同一の場所に配置するか、または分散させてよい。リソース割り当てメカニズム614は、通常、サーバ・エンティティを作成および管理する1つまたは複数の割り当てアルゴリズムを実行する責任を負う。各アルゴリズムは、例えば、サーバ・エンティティの初期構築を実行するために使用される新規サーバ割り当てアルゴリズムと、既存のサーバの場合に、ワークロードを処理するためにさらに多くの能力が必要なときに、さらに多くのリソースを既存のサーバ・エンティティに追加するために使用されるサーバ・スケールアップ・アルゴリズム(server scale-up algorithm)と、既存のサーバの場合に、ワークロードを処理するために必要な能力がさらに少ないときに、既存のサーバ・エンティティへのリソースを割り当て解除(削減)するために使用されるサーバ・スケールダウン・アルゴリズム(サーバ・スケールダウン・アルゴリズム)とを含む。これらの機能のうちの1つまたは複数が結合されてよく、他の種類のアルゴリズムが、リソース割り当てメカニズム614によって実装されてよい。
リソース割り当てメカニズム614を含む1つまたは複数のアルゴリズムは、データベース・システム616に格納された情報を使用して、管理機能を実行する。前述したように、データベース・システム616は、共有サーバ・プール内のさまざまなリソースの、状態、ステータス、またはその他の特性および属性を追跡する情報を格納する。加えて、好ましくは、データベースは、リソース割り当てメカニズムによって構築された各サーバ・エンティティに関する情報を格納する。一般的に言うと、よく知られているように、データベース・システム616は、データベース618、つまり、1つまたは複数の方法で(例えば、スキーマ、テーブル、クエリ、レポート、ビュー、およびその他のオブジェクトを使用して)編成されたデータの集合を、データベース管理システム(DBMS:database management system)620と共に備えており、データベース管理システム620は、ユーザ、その他のアプリケーション、およびデータベースと情報をやりとりしてデータを獲得および分析するコンピュータ・ソフトウェア・アプリケーションである。汎用DBMSは、データベースの定義、作成、問い合わせ、更新、および管理を可能にする。代表的なDBMSは、IBM(R) DB2(R)である。
一実施形態では、データベース618はリレーショナルである。このデータベースは、定められたサーバ・エンティティごとに、サーバを構成するリソースを識別するデータ・レコード(または、さらに一般的には、データ・セット)を格納する。好ましくは、このデータ・レコードは、識別子(一意のサーバID)に関連付けられ、サーバを構成する各リソースは、データベース内で、この一意のサーバ識別子に関連付けられる。したがって、前述した例を引き続き参照すると、第1のサーバ・エンティティ610は一意のサーバIDに関連付けられてよく、第2のサーバ・エンティティ612は一意のサーバIDに関連付けられてよい、などのようになる。
好ましくは、リソース・プールの個々のコンポーネントも、データベース内で追跡される識別子を含み、リソースがサーバ・エンティティに割り当てられた場合、このリソースの識別子はこのサーバ・エンティティに関連付けられる(相互参照される)。したがって、上の第1の例を引き続き参照すると、CPU602a、メモリ604b、GPUアクセラレータ606c、およびストレージ608dのさまざまなリソース固有の識別子が、(リレーショナル・テーブルまたはその他の方法によって)第1のサーバ・エンティティ610の一意のサーバ識別子である一意のサーバID1に関連付けられる。同様に、第2の例を引き続き参照すると、CPU602b、メモリ604a、GPUアクセラレータ606b、およびストレージ610aのさまざまなリソース固有の識別子が、第2のサーバ・エンティティの一意のサーバ識別子である一意のサーバID2に関連付けられる、などのように、サーバ・エンティティごとに同様に関連付けられる。
サーバ・エンティティが最初に構築されるときに、サーバ・エンティティは、リソース割り当てメカニズムによってサーバ・プールから選択された1つまたは複数のサーバ・プールのリソースのセットを含む。したがって、サーバ・エンティティの一意のサーバ識別子は、リソース固有の識別子の初期セットに関連付けられる。後でリソースがサーバ・エンティティに割り当てられるか、またはサーバ・エンティティから割り当て解除されると、特定のサーバ・エンティティ識別子に関連付けられた構成要素であるリソース識別子のセットも変わる。
リソース・プールの複数のインスタンスが存在してよい。複数のインスタンスが存在する場合、サーバ・エンティティをサポートするための特定のリソースが、それらのインスタンスのうちの1つまたは複数から選択される。好ましくは、リソース・プールの第1のインスタンスに割り当てられたリソースがサーバ・エンティティの構築に使用された場合、能力をこのサーバ・エンティティに追加することが必要になったときに、好ましくは、追加リソースも、可能であれば同じインスタンスから取り出される。
好ましくは、リソース固有の識別子は、リソースのステータス、属性、他のリソースとの関係などに関する情報を提供する。したがって、データベース(集中させるか、または分散させてよい)は、サーバ・エンティティ、サーバ・プール、および特定のサーバ・エンティティを構成するさまざまなリソースに関する情報のリポジトリに機能する。
リレーショナル・データベースは実装に役立つが、サーバ・エンティティ識別子とリソース固有の識別子は、他の方法(例えば、リンク・リスト、データ配列、ハッシュ・テーブル、またはその他の方法)で互いに関連付けられてよい。
一般に、リソース割り当てメカニズム614およびデータベース・システム616は、連携して非集約型計算システムを管理する。リソース割り当てメカニズムは、サーバを定めるアイドル状態および使用中のCPU、メモリ、GPUアクセラレータ、およびその他のコンポーネントを追跡する追跡システムとして機能する。さらに、追跡システムは、どのCPU、メモリ、アクセラレータ、またはその他のコンポーネントがサーバの一部であるかについての、定められた各サーバの記録を残す。前述したように、定められたサーバごとに、一意のIDが指定され、要求された数のCPU、メモリ、およびストレージが、下で詳細に説明されるように、例えばリソースの局所性、最良の適合性、および将来の拡張の必要性に基づいて、アイドル状態のリソースのプールから選択される。一意のサーバIDおよびこれらの各リソースのIDが、追跡システムにおいて記録される。好ましくは、前述したように、使用中のコンポーネントは、使用中としてマークが付けられ、アイドル状態のコンポーネントのプールから削除される。
好ましくは、サーバ・エンティティの各コンポーネントは、そのコンポーネントが含まれているサーバの一意のサーバIDを使用して、タグ付けされる。したがって、このコンポーネントは、一意のサーバIDによって識別されたサーバ・エンティティのコンポーネントであるということを認識する。
好ましくは、非集約型計算システムに対して発行された各要求、および要求に応答して受信されたデータも、サーバ・エンティティIDを使用してタグ付けされる。例えば、要求がリソースで受信された場合、このリソースは、要求にタグ付けされたサーバ・エンティティIDを、リソースのサーバ・エンティティIDと比較する。言い換えると、コンポーネントは、要求が、コンポーネントが割り当てられているサーバ・エンティティIDに一致するかどうかをチェックする能力を備えている。一致する場合、コンポーネントは、その要求を、使用して処理することができる要求であると認識する。要求にタグ付けされたサーバ・エンティティIDが、コンポーネントにタグ付けされたサーバ・エンティティIDと一致しない場合、コンポーネントは、その要求を無視できるということを認識する。
メモリ・プール用のマルチテナント・メモリ・サービス
本開示によれば、図6の「非集約型サーバ」アーキテクチャが、メモリ管理サービスによって改良される。下で示されているように、メモリ管理サービスは、メモリ・プール用の独自のメモリ管理能力を提供し、それによって、メモリ・プール(したがって、データセンタ)がより効率的に動作できるようにし、性能およびメモリ使用率を向上させる。
メモリ・プールが仮定される。前述したように、この種類の非集約型計算システムでは、メモリ・プールからのメモリ・コンポーネントは、異なるテナントおよび処理コンポーネント間で使用、再利用、または共有され得る。メモリ管理サービスは、メモリ・プールを作成する責任を負ってよいが、これは必須要件ではない。通常、プール内で管理される基本的なメモリ・コンポーネントは、メモリ・モジュール割り当てブロック(memory module allocation block)(例えば、DIMMモジュール)である。ただし、プール内のメモリ・コンポーネント(または「リソース」)が任意のその他の種類の物理メモリ構造であってよいため、これは限定ではない。
メモリ管理サービスは、「メモリ管理」コンポーネントまたはメカニズムによって実装されてよい。ここで、図7を参照すると、メモリ管理サービスの実装が示されている。この例では、データセンタ700の一部が示されており、「計算ドローア(compute drawer)」702として識別されるプロセッサ・プール、および「メモリ・ドローア(memory drawer)」704として識別されるメモリ・プールを含んでいる。計算ドローア702は、プロセッサ(通常は、CPU)のブロック706を含んでおり、各ブロック706は、通常、1つまたは複数のCPU708を含んでいる。メモリ・ドローア704は、メモリのブロック710を含んでおり、各ブロック710は、通常、1つまたは複数のDIMMモジュール712を含んでいる。従来、標準的な読み込み/格納処理714は、図6に関して前述されたリソース割り当てメカニズムなどの、他の管理機能によって管理されている。本開示によれば、メモリ管理サービス715は、下で説明されるように、メモリ管理サービスの運用を容易にするサービス・プロセッサ716を含んでいる。サービス・プロセッサ716は、スタンドアロン・メカニズム(standalone mechanism)であってよく、または別のメモリ・コントローラの一部であってもよい。サービス・プロセッサ716は、サービス運用を制御するメモリ・サービス・コード(memory service code)を含んでいる。このコードは、サービスの機能を実行するためにハードウェア内で実行される1つまたは複数のコンピュータ・プログラム(それぞれ、プログラム命令セットを含んでいる)を含んでいる。高いレベルで、サービス・プロセッサは、その機能を実行するのに必要なだけのメモリ量を(メモリ・ドローア704から)動的に獲得するように動作する。好ましくは、メモリ管理サービスは、読み込み/格納処理の効率的使用に関して最適化されていないワークロードに対して動作するが、これは限定ではない。
したがって、図7に示されているように、メモリ・プール(メモリ・ドローア704)が作成され、メモリ管理サービスによって、このメモリ・プールから異なるメモリ・モジュールをプロセッサ708の異なるインスタンスに割り当てることができる。好ましくは、このサービスは、割り当ての最小の粒度で(したがって、可能な場合は帯域幅を共有して)メモリ・モジュール712をメモリ・ドローアから割り当てる。メモリ・モジュール712は、異なるユーザ/テナントの2つの異なるインスタンス間で共有されるように割り当てられてよいが、通常、そうすることは望ましくない。これは、そのように共有された使用が、2つ以上のテナントがそのモジュールに同時にアクセスする場合、(読み取り/書き込みに関して)そのモジュールから使用できる全帯域幅に影響を与えるためである。したがって、好ましくは、メモリ・モジュールは、一度に1つのテナントに割り当てられる。したがって、異なるメモリ・ブロックが異なるテナントに割り当てられ、メモリ・サービスは、メモリ・ブロックをあるベアメタルのサービスから別のベアメタルのサービスに切り替えるように機能するか、またはそのインスタンスを起動状態に保って、作業が開始されたときに非常に素早く再開できるようにしておくため以外の必要性がない場合、メモリ・ブロックを一時停止するように機能する。このようにして、メモリ・サービスは、メモリ・コンポーネントごとの高速な俊敏性および柔軟性を提供する。
したがって、図7に示されているように、本開示のメモリ・サービスは、好ましくは、メモリ・システム(メモリ・プール)全体のうちの構成可能な部分を占め、メモリ・システムの残りの部分を、標準的な高性能の読み込み/格納処理のために空いたままにする。やはり示されているように、メモリ・サービス715を利用する要求は、プロセッサ716によって管理され、プロセッサ716は、メモリ・プール・コントローラとして動作し、特に、システムがすでにアクセスできる実メモリのプールに対する最適化されたデータ編成能力を提供するために動作する。この目的で、このメモリ・サービスは、データ構造レベルなどで、ハードウェア内で特定の種類のデータ・ストアを実装する能力を提供する。好ましい実施形態では、下で説明されているように、メモリ・サービスは、メモリ・プール全体での高性能で再利用可能なデータ構造実装の作成および管理を可能にすることによって、ストレージ容量の節約を行う。さらに、やはり下で説明されているように、このサービスは、データの編成を実行する価値があるかどうか、およびいつ実行するかを決定するために、さまざまな分析(例えば、マルチテナントの類似性、重複の検出など)を提供する。下で説明されているように、このサービスは、好ましくは、データ構造の性能を向上させ、データ構造内の類似性および重複を(ワークロード間でも)検出することによって、容量の必要性をさらに利用して削減し、メモリ空間を節約する。
本明細書において使用されているように、「データ構造」の概念は、データにアクセスするために必要な方法に基づいてワークロードが使用するデータの編成のことを指している。例えば、あるプログラマは、順次アクセスがワークロードでの主要なアクセス方法である場合、データを「リンク・リスト」に入れることを選択することがあり、またはよりランダムなアクセスが支配的である場合、データを「ハッシュ・テーブル」に入れること選択することがある。データ構造のその他の種類は、ツリー、配列、スタック、キューなどを含むが、これらに限定されない。データ構造は、2種類以上のデータ構造の混合であってよい。一般的に言うと、データ構造は、ワークロードにおいてデータを編成するように実装される構造のことを指している。通常、データ構造の選択は、ワークロードの必要性または要件に関するプログラマの理解に基づいて、プログラマによって行われる。
本開示の手法によれば、下でさらに説明されているように、メモリ・サービスは、好ましくは、(そうすることが理にかなっている場合)さまざまな形態のデータ構造最適化を実行する。1つのデータ構造最適化では、データ構造内のデータの重複排除および圧縮によって、集約に占める空間を削減する機会が存在することがある。別のデータ構造最適化では、データ構造は、データの挿入および取り出しに関して最適な性能を保証するために、時間の経過に伴って調整されてよい。この後者の調整のほとんどは、通常、性能を対象にする。例えば、特定のハッシュ値に対して多すぎるエントリを含んでいるハッシュ・テーブルは、再ハッシュまたはツリーの再バランス調整などが行われてよい。データ構造によって使用されるメモリの性能を向上させるか、またはそのようなメモリを節約するためのデータ構造のその他の最適化が実装されてもよい。
したがって、データ構造の性能の最適化方法の例として、メモリ・サービスが、例えば特定のデータ使用パターンまたはデータの分散あるいはその両方を前提として、メモリを、さらに効率的であることのある異なるデータ構造に再編成するように選択的に動作する。この目的で、好ましくは、メモリ・マネージャは、データ使用パターンおよびデータ分散を監視し、現在使用中のデータ構造を変更する(または補う)かどうか、およびいつ変更する(または補う)かを決定する。既知の使用に基づく性能最適化方式および分散に基づく性能最適化方式が、メモリ・サービスでのデータ構造の再編成をサポートするために利用されてよい。そのような使用に基づく最適化は、データ構造内のほとんどアクセスされないデータの圧縮、ほとんどアクセスされないデータのストレージへの移動、使用傾向に基づいた、頻繁にアクセスされるデータのキャッシュへの事前読み込みなどを含むことができるが、これらに限定されない。代表的な分散に基づく性能最適化方式は、ハッシュベースの構造に適用される再ハッシュ・アルゴリズム、ツリーベースの構造に適用される再バランス調整アルゴリズムなどを含むが、これらに限定されない。
メモリ・サービスのさらに別の態様は、例えばストレージ・リソースをバックアップするために、メモリ・プールの自動化されたバックアップを提供する。図8は、このシナリオを示している。図8に示されているように、データセンタ800は、計算ドローア802およびメモリ・ドローア804、ならびにメモリ・サービス815を含んでいる。加えて、データセンタは、データ・ストア808のセット含んでいるストレージ・ドローア806として識別されるストレージ・プールを含んでいる。データ・ストア810のうちの少なくとも一部が、バックアップ用に提供される。この目的で、プロセスによって、またはワークロードからのプログラム命令によって、メモリ・マネージャ・サービス815がデータ・セットの編成を追跡し、その理解を深める。その後、ストレージ・プールに対する定期的または指示されたバックアップ処理812が、いつでも、中断を最小限に抑えて実行される。これは(図示されているように)、データのコピーが計算プールのプロセッサを通る必要がないためである。好ましくは、バックアップは、特定のデータ・セットに対して実行される。キャッシュされていないデータは、好ましくは、バックアップ・ストレージに直接コピーされるが、キャッシュされたデータはメイン・メモリにフラッシュされてから、バックアップ・ストレージに直接コピーされる。あるいはバックアップは、キャッシュのフラッシュがすでに発生しているイベント(例えば、ページ・フォルト)の間に起こるように構成される。
したがって、好ましくは、メモリ・サービスは、容量の節約、性能の最適化、および回復力のうちの1つまたは複数を提供することによって、メモリ・プールを管理する。
以下では、好ましい容量節約手法のさらなる詳細について説明する。このアプローチでは、好ましくは、データがポインタと共にブロックに格納される。その後、例えばインデックス付与および比較分析によって、共通のデータ・ブロックが識別される。共通のデータ・ブロックが検出された場合、それらの時間の経過に伴う安定性を決定するための分析が実行される。共通のデータ・ブロックが(構成可能な基準に基づいて)安定していると見なされた場合、メモリ・サービスはそれらの重複を除去し、そのポインタを第1のコピーに向ける。その後、このデータの単一のコピー(オーバーサブスクライブされた値と呼ばれる)が管理される(例えば、メモリ・マネージャが、必要に応じて、安定したオーバーサブスクライブされた値の差分を更新する)。一方、共通のデータ・ブロックが安定していると見なされない場合、好ましくは、データの除去が実行されない。
図9は、本開示の容量節約ルーチンのプロセス・フローを示している。通常、前述したように、このルーチンは、データ構造内の類似性および重複を検出することによって、容量の必要性を利用して削減し、メモリ空間を節約する。このルーチンは、1つの特定のワークロードに対して動作してよく、または複数のワークロードにまたがって動作してもよい。図9に示されたプロセス・フローは、複数のワークロードにまたがる例を示している。このルーチンはステップ900で開始し、データがポインタと共にブロックに格納される。ステップ902で、好ましくは、既知のインデックス付与方式および比較分析方式によって、共通のデータ・ブロックが識別される。ステップ904で、検出された共通のデータ・ブロックごとに、共通のデータ・ブロックが時間の経過にかかわらず安定しているかどうかを決定するためのテストが実行される。安定性の評価に使用される基準の性質は変化してよいが、通常、ステップ904は、共通のデータ・ブロック内の値が、構成された期間の後に変化したかどうか、構成された処理のセットの後に変化したかどうか、などを決定するためにテストする。ステップ904でのテストの結果が肯定的である場合、共通のデータ・ブロックは安定していると見なされ、その後、制御がステップ906に分岐し、ステップ906でメモリ・サービスが重複を除去する。ステップ908で、メモリ・サービスが、ポインタを第1のコピーに向け、その後、この第1のコピーは「オーバーサブスクライブされた値」として参照される。一方、ステップ904でのテストの結果が否定的である場合、共通のデータ・ブロックは不安定であると見なされる。その後、このルーチンは終了する。
オーバーサブスクライブされた値は安定していると仮定されるが、その後、ワークロードのうちの1つがオーバーサブスクライブされたデータ値を変更する必要がある状況が生じることがある。頻繁に発生することが予想されない、そのような状況では、メモリ・サービスは、新しい値を格納するよりも安価に、オーバーサブスクライブされた値の差分を計算して格納することができるかどうかを決定するために、分析を実行する。この差分値を小さいサイズで格納できる場合、この差分値が作成された後、ワークロードのポインタが、この差分に向けられる。この差分値が、元のサイズと同じ、またはほとんど同じ大きさである場合、オーバーサブスクライブされた位置が複製され、それぞれ別の値として維持される。このオーバーサブスクライブされた値の管理は、ステップ908の後に続くステップ910に示されている。
マネージャは、安定したオーバーサブスクライブされた値の差分を更新するために必要な作業も管理する。これが、ステップ912に示されている。特に、(好ましくは、ステップ904で使用されたしきい値と同じしきい値を使用して)差分のうちの1つが大きく変化し、安定しなくなった場合、マネージャはその差分を新しい値として切り離し、それに応じてそのポインタが調整される。安定しなくなった値が、ベースになるオーバーサブスクライブされた値である場合、マネージャは、どの差分が最も安定しているかを決定するための分析を実行し、その差分が新しいベース値になる。その後、古いベースが切り離されて、別のオーバーサブスクライブされていない値になる。一方、どの差分も安定していない場合、好ましくは、それらの差分およびベース値がすべて切り離されて、新しいサブスクライブされていない値になる。
このアプローチは、大きな利点を提供する。メモリ・サービスは、ハードウェアに近い実装を使用して、高性能を実現する。このアプローチは、メモリ・プール制御のためのデータ構造の構築および再利用を可能にし、それによって、各ワークロードによって生成される非効率的で潜在的に不安定な実装を減らす。このアプローチは、データの編成によって、効率の高い安定した状態のメモリ管理操作を促進する。特に、メモリ・サービスは、システムがすでにアクセスできる実メモリのプールに対する高度に最適化されたデータ編成能力を提供する。(図9に関して説明されたように)オーバーサブスクライブされた値を管理することによって、マネージャは、データの安定性を前提として、類似性および重複の検出による最適化を実行する価値があるかどうかを決定し、それによって、コストのかかるコピーおよび記録の保持を防ぐ。これらの最適化は、使用される場合、性能を最適化するために、メモリ内で実行される。さらに、自動化されたバックアップ能力は、バックアップの目的で、メモリ・プールからデータを効率的に取り出す、ハードウェアで実現される方法を提供する。好ましくは、基本操作を容易にするために、メモリ・マネージャによってデータのコピーは実行されない。ハードウェア構造は、プロセッサを通るというコストのかかる処理を伴わずに複製を生成する効率的な方法も可能にする。
したがって、本明細書におけるアプローチは、好ましくは、データ編成メカニズム(つまり、データ構造の操作、データ構造の性能最適化、処理時間、メモリ内の重複排除など)のハードウェアベースの実装を追加することによって、非集約型システム内でのメイン・メモリの使用を最適化し、複数のテナントにまたがる利用率の向上を可能にする。このようにして、メモリ・サービスは、実メモリに対するより高いレベルでのデータ編成能力を計算ノードに提供することができる。このアプローチでは、ある範囲のメモリが計算ノードに与えられる必要はなく、バックエンドの最適化がハードウェアおよびソフトウェアにおいて利用できるような方法で、データ編成能力(つまり、集合的データ構造など)が使用可能になる。さらに、本明細書におけるアプローチは、仮想メモリ・システムを作成するために、複数のホストまたはクライアント/サーバのインストールを必要としない。
本明細書に記載された利点は、異なるメモリ・モジュールをプロセッサの異なるインスタンスに割り当てることができるメモリ・プールを割り当てるメモリ管理サービスによって提供される。メモリ・サービス構造(データ構造レベルであってよい)は、ハードウェア内で格納部を実装するために構築される。このサービスの実施形態は、好ましくは、データ構造内の類似性および重複を検出することによって、容量の必要性を利用して削減する容量節約機能をさらに含む。このサービスのさらに別の実施形態は、データの使用パターンおよび分散を前提として、メモリを、より効率的であることがある異なるデータ構造に再編成する能力をさらに提供する。このサービスのさらに別の実施形態は、好ましくは、コピーをプロセッサに通すことを必要とせずにバックアップ処理が発生できるようにすることによって、自動化されたバックアップ(したがって、強化されたデータ回復力)も提供する。
前述したように、上で説明された機能は、スタンドアロンのアプローチ(例えば、プロセッサによって実行されるソフトウェアベースの機能)として実装されてよく、またはサービス(SOAP/XMLインターフェイスを介したWebサービスを含む)として利用されてもよい。本明細書に記載された特定のハードウェアおよびソフトウェアの実装の詳細は、単に例示を目的としており、記載された主題の範囲を制限するようには意図されていない。
さらに一般的には、開示された主題との関連において、コンピューティング・デバイスはそれぞれ、ハードウェアおよびソフトウェアを備えているデータ処理システムであり、これらのエンティティは、ネットワーク(インターネット、イントラネット、エクストラネット、プライベート・ネットワーク、あるいは任意のその他の通信媒体またはリンクなど)を経由して互いに通信する。データ処理システム上のアプリケーションは、特にHTTP、FTP、SMTP、SOAP、XML、WSDL、UDDI、およびWSFLのサポートを含むが、これらに限定されない、Webならびにその他の既知のサービスおよびプロトコルのネイティブ・サポートを提供する。SOAP、WSDL、UDDI、およびWSFLに関する情報は、これらの規格を開発および維持する役割を担っているワールド・ワイド・ウェブ・コンソーシアム(W3C:World Wide Web Consortium)から提供されており、HTTP、FTP、SMTP、およびXMLに関するさらなる情報は、インターネット・エンジニアリング・タスク・フォース(IETF:Internet Engineering Task Force)から提供されている。これらの既知の規格およびプロトコルを熟知していることが仮定される。
本明細書に記載された手法は、単純なn層アーキテクチャ、Webポータル、フェデレーテッド・システムなどを含む、さまざまなサーバサイド・アーキテクチャ内で、またはこれらと併せて、実装されてよい。前述したように、本明細書における手法は、疎結合されたサーバ(「クラウド」ベースを含む)環境内で実践されてもよい。
さらに一般的には、本明細書に記載された主題は、完全にハードウェアである実施形態、完全にソフトウェアである実施形態、またはハードウェアとソフトウェアの両方の要素を含んでいる実施形態の形態をとることができる。好ましい実施形態では、信頼できるプラットフォーム・モジュールの機能が、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアにおいて実装される。さらに、ダウンロードおよび削除のインターフェイスおよび機能は、コンピュータまたは任意の命令実行システムによって、またはこれらに関連させて使用するためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセスできるコンピュータ・プログラム製品の形態をとることができる。この説明の目的で、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、命令実行装置、または命令実行デバイスによって、またはこれらに関連させて使用するためのプログラムを含むか、または格納することができる任意の装置であることができる。この媒体は、電子システム、磁気システム、光システム、電磁気システム、赤外線システム、または半導体システム(あるいは、装置またはデバイス)であることができる。コンピュータ可読媒体の例としては、半導体メモリまたは固体メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、剛体磁気ディスク、および光ディスクが挙げられる。光ディスクの現在の例としては、コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disk-read only memory)、コンパクト・ディスク読み取り/書き込み(CD−R/W:compact disk-read/write)、およびDVDが挙げられる。コンピュータ可読媒体は、有形の非一時的アイテムである。
コンピュータ・プログラム製品は、記載された機能のうちの1つまたは複数を実装するためのプログラム命令(またはプログラム・コード)を含んでいる製品であってよい。これらの命令またはコードは、ネットワークを経由してリモート・データ処理システムからダウンロードされた後に、データ処理システム内の非一時的コンピュータ可読記憶媒体に格納されてよい。または、これらの命令またはコードは、サーバ・データ処理システム内のコンピュータ可読記憶媒体に格納され、リモート・システム内のコンピュータ可読記憶媒体において使用するために、ネットワークを経由してリモート・データ処理システムにダウンロードされるように適合されてよい。
代表的実施形態では、インターフェイスおよびユーティリティが、専用コンピューティング・プラットフォーム内で、好ましくは1つまたは複数のプロセッサによって実行されるソフトウェア内で、実装される。ソフトウェアは、1つまたは複数のプロセッサに関連付けられた1つまたは複数のデータ・ストアまたはメモリ内で維持され、ソフトウェアは、1つまたは複数のコンピュータ・プログラムとして実装されてよい。集合的に、この専用ハードウェアおよびソフトウェアは、前述した機能を備える。
上では、本発明の特定の実施形態によって実行される特定の順序の処理を説明したが、代替の実施形態が、処理を異なる順序で実行すること、特定の処理を組み合わせること、特定の処理を重ね合わせることなどを実行してよいため、そのような順序は例であると理解されるべきである。本明細書における特定の実施形態例への参照は、記載された実施形態が特定の特徴、構造、または特性を含むことができるが、必ずしもすべての実施形態がこの特定の特徴、構造、または特性を含まなくてもよいということを示している。
最後に、システムの特定のコンポーネントが別々に説明されたが、当業者は、機能の一部が、特定の命令、プログラム・シーケンス、コード部分などにおいて、組み合わされるか、または共有されてよいということを理解するであろう。
本明細書における手法は、通常、技術または技術分野(データセンタ・アーキテクチャ、非集約型計算環境など)に対する前述の改良、および前述したようなメモリ・プール管理方式に対する特定の技術的改良を提供する。
以上で本発明を説明したが、特許請求の範囲は次のとおりである。

Claims (25)

  1. マルチテナント計算環境においてメモリを管理する方法であって、
    メモリ・リソース・プールを提供することと、
    特定のワークロードに関して、メモリ・リソースを前記メモリ・リソース・プールからプロセッサのセットに割り当てることと、
    データ構造に従って、前記割り当てられたメモリ・リソース内の前記特定のワークロードのデータを編成することと、
    前記特定のワークロードの前記データ構造内の前記データの再編成が、前記データ構造の性能を向上させるかどうか、または前記データ構造によって使用されるメモリを節約するかどうかを決定することと、
    再編成が性能を向上させるということ、またはメモリを節約するということを決定したときに、前記データを管理するための特定の動作を実行することと
    を含む、方法。
  2. 前記特定の動作がデータの類似性または重複を検出し、前記検出に応答して、特定のデータを前記割り当てられたメモリ・リソースから除去する、請求項1に記載の方法。
  3. 複数のテナントまたは複数のプロセスに共通しているデータ・ブロックを識別することと、
    共通のデータ・ブロックを識別したときに、構成可能なしきい値に従って、前記共通のデータ・ブロックが安定しているかどうかを決定することと、
    前記共通のデータ・ブロックが安定しているということを決定したときに、重複する共通のデータ・ブロックを除去することと、
    前記共通のデータ・ブロックのインスタンスを共有された共通のデータ・ブロックとして関連付けることと、
    前記複数のテナントまたは複数のプロセスに、前記共有された共通のデータ・ブロックへのポインタを提供することと
    によって、データの類似性または重複が検出される、請求項2に記載の方法。
  4. 第1のテナントの共有された共通のデータ・ブロックの値が変化したことを決定することと、
    前記第1のテナントの前記共有された共通のデータ・ブロックの差分値を格納することのほうが、計算コストが少ないかどうかを決定することと、
    前記差分値を格納することのほうが計算コストが少ないということを決定したときに、前記第1のテナントの前記共有された共通のデータ・ブロックの前記差分値を格納することと
    をさらに含む、請求項3に記載の方法。
  5. 前記第1のテナントの前記共有された共通のデータ・ブロックの新しい値を格納することのほうが、計算コストが少ないかどうかを決定することと、
    新しい値を格納することのほうが計算コストが少ないということを決定したときに、前記第1のテナントの前記共有された共通のデータ・ブロックの前記新しい値を格納することと
    をさらに含む、請求項4に記載の方法。
  6. 前記データを管理するための前記特定の動作が、
    前記データのデータ分散または使用パターンを監視することと、
    前記監視することに基づいて、最適化を適用して前記データ構造を調整することと
    を含む、請求項1に記載の方法。
  7. データ・セットをプロファイリングしてデータ・セット・スキーマを生成することと、
    プロセッサを使用せずに前記データ・セットを定期的にバックアップすることと、
    バックアップ処理の前に、キャッシュされたデータをメイン・メモリにフラッシュすることと
    をさらに含む、請求項1に記載の方法。
  8. 前記特定のワークロードのアクセス要件に基づいて前記データ構造が前記データを編成する、請求項1に記載の方法。
  9. マルチテナント計算環境においてメモリを管理する装置であって、
    1つまたは複数のハードウェア・プロセッサと、
    前記ハードウェア・プロセッサによって実行されるコンピュータ・プログラム命令を保持しているコンピュータ・メモリと
    を備え、前記コンピュータ・プログラム命令が、
    メモリ・リソース・プールを編成することと、
    特定のワークロードに関して、メモリ・リソースを前記メモリ・リソース・プールからプロセッサのセットに割り当てることと、
    データ構造に従って、前記割り当てられたメモリ・リソース内の前記特定のワークロードのデータを編成することと、
    前記特定のワークロードの前記データ構造内の前記データの再編成が、前記データ構造の性能を向上させるかどうか、または前記データ構造によって使用されるメモリを節約するかどうかを決定することと、
    再編成が性能を向上させるということ、またはメモリを節約するということを決定したときに、前記データを管理するための特定の動作を実行することと
    を実行するように機能する、装置。
  10. 前記特定の動作がデータの類似性または重複を検出し、前記検出に応答して、特定のデータを前記割り当てられたメモリ・リソースから除去する、請求項9に記載の装置。
  11. 複数のテナントまたは複数のプロセスに共通しているデータ・ブロックを識別することと、
    共通のデータ・ブロックを識別したときに、構成可能なしきい値に従って、前記共通のデータ・ブロックが安定しているかどうかを決定することと、
    前記共通のデータ・ブロックが安定しているということを決定したときに、重複する共通のデータ・ブロックを除去することと、
    前記共通のデータ・ブロックのインスタンスを共有された共通のデータ・ブロックとして関連付けることと、
    前記複数のテナントまたは複数のプロセスに、前記共有された共通のデータ・ブロックへのポインタを提供することと
    によって、データの類似性または重複が検出される、請求項10に記載の装置。
  12. 前記コンピュータ・プログラム命令が、
    第1のテナントの共有された共通のデータ・ブロックの値が変化したことを決定することと、
    前記第1のテナントの前記共有された共通のデータ・ブロックの差分値を格納することのほうが、計算コストが少ないかどうかを決定することと、
    前記差分値を格納することのほうが計算コストが少ないということを決定したときに、前記第1のテナントの前記共有された共通のデータ・ブロックの前記差分値を格納することと
    を実行するようにさらに機能する、請求項11に記載の装置。
  13. 前記コンピュータ・プログラム命令が、
    前記第1のテナントの前記共有された共通のデータ・ブロックの新しい値を格納することのほうが、計算コストが少ないかどうかを決定することと、
    新しい値を格納することのほうが計算コストが少ないということを決定したときに、前記第1のテナントの前記共有された共通のデータ・ブロックの前記新しい値を格納することとを実行するようにさらに機能する、請求項12に記載の装置。
  14. 前記データを管理するための前記特定の動作が、
    前記データのデータ分散または使用パターンを監視することと、
    前記監視することに基づいて、最適化を適用して前記データ構造を調整することと
    を含む、請求項9に記載の装置。
  15. 前記コンピュータ・プログラム命令が、
    データ・セットをプロファイリングしてデータ・セット・スキーマを生成することと、
    プロセッサを使用せずに前記データ・セットを定期的にバックアップすることと、
    バックアップ処理の前に、キャッシュされたデータをメイン・メモリにフラッシュすることと
    を実行するようにさらに機能する、請求項9に記載の装置。
  16. 前記特定のワークロードのアクセス要件に基づいて前記データ構造が前記データを編成する、請求項9に記載の装置。
  17. マルチテナント計算環境内のメモリを管理するためにデータ処理システムにおいて使用するための非一時的コンピュータ可読媒体内のコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が前記データ処理システムにおいて実行されるコンピュータ・プログラム命令を保持しており、前記コンピュータ・プログラム命令が、
    メモリ・リソース・プールを編成することと、
    特定のワークロードに関して、メモリ・リソースを前記メモリ・リソース・プールからプロセッサのセットに割り当てることと、
    データ構造に従って、前記割り当てられたメモリ・リソース内の前記特定のワークロードのデータを編成することと、
    前記特定のワークロードの前記データ構造内の前記データの再編成が、前記データ構造の性能を向上させるかどうか、または前記データ構造によって使用されるメモリを節約するかどうかを決定することと、
    再編成が性能を向上させるということ、またはメモリを節約するということを決定したときに、前記データを管理するための特定の動作を実行することと
    を実行するように機能する、コンピュータ・プログラム製品。
  18. 前記特定の動作がデータの類似性または重複を検出し、前記検出に応答して、特定のデータを前記割り当てられたメモリ・リソースから除去する、請求項17に記載のコンピュータ・プログラム製品。
  19. 複数のテナントまたは複数のプロセスに共通しているデータ・ブロックを識別することと、
    共通のデータ・ブロックを識別したときに、構成可能なしきい値に従って、前記共通のデータ・ブロックが安定しているかどうかを決定することと、
    前記共通のデータ・ブロックが安定しているということを決定したときに、重複する共通のデータ・ブロックを除去することと、
    前記共通のデータ・ブロックのインスタンスを共有された共通のデータ・ブロックとして関連付けることと、
    前記複数のテナントまたは複数のプロセスに、前記共有された共通のデータ・ブロックへのポインタを提供することと
    によって、データの類似性または重複が検出される、請求項18に記載のコンピュータ・プログラム製品。
  20. 前記コンピュータ・プログラム命令が、
    第1のテナントの共有された共通のデータ・ブロックの値が変化したことを決定することと、
    前記第1のテナントの前記共有された共通のデータ・ブロックの差分値を格納することのほうが、計算コストが少ないかどうかを決定することと、
    前記差分値を格納することのほうが計算コストが少ないということを決定したときに、前記第1のテナントの前記共有された共通のデータ・ブロックの前記差分値を格納することと
    を実行するようにさらに機能する、請求項19に記載のコンピュータ・プログラム製品。
  21. 前記コンピュータ・プログラム命令が、
    前記第1のテナントの前記共有された共通のデータ・ブロックの新しい値を格納することのほうが、計算コストが少ないかどうかを決定することと、
    新しい値を格納することのほうが計算コストが少ないということを決定したときに、前記第1のテナントの前記共有された共通のデータ・ブロックの前記新しい値を格納することと
    を実行するようにさらに機能する、請求項20に記載のコンピュータ・プログラム製品。
  22. 前記データを管理するための前記特定の動作が、
    前記データのデータ分散または使用パターンを監視することと、
    前記監視することに基づいて、最適化を適用して前記データ構造を調整することと
    を含む、請求項17に記載のコンピュータ・プログラム製品。
  23. 前記コンピュータ・プログラム命令が、
    データ・セットをプロファイリングしてデータ・セット・スキーマを生成することと、
    プロセッサを使用せずに前記データ・セットを定期的にバックアップすることと、
    バックアップ処理の前に、キャッシュされたデータをメイン・メモリにフラッシュすることと
    を実行するようにさらに機能する、請求項17に記載のコンピュータ・プログラム製品。
  24. 前記特定のワークロードのアクセス要件に基づいて前記データ構造が前記データを編成する、請求項17に記載のコンピュータ・プログラム製品。
  25. データセンタ・ファシリティであって、
    メモリ・プールと、
    光相互接続と、
    ハードウェア要素内で実行されるメモリ・マネージャとを備え、前記メモリ・マネージャが、前記メモリ・リソース・プールから複数のテナントのワークロードのプロセッサのセットへのメモリ・リソースの割り当てを管理することと、データ構造に従って特定のテナントのワークロードのデータを編成することと、前記データ構造内の前記データを選択的に再編成して、前記データ構造の性能を向上させるか、または前記特定のテナントのワークロードにサービスを提供するために必要なメモリを削減することとを実行するように機能する、データセンタ・ファシリティ。
JP2018548198A 2016-04-07 2017-03-09 メモリ・プール・アーキテクチャ用のマルチテナント・メモリ・サービスのための方法、装置、コンピュータ・プログラム製品、データセンタ・ファシリティ Active JP6963558B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/092,699 US9811281B2 (en) 2016-04-07 2016-04-07 Multi-tenant memory service for memory pool architectures
US15/092,699 2016-04-07
PCT/IB2017/051381 WO2017175078A1 (en) 2016-04-07 2017-03-09 Multi-tenant memory service for memory pool architectures

Publications (2)

Publication Number Publication Date
JP2019518260A true JP2019518260A (ja) 2019-06-27
JP6963558B2 JP6963558B2 (ja) 2021-11-10

Family

ID=59999377

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018548198A Active JP6963558B2 (ja) 2016-04-07 2017-03-09 メモリ・プール・アーキテクチャ用のマルチテナント・メモリ・サービスのための方法、装置、コンピュータ・プログラム製品、データセンタ・ファシリティ

Country Status (6)

Country Link
US (2) US9811281B2 (ja)
JP (1) JP6963558B2 (ja)
CN (1) CN108885582B (ja)
DE (1) DE112017000629T5 (ja)
GB (1) GB2557125B (ja)
WO (1) WO2017175078A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7448653B2 (ja) 2019-11-25 2024-03-12 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバ内の仮想ドロワー

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10298516B2 (en) * 2016-04-19 2019-05-21 Hyland Switzerland Sàrl System and methods for sharing resources among application modules
US10390114B2 (en) 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US10417211B2 (en) 2016-09-29 2019-09-17 Vmware, Inc. Quick hardware inventory of a software-defined data center (SDDC) multi-rack
US11232091B2 (en) 2016-09-29 2022-01-25 Vmware, Inc. Software-defined data center (SDDC) rack quick discovery after hardware management system (HMS) restart
US10684893B2 (en) 2017-02-25 2020-06-16 Vmware, Inc. Methods and apparatus to manage compute resources in a hyperconverged infrastructure computing environment
US10462221B2 (en) 2017-02-25 2019-10-29 Vmware, Inc. Distributed storage resource management in a hyper converged infrastructure
US10454844B2 (en) * 2017-03-08 2019-10-22 A10 Networks, Inc. Dynamic capacity planning for application delivery platform across multiple cloud deployment
US10402124B2 (en) * 2017-03-30 2019-09-03 Intel Corporation Dynamically composable computing system, a data center, and method for dynamically composing a computing system
US20190068466A1 (en) * 2017-08-30 2019-02-28 Intel Corporation Technologies for auto-discovery of fault domains
US10713092B2 (en) * 2018-01-02 2020-07-14 Jpmorgan Chase Bank, N.A. Dynamic resource management of a pool of resources for multi-tenant applications based on sample exceution, query type or jobs
US10649813B2 (en) * 2018-03-29 2020-05-12 Intel Corporation Arbitration across shared memory pools of disaggregated memory devices
US10891206B2 (en) 2018-05-31 2021-01-12 International Business Machines Corporation Disaster recovery orchestration and capacity planning in disaggregated datacenters
US11243846B2 (en) 2018-05-31 2022-02-08 International Business Machines Corporation Replicating workload and state data for disaster recovery in disaggregated datacenters
US10719418B2 (en) 2018-05-31 2020-07-21 International Business Machines Corporation Replicating workload data according to a degree of resiliency for disaster recovery in disaggregated datacenters
US11036599B2 (en) 2018-05-31 2021-06-15 International Business Machines Corporation Disaster recovery and replication according to workload priorities in disaggregated datacenters
US10983881B2 (en) 2018-05-31 2021-04-20 International Business Machines Corporation Disaster recovery and replication in disaggregated datacenters
US11182322B2 (en) 2018-09-25 2021-11-23 International Business Machines Corporation Efficient component communication through resource rewiring in disaggregated datacenters
US10671557B2 (en) 2018-09-25 2020-06-02 International Business Machines Corporation Dynamic component communication using general purpose links between respectively pooled together of like typed devices in disaggregated datacenters
US10915493B2 (en) 2018-09-25 2021-02-09 International Business Machines Corporation Component building blocks and optimized compositions thereof in disaggregated datacenters
US11012423B2 (en) 2018-09-25 2021-05-18 International Business Machines Corporation Maximizing resource utilization through efficient component communication in disaggregated datacenters
US10831698B2 (en) 2018-09-25 2020-11-10 International Business Machines Corporation Maximizing high link bandwidth utilization through efficient component communication in disaggregated datacenters
US10802988B2 (en) * 2018-09-25 2020-10-13 International Business Machines Corporation Dynamic memory-based communication in disaggregated datacenters
US11650849B2 (en) 2018-09-25 2023-05-16 International Business Machines Corporation Efficient component communication through accelerator switching in disaggregated datacenters
US11163713B2 (en) 2018-09-25 2021-11-02 International Business Machines Corporation Efficient component communication through protocol switching in disaggregated datacenters
US10637733B2 (en) 2018-09-25 2020-04-28 International Business Machines Corporation Dynamic grouping and repurposing of general purpose links in disaggregated datacenters
US10855532B2 (en) * 2018-10-08 2020-12-01 Dell Products L.P. System and method to perform solution aware server compliance and configuration
US10915370B2 (en) * 2018-11-29 2021-02-09 International Business Machines Corporation Inter-host communication without data copy in disaggregated systems
US11422912B2 (en) 2019-04-19 2022-08-23 Vmware, Inc. Accurate time estimates for operations performed on an SDDC
US11609845B2 (en) * 2019-05-28 2023-03-21 Oracle International Corporation Configurable memory device connected to a microprocessor
US11424940B2 (en) 2019-06-01 2022-08-23 Vmware, Inc. Standalone tool for certificate management
US11669246B2 (en) 2019-08-19 2023-06-06 International Business Machines Corporation Storage allocation enhancement of microservices
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置
US11513860B2 (en) * 2020-01-31 2022-11-29 Red Hat, Inc. Serverless function colocation with storage pools
US11429518B2 (en) 2020-12-08 2022-08-30 Microsoft Technology Licensing, Llc Paging in thin-provisioned disaggregated memory
US20220398221A1 (en) * 2021-06-10 2022-12-15 EMC IP Holding Company LLC Persistent memory tiering supporting fast failover in a deduplicated file system
US11829249B2 (en) 2021-06-10 2023-11-28 EMC IP Holding Company LLC Fast failover of a deduplicated file system through huge memory pages

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6771595B1 (en) * 1999-08-31 2004-08-03 Intel Corporation Apparatus and method for dynamic resource allocation in a network environment
AU2001243459A1 (en) * 2000-03-09 2001-09-17 The Web Access, Inc. Method and apparatus for performing a research task by interchangeably utilizinga multitude of search methodologies
US6785688B2 (en) * 2000-11-21 2004-08-31 America Online, Inc. Internet streaming media workflow architecture
US7356655B2 (en) 2003-05-15 2008-04-08 International Business Machines Corporation Methods, systems, and media for managing dynamic storage
US7529785B1 (en) 2006-02-28 2009-05-05 Symantec Corporation Efficient backups using dynamically shared storage pools in peer-to-peer networks
US7818535B1 (en) * 2007-06-30 2010-10-19 Emc Corporation Implicit container per version set
US8082400B1 (en) * 2008-02-26 2011-12-20 Hewlett-Packard Development Company, L.P. Partitioning a memory pool among plural computing nodes
US8458393B2 (en) * 2008-03-31 2013-06-04 Spansion Llc Flash memory and operating system kernel
US20100205381A1 (en) 2009-02-06 2010-08-12 Canion Rodney S System and Method for Managing Memory in a Multiprocessor Computing Environment
US9811662B2 (en) * 2010-05-03 2017-11-07 Panzura, Inc. Performing anti-virus checks for a distributed filesystem
US8341368B2 (en) 2010-06-07 2012-12-25 International Business Machines Corporation Automatic reallocation of structured external storage structures
US20120001925A1 (en) * 2010-06-30 2012-01-05 Ati Technologies, Ulc Dynamic Feedback Load Balancing
US9009724B2 (en) * 2010-09-24 2015-04-14 Hewlett-Packard Development Company, L.P. Load balancing data access in virtualized storage nodes
CN102681899B (zh) * 2011-03-14 2015-06-10 金剑 云计算服务平台的虚拟计算资源动态管理方法
US8935506B1 (en) 2011-03-31 2015-01-13 The Research Foundation For The State University Of New York MemX: virtualization of cluster-wide memory
US8688650B2 (en) 2011-08-01 2014-04-01 Actifio, Inc. Data fingerprinting for copy accuracy assurance
DE102011084344A1 (de) * 2011-10-12 2013-04-18 Siemens Aktiengesellschaft Verfahren zur Laufzeitoptimierung bei paketorientierter Mobilfunkübertragung von Datentelegrammen
US9300548B2 (en) * 2011-10-14 2016-03-29 Alcatel Lucent Providing dynamic reliability and security in communications environments
US8954698B2 (en) 2012-04-13 2015-02-10 International Business Machines Corporation Switching optically connected memory
JP2014041420A (ja) * 2012-08-21 2014-03-06 Nec Corp 差分圧縮装置、コンピュータ、メモリ管理方法、および、プログラム
CN103279974A (zh) * 2013-05-15 2013-09-04 中国科学院软件研究所 一种高精度高分辨率卫星成像模拟引擎及实现方法
WO2015045046A1 (ja) * 2013-09-26 2015-04-02 株式会社日立製作所 計算機システムおよび計算機システムのメモリ割当調整方法
US9977618B2 (en) 2013-12-27 2018-05-22 Intel Corporation Pooling of memory resources across multiple nodes
WO2015123537A1 (en) 2014-02-13 2015-08-20 Ashok Ramu Virtual data backup
US9569136B2 (en) * 2015-04-29 2017-02-14 International Business Machines Corporation Smart load balancing replication when adding or removing storage disks in a distributed storage system
US10298512B2 (en) * 2015-06-26 2019-05-21 Vmware, Inc. System and method for performing resource allocation for a host computer cluster
US20170003997A1 (en) * 2015-07-01 2017-01-05 Dell Products, Lp Compute Cluster Load Balancing Based on Memory Page Contents
CN105094985A (zh) 2015-07-15 2015-11-25 上海新储集成电路有限公司 一种共享内存池的低功耗数据中心及其工作方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7448653B2 (ja) 2019-11-25 2024-03-12 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバ内の仮想ドロワー

Also Published As

Publication number Publication date
CN108885582A (zh) 2018-11-23
GB201803283D0 (en) 2018-04-11
US20170293447A1 (en) 2017-10-12
CN108885582B (zh) 2022-07-29
GB2557125B (en) 2022-01-05
US9811281B2 (en) 2017-11-07
US20180074741A1 (en) 2018-03-15
GB2557125A (en) 2018-06-13
WO2017175078A1 (en) 2017-10-12
DE112017000629T5 (de) 2018-10-31
JP6963558B2 (ja) 2021-11-10
US10409509B2 (en) 2019-09-10

Similar Documents

Publication Publication Date Title
JP6963558B2 (ja) メモリ・プール・アーキテクチャ用のマルチテナント・メモリ・サービスのための方法、装置、コンピュータ・プログラム製品、データセンタ・ファシリティ
CN108885554B (zh) 用于在计算环境中分配资源的方法、装置、介质和数据中心设备
US10701141B2 (en) Managing software licenses in a disaggregated environment
US10129169B2 (en) Specifying a highly-resilient system in a disaggregated compute environment
US9916636B2 (en) Dynamically provisioning and scaling graphic processing units for data analytic workloads in a hardware cloud
US9390047B2 (en) Memory switching protocol when switching optically-connected memory
US11275622B2 (en) Utilizing accelerators to accelerate data analytic workloads in disaggregated systems
US8996837B1 (en) Providing multi-tenancy within a data storage apparatus
US9430264B2 (en) System and method for managing resources in virtualized environment based on resource state information and policy information
US10140304B1 (en) Distributed metadata servers in a file system with separate metadata servers for file metadata and directory metadata
US11188429B2 (en) Building a highly-resilient system with failure independence in a disaggregated compute environment
US10915370B2 (en) Inter-host communication without data copy in disaggregated systems
US20200042494A1 (en) File systems with global and local naming
Anjanadevi et al. An efficient dynamic indexing and metadata model for storage in cloud environment
Zeng et al. KVLight: A lightweight key-value store for distributed access in cloud
De Leenheer et al. Deep Dive on SimpliVity's OmniStack
Aashabegum et al. Formation of Single and Multinode Clusters in Hadoop Distributed File System

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190109

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190819

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210929

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211015

R150 Certificate of patent or registration of utility model

Ref document number: 6963558

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150