JP7217580B2 - コンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理 - Google Patents

コンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理 Download PDF

Info

Publication number
JP7217580B2
JP7217580B2 JP2020544911A JP2020544911A JP7217580B2 JP 7217580 B2 JP7217580 B2 JP 7217580B2 JP 2020544911 A JP2020544911 A JP 2020544911A JP 2020544911 A JP2020544911 A JP 2020544911A JP 7217580 B2 JP7217580 B2 JP 7217580B2
Authority
JP
Japan
Prior art keywords
data
cluster
hosts
workload
cluster hosts
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020544911A
Other languages
English (en)
Other versions
JP2021517683A (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 JP2021517683A publication Critical patent/JP2021517683A/ja
Application granted granted Critical
Publication of JP7217580B2 publication Critical patent/JP7217580B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は一般的にコンピュータ・システムに関し、より具体的には分散型コンピューティング・コンポーネント内もしくはそれらの間またはその両方におけるワークロード管理およびスケジューリングに対するさまざまな実施形態に関する。
今日の社会において、コンピュータ・システムはありふれたものである。コンピュータ・システムは職場にも、家庭にも、学校にも見出されるだろう。コンピュータ・システムが次第に依拠され、簡便に、かつポータブルになるにつれて、インターネットが急激に成長した。現在ではこれまで以上に、個人およびビジネスがコンピューティング・サービスを提供し、かつ情報およびデータを保存するために分散型システム(一般的に「クラウド」と呼ばれる)に依拠している。コンピュータ・デバイスに関する技術的進歩の大きな前進が達成されるにつれて、コンピューティング・サービスを提供しかつデータ・コンテンツを保存するバック・エンド・サポート・システム内の成長および発展に対する要求がますます増加している。
コンピューティング・クラスタは短くクラスタと呼ばれ、これはともに接続された複数の協調的コンピュータ(たとえばソフトウェアもしくはハードウェアまたはその両方のリソースなどのコンピューティング・リソースとしても公知である)によってコンピューティング・ジョブを完了させるタイプのコンピュータ・システムである。同じ管理ドメイン内にあるこれらのコンピューティング・リソースは統一管理ポリシーを有し、全体としてユーザにサービスを提供する。クラスタ・システム内の単一のコンピュータは通常、ホストまたはコンピューティング・ノードと呼ばれる。
クラスタ・システムは多くの利点を有する。たとえば、ロード・バランス方式で作業するときのクラスタ・システムは、複数のコンピュータによって同じ作業を行うことによって、より高い効率を達成できる。加えてクラスタ・システムは、高可用性方式で作業してもよい。サーバのグループのマスタ・サーバとして活動しているサーバが故障したとき、そのサーバのグループの別のサーバがマスタ・サーバの役割を担ってマスタ・サーバの代わりにサービスを提供することによって、高いフォールト・トレランスを示し得る。
ジョブをスケジューリングするとき、処理されるべきジョブに対応するコンピューティング・リソースが割り当てられる。このプロセスは、クラスタ環境におけるジョブ・スケジューリングと呼ばれる。ジョブ・スケジューリングとは実際には、スケジューリング・ポリシーに従ってジョブおよびリソースの特徴に基づいて実行のための対応するリソースにジョブをマップするためのプロセスである。
クラスタ・コンピューティングにおいて、データにアクセスして処理するこれらのジョブ(すなわちワークロード)の効率は、ワークロードを処理するクラスタ・ホストと、ワークロードによってアクセスおよび処理されるデータを保存するクラスタ・ホストとの間の、データ・アクセスおよびネットワーク形成待ち時間の点での距離に顕著に依存する。データにアクセスするための距離が短くなる(データ・アクセスおよびネットワーク形成待ち時間がより短いことに関する)ほど、ワークロードの効率が高くなる。
本開示の目的は、ワークロードを自身のデータの近くに配置することによって、ワークロードによるデータのアクセスの待ち時間を低減させることである。具体的に、この開示において対処している課題は、ワークロードを自身の基礎データの近くに配置することによってワークロードおよびコンピュータ・システム全体の効率を増加させるために、ワークロードに関する知識(通常はワークロード管理システムから来る)と、データ・ストレージに関する知識(通常はストレージ・システムから来る)とをいかに効率的かつ自動的なやり方で組み合わせるかを決定することである。
したがって当該技術を改善するために、本明細書においては、プロセッサによるコンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理のためのさまざまな実施形態が開示されている。一実施形態において、単なる例として、方法は、データ要件エバリュエータ・モジュールとスケジューラ・モジュールとを含むようにコンピューティング・クラスタ内のワークロード・マネージャを構成するステップと、ワークロード・マネージャによってスケジューリングのための入力ワークロードを受信したことに応答して、(a)データ要件エバリュエータ・モジュールによってストレージ・システムから入力のセットを検索するステップであって、各々の入力は(i)入力ワークロードが新たなデータの入力/出力(I/O:Input/Output)に集中しているか、それとも既存データのI/Oに集中しているかの表示、(ii)入力ワークロードに関連するファイルのセットに対するデータ局在性の割合、および(iii)コンピューティング・クラスタ内のホストの各対に対して特定されたデータ・アクセス・コストのうちの少なくとも1つを含む、ステップと、(b)データ要件エバリュエータ・モジュールによって、データ・アクセス検討によって入力ワークロードを行うためにランク付けされたクラスタ・ホストのリストを生成するステップと、(c)クラスタ・ホストのランク付けされたリストをスケジューラ・モジュールに提供するステップと、(d)スケジューラ・モジュールによって、コンピューティング・クラスタ内の特定のホストに対する入力ワークロードのスケジューリングを生成するステップであって、生成されたスケジューリングはデータ・アクセス検討によって最適化されている、ステップとを含む。
前述の例示的実施形態に加えて、さまざまなその他のシステムおよびコンピュータ・プログラム製品の実施形態が提供されて、関連する利点を供給する。前述の概要は、以下の「発明を実施するための形態」においてさらに説明される概念の選択を簡略化した形で紹介するために提供されたものである。この概要は、請求される主題の重要な特徴または必須の特徴を識別することは意図されていないし、請求される主題の範囲の決定を助けるものとして用いられることも意図されていない。
この発明の利点が容易に理解されるようにするために、上記で簡単に説明された発明のより特定的な説明が、添付の図面に示された特定の実施形態を参照することによって与えられることとなる。これらの図面は発明の典型的な実施形態のみを示すものであり、したがってその範囲を制限するものとみなされるべきではないことを理解した上で、添付の図面の使用を通じた付加的な特定性および詳細によって、この発明が記載および説明されることとなる。
本発明の態様が実現され得るコンピュータ・ストレージ環境を示すブロック図である。 本発明の態様が実現され得るデータ・ストレージ・システムのハードウェア構造を示すブロック図である。 本発明の実施形態による例示的クラウド・コンピューティング環境を示すブロック図である。 本発明の実施形態による抽象化モデル・レイヤを示すブロック図である。 本発明の態様によるコンピューティング・クラスタにおけるジョブ・スケジューリングおよびワークロード管理のためのアーキテクチャを示すブロック図である。 本発明の態様によるコンピューティング・クラスタにおけるワークロードのデータ要件を評価するための例示的方法を示す流れ図である。 本発明の態様によるコンピューティング・クラスタ内のワークロードのファイルの所与のセットに対するデータ局在性の割合を示すブロック図である。 本発明の態様によるコンピューティング・クラスタにおける所与のワークロードに関連するデータ局在性情報を計算するためのアルゴリズムの例示的方法を示す流れ図である。 本発明の態様が実現され得るコンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理のための例示的方法を示す付加的な流れ図である。
前に言及したとおり、クラスタ・コンピューティングにおいて、データにアクセスして処理するワークロードの効率は、ワークロードを処理するクラスタ・ホストと、ワークロードによってアクセスおよび処理されるデータを保存するクラスタ・ホストとの間の、データ・アクセスおよびネットワーク形成待ち時間の点での距離に顕著に依存する。データにアクセスするための距離が短くなる(データ・アクセスおよびネットワーク形成待ち時間がより短いことに関する)ほど、ワークロードの効率が高くなる。
本開示の目的は、ワークロードを自身のデータの近くに配置することによって、ワークロードによるデータのアクセスの待ち時間を低減させることである。具体的に、この開示において対処している課題は、ワークロードを自身の基礎データの近くに配置することによってワークロードおよびコンピュータ・システム全体の効率を増加させるために、ワークロードに関する知識(通常はワークロード管理システムから来る)と、データ・ストレージに関する知識(通常はストレージ・システムから来る)とをいかに効率的かつ自動的なやり方で組み合わせるかを決定することである。
元々これらの課題のいくつかに対処することを試みた、いくつかの公知のスケジューリング技術が存在する。たとえば、現行の技術におけるラック認識スケジューリング機構は、MapReduceワークロードに対して、マップ・タスクをそのタスクに必要とされる入力データを保存するホストまたはその近くにスケジューリングする目的で存在する。この機構においては、クラスタ内のホストとネットワーク・グループとのマッピングを表すユーザの定めたトポロジ・スクリプトを用いて、ネットワークのトポロジが提出される。このトポロジは、ホストをラックにグループ分けし、ラックをデータ・センタにグループ分けしたツリーとして表される。このトポロジを用いて、ホスト間のネットワーク距離(待ち時間)が定められる。したがってワークロードをスケジューリングするときは、所与のワークロードに必要とされる入力データに最も近いホストからリソースが割り当てられることが試みられる。
サービス・インスタンスに対するインターフェースおよび外部プラグ・インを用いたデータ認識スケジューリング機構も存在する。この機構を使用して、データ属性を含むユーザが定めた表現が提示され、サービス・インスタンスに対するファイルにアクセスするコスト値を割り当てるための論理がユーザによって入力される。この機構において、コスト値は再びユーザによって定義および実施される論理によって算出され、ファイル粒度を用い、算出においてデータ局在性、データ分布、データ属性、およびネットワーク・コストがどのように使用されるべきかの指定は提供されない。言い換えると、この機構におけるすべての論理は特定されないユーザの実施に依存する。
既存の方法の課題は、これらの機構がデータ・アクセス・コストを提供するためにユーザが実施する論理および手順に依拠することである。このことの例は、ラック認識スケジューリングにおけるネットワーク・トポロジ・スクリプト、およびデータ認識スケジューリングにおけるサービス・インスタンスごとのファイル・アクセス・コストを生成するための論理を含む。さらに、これらの方法はファイル粒度に対するデータ・アクセス・コストを用いており、このファイル粒度をどのように集計してワークロード粒度にするかを定めることはユーザ論理に任されている。データ・アクセス・コストもユーザに入力されるために静的であると考えられ、たとえばラック認識スケジューリングなどの方法はアクセス・コストの定性的測定を用いる。さらに、既存の方法は通常、特定のタイプのワークロードおよびワークロードに対する特定のタイプのI/Oパターンをサポートしており、広範囲の可能なワークロード・タイプおよびI/Oパターンをサポートする一般的なものではない。
したがって、本明細書において検討される技術およびアルゴリズムは既存の方法の制限を克服するものであり、クラスタ化コンピューティングにおけるワークロード・スケジューリングおよびデータ局在性に関するより効率的で一般的な解決策を提供する。これらの技術は、ワークロード管理システムから検索されたワークロードに関する知識と、データ・ストレージ管理システムから検索されたデータ・ストレージに関する知識とを組み合わせて、自身のデータに近いワークロードの最適化した配置を生成することを含む。いくつかの実施形態において、関連するワークロードに関する知識は(a)ワークロードによってアクセスされるべきデータ、(b)クラスタ内の利用可能なコンピュート・リソースを有するホスト、および(c)クラスタ内のホスト間のネットワーク形成コストを含んでもよい。それに応じて、関連するデータ・ストレージに関する知識は(a)ワークロードにアクセスされるデータはクラスタ内のどの物理的位置に保存されているか、(b)クラスタ内の利用可能なストレージ・リソースを有するホスト、および(c)クラスタ内のホスト内およびホスト間のデータ・アクセス・コストを含んでもよい。
検討されるアーキテクチャは、ネットワークと相互接続され、かつ一緒に作業するように調整された1つまたは複数のホストからなるホストのクラスタを含む。クラスタ・ホスト間の協調は、少なくとも(a)クラスタ内のホストにおいて実行中のワークロードのスケジューリング、制御、およびモニタを行うワークロード管理システムと、(b)クラスタ内のホストからのデータを保存してそれへのアクセスを提供するデータ・ストレージ管理システムとによって維持される。
検討されるアーキテクチャにおけるいくつかの実施形態において、データ・ストレージ管理システムは、以下の方法の少なくとも1つを用いてデータを保存してもよい。(a)データはローカル・ストレージ・デバイスに保存されてもよく、各ローカル・ストレージ・デバイスはクラスタ内の複数のホストの1つに取り付けられており、(b)データはクラスタ内のホストからアクセス可能な共有ストレージ・デバイスに保存されてもよく、かつ(c)データはローカルおよび共有ストレージ・デバイスの組み合わせに保存されてもよい。さらに、所与のワークロードによってアクセスされるべきデータは、その所与のワークロードに関連付けられていてアクセスされることが予期されるデータ・ファイルまたはデータ・オブジェクトのリストとして指定されてもよい。さまざまな実施形態において、ワークロードによってアクセスされるデータのクラスタ内の位置は、ローカル・ストレージおよび共有ストレージの両方に対して指定されてもよく、ここで(a)共有ストレージ・デバイスは対応するホスト名を有し、(b)ローカル・ストレージ・デバイスはホスト名が割り当てられたホストに取り付けられ、かつ(c)共有またはローカル・ストレージ・デバイス内の位置はストレージ識別(ID:identification)を用いて指定される。よってこれに基づいて、ホスト名とストレージIDとの組み合わせは、両方のタイプのストレージ・デバイスに対しクラスタ内のグローバル・ストレージの位置を提供する。
クラスタ内のホスト内およびホスト間のデータ・アクセス・コストは、ホスト間のネットワーク形成待ち時間と、各ホスト内のストレージ・デバイス・アクセス待ち時間との組み合わせに基づいて算出される。たとえば、本明細書における発明の概念はいくつかの新たな効率的アルゴリズムを開示しており、そのアルゴリズムは(a)ホストのクラスタにおけるデータ・アクセス認識によってワークロードをスケジューリングするためのアルゴリズムであって、このアルゴリズムは最適化スケジューリングを算出するためにワークロードの異なるI/Oパターンを検討する、アルゴリズムと、(b)データ局在性情報およびデータ・アクセス・コストに基づいてホストのクラスタにおけるデータ・アクセス認識によってワークロードをスケジューリングするための好ましいホストの順序付きリストを算出するためのアルゴリズムと、(c)局在性集合の近似値を算出するためにファイルの効率的サブセットを選択し、局在性集合の近似値を更新するための効率的トリガを定めることによって、ホストのクラスタ内のファイルの大きなセットに対する局在性情報を集計するためのアルゴリズムとを含む。
本明細書において検討される新規のアルゴリズムを用いることで、上述の既存の方法の制限が克服され、一方で次のとおりのより効率的かつ一般的な解決策が提供される。(a)ユーザが実施する論理を必要とせずにすべての必要なエレメントが自動的に算出され、この自動的算出はデータ局在性、ネットワーク・コスト、全体のデータ・アクセス・コスト、および最適なワークロード配置情報を含み、(b)ワークロードごとのデータ・アクセス・コストが自動的に計算されてクラスタ全体で使用され、(c)クラスタおよびワークロードに変化が起こったときにこれらのデータ・アクセス・コストは自動的かつ動的に更新され、(d)データ・アクセス・コストの定量的測定が使用され(定性的ではなく)、(e)さまざまなタイプのワークロードが検討およびサポートされ、かつ(f)ワークロードに対するさまざまなタイプのI/Oパターンが検討およびサポートされる(すなわち、既存データのI/O、新たなデータのI/O、およびI/O集中的でないワークロード)。これらの概念を以下にさらに詳細に説明することとする。
ここで図1をみると、開示される発明の実施形態によるデータ処理ストレージ・システム20の概略的な図面が示されている。図1に示される特定のシステムは、発明の説明を容易にするために提供されるものである。しかし当業者が認識することとなるとおり、たとえば多様なアーキテクチャおよび能力を有する他のストレージ・システムなどの他のコンピューティング環境を用いてこの発明を実行することもできる。
ストレージ・システム20は、1つ以上のホスト・コンピュータ22から入力/出力(I/O)要求を受信し、この要求は論理ボリュームにおける論理アドレスにおいてデータを読取るかまたは書込むためのコマンドである。任意の数のホスト・コンピュータ22が、たとえばネットワークを用いるものなどの当該技術分野において公知である任意の手段によって、ストレージ・システム20に結合される。ここでは例として、ホスト・コンピュータ22とストレージ・システム20とは、データ接続24およびホスト・バス・アダプタ(HBA:Host Bus Adapters)28を組み込んだストレージ・エリア・ネットワーク(SAN:Storage Area Network)26によって結合されることが想定されている。論理アドレスは論理ボリューム内のデータ・ブロックの範囲を指定し、ここでは例として各ブロックは512バイトを含むことが想定されている。たとえば、所与のホスト・コンピュータ22におけるデータ処理アプリケーションにおいて用いられる10KBのデータ記録は20ブロックを必要とすることとなり、その所与のホスト・コンピュータはそれを論理ボリュームのブロック1,000から1,019を含む論理アドレスに保存されるものと指定してもよい。ストレージ・システム20はSANシステム内で、またはSANシステムとして動作してもよい。
ストレージ・システム20は、SAN26とプライベート・ネットワーク46との間でそれぞれデータ接続30および44を用い、かつそれぞれアダプタ32および42を組み込んで結合されたクラスタ化ストレージ・コントローラ34を含む。いくつかの構成において、アダプタ32および42は、ホストSANアダプタ(HSA:host SAN adapters)を含んでもよい。クラスタ化ストレージ・コントローラ34はストレージ・モジュール36のクラスタを実現し、ストレージ・モジュール36の各々はインターフェース38(アダプタ32および42の間で通信する)と、キャッシュ40とを含む。各ストレージ・モジュール36は、示されるとおりデータ接続48によっていくつかのストレージ・デバイス50に対する責を負う。
前述のとおり、各ストレージ・モジュール36はさらに所与のキャッシュ40を含む。しかし当然のことながら、ストレージ・システム20においてクラスタ化ストレージ・コントローラ34とともに用いられるキャッシュ40の数は、任意の便利な数であってもよい。ストレージ・システム20内のすべてのキャッシュ40は実質的に同じ方式で動作し、実質的に類似のエレメントを含んでいてもよいが、これは必要条件ではない。各々のキャッシュ40はほぼ等しいサイズであってもよく、例としてディスクを含み得る物理的ストレージ・デバイス50のセットと1対1対応で結合されることが想定されている。一実施形態において、物理的ストレージ・デバイスはこうしたディスクを含んでもよい。当業者は、本明細書における説明を異なるサイズのキャッシュに適合させることができるだろう。
ストレージ・デバイス50の各セットは、複数の低速もしくは高速またはその両方のアクセス時間のマス・ストレージ・デバイスを含み、それは以下の本明細書においては複数のハード・ディスクであることが想定されている。図1は、ストレージ・デバイス50のそれぞれのセットと結合されたキャッシュ40を示している。いくつかの構成において、ストレージ・デバイス50のセットは、異なるパフォーマンス特性を有し得る1つ以上のハード・ディスクを含む。I/Oコマンドに応答して、例として所与のキャッシュ40が、所与のストレージ・デバイス50のアドレス可能な物理的位置においてデータを読取るかまたは書込んでもよい。図1に示される実施形態において、キャッシュ40はストレージ・デバイス50に対する特定の制御機能を行うことができる。これらの制御機能は代替的に、キャッシュ40にリンクされたたとえばディスク・コントローラ(図示せず)などのハードウェア・デバイスによって実現されてもよい。
各ストレージ・モジュール36は、関連するキャッシュ40の状態を含む自身の状態をモニタし、たとえばブロック間隔をもたらす構成変化などの構成情報をストレージ・システム20の他のコンポーネントに送信するか、または物理的ストレージのセットに対するI/O要求を許容する速度を制限するように動作する。
コマンドおよびデータのHBA28からクラスタ化ストレージ・コントローラ34および各キャッシュ40へのルーティングは、ネットワークもしくはスイッチまたはその両方を通じて行われてもよい。ここでは例として、HBA28はSAN26の少なくとも1つのスイッチ(図示せず)によってストレージ・モジュール36に結合されてもよく、このスイッチはデジタル交差接続機能を有する任意の公知のタイプであり得る。付加的または代替的に、HBA28はストレージ・モジュール36に結合されてもよい。
いくつかの実施形態において、連続的な論理アドレスを有するデータが、モジュール36間および各々のモジュールのストレージ・デバイス内に分散され得る。代替的には、たとえばバイトまたはブロック・インターリービングなどのその他のアルゴリズムを用いてデータが分散され得る。一般的にこれによって、たとえばSAN内のボリュームまたはネットワークに取り付けられたストレージ内のファイルが一度に2つ以上の所与のストレージ・デバイス50から読取られるか、またはそこに書込まれることを可能にすることなどによって、帯域幅が増加する。しかし、この技術はさまざまなストレージ・デバイス間の協調を必要とし、実際にはストレージ・デバイスの任意の障害に対する複雑な備えと、たとえば分散データに関するパリティ情報を保存するための技術などの、エラー・チェック情報を取り扱うための戦略とを必要とし得る。実際に、論理ユニット・パーティションが十分に小さい粒度で分散されるとき、単一の論理ユニットに関連するデータはすべてのストレージ・デバイス50にまたがり得る。
実例を簡単にする目的のために明確に示されていないが、いくつかの実施形態において、クラスタ化ストレージ・コントローラ34はたとえばラック・マウント・システム、ミッドプレーン、もしくはバックプレーン、またはその組み合わせなどの特定のハードウェアとともに実現されるために適合されてもよいことを当業者は認識するだろう。実際に、一実施形態におけるプライベート・ネットワーク46は、バックプレーンを用いて実現されてもよい。再び当業者が認識するであろうとおり、たとえば前述のスイッチ、プロセッサ、コントローラ、およびメモリ・デバイスなどの付加的なハードウェアも、クラスタ化ストレージ・コントローラ34およびストレージ・システム20内のその他の場所に組み込まれてもよい。さらに、さまざまなソフトウェア・コンポーネント、オペレーティング・システム、およびファームウェアなどが1つのストレージ・システム20内に統合されてもよい。
図2は、本発明の実施形態によるホスト・コンピュータ・モニタリングを行うように構成された設備60の概略的な図面である。本明細書の記載において、ホスト・コンピュータ22、ストレージ・コントローラ34、およびそれらのそれぞれのコンポーネントは、識別番号に文字を添付することによって区別されることがあり、よって設備60は、SAN26Aを介してクラスタ化ストレージ・コントローラ34Aに結合された第1のホスト・コンピュータ22A(本明細書においては一次ホスト・コンピュータとも呼ばれる)と、SAN26Bを介してクラスタ化ストレージ・コントローラ34Bに結合された第2のホスト・コンピュータ22B(本明細書においては二次ホスト・コンピュータとも呼ばれる)とを含む。図2に示される構成において、ストレージ・コントローラ34Aおよび34Bは、設備SAN62を介して結合される。他の実施形態においては、本明細書に記載されることとなるとおり、SAN62と類似のSANか、仮想化ネットワーク形成接続か、または任意のその他のコンピュータに実現される媒体を介して、第1のホスト・コンピュータ22Aはクラスタ化ストレージ・コントローラ34Bに直接接続されてもよく、第2のホスト・コンピュータ22Bはクラスタ化ストレージ・コントローラ34Aに直接接続されてもよい。
ホスト・コンピュータ22Aはプロセッサ64Aと、メモリ66Aと、アダプタ68Aとを含む。アダプタ68Aは、データ接続24Aを介してSAN26Aに結合される。
上述したとおり、モジュール36Aはデータ接続48Aを介してストレージ・デバイス50Aに結合されており、かつアダプタ32Aおよび42Aと、キャッシュ40Aと、インターフェース38Aとを含む。モジュール36Aは、プロセッサ70Aおよびメモリ72Aも含む。以下の本明細書に詳細に説明されるとおり、プロセッサ70Aはホスト・コンピュータ22Aの接続状態を示すメトリクス74を確立して、そのメトリクスをメモリ72Aに保存するように構成される。いくつかの実施形態において、プロセッサ70Aはメトリクス74をストレージ・デバイス50Aに保存してもよい。
ホスト・コンピュータ22Bはプロセッサ64Bと、メモリ66Bと、アダプタ68Bとを含む。アダプタ68Bは、データ接続24Bを介してSAN26Bに結合される。
上述したとおり、モジュール36Bはデータ接続48Bを介してストレージ・デバイス50Bに結合されており、かつアダプタ32Bおよび42Bと、キャッシュ40Bと、インターフェース38Bとを含む。モジュール36Bは、プロセッサ70Bおよびメモリ72Bも含む。
プロセッサ64A、64B、70A、および70Bは通常、本明細書に記載される機能を行うようにソフトウェアにおいてプログラミングされた汎用目的コンピュータを含む。ソフトウェアは、たとえばネットワークを通じて電子的な形でホスト・コンピュータ22Aおよび22Bならびにモジュール36Aおよび36Bにダウンロードされてもよいし、たとえば光学、磁気、または電子メモリ媒体などの非一時的有形媒体において提供されてもよい。代替的には、プロセッサのいくつかもしくはすべての機能が専用もしくはプログラマブル・デジタル・ハードウェア・コンポーネントによって行われるか、またはハードウェアおよびソフトウェア・エレメントの組み合わせを用いて行われてもよい。
アダプタ32A、32B、42A、42B、68A、および68Bの例は、たとえばファイバ・チャネル(FC:Fibre Channel)アダプタ、インターネット・スモール・コンピュータ・システム・インターフェース(iSCSI:Internet Small Computer System Interface)アダプタ、ファイバ・チャネル・オーバー・イーサネット(R)(FCoE:Fibre Channel over Ethernet(R))アダプタ、およびInfiniband(TM)アダプタなどのスイッチド・ファブリック・アダプタを含む。
図2に示される構成は、SAN26Aおよび26Bを介してストレージ・コントローラ34Aおよび34Bに結合されたストレージ・ホスト・コンピュータ22Aおよび22Bを示しているが、その他の構成も本発明の範囲内にあるとみなされるべきである。たとえば、ホスト・コンピュータ22Aおよび22Bは、単一のSAN26を介して単一のストレージ・コントローラ34に結合され得る。
さらに、この開示は以下にクラウド・コンピューティングに対する詳細な説明を含むが、本明細書に述べられている教示の実現はクラウド・コンピューティング環境に限定されないことが予め理解される。むしろ本発明の実施形態は、現在公知であるかまたは後で開発される任意のその他のタイプのコンピューティング環境とともに実現され得る。
クラウド・コンピューティングは、最小限の管理努力またはサービスのプロバイダとの対話によって迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティング・リソース(例、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは少なくとも5つの特性と、少なくとも3つのサービス・モデルと、少なくとも4つの配置モデルとを含んでもよい。
特性は次のとおりである。
オンデマンド・セルフサービス。クラウド消費者は、たとえばサーバ時間およびネットワーク・ストレージなどのコンピューティング・ケイパビリティを、必要に応じて自動的に、サービスのプロバイダとの人的対話を必要とせずに一方的にプロビジョニングできる。
広範なネットワーク・アクセス。ケイパビリティはネットワークを通じて利用可能であり、異種シンまたはシック・クライアント・プラットフォーム(例、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソース・プール。マルチテナント・モデルを用いて複数の消費者にサービスするために、プロバイダのコンピューティング・リソースはプールされ、要求に従って異なる物理および仮想リソースが動的に割り当ておよび再割り当てされる。消費者は一般的に、提供されるリソースの正確な場所に対する制御も知識も有さないが、より高い抽象化レベルにおける場所(例、国、州、またはデータセンタ)を特定できてもよいという点で、場所独立性の意味が存在する。
迅速な順応性。ケイパビリティは、素早くスケール・アウトするために場合によっては自動的に、迅速かつ順応的にプロビジョニングされ、かつ素早くスケール・インするために迅速にリリースされ得る。消費者にとって、プロビジョニングのために利用可能なケイパビリティはしばしば無制限にみえ、任意のときに任意の量が購入され得る。
サービスの測定。クラウド・システムは、サービスのタイプ(例、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に対して適切な何らかの抽象化レベルにおいて計測ケイパビリティを利用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用をモニタ、制御、および報告して、使用されるサービスのプロバイダおよび消費者の両方に対する透明性を提供できる。
サービス・モデルは次のとおりである。
サービスとしてのソフトウェア(SaaS:Software as a Service)。消費者に提供されるケイパビリティは、クラウド・インフラストラクチャにおいて実行されるプロバイダのアプリケーションの使用である。アプリケーションは、さまざまなクライアント・デバイスからたとえばウェブ・ブラウザ(例、ウェブ・ベースのeメール)などのシン・クライアント・インターフェースを通じてアクセス可能である。消費者はネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション・ケイパビリティさえも含む基礎的なクラウド・インフラストラクチャを管理または制御することはなく、例外となり得るのは限られたユーザ特有のアプリケーション構成設定である。
サービスとしてのプラットフォーム(PaaS:Platform as a Service)。消費者に提供されるケイパビリティは、プロバイダによってサポートされるプログラミング言語およびツールを用いて作成された、消費者が作成または取得したアプリケーションのクラウド・インフラストラクチャへの配置である。消費者はネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎的なクラウド・インフラストラクチャを管理または制御することはないが、配置されたアプリケーションおよびおそらくはアプリケーション・ホスティング環境構成に対する制御を有する。
サービスとしてのインフラストラクチャ(IaaS:Infrastruture as a Service)。消費者に提供されるケイパビリティは、オペレーティング・システムおよびアプリケーションを含み得る、消費者が任意のソフトウェアを配置および実行することが可能な処理、ストレージ、ネットワーク、およびその他の基本的なコンピューティング・リソースのプロビジョニングである。消費者は基礎的なクラウド・インフラストラクチャを管理または制御することはないが、オペレーティング・システム、ストレージ、配置されたアプリケーションに対する制御、およびおそらくはネットワーク形成コンポーネント(例、ホスト・ファイアウォール)の選択に対する限られた制御を有する。
配置モデルは次のとおりである。
プライベート・クラウド。このクラウド・インフラストラクチャは、ある組織に対してのみ動作される。これはその組織または第3者によって管理されてもよく、オンプレミスまたはオフプレミスに存在してもよい。
コミュニティ・クラウド。このクラウド・インフラストラクチャはいくつかの組織によって共有され、共通する関心事項(例、任務、セキュリティ要件、ポリシー、およびコンプライアンスの検討)を有する特定のコミュニティをサポートする。これはそれらの組織または第3者によって管理されてもよく、オンプレミスまたはオフプレミスに存在してもよい。
パブリック・クラウド。このクラウド・インフラストラクチャは、一般人または大規模な産業グループに対して利用可能にされ、クラウド・サービスを販売する組織が所有している。
ハイブリッド・クラウド。このクラウド・インフラストラクチャは2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合体であり、それらのクラウドは一意のエンティティを留めるが、データおよびアプリケーション・ポータビリティを可能にする標準または独自の技術(例、クラウド間のロード・バランシングのためのクラウド・バースティング)によってともに結合される。
クラウド・コンピューティング環境はサービス指向型であり、ステートレス性、低結合性、モジュラリティ、および意味的な相互運用性に焦点を合わせている。クラウド・コンピューティングの中心には、相互接続されたノードおよびストレージ・システム(例、ストレージ・システム20)のネットワークを含むインフラストラクチャがある。
ここで図3を参照すると、例示的なクラウド・コンピューティング環境52が示されている。示されるとおり、クラウド・コンピューティング環境52は1つ以上のストレージ・システム20およびクラウド・コンピューティング・ノードを含み、たとえばパーソナル・デジタル・アシスタント(PDA:personal digital assistant)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車のコンピュータ・システム54N、あるいはその組み合わせなどの、クラウド消費者によって用いられるローカル・コンピュータ・デバイスが、このクラウド・コンピューティング・ノードによって通信してもよい。ストレージ・システム20とクラウド・ノードとは互いに通信してもよい。それらは、たとえば本明細書に上述したプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせなどの1つ以上のネットワークにおいて、物理的または仮想的にグループ化(図示せず)されてもよい。このことは、クラウド・コンピューティング環境52がインフラストラクチャ、プラットフォーム、もしくはソフトウェア、またはその組み合わせを、クラウド消費者がそれに対するリソースをローカル・コンピュータ・デバイスにおいて維持する必要のないサービスとして提供することを可能にする。図3に示されるコンピュータ・デバイス54A~Nのタイプは単なる例示であることが意図されており、ストレージ・システム20、クラウド・コンピューティング・ノード、およびクラウド・コンピューティング環境52は、任意のタイプのネットワークもしくはネットワーク・アドレス可能接続(例、ウェブ・ブラウザを使用するもの)またはその両方を通じて、任意のタイプのコンピュータ・デバイスと通信できることが理解される。
ここで図4を参照すると、クラウド・コンピューティング環境52(図3)によって提供される機能抽象化レイヤのセットが示されている。図4に示されるコンポーネント、レイヤ、および機能は単なる例示であることが意図されており、本発明の実施形態はこれに限定されないことが予め理解されるべきである。示されるとおり、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ80は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム81、RISC(縮小命令セット・コンピュータ(Reduced Instruction Set Computer))アーキテクチャ・ベースのサーバ82、サーバ83、ブレード・サーバ84、ストレージ・デバイス85、ならびにネットワークおよびネットワーク形成コンポーネント86を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア87およびデータベース・ソフトウェア88を含む。
仮想化レイヤ90は抽象化レイヤを提供し、この抽象化レイヤから仮想エンティティの以下の例が提供されてもよい。仮想サーバ91、仮想ストレージ92、仮想プライベート・ネットワークを含む仮想ネットワーク93、仮想アプリケーションおよびオペレーティング・システム94、ならびに仮想クライアント95。
一例において、管理レイヤ100は以下に記載される機能を提供してもよい。リソース・プロビジョニング101は、クラウド・コンピューティング環境内でタスクを行うために使用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。計測および価格決定102は、クラウド・コンピューティング環境内でリソースが使用される際のコスト追跡と、これらのリソースの消費に対する請求書またはインボイスの送付とを提供する。一例において、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド消費者およびタスクに対するアイデンティティ検証、ならびにデータおよびその他のリソースの保護を提供する。ユーザ・ポータル103は、消費者およびシステム管理者に対するクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理104は、必要とされるサービス・レベルが満たされるようにクラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA:Service Level Agreement)計画および実現105は、SLAによって将来の要求が予測されるクラウド・コンピューティング・リソースに対する事前の取り決めおよびその調達を提供する。
ワークロード・レイヤ110は、クラウド・コンピューティング環境が使用され得る機能の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション111、ソフトウェア開発およびライフサイクル管理112、仮想教室の教育配信113、データ分析処理114、トランザクション処理115、ならびに本発明の例示される実施形態の状況におけるさまざまなワークロードおよびジョブ・スケジューリング機能116を含む。ワークロードおよびジョブ・スケジューリング機能116は、本発明の例示される実施形態のさまざまな目的を達成するために、たとえばハードウェアおよびソフトウェア80、仮想化90、管理100、およびその他のワークロード110(たとえばデータ分析処理114など)におけるものなど、さまざまな抽象化レイヤのその他の部分とともに働いてもよいことを当業者は認識するだろう。
前述のとおり、本明細書に記載される機構の結果として得られる目標は、データ・アクセス認識によって最適化されたクラスタ・ホストに対する所与のワークロードのスケジューリングを生成することによって、ワークロードがアクセスする必要があるデータが他のクラスタ・ホストに比べて最も最適に入手可能または達成可能であるようなクラスタ・ホストにおいてワークロードが行われるようにすることである。この目標を実現するための、コンピューティング・クラスタにおけるワークロード管理およびスケジューリングのためのアーキテクチャ500が図5に提供されている。
アーキテクチャ500は前述のストレージ・システム20を含み、このストレージ・システム20は複数のモジュールを中に含んだワークロード・マネージャ502と通信しており、そのモジュールは少なくともデータ要件エバリュエータ・モジュール506と、スケジューラ・モジュール510とを含む。なお、当業者が認識するであろうとおり、アーキテクチャ500内に記載される複数のモジュール(すなわち、データ要件エバリュエータ・モジュール506およびスケジューラ・モジュール510)は、本明細書において提供される機能を達成するために各々がコンピュータ実行可能コード部分を含んでもよいし、分散型コンピューティング環境内の1つ以上の物理的ハードウェア・モジュール(単数または複数)を含んでもよい。さらに、ワークロード・マネージャ502は、現在開示されているもの以外の付加的なモジュールをさらに含んでもよい。
説明されることとなるとおり、さまざまな実施形態において、データ要件エバリュエータ・モジュール506は、ストレージ・システム20およびワークロード・マネージャ502内の他のモジュールから少なくとも3つのタイプの入力(ブロック504として参照される)を受信する。次いでデータ要件エバリュエータ・モジュール506は、それぞれのモジュールから受信した入力に関連するデータ・アクセス検討によって所与のワークロードを実行するためにランク付けされたクラスタ・ホストのリストを生成する。
データ要件エバリュエータ506によって受信される第1の入力504は、所与のワークロードに関連するファイルのセットに対して生成されたデータ局在性の割合を含んでもよい。このデータ局在性の割合の入力は、所与のワークロードに関連するファイルのセットに対して、クラスタ内の各々のホストに保存されているファイルのセットの合計データの割合を特定する。言い換えると、データ局在性の割合の入力は、ファイルのセットの合計データのうちのどの割合が、基礎データを保存する異なるそれぞれのホストに保存されているかを示す。
データ要件エバリュエータ506によって受信される第2の入力504は、クラスタ内のホストの各対に対して特定されるデータ・アクセス・コストを含んでもよい。このデータ・アクセス・コストの入力は、クラスタ内の各ホストに対して、クラスタ内の任意の他のホストに保存されたデータにアクセスするための(例、待ち時間およびその他の検討に関する)コストを特定する。
前述の入力に加えて、本明細書によって特定されるデータ要件エバリュエータ・モジュール506によって、以下を含むさらなる入力504が受信されてもよい。(a)現在のワークロードは新たなデータのI/Oに集中しているか、それとも既存データのI/Oに集中しているかに関する表示。この表示入力は通常、ワークロード属性に対する特定の情報を追跡するワークロード・マネージャ502内の他のモジュール、もしくはワークロードI/Oパターンに対する情報を追跡し得るストレージ・システム20、またはその両方から検索され得る。(b)クラスタ内のコンピュート・リソースの可用性。この入力は通常、クラスタ内のコンピュート・リソース可用性を追跡するワークロード・マネージャ502内の他のモジュールから検索され得る。加えて(c)クラスタ内のストレージ・リソース(空きストレージ・スペース)の可用性。この入力は通常、ストレージ・システム20から検索され得る。前に特定された入力を与えられると、データ要件エバリュエータ・モジュール506は、次いで各入力に関連する情報を用いて、データ・アクセス検討によって所与のワークロードを実行するためにランク付けされたクラスタ・ホストのリスト508を生成する。
さまざまな実施形態において、スケジューラ・モジュール510は、データ要件エバリュエータ・モジュール506からデータ・アクセス検討によって所与のワークロードを実行するためにランク付けされたクラスタ・ホストのリストを受信し、その後特定のクラスタ・ホストに対する所与のワークロードのスケジューリングを出力512として生成し、この出力スケジューリングはデータ・アクセス認識によって最適化されている。
さまざまな実施形態において、ストレージ・システム20は、所与のワークロードを行うために必要とされる基礎データを保存し、このデータに対するアクセスを提供し、かつワークロード・マネージャ502内のさまざまなモジュールに前述の入力を提供する。
図6は、本発明の態様によるコンピューティング・クラスタにおけるワークロードのデータ要件を評価するための例示的方法/アルゴリズム600を示す流れ図を示している。より具体的には、方法600はデータ要件エバリュエータ・モジュール506によって適用される検討アルゴリズムを特定して、データ・アクセス検討によって所与のワークロードを実行するためにランク付けされたクラスタ・ホストのリストを生成する。データ要件エバリュエータ・モジュール506のアルゴリズムは、本明細書によって特定される少なくとも3つの例示的シナリオを取り扱う。
さまざまな実施形態において、方法600は、特に図1~4に示される環境のいずれかにおいて本発明によって行われてもよい。当然、本記載を読んだ当業者が理解するであろうとおり、方法600には図6に特定的に記載されるものよりも多いかまたは少ない動作が含まれてもよい。
方法600の各々のステップは、動作環境の任意の好適なコンポーネントによって行われてもよい。たとえばさまざまな実施形態において、方法600は、プロセッサまたは1つ以上のプロセッサを内部に有する何らかのその他のデバイスによって、部分的または全体的に行われてもよい。たとえば処理回路(単数または複数)、チップ(単数または複数)、および/あるいは、ハードウェアもしくはソフトウェアまたはその両方において実現され、好ましくは少なくとも1つのハードウェア・コンポーネントを有するモジュール(単数または複数)などのプロセッサは、方法600の1つ以上のステップを行うために任意のデバイスにおいて使用されてもよい。例示的なプロセッサは、中央処理ユニット(CPU:central processing unit)、特定用途向け集積回路(ASIC:application specific integrated circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)など、その組み合わせ、または当該技術分野において公知の任意のその他の好適なコンピュータ・デバイスを含むが、それに限定されない。
第1のシナリオにおいて、ワークロードは既存データのI/Oに集中している。すなわち、ワークロードは、たとえばストレージ・システム20などに保存された既存データの使用に集中していると判定される。よって、ブロック602において開始し、ブロック604において所与のワークロードが確かにI/Oに集中しているとき、さらにブロック606においてワークロードが既存データのI/Oに集中していると判定されたとき、アルゴリズム600はブロック610において、データ局在性およびデータ・アクセス・コスト情報による好ましいホストの順序付きリストを生成する。次いで、方法600はブロック614において終了する。
第2のシナリオにおいて、ワークロードは新たなデータのI/Oに集中している。すなわち、ワークロードは、たとえばストレージ・システム20などに保存されるべき新たなデータの作成に集中していると判定される。よってブロック604に戻って、ここで所与のワークロードが確かにI/Oに集中していると判定され、さらにブロック606においてワークロードが新たなデータの作成に集中していると判定されたとき、アルゴリズム600はブロック608において、利用可能なストレージによる好ましいホストの順序付きリストを生成する。具体的には、あるホストがクラスタ内の他のホストと比べてより多くの利用可能なストレージ・スペースに関連付けられているとき、生成されたリストにおいて、このより多くの利用可能なストレージ・スペースを有するホストのランキングは、リストのその他のホストと比べてより高くなる。次いで、方法600はブロック614において終了する。
第3のシナリオにおいて、ワークロードはI/Oに集中していないと判定される。よってブロック604に戻って、ここでワークロードがI/Oに集中していないと判定されるとき、アルゴリズム600はブロック612において好ましいホストの空リストを生成して、データ・アクセス検討に基づく好ましいホストは存在しないことを示す。次いで、方法600はブロック614において終了する。
以下に、データ局在性およびデータ・アクセス・コスト情報による好ましいホストの順序付きリストを生成するために考慮されるアルゴリズムを規定する。このアルゴリズムは、既存データのI/Oに集中していると判定されたワークロードのシナリオを取り扱うために、データ要件エバリュエータ・モジュール506によって適用される。このアルゴリズムは入力として、データ局在性の割合およびデータ・アクセス・コスト(どちらの入力も以下にさらに詳細に考察される)を受信し、出力として、ストレージ・システム20に保存された既存データを使用するときのこうしたI/Oに集中しているワークロードに対して特定的に最適化された好ましいホストの順序付きリストを生成する。
入力:データ局在性の割合
いくつかの実施形態において、データ要件エバリュエータ・モジュール506のアルゴリズムによって受信される第1の入力は、所与のワークロードに関連するファイルのセットに対して生成されたデータ局在性の割合である。このデータ局在性の割合の入力は、所与のワークロードに関連するファイルのセットに対して、各々のクラスタ・ホストに保存されているファイルのセットの合計データの割合を特定する。この入力を生成するために、各ファイルに対する局在性情報(すなわち、各々のクラスタ・ホストに保存された各ファイルのデータの割合)が集計されて、ワークロードに関連するファイルのセットのレベルにされる。
この実施形態において、クラスタ内の各ホストに対して、0(そのホストにはファイルのセットのデータが保存されていないことを示す)から1(そのホストにファイルのセットのすべてのデータが保存されていることを示す)の範囲の値が算出される。なお、データのセクションがクラスタ内の複数のホストに保存されることもあり得る。さらに注記しておくと、以後の本明細書におけるD[H]の参照は、(以下の第2および第3の入力においてさらに説明されることとなるとおり)ホストHに保存されるワークロードに関連するファイルのセットの合計サイズの割合を示す。
図7は、コンピューティング・クラスタ内のワークロードのファイルの所与のセットに対するデータ局在性の割合の入力700の例のブロック図を示している。この入力700の例は、クラスタ内の3つのホスト、すなわちホスト1(ブロック702)、ホスト2(ブロック704)、およびホスト3(ブロック706)を示している。所与のワークロードに関連するファイルのセットの合計サイズは、マークなしのバーと線入りのバーとを含む集計バーとして示されており、ここで集計バーはファイルのセットの合計サイズの100%を表している。各ホストに保存される所与のワークロードに関連するファイルのセットの合計サイズの割合(パーセンテージとして参照される)は、したがって各マークなしバーの下の線入りバーとして示されており、ホスト1(702)またはD[H1]はファイルのセットの合計データの40%または0.4の値を有し、ホスト2(704)はD[H2]としてファイルのセットの合計データの20%または0.2の値を有し、ホスト3(706)はD[H3]としてファイルのセットの合計データの80%または0.8の値を有することが例示される。なおこの例においては、上記に参照されるとおり、ファイルのセットのデータのセクションがクラスタ内の複数のホストに保存されることがあるため、すべてのホストの合計パーセンテージ(40%+20%+80%)は100%より大きいパーセンテージに等しい。
入力:データ・アクセス・コスト
いくつかの実施形態において、データ要件エバリュエータ・モジュール506のアルゴリズムによって受信される第2の入力は、クラスタ内のホストの各対に対して特定されるデータ・アクセス・コストである。この情報はクラスタ全体に対して算出され、言い換えると、クラスタ全体のホストの各対に対してデータ・アクセス・コストが評価される。現在のクラスタ・トポロジに対して、この算出情報は静的であるが、クラスタ内のトポロジ変化の判定が行われるとき(例、クラスタに対するホストの追加/除去)、データ要件エバリュエータ・モジュール506内で新たなクラスタ・トポロジに対するデータ・アクセス・コスト情報が更新される。
前述のとおり、クラスタ内のホストの各対に対してデータ・アクセス・コスト情報が算出されて、行列で表されてもよく、その行列表記は次のとおりであってもよい。
C[H,H]=ホストHからホストHに保存されたデータにアクセスするコスト
行列内の各セルに対する値の範囲は0から1の範囲であってもよく、ここで0=ローカル・ホスト・アクセス、および1=最大ネットワーク・アクセス・コスト(例、予め定められた待ち時間閾値を超える最大ネットワーク・アクセス・コスト)である。さまざまな実施形態において、各ホストにおいて実行される既存の機能を用いて、クラスタ内のその他のホストの各々に対してI/Oを行い、I/Oの待ち時間を測定し、その統計的メトリクスを計算することによって、データ・アクセス・コストが自動的に算出されてもよい。クラスタに新たなホストが加わるとき、新たなホストに対する待ち時間を測定するために、クラスタ内の既存のホストの各々に加えて新たなホストに対してこの機能が実行されるべきである。それに加えて、さらなるオプションは、クラスタ・ホスト間の進行中のデータに関するネットワーク形成を追跡し、この情報に基づいてデータ・アクセス・コストを推論することを含んでもよい。
以下の表100は、前に特定した値の範囲を用いたクラスタ内の3つのホストに対するデータ・アクセス・コストの例を示すものである。この例において、ホスト2および3は互いにより近く(すなわち、1未満の値の範囲を有する)、ホスト1は特にホスト3からより遠い(すなわち、1の値の範囲を有する)。
Figure 0007217580000001
好ましいホストの順序付きリストを算出する
さまざまな実施形態において、前述の2つの入力を与えられると、次いでデータ要件エバリュエータ・モジュール506のアルゴリズムは、所与のワークロードを走らせる(実行する)ための好ましいホストの順序付きリストを生成する。ホストの順序付けは、各ホストHに対する、以下に提案される式によるホストHにおいて実行されるワークロードに対するデータ・アクセスに対する期待コストの計算に基づいて生成される。
Figure 0007217580000002
規定された式は、ホストH以外のホストからデータを検索する期待コストと、このイベントの確率(すなわち、ホストH以外のホストからデータを検索する確率)とを掛けることによって、EC[H]として示される、ホストHにおいて実行されるワークロードに対するデータ・アクセスに対する期待コストの計算を可能にする。前に明確にされたとおり、ホストH(すなわち、ローカル・ホスト)に対するデータ・アクセスのコストは、ネットワーク待ち時間の点ではゼロであることが付加的に想定される。
与えられた式に示されるとおり、ホストH以外のホストからデータを検索する確率は、ホストHに保存されていない所与のワークロードに関連するファイルの合計サイズの割合によって与えられる。この要素は、前述のデータ局在性の割合の入力に基づいて計算されてもよい。さらに、ホストH以外のホストからデータを検索する期待コストは、ホストH以外のクラスタ内のすべてのホストにわたって、ホストHにおいて実行されるワークロードによってホストHからデータを検索するコストと、ホストHにおいて実行されるワークロードによってホストHからデータを検索する確率とを掛けたものを集約することによって与えられる。この確率を算出するために提案される方法は、次の式において特定される。
Figure 0007217580000003
確率を計算するためのこの式において、ホストHにおいて実行されるワークロードによってホストHからデータを検索する確率は、ホストHに保存されたデータ部分の割合を、ホストH以外のクラスタ内のすべてのホストに保存された合計データの割合で割ることによって算出される。既存データのI/Oに集中したワークロードに対して最適化された好ましいホストの出力順序付きリストを生成するために、ホストは自身の算出されたEC[H]値の昇順に基づいて順序付けされる。すなわち、ホストHのEC[H]値が低いほど、ホストHが所与のワークロードを実行するために選択される優先度が高くなる。
いくつかの実施形態において、ワークロード・マネージャ502のスケジューラ・モジュール510は、所与の(入力)ワークロードを行うためのリソース割り当て要求を受信し、それにはデータ要件エバリュエータ・モジュール506によって計算されたデータ・アクセス検討によって所与のワークロードを実行するためにランク付けされた好ましいホストの順序付きリストが付随する。
次いでスケジューラ・モジュール510は、割り当て要求を満たすように、所与のワークロードに関連するリソース割り当て要求および好ましいホストの順序付きリスト(リストが空でないとき)によって、好ましいホストからコンピュート・リソースを割り当てることを試みる。スケジューラ・モジュール510の出力は、クラスタ・ホストに対する所与のワークロードのスケジューリングであり、このスケジューリングはデータ・アクセス認識によって最適化されており、クラスタのこれらのホスト内に割り当てられたコンピュート・リソースを用いて、所与のワークロードが行われる。
さまざまな実施形態において、局在性情報をファイル・レベルからファイルのセットのレベルに集計するためのアルゴリズムは、以下によって行われる。
(1)最初に、ストレージ・サイズ・カウンタのセットがリセットされ、ここで各カウンタはクラスタ内のホストに割り当てられている。さらに、クラスタに対する全体のストレージ・サイズ・カウンタが付加的にリセットされる。これらのカウンタは、クラスタの各ホストに保存されたデータの割合のデータ・サイズを特定する。(2)その後、セット内のすべてのファイルがスキャンされ、各ファイルに対して以下が行われる。(a)現在のファイルの局在性情報が検索される(すなわち、各々のクラスタ・ホストに保存されたファイルのデータ・サイズ)。この情報は通常、ストレージ・システム20から得られる。(b)ホストのストレージ・サイズ・カウンタに現在のファイルの局在性情報が加えられる。加えて(c)全体のストレージ・サイズ・カウンタに現在のファイルの合計サイズが加えられる。(3)次いで、全体のストレージ・サイズ・カウンタから各ホストのストレージ・サイズ・カウンタの割合が計算される。
所与のワークロードに関連するファイルのセットが大きい場合は、そのファイルのセットの各個々のファイルの局在性情報のクエリを行うことはパフォーマンスの点から禁じられることがある。こうした大きいファイルのセットの場合(すなわち、セット内のファイルの数が予め定められた閾値を超えているファイルのセット)に対して、以下の最適化が検討される。1つの最適化は、ファイルのセットに対する局在性情報の近似値を計算および維持することを含んでもよい。たとえば、近似値はファイルのセットからのファイルのサブセットのクエリを行うことに基づいていてもよく、ここでファイルのサブセットは以下の基準の任意の組み合わせであり得る。(a)ファイルのセットの大きい方からKのファイル、(b)最高のI/Oアクセスによって特徴付けられるLのファイル、もしくは(c)一番最近のI/Oアクセスを有するMのファイル、またはその組み合わせ。
この例において、K、L、およびMは、ファイルのセットにおけるファイルの総数よりも小さい予め定められた値である。K、L、およびMの値は、結果として得られる数のファイルの局在性情報のクエリを行うための典型的なコストもしくは時間またはその両方が、許容可能な閾値以下となるように選択されるべきである。ファイルのサイズ、I/Oアクセス・パターン、およびアクセス・リーセンシのメトリクスは経時的に動的であるため、これらのメトリクスは時間の最近のウィンドウに対する統計的な値として算出されてもよい。
いくつかの実施形態においては、たとえば各々の基準に対するファイルのメトリクスに基づいて各ファイルに対する重み付き集計メトリクスを算出することなどによって、記載された基準の組み合わせが計算されてもよい。したがって、検討される技術は所与の基準に基づいてファイルのセットからファイルのサブセットを選択し、ファイルのサブセット内のファイルに対する局在性情報のクエリを行い、この情報を集計し、この情報に基づいてファイルのフル・セットに対する局在性情報の近似値を更新する。この近似値は付加的に維持されて、実行のために提出されるワークロードの特定のインスタンスではなく、ワークロードのタイプ(またはテンプレート)に関連付けられてもよい。
局在性情報のクエリのオーバーヘッドをさらに低減させるために、ファイルのセットに対する局在性情報の近似値を更新するためのトリガを定めるための方法がさらに提案される。局在性情報の近似値を更新するためのトリガを定めるステップは、以下の基準の任意の組み合わせに基づいていてもよく、よってトリガは以下を含んでもよい。(a)ワークロードのタイプ(またはテンプレート)の登録、(b)クラスタ内で実行するワークロード・タイプのインスタンスを配置するための要求、もしくは(c)近似値の前回の更新から経過した期間が指定された閾値を超えたことの検出、またはその組み合わせ。したがって、トリガの例はワークロード・タイプのインスタンスを配置するための要求を含んでもよく、この要求は、最新の更新時間との差が指定された閾値以上である時間に提出される。
図8は、前述の概念を例示する、コンピューティング・クラスタにおける所与のワークロードに関連するデータ局在性情報を計算するためのアルゴリズムの例示的方法を示す流れ図を示す。さまざまな実施形態において、方法800は、特に図1~4に示される環境のいずれかにおいて本発明によって行われてもよい。当然、本記載を読んだ当業者が理解するであろうとおり、方法800には図8に特定的に記載されるものよりも多いかまたは少ない動作が含まれてもよい。
方法800の各々のステップは、動作環境の任意の好適なコンポーネントによって行われてもよい。たとえばさまざまな実施形態において、方法800は、プロセッサまたは1つ以上のプロセッサを内部に有する何らかのその他のデバイスによって、部分的または全体的に行われてもよい。たとえば処理回路(単数または複数)、チップ(単数または複数)、および/あるいは、ハードウェアもしくはソフトウェアまたはその両方において実現され、好ましくは少なくとも1つのハードウェア・コンポーネントを有するモジュール(単数または複数)などのプロセッサは、方法800の1つ以上のステップを行うために任意のデバイスにおいて使用されてもよい。例示的なプロセッサは、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、その組み合わせ、または当該技術分野において公知の任意のその他の好適なコンピュータ・デバイスを含むが、それに限定されない。
方法800はブロック802において開始され、データ局在性近似値を更新するためのトリガ(前に特定された基準に基づく)が起こったかどうかが判定される(ブロック804)。トリガが検出されていないとき、方法800はブロック812に進んでトリガを待ち、ブロック804に戻る。ブロック804においてトリガが検出されたとき、ブロック806においてデータ局在性近似値を更新するために、ワークロードに関連するファイルのセット内からファイルのサブセットが選択される。ブロック808において、ファイルのサブセット内のこれらのファイルに対する局在性情報のクエリが行われ、この局在性情報がファイル・レベルから集計されてファイルのサブセットのレベルにされる。最後にブロック810において、ファイルのサブセットに対する集計された局在性情報を用いて、データ要件エバリュエータ・モジュール506内でデータ局在性近似値が更新され、方法800はブロック812に進んで、別のトリガ・イベントを待つ。なお前に特定されたとおり、ブロック810Aに参照されるとおり、データ局在性近似値は実行のために提出されるワークロードの特定のインスタンスではなく、ワークロードのタイプ(またはテンプレート)に関連付けられてもよい。
図9は、本発明の態様が実現され得るコンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理のための例示的方法を示す付加的な流れ図を示す。さまざまな実施形態において、方法900は、特に図1~4に示される環境のいずれかにおいて本発明によって行われてもよい。当然、本記載を読んだ当業者が理解するであろうとおり、方法900には図9に特定的に記載されるものよりも多いかまたは少ない動作が含まれてもよい。
方法900の各々のステップは、動作環境の任意の好適なコンポーネントによって行われてもよい。たとえばさまざまな実施形態において、方法900は、プロセッサまたは1つ以上のプロセッサを内部に有する何らかのその他のデバイスによって、部分的または全体的に行われてもよい。たとえば処理回路(単数または複数)、チップ(単数または複数)、および/あるいは、ハードウェアもしくはソフトウェアまたはその両方において実現され、好ましくは少なくとも1つのハードウェア・コンポーネントを有するモジュール(単数または複数)などのプロセッサは、方法900の1つ以上のステップを行うために任意のデバイスにおいて使用されてもよい。例示的なプロセッサは、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、その組み合わせ、または当該技術分野において公知の任意のその他の好適なコンピュータ・デバイスを含むが、それに限定されない。
方法900はブロック902において開始され、ブロック904のとおり、コンピューティング・クラスタ内のワークロード・マネージャが、データ要件エバリュエータ・モジュールおよびスケジューラ・モジュールを含むように構成される。ブロック906のとおり、ワークロード・マネージャによってスケジューリングのための入力ワークロードを受信したことに応答して、(a)データ要件エバリュエータ・モジュールはストレージ・システムから入力のセットを検索し、各々の入力は(i)入力ワークロードが新たなデータの入力/出力(I/O)に集中しているか、それとも既存データのI/Oに集中しているかの表示と、(ii)入力ワークロードに関連するファイルのセットに対するデータ局在性の割合と、(iii)コンピューティング・クラスタ内のホストの各対に対して特定されたデータ・アクセス・コストとのうちの少なくとも1つ以上を含む。その後ブロック908において、データ要件エバリュエータ・モジュールは、データ・アクセス検討によって入力ワークロードを行うためにランク付けされたクラスタ・ホストのリストを生成する。ブロック910において、クラスタ・ホストのランク付けされたリストはスケジューラ・モジュールに提供され、ブロック912において、スケジューラ・モジュールはデータ・アクセス検討によって最適化されたクラスタ・ホストのランク付けされたリスト内の特定のクラスタ・ホストに対する入力ワークロードのスケジューリングを生成する。方法900はブロック914において終了する。
本発明はシステム、方法、もしくはコンピュータ・プログラム製品、またはその組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を行わせるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含んでもよい。
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および保存できる有形デバイスであり得る。コンピュータ可読ストレージ媒体は、たとえば電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の好適な組み合わせなどであってもよいが、それに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的リストは以下を含む。ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、リード・オンリ・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリ・メモリ(erasable programmable read-only memory)(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、機械的にコード化されたデバイス、たとえばパンチ・カードまたは記録された命令を有する溝の中の隆起構造など、および前述の任意の好適な組み合わせ。本明細書において用いられるコンピュータ可読ストレージ媒体は、たとえば電波もしくはその他の自由に伝播する電磁波、導波路もしくはその他の伝送媒体を通じて伝播する電磁波(例、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、それ自体が一時的信号であると解釈されるべきではない。
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピュータ/処理デバイスにダウンロードされ得るか、またはたとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはその組み合わせを含んでもよい。各コンピュータ/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信して、そのコンピュータ可読プログラム命令をそれぞれのコンピュータ/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令はアセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または1つ以上のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードであってもよく、このプログラミング言語はオブジェクト指向プログラミング言語、たとえばSmalltalk、またはC++など、および従来の手続き型プログラミング言語、たとえば「C」プログラミング言語または類似のプログラミング言語などを含む。コンピュータ可読プログラム命令は、すべてがユーザのコンピュータで実行されてもよいし、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータで実行されてもよいし、一部がユーザのコンピュータで、一部がリモート・コンピュータで実行されてもよいし、すべてがリモート・コンピュータまたはサーバで実行されてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよいし、(たとえば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータへの接続が行われてもよい。いくつかの実施形態において、たとえばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)などを含む電子回路は、本発明の態様を行うために電子回路をパーソナライズするためのコンピュータ可読プログラム命令の状態情報を使用することによって、コンピュータ可読プログラム命令を実行してもよい。
本明細書においては、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方を参照して、本発明の態様を説明している。流れ図もしくはブロック図またはその両方の各ブロック、および流れ図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実現され得ることが理解されるだろう。
これらのコンピュータ可読プログラム命令は、汎用目的コンピュータ、特定目的コンピュータ、またはマシンを生成するためのその他のプログラマブル・データ処理装置のプロセッサに提供されることによって、そのコンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実現するための手段を生じてもよい。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブル・データ処理装置、もしくはその他のデバイスまたはその組み合わせに特定の方式で機能するように指示できるコンピュータ可読ストレージ媒体にも保存されることによって、命令が保存されたコンピュータ可読ストレージ媒体が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作の態様を実現する命令を含む製造物を含んでもよい。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにもロードされて、コンピュータに実現されるプロセスを生成するためにコンピュータ、他のプログラマブル装置、または他のデバイスにおいて一連の動作ステップを行わせることによって、そのコンピュータ、他のプログラマブル装置、または他のデバイスにおいて実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実現してもよい。
図面における流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能、および動作を示すものである。これに関して、流れ図またはブロック図の各ブロックは、指定される論理機能(単数または複数)を実現するための1つ以上の実行可能命令を含むモジュール、セグメント、または命令の一部を表してもよい。いくつかの代替的実施において、ブロック内に示される機能は、図面に示されるものとは異なる順序で起こってもよい。たとえば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよいし、関与する機能によってはこれらのブロックがときには逆の順序で実行されてもよい。加えて、ブロック図もしくは流れ図またはその両方の各ブロック、およびブロック図もしくは流れ図またはその両方のブロックの組み合わせは、指定された機能または動作を行うか、特定目的のハードウェアおよびコンピュータ命令の組み合わせを実行する特定目的のハードウェア・ベースのシステムによって実現され得ることが注目されるだろう。

Claims (17)

  1. プロセッサによるコンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理のための方法であって、
    前記コンピューティング・クラスタ内のワークロード・マネージャがデータ要件エバリュエータ・モジュールおよびスケジューラ・モジュールを含むように構成するステップと、
    前記ワークロード・マネージャによってスケジューリングのための入力ワークロードを受信したことに応答して、
    前記データ要件エバリュエータ・モジュールによって、ストレージ・システムから入力のセットを検索するステップであって、前記入力のセット
    前記入力ワークロードが新たなデータの入力/出力(I/O)に集中しているか、それとも既存データのI/Oに集中しているかの表示と、
    前記入力ワークロードに関連するファイルのセットに対するデータ局在性の割合であって、前記コンピューティング・クラスタ内の複数のクラスタ・ホストの各々にそれぞれ保存されている、前記ファイルのセットの合計データの割合を特定する、前記データ局在性の割合と、
    前記コンピューティング・クラスタ内の前記複数のクラスタ・ホストの各対に対して特定されたデータ・アクセス・コストであって、前記複数のクラスタ・ホストの各々について、前記コンピューティング・クラスタ内の複数の他のクラスタ・ホストの各々に保存されたデータにアクセスするコストを特定し、かつ、前記複数のクラスタ・ホスト間のネットワーク形成待ち時間と、前記複数のクラスタ・ホストの各々内のストレージ・デバイス・アクセス待ち時間とに基づいて計算される、前記データ・アクセス・コスト
    を含む、前記検索するステップと、
    前記データ要件エバリュエータ・モジュールによって、前記入力のセットによって前記入力ワークロードを行うためにランク付けされたクラスタ・ホストのリストを生成するステップと、
    クラスタ・ホストの前記ランク付けされたリストを前記スケジューラ・モジュールに提供するステップと、
    前記スケジューラ・モジュールによって、前記コンピューティング・クラスタ内の特定のクラスタ・ホストに対する前記入力ワークロードのスケジューリングを生成するステップであって、前記生成されたスケジューリングは前記入力のセットによって最適化されている、前記スケジューリングを生成するステップと
    を含む、方法。
  2. 前記ランク付けされたクラスタ・ホストのリストを生成するステップは、
    前記表示が、前記入力ワークロードが既存データのI/Oに集中していることを示すと判定される場合に、前記データ要件エバリュエータ・モジュールによって、前記データ局在性の割合および前記データ・アクセス・コストに基づいて前記入力ワークロードを行うために前記ランク付けされたクラスタ・ホストのリストを生成するステップ
    を含む、請求項1に記載の方法。
  3. 前記データ要件エバリュエータ・モジュールによって、
    前記コンピューティング・クラスタ内のコンピュート・リソースの可用性と、
    前記コンピューティング・クラスタ内のストレージ・リソースの可用性と
    のうちの少なくとも1つを含むさらなる入力を受信するステップをさらに含む、請求項1に記載の方法。
  4. 前記データ要件エバリュエータ・モジュールによって前記入力ワークロードを行うためにランク付けされたクラスタ・ホストの前記リストを前記生成するステップは、
    前記入力ワークロードが既存データのI/Oに集中している場合、前記データ局在性およびデータ・アクセス・コストの入力による好ましいクラスタ・ホストの順序付きリストとして前記ランク付けされたリストを生成するステップと、
    前記入力ワークロードが新たなデータのI/Oに集中している場合、利用可能なストレージによる好ましいクラスタ・ホストの前記順序付きリストを生成するステップと、
    前記入力ワークロードがI/Oに集中していない場合、好ましいクラスタ・ホストの空リストを生成するステップと
    をさらに含む、請求項1に記載の方法。
  5. 利用可能なストレージによる好ましいクラスタ・ホストの前記順序付きリストを生成するステップは、前記クラスタ・ホストの第1のものに他のクラスタ・ホストと比べてより多くの利用可能なストレージが存在すると判定した場合に、前記クラスタ・ホストの前記第1のもののランクを前記他のクラスタ・ホストと比べて前記順序付きリストにおいてより高くなるように設定するステップに基づく、請求項4に記載の方法。
  6. 前記スケジューラ・モジュールによって前記クラスタ・ホストに対する前記入力ワークロードの前記スケジューリングを前記生成するステップは、
    前記入力ワークロードに対するリソース割り当て要求を受信するステップと、
    前記データ要件エバリュエータ・モジュールからの前記データ・アクセス検討によって前記入力ワークロードを実行するためにランク付けされた好ましいクラスタ・ホストの順序付きリストを受信するステップと、
    前記リソース割り当て要求を満たすために、前記リソース割り当て要求および好ましいクラスタ・ホストの前記順序付きリストによって前記好ましいクラスタ・ホストからコンピュート・リソースを割り当てることを試みるステップと
    のうちの少なくとも1つを含む、請求項1に記載の方法。
  7. 前記ストレージ・システムは、
    ローカル・ストレージ・デバイスにデータを保存するステップであって、各ローカル・ストレージ・デバイスは複数の前記クラスタ・ホストの1つに取り付けられている、前記保存するステップと、
    前記クラスタ・ホストからアクセス可能な共有ストレージ・デバイスにデータを保存するステップと、
    前記ローカルおよび共有ストレージ・デバイスの組み合わせにデータを保存するステップと
    のうちの少なくとも1つを行う、請求項1に記載の方法。
  8. 前記入力ワークロードに関連する前記ファイルのセットのデータの前記クラスタ内の位置は、
    前記共有ストレージ・デバイスに対応するホスト名を割り当てるステップと、
    前記クラスタ・ホストの各々に前記ローカル・ストレージ・デバイスを取り付けるステップであって、各々の前記クラスタ・ホストにはホスト名が割り当てられている、前記取り付けるステップと、
    前記位置を特定する前記ローカルまたは共有ストレージ・デバイス内のストレージ識別
    (ID)を用いるステップであって、前記ホスト名およびストレージIDは、前記ローカルおよび共有ストレージ・デバイスに対し前記クラスタ内のグローバル・ストレージの位置を提供する、前記用いるステップと
    によってローカル・ストレージおよび共有ストレージの両方に対して特定される、請求項7に記載の方法。
  9. コンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理のためのシステムであって、前記システムは
    前記コンピューティング・クラスタ内のワークロード・マネージャを含み、前記ワークロード・マネージャはデータ要件エバリュエータ・モジュールと、スケジューラ・モジュールとを含み、前記システムはさらに、
    メモリ・デバイスに保存された命令を実行するプロセッサを含み、前記プロセッサは前記命令を実行する際に、
    前記ワークロード・マネージャによってスケジューリングのための入力ワークロードを受信したことに応答して、
    前記データ要件エバリュエータ・モジュールによって、ストレージ・システムから入力のセットを検索するステップであって、前記入力のセット
    前記入力ワークロードが新たなデータの入力/出力(I/O)に集中しているか、それとも既存データのI/Oに集中しているかの表示と、
    前記入力ワークロードに関連するファイルのセットに対するデータ局在性の割合であって、前記コンピューティング・クラスタ内の複数のクラスタ・ホストの各々にそれぞれ保存されている、前記ファイルのセットの合計データの割合を特定する、前記データ局在性の割合と、
    前記コンピューティング・クラスタ内のクラスタ・ホストの各対に対して特定されたデータ・アクセス・コストであって、前記複数のクラスタ・ホストの各々について、前記コンピューティング・クラスタ内の複数の他のクラスタ・ホストの各々に保存されたデータにアクセスするコストを特定し、かつ、前記複数のクラスタ・ホスト間のネットワーク形成待ち時間と、前記複数のクラスタ・ホストの各々内のストレージ・デバイス・アクセス待ち時間とに基づいて計算される、前記データ・アクセス・コストと
    を含む、前記検索するステップと、
    前記データ要件エバリュエータ・モジュールによって、前記入力のセットによって前記入力ワークロードを行うためにランク付けされたクラスタ・ホストのリストを生成するステップと、
    クラスタ・ホストの前記ランク付けされたリストを前記スケジューラ・モジュールに提供するステップと、
    前記スケジューラ・モジュールによって、前記コンピューティング・クラスタ内の特定のクラスタ・ホストに対する前記入力ワークロードのスケジューリングを生成するステップであって、前記生成されたスケジューリングは前記入力のセットによって最適化されている、前記スケジューリングを生成するステップと
    を行う、システム。
  10. 前記ランク付けされたクラスタ・ホストのリストを生成するステップは、
    前記表示が、前記入力ワークロードが既存データのI/Oに集中していることを示すと判定される場合に、前記データ要件エバリュエータ・モジュールによって、前記データ局在性の割合および前記データ・アクセス・コストに基づいて前記入力ワークロードを行うためにランク付けされたクラスタ・ホストのリストを生成するステップ
    を含む、請求項9に記載のシステム。
  11. 前記プロセッサは、前記データ要件エバリュエータ・モジュールによって、
    前記コンピューティング・クラスタ内のコンピュート・リソースの可用性と、
    前記コンピューティング・クラスタ内のストレージ・リソースの可用性と
    のうちの少なくとも1つを含むさらなる入力を受信する、請求項9に記載のシステム。
  12. 前記データ要件エバリュエータ・モジュールによって前記入力ワークロードを行うためにランク付けされたクラスタ・ホストの前記リストを前記生成するステップは、
    前記入力ワークロードが既存データのI/Oに集中している場合、前記データ局在性およびデータ・アクセス・コストの入力による好ましいクラスタ・ホストの順序付きリストとして前記ランク付けされたリストを生成するステップと、
    前記入力ワークロードが新たなデータのI/Oに集中している場合、利用可能なストレージによる好ましいクラスタ・ホストの前記順序付きリストを生成するステップと、
    前記入力ワークロードがI/Oに集中していない場合、好ましいクラスタ・ホストの空リストを生成するステップと
    をさらに含む、請求項9に記載のシステム。
  13. 利用可能なストレージによる好ましいクラスタ・ホストの前記順序付きリストを生成するステップは、前記クラスタ・ホストの第1のものに他のクラスタ・ホストと比べてより多くの利用可能なストレージが存在すると判定した場合に、前記クラスタ・ホストの前記第1のもののランクを前記他のクラスタ・ホストと比べて前記順序付きリストにおいてより高くなるように設定するステップに基づく、請求項12に記載のシステム。
  14. 前記スケジューラ・モジュールによって前記クラスタ・ホストに対する前記入力ワークロードの前記スケジューリングを前記生成するステップは、
    前記入力ワークロードに対するリソース割り当て要求を受信するステップと、
    前記データ要件エバリュエータ・モジュールからの前記データ・アクセス検討によって前記入力ワークロードを実行するためにランク付けされた好ましいクラスタ・ホストの順序付きリストを受信するステップと、
    前記リソース割り当て要求を満たすために、前記リソース割り当て要求および好ましいクラスタ・ホストの前記順序付きリストによって前記好ましいクラスタ・ホストからコンピュート・リソースを割り当てることを試みるステップと
    のうちの少なくとも1つを含む、請求項9に記載のシステム。
  15. 前記ストレージ・システムは、
    ローカル・ストレージ・デバイスにデータを保存するステップであって、各ローカル・ストレージ・デバイスは複数の前記クラスタ・ホストの1つに取り付けられている、前記保存するステップと、
    前記クラスタ・ホストからアクセス可能な共有ストレージ・デバイスにデータを保存するステップと、
    前記ローカルおよび共有ストレージ・デバイスの組み合わせにデータを保存するステップと
    のうちの少なくとも1つを行う、請求項9に記載のシステム。
  16. 前記入力ワークロードに関連する前記ファイルのセットのデータの前記クラスタ内の位置は、
    前記共有ストレージ・デバイスに対応するホスト名を割り当てるステップと、
    前記クラスタ・ホストの各々に前記ローカル・ストレージ・デバイスを取り付けるステップであって、各々の前記クラスタ・ホストにはホスト名が割り当てられている、前記取り付けるステップと、
    前記位置を特定する前記ローカルまたは共有ストレージ・デバイス内のストレージ識別
    (ID)を用いるステップであって、前記ホスト名およびストレージIDは、前記ローカルおよび共有ストレージ・デバイスに対し前記クラスタ内のグローバル・ストレージの位置を提供する、前記用いるステップと
    によってローカル・ストレージおよび共有ストレージの両方に対して特定される、請求項15に記載のシステム。
  17. プロセッサによるコンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理のためのコンピュータ・プログラムであって、1以上のプロセッサに、請求項1乃至8のいずれか1項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
JP2020544911A 2018-04-05 2019-03-20 コンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理 Active JP7217580B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/945,886 2018-04-05
US15/945,886 US10768998B2 (en) 2018-04-05 2018-04-05 Workload management with data access awareness in a computing cluster
PCT/IB2019/052270 WO2019193443A1 (en) 2018-04-05 2019-03-20 Workload management with data access awareness in a computing cluster

Publications (2)

Publication Number Publication Date
JP2021517683A JP2021517683A (ja) 2021-07-26
JP7217580B2 true JP7217580B2 (ja) 2023-02-03

Family

ID=68096504

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020544911A Active JP7217580B2 (ja) 2018-04-05 2019-03-20 コンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理

Country Status (6)

Country Link
US (1) US10768998B2 (ja)
JP (1) JP7217580B2 (ja)
CN (1) CN112005219B (ja)
DE (1) DE112019000421B4 (ja)
GB (1) GB2584980B (ja)
WO (1) WO2019193443A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020098245A1 (en) 2018-11-12 2020-05-22 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for session management
US11704156B2 (en) 2020-12-06 2023-07-18 International Business Machines Corporation Determining optimal placements of workloads on multiple platforms as a service in response to a triggering event
US11366694B1 (en) 2020-12-06 2022-06-21 International Business Machines Corporation Estimating attributes of running workloads on platforms in a system of multiple platforms as a service
US11693697B2 (en) 2020-12-06 2023-07-04 International Business Machines Corporation Optimizing placements of workloads on multiple platforms as a service based on costs and service levels
US11960936B2 (en) 2021-01-15 2024-04-16 Google Llc Autonomous warehouse-scale computers
US12058006B2 (en) 2022-03-08 2024-08-06 International Business Machines Corporation Resource topology generation for computer systems

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010097489A (ja) 2008-10-17 2010-04-30 Nec Corp 分散データ処理システム、分散データ処理方法および分散データ処理用プログラム
JP2012133630A (ja) 2010-12-22 2012-07-12 Nomura Research Institute Ltd ストレージリソース制御システムおよびストレージリソース制御プログラムならびにストレージリソース制御方法
US20120185867A1 (en) 2011-01-17 2012-07-19 International Business Machines Corporation Optimizing The Deployment Of A Workload On A Distributed Processing System
JP2013045181A (ja) 2011-08-22 2013-03-04 Nippon Telegr & Teleph Corp <Ntt> データベースの負荷分散装置
JP2015504224A (ja) 2012-01-17 2015-02-05 アルカテル−ルーセント ネットワークおよびストレージアウェア仮想マシン配置のための方法および装置

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6769017B1 (en) 2000-03-13 2004-07-27 Hewlett-Packard Development Company, L.P. Apparatus for and method of memory-affinity process scheduling in CC-NUMA systems
US7089301B1 (en) 2000-08-11 2006-08-08 Napster, Inc. System and method for searching peer-to-peer computer networks by selecting a computer based on at least a number of files shared by the computer
WO2005089241A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method for providing object triggers
US8375392B2 (en) 2010-01-12 2013-02-12 Nec Laboratories America, Inc. Data aware scheduling on heterogeneous platforms
US8799418B2 (en) 2010-01-13 2014-08-05 Vmware, Inc. Cluster configuration
CN102137128A (zh) 2010-01-27 2011-07-27 腾讯科技(深圳)有限公司 一种集群服务的负载均衡方法和装置
US20120246158A1 (en) 2011-03-25 2012-09-27 Microsoft Corporation Co-range partition for query plan optimization and data-parallel programming model
US8392575B1 (en) 2011-03-31 2013-03-05 Amazon Technologies, Inc. Clustered device dispersion in a multi-tenant environment
US9292350B1 (en) 2011-12-15 2016-03-22 Symantec Corporation Management and provisioning of virtual machines
US8972983B2 (en) * 2012-04-26 2015-03-03 International Business Machines Corporation Efficient execution of jobs in a shared pool of resources
US9582221B2 (en) 2012-08-24 2017-02-28 Vmware, Inc. Virtualization-aware data locality in distributed data processing
US9081826B2 (en) 2013-01-07 2015-07-14 Facebook, Inc. System and method for distributed database query engines
US9465669B2 (en) 2013-08-13 2016-10-11 Vmware, Inc. NUMA scheduling using inter-vCPU memory access estimation
US20150161529A1 (en) 2013-12-09 2015-06-11 Eventbrite, Inc. Identifying Related Events for Event Ticket Network Systems
US9785581B2 (en) 2014-02-28 2017-10-10 Red Hat, Inc. Memory distribution across multiple non-uniform memory access nodes
JP2017520032A (ja) 2014-04-17 2017-07-20 アビニシオ テクノロジー エルエルシー 処理環境の統合監視および制御
WO2015168262A2 (en) 2014-05-01 2015-11-05 Coho Data, Inc. Systems, devices and methods for generating locality-indicative data representations of data streams, and compressions thereof
US9483378B2 (en) 2014-05-21 2016-11-01 Dynatrace Llc Method and system for resource monitoring of large-scale, orchestrated, multi process job execution environments
US9513967B2 (en) 2014-09-18 2016-12-06 International Business Machines Corporation Data-aware workload scheduling and execution in heterogeneous environments
US9825878B2 (en) 2014-09-26 2017-11-21 Cisco Technology, Inc. Distributed application framework for prioritizing network traffic using application priority awareness
CN104317658B (zh) 2014-10-17 2018-06-12 华中科技大学 一种基于MapReduce的负载自适应任务调度方法
US9256467B1 (en) 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
CN104657221B (zh) 2015-03-12 2019-03-22 广东石油化工学院 一种云计算中基于任务分类的多队列错峰调度模型及方法
US10310748B2 (en) 2015-08-26 2019-06-04 Pivotal Software, Inc. Determining data locality in a distributed system using aggregation of locality summaries
US9959146B2 (en) 2015-10-20 2018-05-01 Intel Corporation Computing resources workload scheduling
US10509685B2 (en) 2015-12-14 2019-12-17 VCE IP Holding Company, LLC Methods, systems, and computer readable mediums for workload clustering
CN106933669B (zh) 2015-12-29 2021-01-08 伊姆西Ip控股有限责任公司 用于数据处理的装置和方法
CA2957584A1 (en) 2016-02-12 2017-08-12 Coho Data, Inc. Methods, systems, and devices for adaptive data resource assignment and placement in distributed data storage systems
US10162682B2 (en) 2016-02-16 2018-12-25 Red Hat, Inc. Automatically scaling up physical resources in a computing infrastructure
CN106027647B (zh) * 2016-05-20 2019-07-09 云南云电同方科技有限公司 Lxpfs集群分布式文件存储系统
CN106502792B (zh) 2016-10-20 2019-11-15 华南理工大学 一种面向不同类型负载的多租户资源优化调度方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010097489A (ja) 2008-10-17 2010-04-30 Nec Corp 分散データ処理システム、分散データ処理方法および分散データ処理用プログラム
JP2012133630A (ja) 2010-12-22 2012-07-12 Nomura Research Institute Ltd ストレージリソース制御システムおよびストレージリソース制御プログラムならびにストレージリソース制御方法
US20120185867A1 (en) 2011-01-17 2012-07-19 International Business Machines Corporation Optimizing The Deployment Of A Workload On A Distributed Processing System
JP2013045181A (ja) 2011-08-22 2013-03-04 Nippon Telegr & Teleph Corp <Ntt> データベースの負荷分散装置
JP2015504224A (ja) 2012-01-17 2015-02-05 アルカテル−ルーセント ネットワークおよびストレージアウェア仮想マシン配置のための方法および装置

Also Published As

Publication number Publication date
GB2584980B (en) 2021-05-19
US20190310893A1 (en) 2019-10-10
WO2019193443A1 (en) 2019-10-10
DE112019000421T5 (de) 2020-10-01
DE112019000421B4 (de) 2023-03-09
JP2021517683A (ja) 2021-07-26
US10768998B2 (en) 2020-09-08
CN112005219B (zh) 2024-03-26
CN112005219A (zh) 2020-11-27
GB202016788D0 (en) 2020-12-09
GB2584980A (en) 2020-12-23

Similar Documents

Publication Publication Date Title
US11573831B2 (en) Optimizing resource usage in distributed computing environments by dynamically adjusting resource unit size
JP7217580B2 (ja) コンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理
US10972376B2 (en) Distributed storage path configuration
US20210342193A1 (en) Multi-cluster container orchestration
US20190188016A1 (en) Deploying a virtual machine in a computing environment
US9998531B2 (en) Computer-based, balanced provisioning and optimization of data transfer resources for products and services
US10977091B2 (en) Workload management with data access awareness using an ordered list of hosts in a computing cluster
US11307802B2 (en) NVMe queue management multi-tier storage systems
US10817427B2 (en) Headless resilient backup and restore software ecosystem and with a first backup server and a second backup server in a plurality of backup servers, with the first backup server selecting a the second backup server to start a job where selection is based on historical client latency, scheduled backup server workload, and whether metadata is cached in any of the plurality of backup servers
US10616134B1 (en) Prioritizing resource hosts for resource placement
US11003658B2 (en) Selectively retrieving data from remote share nothing computer clusters
US20190109901A1 (en) Initiator aware data migration
JP7160449B2 (ja) 階層型ストレージ・データ移動に基づいてクラウド・コンピューティング・システムにおいてクラウド資源を割り当てるための方法、システム、コンピュータ・プログラムおよび記録媒体
US20230055511A1 (en) Optimizing clustered filesystem lock ordering in multi-gateway supported hybrid cloud environment
US11513861B2 (en) Queue management in solid state memory
US20230319135A1 (en) Cloud financial load optimization based on power and thermal statistics aggregation
US11416490B2 (en) Prioritization and optimization of database workloads
US10346424B2 (en) Object processing
US10630554B1 (en) Input/output (I/O) performance of hosts through bi-directional bandwidth feedback optimization
US10761891B2 (en) Workload management with data access awareness by aggregating file locality information in a computing cluster
US11966338B2 (en) Prefetching management in database system based on number of pages being prefetched
US20230096276A1 (en) Garbage collection of redundant partitions
US10320707B2 (en) Spreading quality of service values over a given range with minimal deviation

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210413

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210816

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220809

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20220929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221104

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20230110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230120

R150 Certificate of patent or registration of utility model

Ref document number: 7217580

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150