JP7165649B2 - コンピューティングデバイスにおける、外部で管理される入出力のスタベーションの回避 - Google Patents

コンピューティングデバイスにおける、外部で管理される入出力のスタベーションの回避 Download PDF

Info

Publication number
JP7165649B2
JP7165649B2 JP2019507762A JP2019507762A JP7165649B2 JP 7165649 B2 JP7165649 B2 JP 7165649B2 JP 2019507762 A JP2019507762 A JP 2019507762A JP 2019507762 A JP2019507762 A JP 2019507762A JP 7165649 B2 JP7165649 B2 JP 7165649B2
Authority
JP
Japan
Prior art keywords
request
requests
storage
storage device
queue
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
JP2019507762A
Other languages
English (en)
Other versions
JP2019525349A (ja
JP2019525349A5 (ja
Inventor
サヌイエ,ブレーズ
ブルボネ,ロック
ギル,ピーター・ウェストン
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2019525349A publication Critical patent/JP2019525349A/ja
Publication of JP2019525349A5 publication Critical patent/JP2019525349A5/ja
Application granted granted Critical
Publication of JP7165649B2 publication Critical patent/JP7165649B2/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/061Improving I/O performance
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

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

Description

関連出願の相互参照
本願は、2016年8月17日に出願され、「EXTERNALLY MANAGED I/O STARVATION AVOIDANCE IN A COMPUTING DEVICE(コンピューティングデバイスにおける、外部で管理される入出力のスタベーションの回避)」と題された米国通常出願第15/239,396号に基づく優先権の利益を主張し、そのすべての記載内容を、あらゆる目的のために引用により本明細書に援用する。
開示の分野
本発明の態様は、コンピューティングシステムに関し、より具体的には、本発明の態様は、ストレージデバイスに提供された入力/出力(入出力)要求のいずれもかなりの時間待ち状態にならないよう、入出力要求を監視および制御するためのシステムおよび/または方法に関係する。
背景
絶え間ないインターネットの拡大、企業コンピューティンネットワークおよびシステムの拡大および高度化、インターネット上で格納され、かつアクセス可能なコンテンツの急増、および数多くのその他の要因によって、大規模の高度なデータ記憶システムが必要な状態が続いている。その結果、データストレージの需要が増加し続けて、より大規模かつより高度な記憶システムが設計および開発されている。多くの大規模データ記憶システムは、記憶媒体のアレイを備えたストレージアプライアンスを利用している。通常、これらの記憶システムは、ファイルを格納するおよびファイルにアクセスするためのファイルシステムを備える。システムファイル(たとえば、オペレーティングシステムファイル、デバイスドライバファイルなど)を格納することに加えて、ファイルシステムは、ユーザデータファイルのストレージとアクセスとを提供する。ユーザがファイルにアクセスするために、このファイルに関連付けられたデータブロックを、記憶システムに関連付けられた複数のストレージデバイスから取り出すための1つ以上の入力/出力(入出力)要求が生成される。
多くの場合、記憶システムが使用するストレージデバイスは、とても多くの入出力要求を処理するだけでよい。たとえば、ストレージデバイスは、装置自体によって、または記憶システムの管理ソフトウェアによって、10個の入出力要求に制限され得る。さらには、入出力要求は、受信された順に完了または処理(service)されない場合がある。むしろ、多くのストレージデバイスは、ストレージデバイスに対する物理的な需要を低減させることができる順で入出力要求を処理することによって、データブロックを取り出す効率を最大限にしようと試みる。たとえば、ストレージデバイスに対する入出力要求を処理するとき、ディスクドライブ上のディスクヘッドの移動および現在の位置が考慮され得る。このように、ストレージデバイスが記憶媒体に格納されているデータブロックを取り出すので、特定の入出力要求の完了が遅延してしまう可能性がある。これにより、入出力要求の処理が大幅に遅延または減速する結果となり、記憶システムの性能に悪影響を与えてしまう可能性がある。
これらのおよびその他の問題を念頭において、本開示の様々な態様が開発された。
概要
本開示の一実装形態は、ストレージプールを管理するための方法という形をとってもよい。この方法は、ストレージデバイスに向けられた1つ以上の入力/出力(入出力)要求を含んだキューを保持する動作を含み、キューの入出力要求の各々は、入出力要求がストレージ管理システムで受信された順を示す順序値を含み、方法は、さらに、キューに含まれる第1の入出力要求に関連付けられた第1の順序値とキューに含まれる第2の入出力要求に関連付けられた第2の順序値との差を算出する動作を含む。これに加えて、方法は、算出された第1の順序値と第2の順序値との差を閾値と比較する動作と、算出された第1の順序値と第2の順序値との差が閾値以下である場合、1つ以上の入出力要求を含んだキューから少なくとも1つの入出力要求をストレージデバイスに送信する動作とを含んでもよい。
本開示の別の実装形態は、マシン上でコンピュータ処理を実行するためのコンピュータによって実行可能な命令を格納した、1つ以上の非一時的な有形のコンピュータ読み取り可能な記憶媒体の形をとってもよい。このコンピュータ処理は、ストレージデバイスに向けられた1つ以上の入力/出力(入出力)要求を含んだキューを管理する動作を含んでもよく、キューの入出力要求の各々は、入出力要求がストレージ管理システムで受信された順を示す順序値を含み、コンピュータ処理は、さらに、キューに含まれる第1の入出力要求に関連付けられた第1の順序値とキューに含まれる第2の入出力要求に関連付けられた第2の順序値との差を判断する動作を含み、第1の入出力要求は、第2の入出力要求よりも前にストレージ管理システムで受信されている。また、コンピュータ処理は、第1の順序値と第2の順序値との算出された差を閾値と比較することと、第1の順序値と第2の順序値との算出された差が閾値以下である場合、1つ以上の入出力要求を含んだキューから少なくとも1つの入出力要求をストレージデバイスに送信することとを含んでもよい。
1つ以上のストレージデバイスからのデータにアクセスするように構成された記憶システムの例を示す図である。 外部で管理される入出力要求システムおよび方法を実施するネットワークファイルシステムの例を示す図である。 記憶システムのストレージデバイスのキューを管理するための方法のフローチャートである。 入出力要求のスタベーションを防ぐために記憶システムのストレージデバイスに対する入出力要求を外部で管理するための方法のフローチャートである。 図5A~図5Gは、ストレージデバイスに対する入出力要求のスタベーションを防ぐための、ストレージデバイスに対する入出力要求のキューを示す図である。 今回開示する技術の様々なシステムおよび方法を実施し得るコンピューティングシステムの例を示す図である。
詳細な説明
本開示の実装形態は、記憶システムを管理するためのシステムおよび/または方法、より具体的には、入出力要求を処理する際の大きな遅延を回避するためにストレージデバイスに対する入力/出力(入出力)要求を外部で管理するためのシステムおよび/または方法に関係する。一実施形態では、システムおよび方法は、管理ソフトウェア、デバイス、または、複数のストレージデバイスを有する大型記憶システムであってもよい。管理方法は、システムに関連付けられたストレージデバイスのうちの1つ以上に対する入出力要求キューを保持してもよい。各キューは、入出力要求がストレージデバイスに提供された順に対応する値を含んでもよく、入出力要求は、順序値によってキュー内に配置されてもよい。たとえば、キューの先頭は、最小順序値を有する、ストレージデバイスに対する入出力要求を含んでもよく、キューの末尾は、最高順序値を有する入出力要求を含んでもよい。さらには、記憶システム管理方法は、ストレージデバイスに対する同時の入出力要求についての閾値に基づいて、キューに入力される入出力要求の数を制限してもよい。ストレージデバイスによって入出力要求が処理または完了されると、関連するキューに含まれる関連する入出力要求がキューから削除されてもよい。
これに加えて、管理システムは、ストレージデバイスに対する入出力要求のいずれも大幅に遅延しないようにしてもよい。一実施形態では、システムは、キューの先頭にある入出力要求の順序値とキューの末尾にある入出力要求の順序値との差を算出してもよい。算出された差が閾値を上回っている場合、ストレージデバイスに対する新しい入出力要求は、キューに追加されないまたはストレージデバイスに送信されない。一般に、算出された差が閾値内に収まるまで、キューには入出力要求が追加されない。このように、管理システムは、処理されずにしばらくの間キューに格納されている入出力要求を処理するよう、ストレージデバイスを強制してもよい。また、入出力要求のスタベーション(枯渇状態)の回避は、ストレージデバイスの外部で管理システムによって制御される。よって、管理システムは、枯渇状態の要求が処理されるまでデバイスに対する新しい入出力要求を保留することによって要求の完了が遅延することを回避することについて、ストレージデバイス自体よりも積極的であってもよい(すなわち、ストレージデバイスに対する要求の処理がより短い間遅延することを受け付けてもよい)。
要求のスタベーションを外部で管理するために1つ以上のストレージデバイスに対する1つ以上の入出力要求キューを保持しつつ、1つ以上のストレージデバイスからのデータにアクセスするように構成された例示的な記憶システム100の詳細な説明を始めるために、図1を参照する。図1から理解できるように、例示的な記憶システム100は、1つ以上のストレージデバイス102~104を備える。1つ以上のストレージデバイス102~104は、各々、記憶媒体106~108上のデータの格納を管理する。管理は、媒体(たとえば、ディスクドライブ)、および固体メモリなど様々な形の永続メモリを回転させることを含み得る。一実施形態では、ストレージデバイス102~104は、各々、クイックアクセスが必要なデータはスピードのより早い記憶媒体(たとえば、1つ以上のレベルのキャッシュメモリ)に格納されて、他の媒体はディスクドライブなど、スピードのより遅い記憶媒体に格納される階層構造に、データを格納してもよい。
1つ以上のストレージデバイス102~104を有する記憶システムを参照して本明細書において説明しているが、ストレージデバイスに対する入出力要求を外部で管理するためのシステム、方法、および/またはプログラムは、データをストレージデバイスに格納する任意のコンピューティングデバイスのために利用されてもよいことがわかる。たとえば、システムおよび方法は、自身のメモリコンポーネントにデータを格納するコンピュータにおいて利用されてもよい。よって、一例では、システムおよび方法は、データを1つのメモリデバイスに格納するコンピューティングデバイスによって利用される。その他の例では、システムおよび方法は、いくつかのストレージデバイスを備えたシステムにおいて利用される。一般に、このシステムは、受信した入出力要求を再編成し得る1つ以上のストレージデバイスにデータを格納する任意のコンピューティングデバイスのために使用されてもよい。しかしながら、わかりやすくするために、ストレージデバイスに対する入出力要求を外部で管理するためのシステムおよび方法を、図1に示すような記憶システムと関係して、本明細書において説明する。
図1の例示的なシステム100に戻ると、ストレージデバイス102~104は、ストレージアプライアンスであってもよい。ストレージアプライアンスは、クライアントネットワーク上の1つ以上のユーザデバイス112~114にネットワーク110を通じたデータアクセスを提供するファイルレベルのストレージサーバを含むが、これに限定されない。このようなストレージアプライアンスは、たとえば、データ完全性の検証ならびに修復、および大きな記憶容量を可能し、かつ、数多くの他の特徴および利点を有する、サンマイクロシステムズ(登録商標)によって2005年に設計され、現在ではOracle(登録商標)によって展開および発展されている複合型ファイルシステム/ボリュームマネージャであるZFSストレージアプライアンスであってもよい。ZFSストレージアプライアンスを背景に本明細書において説明するが、ストレージデバイス102~104は、各々、任意の種類のストレージアプライアンス管理ソフトウェアを有する任意の種類のストレージデバイスであってもよいことがわかるだろう。
一実装形態では、ストレージネットワーク上のストレージデバイス102~104は、ネットワーク110を通じてクライアントネットワーク上のユーザデバイス112~114によってアクセス可能であってもよい。しかしながら、様々なネットワークが統合ネットワークを含んでもよく、本明細書において説明するネットワーク間の接続は、1つの可能なネットワークトポロジーを表しているにすぎないことがわかるだろう。また、大規模なプライベートの企業ネットワークまたはインターネットなどと同様に、当該様々なネットワークは、現実には局所的に存在していてもよく、または、地理的に分散していてもよい。ユーザデバイス112~114は、一般に、端末、ワークステーション、パーソナルコンピュータ、ポータブルコンピュータ、携帯電話、モバイル機器、タブレット、マルチメディアコンソールなど、ネットワーク110とやり取りすることができる任意の形のコンピューティングデバイスである。いくつかの実装形態では、クライアントネットワークは、たとえば、ビジネスユーザインタフェース(BUI:Business User Interface)など、1つ以上のユーザインタフェースを含み、ユーザがストレージデバイスとやり取りしてデータにアクセスすることを可能にする。
ZFSベースのシステムは、記憶媒体106~108など、ブロックデバイスから構成される仮想装置(vdevs)からなる1つ以上のストレージプール(「zpools」と呼ばれることが多い)を有するストレージプール層を利用する。ブロックデバイスは、データをブロックの形で移動させる任意のデバイスであり、ハードディスクドライブ、ソリッドステートドライブ、光学ドライブ、磁気ドライブ、およびその他のアドレス指定可能なメモリの領域であってもよいが、これらに限定されない。仮想装置が複数のブロックデバイスまたはボリュームをまたいでもよく、ストレージプールが、記憶媒体の1つ以上のパーティションまたは1つ以上の記憶媒体を各々が備える1つ以上の仮想装置を含んでもよい。
ストレージデバイス102~104を行き来するトラフィックは、通常、ストレージデバイス102~104またはストレージネットワーク内に位置する1つ以上の専用ストレージサーバによって管理される。ストレージアプライアンスがファイル、ディレクトリ、および関連付けられたメタデータを含むコンテンツにアクセスするために採用する共通プロトコルは、ネットワークファイルシステム(NFS)である。NFSは、もともとサンマイクロシステムズ(登録商標)によって1984年に開発され、現在はOracle(登録商標)からバージョン4(NFSv4)が出ている、広く使われている分散ファイルシステムプロトコルである。ユーザデバイス112~114が、ファイルの作成および削除、ファイルの読み出しおよび書き込み、ファイル内でのシークの実行、ディレクトリの作成および削除、ディレクトリコンテンツの管理、ならびにその他のファイル、ディレクトリ、またはコンテンツの操作を実行することを可能にするプログラミングインタフェースを提供することによって、NFSは、クライアントネットワークが格納データにシームレスにアクセスすることを可能にする。ユーザデバイス112~114が利用するオペレーティングシステムは、NFSプログラミングインタフェースと通信を行って、ストレージデバイス102~104にあるデータを用いた、動作中のアプリケーション間のやり取り、およびファイルシステムを管理するように構成される。一般に、NFSシステムは、ファイルシステムのメタデータを管理し、ファイルおよびディレクトリへのアクセスを提供する。メタデータは、ファイルおよびディレクトリの記憶媒体106~108上の位置を記述する。
図2を参照すると、外部で管理される入出力要求システムおよび方法を実施する例示的なファイルシステム200を示す。一実装形態では、システム200は、オペレーティングシステム204とインターフェース接続されたアプリケーション202を含む。オペレーティングシステム204は、ストレージプール218とインターフェース接続されたファイルシステム206とやり取りするための機能を含む。オペレーティングシステム204は、通常、システムコールインタフェース208を介してファイルシステム206とインターフェース接続される。オペレーティングシステム204は、ユーザがファイルシステム206内のファイルにアクセスするための動作を提供する。これらの動作は、読み出し、書き込み、開く、閉じるなどを含む。一実装形態では、ファイルシステム206は、オブジェクトベースのファイルシステムである(すなわち、データおよびメタデータがオブジェクトとして格納される)。より具体的には、ファイルシステム206は、データおよび対応するメタデータをストレージプール218に格納するための機能を含む。
一実装形態では、ストレージプール218は、ストレージデバイス220~220Nを備える。ストレージデバイスは、データを移動および格納する任意の装置であり、ハードディスクドライブ、ソリッドステートドライブ、光学ドライブ、磁気ドライブ、およびその他のアドレス指定可能なメモリの領域であってもよいが、これらに限定されない。一般に、ストレージプール218は、ファイルシステム206からストレージプールに送信されたデータを格納するためのブロックデバイス220~220Nとして、1つ以上の物理的な記憶ドライブまたはディスクを備える。
一実装形態では、オペレーティングシステム204が提供する動作は、オブジェクトに対する動作に対応する。言い換えると、特定の動作(すなわち、トランザクション)を行う要求がオペレーティングシステム204からシステムコールインタフェース208を介してデータ管理部(Data Management Unit)(図示せず)に転送される。一実装形態では、DMUが、オブジェクトに対して動作を直接行う要求を、ストレージプール218内の物理的位置で読み出し動作を行う要求(すなわち、入出力要求)に変換する。ストレージプールアロケータ(SPA:Storage Pool Allocator)212がDMUから要求を受信し、ストレージプール218からブロックを読み出す。一実装形態では、SPA212は、入出力レイヤ216とその他のモジュールとを備え、これらは、ストレージプール218からデータを読み出すためにSPA212によって使用されてもよい。一実装形態では、入出力レイヤ216は、入出力要求を受信し、入出力要求を処理するためにトランザクション群にグループ分けする。
具体的な一実装形態では、ファイルシステム206は、ストレージプール218のストレージデバイス220~220Nに送られた各入出力要求を監視および追跡するためのプログラムまたはその他の方法を含む。よって、本明細書に記載の方法および動作は、図2のファイルシステム206によって実行されてもよい。このような方法および動作は、1つ以上のソフトウェアプログラムの実行によって、1つ以上のハードウェアコンポーネントによって、またはソフトウェアプログラムとハードウェアコンポーネントとの組み合わせによって実行されてもよい。しかしながら、他の実施形態では、方法および動作は、データの入出力要求が送信され得る任意のコンピューティングデバイスまたは記憶システムの構成要素によって実行されてもよい。たとえば、本明細書に記載の方法を実行するために、第2のアプリケーションがオペレーティングシステム204によって実行されてもよい。一般に、任意のコンピューティングデバイスまたはコンピューティングデバイスの構成要素が本明細書に含まれる動作および方法を実行してもよい。
上述したように、ストレージプール218のストレージデバイス220~220N上のデータを取り出すまたはストレージデバイス220~220N上にデータを格納するために、オペレーティングシステム204が提供する動作は、ファイルシステム206に送信される。次に、データを格納および/または取り出すために、これらの入出力要求がファイルシステム206によってストレージプールの適切なストレージデバイス220~220Nに送信される。よって、ファイルシステム206は、どのストレージデバイスまたはデバイス220~220Nが要求されたデータを含むのかを理解し、かつ、適切な入出力要求を提供することによって、各入出力要求を管理する。さらには、多くのストレージデバイス220~220Nは、デバイスが同時に処理できる入出力要求の数が限られている。たとえば、いくつかのストレージデバイス220~220Nは、そのデバイスの入出力要求キューが一杯であることをファイルシステム206に通知する前に、1度に10個の入出力要求しか処理しないかもしれない。また、入出力要求を処理または完了すると、ストレージデバイス220~220Nは、要求が完了したというなんらかの指示、および別の入出力要求がストレージデバイスに送信されてもよいという指示をファイルシステム206に提供してもよい。このように、ファイルシステム206(または、記憶システム200の他の構成要素)は、ストレージプール218のストレージデバイス220~220Nに対する入出力要求のためのゲートウェイとして機能する。
上述したように、多くのストレージデバイス220~220Nは、いくつかの入出力要求を履行することを遅延させるメカニズムまたはプロシージャを採用してもよい。たとえば、ディスクドライブのディスクヘッドの位置、およびディスクドライブ上の要求されたデータの位置によっては、いくつかのストレージデバイス220~220Nは、ディスクヘッドがディスク上の記憶位置に物理的に近くなるまでデータの取得または格納を遅延させる。場合によっては、これは、ストレージデバイス220~220Nに送られた入出力要求に対する応答を大幅に遅らせてしまう可能性がある。さらには、遅延しているまたは「枯渇状態」の入出力要求を履行するためのプロシージャをいくつかのディスクドライブが含んでいるものの、このようなプロシージャは、ストレージデバイス220~220Nの種類によっては、数秒間発生しない可能性がある。入出力要求を処理する際のこの遅延は、遅延した要求が処理されるのをシステムが待っている間に、記憶システムの性能に悪影響を与える可能性がある。
入出力要求を処理する際のこの遅延に対処するために、記憶システム200は、ストレージデバイス220~220Nに送られた要求があまりにも長い間履行されないままにならないよう、外部で管理される入出力要求スタベーション処理を実行してもよい。具体的には、図3は、入出力要求のスタベーションを防ぐために記憶システムのストレージデバイスのキューを管理するための方法のフローチャートである。ストレージプール218の1つ以上のストレージデバイス220~220Nのキューを管理することに加えて、図4は、入出力要求のスタベーションを防ぐために記憶システムのストレージデバイスに対する入出力要求を外部で管理するための方法のフローチャートである。記載の方法を実行することによって、ファイルシステム206は、記憶システム200によって判断されたように処理があまりにも長い間遅延している要求がないよう、ストレージプール218の1つ以上のストレージデバイス220~220Nに送られた入出力要求を外部で管理してもよい。
図3の方法300は、動作302において、関連するストレージプール218の特定のストレージデバイス220に対する入出力要求をファイルシステム206が受信することから開始する。入出力要求は、ストレージプール218からデータを読み出すまたは書き込む要求であってもよく、記憶システム200のオペレーティングシステム204から受信してもよい。動作304では、ファイルシステム206は、受信した特定のストレージデバイス220に対する入出力要求に入出力の順序値を割り当てる。たとえば、ファイルシステム206は、ストレージプール218のストレージデバイス220~220Nの各々に対する1つ1つの入出力要求の順序付きリストを保持してもよい。一実施形態では、これらの順序付きリストは、デバイスごとの入出力が受信された値を含む。よって、特定のストレージデバイス220に対する第1の入出力要求には、「1」という順序値が与えられ、そのデバイスに対する第2の入出力要求には、「2」という順序値が与えられ、以下同様である。具体的な一実施形態では、特定のストレージデバイスに対する入出力要求に関連付けられた順序値は、64ビットの2進数である。ファイルシステム206は、各ストレージデバイス220~220Nに対する入出力要求の順序付きリストをストレージプール218に保持し、入出力要求を受信すると、受信したストレージデバイス220~220Nに対する入出力要求に関連付けられた順序値をインクリメントする。具体的な一実施形態では、入出力要求の順序値は、記憶システム200が再起動または電源がオンになったときに、「1」から再スタートしてもよい。
別の実施形態では、順序付きリストに含まれる1つ1つの入出力要求に関連付けられた値は、入出力要求が満たされるまたは処理される順に基づいてもよい。たとえば、本実施形態におけるファイルシステム206は、入出力要求が処理されるのをファイルシステムが決定する順に基づいて、受信した入出力要求の順序を並び替える。さらには、順序付きリストに含まれる各入出力要求に割り当てられた順序値は、キューの先頭からの入出力が入出力装置に発行されたときに割り当てられてもよい。このように、さらなる入出力要求は、このような要求をキューの末尾に追加しなくてもキューに追加することができる。しかしながら、本開示を説明するにあたってわかりやすくするために、入出力要求がキューの最後尾に追加され、要求が受信された順に基づいて順序値が割り当てられる実施形態が用いられる。
また、各受信した入出力要求に順序値を関連付けることに加えて、ファイルシステム206は、ストレージデバイス220~220Nごとの入出力要求キューをストレージプール218に保持してもよい。具体的な一実施形態では、ファイルシステム206は、ファイルシステムが管理する入出力要求キューを1つ以上のメモリデバイスに格納してもよい。さらには、ファイルシステム206は、1つ以上の命令を実行してキューを1つ以上のメモリデバイスに格納してもよい。要求キューは、ストレージプール218が含む特定のストレージデバイス220~220Nに対する入出力要求の順序付きリストである。具体的には、ストレージデバイスについてのキューは、最も古い入出力要求(すなわち、最も低い順序値を有するそのストレージデバイスに対する入出力要求)をキューの先頭に含み、最も新しい入出力要求(すなわち、最高順序値を有するそのストレージデバイスに対する入出力要求)をキューの末尾に含んでもよい。このようなキューは、ストレージプール218のストレージデバイス220~220Nごとに保持されてもよい。これに加えて、ファイルシステム206は、どの入出力要求がストレージデバイス220に送られたか、かつ、キューに含まれるどの入出力要求が送られていないかのリストまたは指示を保持してもよい。上述したように、いくつかのストレージデバイス220は、ストレージデバイスで待ち状態の入出力要求の数を制限してもよい。よって、ファイルシステム206は、特定のストレージデバイスで待ち状態の入出力要求の数がストレージデバイスが設定した制限を超えないよう、この数を追跡してもよい。ファイルシステム206を手助けするために、ストレージプール218のストレージデバイス220~220Nのうちの1つ以上は、ストレージデバイスに対するさらなる入出力要求を当該ストレージデバイスが受け入れることができるときを示す利用可能な指示または信号をファイルシステムに送信してもよい。
図3の方法300に戻ると、動作306において、ファイルシステム206は、受信した入出力要求を当該要求のストレージデバイス220に関連付けられた適切なキューに追加してもよい。さらには、受信した入出力要求がキューの中で最も高い順序値を有するので、この要求は、キューの末尾に加えられる。動作308では、要求の完了の指示を関連するストレージデバイスから受信した場合、ファイルシステム206は、処理されたまたは完了した入出力要求を関連するキューから削除してもよい。このように、ストレージデバイスの待ち状態のキューから完了した入出力要求が削除されると、新しい入出力要求がこのキューに追加される。
上述したストレージデバイスキューによって、ファイルシステム206は、ストレージデバイスの入出力要求のスタベーションを外部で管理することができる。上述したように、ストレージデバイス220は、様々な理由でいくつかの入出力要求を履行することを遅らせてしまう可能性がある。この入出力要求の遅延またはスタベーションは、記憶システム200の性能に悪影響を与えてしまう可能性がある。キューによって、ストレージデバイス220による入出力要求のスタベーションは、ファイルシステム206によって低減または管理されて、記憶システム200へのマイナスの影響が減る。具体的には、図4は、入出力要求のスタベーションを防ぐために記憶システム200のストレージデバイス220に対する入出力要求を外部で管理するための方法400のフローチャートである。方法400の動作は、記憶システム200のファイルシステム206、またはシステムのその他の構成要素によって実行されてもよい。
動作402では、ファイルシステム206は、ストレージプール218のストレージデバイス220に対する新しい入出力要求、またはストレージデバイスから入出力要求が完了したという指示を待つ。新しい入出力要求が届いた場合、または入出力要求が完了したという指示が受信された場合、動作404において、ファイルシステム206は、ストレージデバイス220に発行するさらなる入出力要求があるかどうかを判断する。これ以上発行する入出力要求がない場合、ファイルシステムは動作402に戻り、新しい要求を待つ。しかしながら、入出力要求が発行される場合、ファイルシステム206は、動作406において、ストレージデバイス220がさらなる入出力要求を受け付けるまたは受け付けるための容量を有しているかどうかを判断する。さらなる入出力要求を受け付けるまたは受け付けるための容量を有していない場合、ファイルシステム206は動作402に戻り、ストレージデバイスから入出力要求が完了したという指示を待つ。
動作406において判断されたようにストレージデバイス220が容量を有する場合、ファイルシステムは、新しい入出力要求をストレージデバイスに送信するのを遅らせて、枯渇状態の入出力要求を処理するようストレージデバイスに強制するかどうかを判断してもよい。たとえば、ストレージデバイスに送られた入出力要求は、ストレージデバイスによってタイミングよく処理されていない可能性がある。遅延した入出力要求の処理を強制するために、ファイルシステム206は、遅延した入出力要求が処理されるまで新しい入出力要求をストレージデバイスに送信するのをやめるように構成されてもよい。つまり、ファイルシステム206は、遅延した入出力要求が完了するまで、ストレージデバイスに新しい入出力要求を提供しなくてもよい。ファイルシステム206が1つ以上のストレージデバイス220~220Nへの入出力要求の送信を制御して枯渇状態の入出力要求を管理する方法は、図4の動作によって実行されてもよい。
枯渇状態の入出力要求が処理されるまでにストレージデバイス220に送られた入出力要求がいつなくなるのかを判断するために、ファイルシステム206は、動作408において、キューに含まれるストレージデバイスに対する最も古い入出力要求の順序値と最も新しい入出力要求の順序値との差を算出してもよい。たとえば、ファイルシステム206は、上述したやり方と同様のやり方で、ストレージデバイス200に対する入出力要求キューをストレージプール218に保持している。入出力キューに含まれる各要求は、入出力要求がキューに入れられた順を示す順序値を含む。よって、ファイルシステム206は、最も高い入出力要求順序値(キューの末尾にある入出力要求)と最も低い残りの入出力要求順序値(キューの先頭にある入出力要求)との差を算出する。たとえば、ストレージデバイス200についての入出力キューは、2いう順序値を有する要求を先頭に含み、15という順序値を有する要求を末尾に含んでもよい。このキューについての算出された差は、13という値になる。
動作410では、ファイルシステムは、特定の入出力要求キューについての算出された差を閾値と比較してもよい。一実施形態では、閾値は、ストレージデバイス220に対する1つ以上の入出力要求があまりにも長い間枯渇状態であるときを検知するためにファイルシステム206が利用する、予め定められた値である。たとえば、ファイルシステム206は、閾値をシステム管理者から受信して、図4の方法400において使用してもよい。他の実施形態では、閾値は、当該値がファイルシステムによって予め定められないよう、使用されるストレージデバイスに基づいて、定められた時間または日に基づいて、システムまたは特定のストレージデバイスへの特定の負荷に基づいてなどによって異なり得る。具体的な一実施形態では、閾値は、ストレージデバイスが受け付けることのできる同時の入出力要求の最大数に係数を乗算したものである。たとえば、閾値は、ストレージデバイス220が同時に処理している入出力要求の最大数(この例において、10)に4という係数を乗算することによって決定される、40であってもよい。しかしながら、一般に、閾値は、ファイルシステム206によって決定または利用される任意の数であってもよい。
動作412では、ファイルシステム206は、キューに含まれる最も古い入出力要求と最も新しい入出力要求との算出された差が閾値以下であるかどうかを、比較に基づいて判断する。差が閾値以下である場合、ファイルシステム206は、動作414に移動し、キューに含まれる、まだストレージデバイス220に送信されていない最も古い入出力要求を発行する。つまり、ファイルシステム206は、ストレージデバイスに対するさらなる要求が発生するように、ストレージデバイスに対する待ち状態の入出力要求の数と比較して、キューに含まれる最も古い入出力要求はストレージデバイス220によってあまりにも長い間枯渇状態にされていないと判断する。しかしながら、場合によっては、キューに含まれる最も古い順序値と最新の順序値との算出された差の閾値との比較は、ストレージデバイス220に送られた入出力要求がしばらくの間処理または完了されていないことを示す。この入出力要求は、ストレージデバイス220によって枯渇状態にされていると考えられてもよい。これに応答して、ファイルシステムは、動作401に戻ることによって、最も古い待ち状態の入出力要求が処理されるまでストレージデバイス220に対する入出力要求を発行することをやめてもよい。
上述した動作によって、ファイルシステム206は、枯渇状態の要求がストレージデバイスによって履行されるまで入出力要求がストレージデバイスに発行されないようにする。このように、ファイルシステム206は、入出力要求の完了を監視し、完了した場合、これらの完了した要求をキューから削除してもよい。完了すると、ファイルシステム206は、完了した要求が枯渇状態の入出力要求であったかどうかを判断してもよい。枯渇状態の入出力要求でなかった場合、図4の方法400は、さらに、枯渇状態の入出力要求が処理されるまたは完了するまで、要求をストレージデバイスに発行するのをやめてもよい。枯渇状態の要求が完了すると、ファイルシステム206は、完了させるための入出力要求をストレージデバイスに発行し続けてもよい。
図5A~図5Gは、ストレージデバイスへの入出力要求のスタベーションを防ぐための、ストレージデバイスに対する入出力要求のキューの例を示す図である。具体的には、図に示すキューは、図4の方法400を実行するファイルシステム206の例を提供する。よって、図5A~図5Gに示すキューは、(おそらく、ストレージプール218の一部としての)1つのストレージデバイス220についてのキューであるが、ファイルシステム206は、ファイルシステムに接続されたまたは通信している複数のストレージデバイスについての同様のキューを保持してもよいことがわかる。図5A~図5Gに示すキューは、ファイルシステム206と通信しているストレージデバイスについての入出力要求キューの一例にすぎない。さらには、いくつかの実施形態では、1つのストレージデバイスに対して複数のキューがストレージプールに保持されてもよい。よって、ストレージデバイスに対する入出力要求は、そのストレージデバイスのために、あるキューから別のキューに移動されてもよい。しかしながら、わかりやすくするために、図5A~図5Gには1つのキューを示す。
ストレージデバイス220に対する入出力要求を管理するための入出力要求キュー500を図5Aに示す。具体的には、キューは、ファイルシステム206で受信された、特定のストレージデバイスに向けられた10個の入出力要求を含んだリストを含む。図3を参照して述べた動作によって、ファイルシステム206は、各受信したストレージデバイスに対する入出力要求を順序値に関連付ける。この具体的な例において、キュー500は、ストレージデバイスに向けられた最初の10個の入出力要求を含み、これらはキューに適宜配置されている。さらには、キュー500に含まれる灰色の入出力要求の各々は、当該要求がストレージデバイスに送信済みであることを示している。上述したように、多くのストレージデバイスは、デバイスが処理できる同時の入出力要求の数が制限されている。この具体的な例において、ストレージデバイスは、キュー500に含まれる各入出力要求がストレージデバイスに送信されるように、10個の同時の入出力要求を処理することができる。
図5Aにも示すように、(順序値5および順序値6の要求として示される)2つの入出力要求がキュー500から削除されてもよい。当該要求は、これらの特定の入出力要求が処理されたという指示をファイルシステムがストレージデバイスから受信した後に、ファイルシステム206によってキュー500から削除されてもよい。さらには、より詳細に後述するが、ストレージデバイスに対する新しい入出力要求は、ファイルシステムで受信されると、キュー500の末尾に追加されてもよい。これらの新しい要求は、キューに含まれる最後の入出力要求からインクリメントされた順序値を含む。このように、ストレージデバイスに対する入出力要求は、新しい入出力要求をキューの最後尾に追加し、完了した入出力要求を削除することによって、ファイルシステムによって管理されてもよい。
図5Bのキュー502では、入出力要求5および6が削除されており、11、12、および13という順が付けられた新しい入出力要求がキューの末尾に追加されている。さらには、入出力要求5および6はストレージデバイスによって完了され、キュー502から削除されているので、さらなる入出力要求がストレージデバイスに送信されてもよい。さらなる入出力要求がストレージデバイスに送られるかどうかを判断するために、ファイルシステム206は、図4の方法400を実行する。つまり、ファイルシステム206は、枯渇状態の入出力要求が処理されるまでストレージデバイスに新しい要求が発行されないように、キューに含まれる最も古い入出力要求が枯渇状態であるかどうかを判断する。具体的には、ファイルシステム206は、キュー502に含まれる最も古い入出力要求(この例において、入出力要求1)とキューに含まれる最も新しい入出力要求(この例において、入出力要求13)との差を算出する。図5Bに示すように、算出された差によって、12という値が得られる。
次に、ファイルシステム206は、算出された差を閾値と比較する。図に示す例では、算出された差が閾値に等しいと比較結果が示すように、閾値は12である。よって、キューに含まれる最も古い入出力要求とキューに含まれる最も新しい入出力要求との算出された差が閾値以下であるので、ストレージデバイスに対する入出力要求は、1つとして枯渇状態ではなく、ストレージデバイスに新しい要求が送信されてもよい。上述したように、ファイルシステムが利用する閾値は、ファイルシステムが決定または受信する任意の値であってもよい。新しい入出力要求がストレージデバイスに送信されてもよく、かつ、さらに2つの要求のための容量をストレージデバイスが有している(上記入出力要求5および6の完了に基づいて)ので、図5Cの塗りつぶされた四角い枠で示される入出力要求11および10がストレージデバイスに送信される。
さらに、図5Cに示すように、入出力要求3、9、10、および11は、ストレージデバイスによって完了され、キュー504から削除されていると想定する。また、図5Dでは、入出力要求14として示される新しい入出力要求がキュー504の末尾に追加されている。要求3、9、10、および11の完了によって、ストレージデバイスは、さらに4つの入出力要求を受信できる容量を有する。よって、図5Dでは、ファイルシステム206は、キュー506に含まれる最も古い入出力要求(要求1)と最も新しい入出力要求(要求14)との差を再び算出する。この算出された差は、図に示すように、13という値である。キュー506からさらなる要求を発行すべきかどうかを判断するために、この算出された差は、12という閾値と比較される。算出された差が閾値よりも大きいため、キュー506に含まれる入出力要求1について枯渇状態の入出力であるという判断がされる。ファイルシステムは、比較に基づいてキュー506に含まれる最も古い要求が枯渇状態であると検出すると、当該入出力要求が処理されるまでストレージデバイスに新しい入出力要求を発行するのをやめさせてもよい。よって、ストレージデバイスは新しい入出力要求を受信できる容量を有しているにもかかわらず、枯渇状態の要求が処理されるまでストレージデバイスへの入出力要求13および14の送信は遅延させられる。
図5Eでは、枯渇状態の入出力要求(入出力要求1)はストレージデバイスによって完了されており、キュー508から削除されている。場合によっては、ファイルシステム206は、未処理の要求のみが枯渇状態の要求であるまで、入出力要求を送信するのをやめてもよい。つまり、ファイルシステムは、枯渇状態の要求が処理されるまで新しい入出力要求をストレージデバイスに送信することをやめることによって、枯渇状態の要求を処理するよう、ストレージデバイスに強制してもよい。さらには、図5A~図5Gの例には示さないが、ファイルシステム206は、ストレージデバイスに対する新しい入出力要求を受信し続けて、それらをキューの末尾に追加してもよい。しかしながら、このような要求は、枯渇状態の要求が処理されるまで、ストレージデバイスに発行されない。さらには、枯渇状態の要求が処理されるのをファイルシステムが待機している間に、他の送信済みの要求(キュー508の入出力要求2、4、7など)が処理されてキューから削除されてもよい。
図5Fに示すように、枯渇状態の要求が削除されると、ファイルシステム206は、最も古い要求と最も新しい要求との差を再び算出する。この例において、算出された差は、新しい要求がこれからストレージデバイスに送信されてもよいように、閾値以下である。よって、図5Gに示すように、次に、入出力要求13および14が処理のためにストレージデバイスに送信されてもよい。上述した例および動作によって、ファイルシステムは、ストレージデバイスに送信された入出力要求の数を管理して、要求のうちの1つ以上のスタベーションを外部で制御し、いずれの要求もファイルシステムが判断するようにあまりにも長い間枯渇状態にならないようにしてもよい。このストレージデバイスに対する要求の外部制御は、ストレージデバイス自体よりも積極的であってもよく、要求の重要度または価値を考慮に入れてもよい。
ここで、図6を参照すると、本明細書において記載の様々なシステムおよび方法を実施し得る、1つ以上の演算装置を有する例示的なコンピューティングシステム600の詳細な説明を提供する。コンピューティングシステム600は、ストレージデバイス102~104、記憶システム200、ファイルシステム206、ユーザデバイス112~114、および/またはその他のコンピューティングデバイスに適用可能であってもよい。これらのデバイスの具体的な実装形態は、それぞれ異なる可能な特有のコンピューティングアーキテクチャのものであってもよく、それらのすべては明細書に具体的に記載されていないが、当業者は理解するだろうことがわかるだろう。
コンピュータシステム600は、コンピュータ処理を実行するためのコンピュータプログラムプロダクトを実行することができる一般的なコンピューティングシステムであってもよい。データおよびプログラムファイルがコンピュータシステム600に入力されてもよく、コンピュータシステム600は、このファイルを読み出して、それに含まれるプログラムを実行する。汎用コンピュータシステム600の要素のうちのいくつかを図6に示す。図6では、プロセッサ602は、入出力(I/O)部604と、中央処理装置(CPU:Central Processing Unit)606と、メモリ部608とを有すると示されている。コンピュータシステム600のプロセッサ602が1つの中央処理装置606を備えるように、または、一般に並列処理環境と呼ばれる複数の処理装置を備えるように、1つ以上のプロセッサ602があってもよい。コンピュータシステム600は、従来のコンピュータ、分散コンピュータ、または、クラウドコンピューティングアーキテクチャを介して利用可能になる1つ以上の外部のコンピュータなど、その他の種類のコンピュータであってもよい。今回記載された技術は、必要に応じて、メモリ608にロードされたソフトウェアデバイス、設定済みのDVD/CD-ROM610または記憶装置612上に格納されたソフトウェアデバイス、および/または、有線またはワイヤレスネットワークリンク614を介して通信されるソフトウェアデバイスで実装されるため、図6のコンピュータシステム600を記載の動作を実施するための専用マシンに変えることができる。
I/O部604は、1つ以上のユーザインタフェース装置(たとえば、キーボード616および表示部618)と、ディスク記憶装置612と、ディスク駆動装置620とに接続される。タブレットまたはスマートフォンデバイスの場合、物理キーボードがなくてもよいが、代わりに、コンピュータ生成されたタッチスクリーンキーボードを有するタッチスクリーンがあってもよい。一般に、ディスク駆動装置620は、DVD/CD-ROM媒体610を読み出すことができるDVD/CD-ROM駆動装置である。DVD/CD-ROM媒体610は、通常、プログラムおよびデータ622を含む。メモリ部604内に、ディスク記憶装置612上に、コンピュータシステム600のDVD/CD-ROM媒体610上に、または、1つ以上のデータベース管理プロダクト、ウェブサーバプロダクト、アプリケーションサーバプロダクト、および/または他の追加のソフトウェアコンポーネントを含む、コンピュータプログラムプロダクトを有するクラウドコンピューティングアーキテクチャを介して利用可能になる外付けストレージデバイス上に、今回記載された技術に従ってシステムおよび方法を実現するためのメカニズムを含んだコンピュータプログラムプロダクトが存在してもよい。これに代えて、ディスク駆動装置620は、光学ドライブユニット、フラッシュドライブユニット、磁気ドライブユニット、またはその他の記憶媒体駆動装置によって置き換えまたは補われてもよい。同様に、ディスク駆動装置620は、RAM(Random Access Memory)、磁気メモリ、光メモリ、および/または、スマートフォンおよびタブレット端末において共通して見られる様々な他の可能な形態の半導体ベースのメモリによって置き換えまたは補われてもよい。
ネットワークアダプタ624は、ネットワークリンク614を介してコンピュータシステム600をネットワークに接続することができる。コンピュータシステムは、ネットワークリンク614を通じて命令およびデータを受信できる。このようなシステムとして、パーソナルコンピュータ、IntelまたはPowerPCベースのコンピューティングシステム、AMDベースのコンピューティングシステム、およびWindows(登録商標)ベース、UNIX(登録商標)ベース、またはその他のオペレーティングシステムを実行するその他のシステムなどが挙げられる。端末、ワークステーション、携帯電話、タブレット端末またはスレート、マルチメディアコンソール、ゲーミングコンソール、セットトップボックスなどのデバイスをコンピューティングシステムが含んでもよいことを理解されたい。
LANネットワーク環境で利用される場合、コンピュータシステム600は、ネットワークインタフェースまたはアダプタ624を通じてローカルネットワークに(有線接続によって、またはワイヤレスで)接続される。ネットワークインタフェースまたはアダプタ624は、一種の通信デバイスである。WANネットワーク環境で利用される場合、コンピュータシステム600は、通常、モデム、ネットワークアダプタ、または、ワイドエリアネットワークで通信を確立するためのその他の種類の通信デバイスを備える。ネットワークで結ばれた環境では、コンピュータシステムまたはその一部と比較して示されるプログラムモジュールがリモートメモリストレージデバイスに格納されてもよい。図に示すネットワーク接続は、コンピュータ間に通信リンクを確立するための通信デバイスまたはその他の手段の例であることがわかる。
本明細書に記載の動作の一部またはすべては、プロセッサ602によって実行されてもよい。さらには、ローカルコンピューティングシステム、リモートデータソースおよび/またはサービス、ならびにその他の関連するロジックは、ストレージデバイスメンテナンス、ストレージデバイス102~104、ユーザデバイス112~114、および/または記憶システム100のその他の演算装置または構成要素の動作を制御するように構成されたファームウェア、ハードウェア、および/またはソフトウェアを表す。このようなサービスは、汎用コンピュータおよび専用ソフトウェア(サービスソフトウェアを実行するサーバなど)、専用コンピューティングシステムおよび専用ソフトウェア(サービスソフトウェアを実行するモバイル機器またはネットワークアプライアンスなど)、またはその他のコンピューティング構成を用いて実施されてもよい。これに加えて、本明細書に開示の1つ以上の機能は、プロセッサ602によって生成されてもよく、ユーザは、使用中のデータのいくつかがオンラインソースおよびデータストアから直接入ってくる状態で、1つ以上のユーザインタフェース装置(たとえば、キーボード616、表示部618、およびユーザデバイス112~114)を用いてGUIとやり取りしてもよい。図6で説明したシステムは、本開示の態様に応じて使用され得るまたは構成されうるコンピュータシステムの1つの可能な例にすぎない。
なお、図3および図4のフローチャートは、一例にすぎない。本発明の教示の別の実施形態は、本発明の教示の趣旨および範囲に影響を与えることなく、動作を追加、動作を省略、または、動作の順序を変更してもよい。上記は、発明の原理を例示しているにすぎない。記載の実施形態に対する様々な変更例および代替例が、本明細書における教示に鑑みて当業者に明らかになるだろう。よって、当業者は、明細書において明確に示したり記載したりしていないが、発明の原理を含み、よって、本発明の教示の趣旨および範囲に含まれる数多くのシステム、配置、および方法を考案できることがわかるだろう。上記説明および図面から、図示および記載の特定の実施形態が例示のためだけであり、本発明の教示の範囲を限定することを意図しないことを当業者は理解するだろう。特定の実施形態の詳細についての言及は、本発明の範囲を限定することを意図しない。

Claims (11)

  1. ストレージプールを管理するための方法であって、
    記憶媒体を有するストレージデバイスに向けられた1つ以上の入力/出力(入出力)要求を含んだキューを保持するステップを含み、各入出力要求は、前記記憶媒体の記憶位置についてデータを格納または取得する要求を含み、各入出力要求は、その入出力要求がストレージ管理システムで受信された順を示す順序値を含み、前記方法は、さらに、
    前記キューに含まれる第1の入出力要求に関連付けられた第1の順序値と前記キューに含まれる第2の入出力要求に関連付けられた第2の順序値との差を算出するステップと、
    前記第1の順序値と前記第2の順序値との算出された前記差を閾値と比較するステップと、
    前記1つ以上の入出力要求を含んだキューから少なくとも1つの入出力要求を前記ストレージデバイスに送信するステップと、
    前記第1の順序値と前記第2の順序値との算出された前記差が前記閾値以下である場合、前記送信するステップにおける前記送信を実施し、前記第1の順序値と前記第2の順序値との算出された前記差が前記閾値を超える場合、前記送信するステップにおける前記送信を止めるステップと、
    前記ストレージデバイスが前記入出力要求の処理を完了したとき、当該入出力要求を前記1つ以上の入出力要求を含んだキューから削除するステップと、を含み、
    前記差を算出するステップは、
    前記入出力要求が前記削除するステップにおいて削除された場合、前記キューに含まれる第1の入出力要求に関連付けられた第1の順序値と前記キューに含まれる第2の入出力要求に関連付けられた第2の順序値との差を算出するステップを含み、
    前記キューから前記少なくとも1つの入出力要求を送信するステップは、前記ストレージデバイスが前記入出力要求の処理を完了し、前記記憶媒体において前記少なくとも1つの入出力要求を処理するための容量を前記ストレージデバイスが有すると判断したときに、当該少なくとも1つの入出力要求を送信する、方法。
  2. 前記キューに含まれる前記第1の入出力要求は、前記キューの先頭に位置し、前記第2の入出力要求は、前記キューの末尾に位置する、請求項1に記載の方法。
  3. 前記ストレージデバイスに対する新しい入出力要求を受信するステップと、
    前記ストレージデバイスに対する新しい入出力要求に新しい順序値を関連付けるステップと、
    前記新しい入出力要求と前記新しい順序値とを前記キューの末尾に追加するステップとをさらに含む、請求項1または2に記載の方法。
  4. 前記ストレージデバイスから完了指示を受信するステップと、
    前記キューから対応する入出力要求を削除するステップとをさらに含む、請求項1から3のいずれか1項に記載の方法。
  5. 前記ストレージデバイスは、前記ストレージ管理システムと通信しているストレージデバイスを含んだプールの一部である、請求項1から4のいずれか1項に記載の方法。
  6. 前記ストレージデバイスを含んだプールに含まれる第2のストレージデバイスに向けられた1つ以上の入力/出力(入出力)要求を含む第2キューを保持するステップをさらに含み、前記第2キューが含む前記入出力要求の各々は、前記第2のストレージデバイスに対する前記入出力要求が前記ストレージ管理システムで受信された順を示す順序値を含む、請求項5に記載の方法。
  7. 前記閾値は、少なくとも、前記ストレージデバイスが同時に処理する入出力要求の数に基づく、請求項1からのいずれか1項に記載の方法。
  8. 前記閾値は、前記入出力要求の数に係数を乗算したものに等しい、請求項に記載の方法。
  9. 前記ストレージ管理システムは、大規模ストレージアプライアンス用のファイルシステムを含む、請求項1からのいずれか1項に記載の方法。
  10. マシン上のコンピュータに請求項1からのいずれか1項に記載の方法を実行させるためのコンピュータによって実行可能な命令を有したコンピュータ読み取り可能なプログラム。
  11. 請求項1に記載のプログラムを格納したメモリと、
    前記メモリに接続され、前記プログラムを実行するためのプロセッサとを備える、システム。
JP2019507762A 2016-08-17 2017-06-07 コンピューティングデバイスにおける、外部で管理される入出力のスタベーションの回避 Active JP7165649B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/239,396 US10241685B2 (en) 2016-08-17 2016-08-17 Externally managed I/O starvation avoidance in a computing device
US15/239,396 2016-08-17
PCT/US2017/036282 WO2018034720A1 (en) 2016-08-17 2017-06-07 Externally managed i/o starvation avoidance in a computing device

Publications (3)

Publication Number Publication Date
JP2019525349A JP2019525349A (ja) 2019-09-05
JP2019525349A5 JP2019525349A5 (ja) 2020-07-16
JP7165649B2 true JP7165649B2 (ja) 2022-11-04

Family

ID=59067922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019507762A Active JP7165649B2 (ja) 2016-08-17 2017-06-07 コンピューティングデバイスにおける、外部で管理される入出力のスタベーションの回避

Country Status (5)

Country Link
US (1) US10241685B2 (ja)
EP (1) EP3500920B1 (ja)
JP (1) JP7165649B2 (ja)
CN (1) CN109478126B (ja)
WO (1) WO2018034720A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10241685B2 (en) 2016-08-17 2019-03-26 Oracle International Corporation Externally managed I/O starvation avoidance in a computing device
US11176273B2 (en) * 2019-05-03 2021-11-16 International Business Machines Corporation Privacy-preserving anomalous behavior detection
US20210314653A1 (en) * 2020-04-02 2021-10-07 Rovi Guides, Inc. Systems and methods for delayed pausing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100312883A1 (en) 2009-06-05 2010-12-09 International Business Machines Corporation Processing Request Management
JP2011520165A (ja) 2008-03-31 2011-07-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 優先度を用いて入出力要求をキューに入れるか否かを決定するための方法、システム、および製造品(優先度を用いて、記憶装置に送出された入出力(i/o)要求をキューに入れるか否かを決定すること)

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530897A (en) * 1993-10-01 1996-06-25 International Business Machines Corporation System for dynamic association of a variable number of device addresses with input/output devices to allow increased concurrent requests for access to the input/output devices
US5701473A (en) * 1995-03-17 1997-12-23 Unisys Corporation System for optimally storing a data file for enhanced query processing
US6292856B1 (en) * 1999-01-29 2001-09-18 International Business Machines Corporation System and method for application influence of I/O service order post I/O request
US6735637B2 (en) * 2001-06-28 2004-05-11 Hewlett-Packard Development Company, L.P. Method and system for providing advanced warning to a data stage device in order to decrease the time for a mirror split operation without starving host I/O request processsing
US6996672B2 (en) * 2002-03-26 2006-02-07 Hewlett-Packard Development, L.P. System and method for active-active data replication
US6934826B2 (en) * 2002-03-26 2005-08-23 Hewlett-Packard Development Company, L.P. System and method for dynamically allocating memory and managing memory allocated to logging in a storage area network
US6839817B2 (en) * 2002-04-24 2005-01-04 International Business Machines Corporation Priority management of a disk array
US7047322B1 (en) * 2003-09-30 2006-05-16 Unisys Corporation System and method for performing conflict resolution and flow control in a multiprocessor system
US20060064529A1 (en) * 2004-09-23 2006-03-23 International Business Machines Corporation Method and system for controlling peripheral adapter interrupt frequency by transferring processor load information to the peripheral adapter
US9383938B2 (en) * 2006-04-18 2016-07-05 International Business Machines Corporation Method, system, and apparatus for re-conveying input/output operations utilizing a sequential-access data storage device secondary communication port
US7757013B1 (en) * 2006-10-20 2010-07-13 Emc Corporation Techniques for controlling data storage system performance
US7739470B1 (en) * 2006-10-20 2010-06-15 Emc Corporation Limit algorithm using queue depth to control application performance
US7716117B2 (en) * 2006-11-10 2010-05-11 Board Of Trade Of The City Of Chicago System and method for making positions held by a trader fungible
US7849167B2 (en) * 2008-04-15 2010-12-07 International Business Machines Corporation Dynamic distributed adjustment of maximum use of a shared storage resource
US8095728B2 (en) * 2008-04-18 2012-01-10 Oracle America, Inc. Method and system for power aware I/O scheduling
US8464276B1 (en) * 2010-01-11 2013-06-11 Sprint Communications Company L.P. Channel monitoring in a messaging-middleware environment
WO2012009378A1 (en) * 2010-07-16 2012-01-19 Marvell World Trade Ltd. Customized of a bus adapter card
US20120278513A1 (en) * 2011-02-01 2012-11-01 Michel Prevost Priority scheduling for multi-channel context aware communication technology
US8838931B1 (en) * 2012-03-30 2014-09-16 Emc Corporation Techniques for automated discovery and performing storage optimizations on a component external to a data storage system
CN103917962A (zh) * 2011-11-18 2014-07-09 国际商业机器公司 读取存储在存储系统上的文件
US9231879B1 (en) * 2012-02-20 2016-01-05 F5 Networks, Inc. Methods for policy-based network traffic queue management and devices thereof
US9311005B2 (en) * 2012-10-04 2016-04-12 International Business Machines Corporation Method to prevent I/O starvation of slower hosts in a multi-host environment
US9110809B2 (en) * 2013-07-03 2015-08-18 Nvidia Corporation Reducing memory traffic in DRAM ECC mode
US20160063021A1 (en) * 2014-08-28 2016-03-03 Futurewei Technologies, Inc. Metadata Index Search in a File System
US9588913B2 (en) * 2015-06-29 2017-03-07 International Business Machines Corporation Management of allocation for alias devices
US9934172B1 (en) * 2015-12-17 2018-04-03 EMC IP Holding Company LLC Data storage system with dynamic throttling of parallel sub-I/O request for individual host I/O requests
US10241685B2 (en) 2016-08-17 2019-03-26 Oracle International Corporation Externally managed I/O starvation avoidance in a computing device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011520165A (ja) 2008-03-31 2011-07-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 優先度を用いて入出力要求をキューに入れるか否かを決定するための方法、システム、および製造品(優先度を用いて、記憶装置に送出された入出力(i/o)要求をキューに入れるか否かを決定すること)
US20100312883A1 (en) 2009-06-05 2010-12-09 International Business Machines Corporation Processing Request Management

Also Published As

Publication number Publication date
WO2018034720A1 (en) 2018-02-22
US20180052612A1 (en) 2018-02-22
US10241685B2 (en) 2019-03-26
EP3500920B1 (en) 2023-05-03
EP3500920A1 (en) 2019-06-26
JP2019525349A (ja) 2019-09-05
CN109478126B (zh) 2023-03-17
CN109478126A (zh) 2019-03-15

Similar Documents

Publication Publication Date Title
US9292620B1 (en) Retrieving data from multiple locations in storage systems
US20180081591A1 (en) Storage system with read cache-on-write buffer
US10382380B1 (en) Workload management service for first-in first-out queues for network-accessible queuing and messaging services
US11411885B2 (en) Network-accessible data volume modification
US9424314B2 (en) Method and apparatus for joining read requests
US20150220463A1 (en) Prioritizing storage operation requests utilizing data attributes
US10037298B2 (en) Network-accessible data volume modification
US20140115252A1 (en) Block storage-based data processing methods, apparatus, and systems
US9513833B2 (en) Asynchronous processing of mapping information
US11055028B1 (en) Storage system with reduced read latency
JP7165649B2 (ja) コンピューティングデバイスにおける、外部で管理される入出力のスタベーションの回避
US9514072B1 (en) Management of allocation for alias devices
US20220179585A1 (en) Management of Idle Time Compute Tasks in Storage Systems
US10592165B1 (en) Method, apparatus and computer program product for queueing I/O requests on mapped RAID
US10298709B1 (en) Performance of Hadoop distributed file system operations in a non-native operating system
US10725971B2 (en) Consistent hashing configurations supporting multi-site replication
US10498804B1 (en) Load balancing Hadoop distributed file system operations in a non-native operating system
US9665308B2 (en) Optimization of the copying of change recorded data by using spare flash capacity
US10241920B2 (en) Systems and methods for coordinating interdependent asynchronous reads
US11126371B2 (en) Caching file data within a clustered computing system
EP3479236B1 (en) Network-accessible data volume modification
US11971902B1 (en) Data retrieval latency management system
US20240103746A1 (en) Data placement selection among storage devices associated with storage nodes of a storage system
US11880605B2 (en) Managing ephemeral storage of a virtual machine to provide victim caches for use by virtual storage appliances in a cloud environment
US11789825B2 (en) Hashing information of an input/output (I/O) request against a plurality of gateway nodes

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200605

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200605

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220510

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221024

R150 Certificate of patent or registration of utility model

Ref document number: 7165649

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150