JP7026534B2 - パフォーマンスケイパビリティを自己報告できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法 - Google Patents

パフォーマンスケイパビリティを自己報告できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法 Download PDF

Info

Publication number
JP7026534B2
JP7026534B2 JP2018039902A JP2018039902A JP7026534B2 JP 7026534 B2 JP7026534 B2 JP 7026534B2 JP 2018039902 A JP2018039902 A JP 2018039902A JP 2018039902 A JP2018039902 A JP 2018039902A JP 7026534 B2 JP7026534 B2 JP 7026534B2
Authority
JP
Japan
Prior art keywords
performance
host software
profile
data volume
nvm
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
JP2018039902A
Other languages
English (en)
Other versions
JP2018147490A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2018147490A publication Critical patent/JP2018147490A/ja
Application granted granted Critical
Publication of JP7026534B2 publication Critical patent/JP7026534B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Memory System (AREA)

Description

本発明は、不揮発性メモリー貯蔵装置に係り、より詳しくは、パフォーマンスケイパビリティ(performance capabilities)を自己報告(self-reporting)できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法に関する。
不揮発性メモリーエクスプレス(NVMe、Non-Volatile Memory express)のソリッドステートドライブ(SSD、Solid State Drive)は、識別コントローラー、及び名前空間識別コマンドなど(identify controller and identify namespace commands)により、装置レベルの情報を提供する。これはSSDの容量、名前空間の個数、ハードウェアキューなどの装置のリソース情報(device level information)を提供する。一般的なホストソフトウェアは、アプリケーション貯蔵容量の要件(application storage capacity requirements)をSSDにマッピングするにあたっての容量調達のため、斯かる情報を使用する。しかし、ホストソフトウェアがアプリケーションパフォーマンス要件を管理できる斯かる情報がない場合、ホストソフトウェアはデータシートに列挙されたパフォーマンスケイパビリティのようなアウト・オブ・バンド情報(out-of-band information)を使用する。
相異なるSSDモデルは、相異なるパフォーマンスレベルを支援する。或る所与のSSDモデルに対してさえ、パフォーマンスが装置の容量により変動する。
一般的に、ホストソフトウェアは、装置のモデル、容量、パフォーマンスにより形成された複数のタプル(tuples、組)のデータベースを維持し、データベースについての検索サービスを提供する。なお、ホストソフトウェアは、システム寿命の間における、ドライブの追加・削除によるシステム構成の変化に伴って、ドライブのパフォーマンスケイパビリティのアップデートされたデータベースの記録を維持するのに追加的な複雑性をきたす。
SSDの消耗により、それらのパフォーマンスケイパビリティは減少することが知られている。これはデータシート基盤のパフォーマンス計画を信頼できないようにする。
一般的なSSDのデータシートは、装置のレベルにおいてレイテンシ(latency)、ランダムIOPS(Input/Output Per Second)及び順次処理量などの総合的なパフォーマンスを列挙する。しかし、装置当たりの一つ又はそれ以上の名前空間を支援するSSDについて、データシートに列挙されたような総合的なパフォーマンスは、アプリケーションレベルパフォーマンス要件を名前空間にマッピングするにあたって、あまり有用ではない。
米国特許第8429677B2号明細書 米国特許第8478799B2号明細書 米国特許第8918583B2号明細書 米国特許第9495478B2号明細書 米国公開公報特許第2012/0198152A1号明細書 米国公開公報特許第2016/0098225A1号明細書
本発明は、向上したパフォーマンスを有し、パフォーマンスケイパビルティを自己報告できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法を提供することを目的とする。
本発明の実施例によると、貯蔵装置は、第1パフォーマンスケイパビリティ(performance capabilities)を有する第1不揮発性貯蔵媒体と、前記第1パフォーマンスケイパビリティと異なる第2パフォーマンスケイパビリティを有する第2不揮発性貯蔵媒体と、前記第1パフォーマンスケイパビリティ、前記第2パフォーマンスケイパビリティ、前記第1パフォーマンスケイパビリティに対する変化、及び前記第2パフォーマンスケイパビリティに対する変化をホストソフトウェアに報告(report)するように構成された装置コントローラーと、を含むことを特徴とする。
本発明の一実施例によると、装置コントローラー及び一つ又はそれ以上の不揮発性メモリー(NVM、Non-Volatile Memory)ブロックを含む貯蔵装置からホストソフトウェアに、パフォーマンスケイパビリティを報告する方法を提供する。前記方法は前記装置コントローラーにより、装置のパラメーターを収集して装置のパフォーマンスを較正するステップと、前記装置コントローラーにより、装置のパフォーマンス属性を算出するステップと、及び前記装置コントローラーにより、前記ホストソフトウェアに前記装置のパフォーマンス属性を通報するステップと、を包含する。
本発明の実施例によると、ホストソフトウェアにより、データボリュームパフォーマンス要件(data volume performance requirements)を含むデータを一つ又はそれ以上の名前空間プロファイルの内の適切な不揮発性メモリーエクスプレス(NVMe、non-volatile memory express)名前空間プロファイルに割り当てる方法を提供する。前記方法は前記ホストソフトウェアにおいて、前記データボリュームパフォーマンス要件を受信するステップと、前記ホストソフトウェアにより、前記データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換するステップと、前記ホストソフトウェアにより、前記装置のパフォーマンス属性を一つ又はそれ以上のNVMe名前空間プロファイルのパフォーマンス属性と比較し、一つ又はそれ以上のNVMe名前空間プロファイルの内の、どれが前記適切なNVMe名前空間プロファイルであるか判別するステップと、前記一つ又はそれ以上のNVMe名前空間プロファイルの内の少なくとも一つが前記適切なNVMe名前空間プロファイルであると判別された場合、前記ホストソフトウェアにより、前記データを前記適切なNVMe名前空間プロファイルに貯蔵されるように割り当てるステップと、を包含する。
本発明の実施例により、向上したパフォーマンスを有しパフォーマンスケイパビリティを自己報告できる不揮発性メモリー貯蔵装置、報告する方法、及びデータを不揮発性メモリーエクスプレスに割り当てる方法が提供される。
本発明の上述の特徴及び態様、他の特徴及び態様は、詳細な説明、特許請求範囲、及び添付した図面を参照して、理解され、認識されるはずである。
本発明の実施例によるコンピュータシステムのブロック図である。 図1の実施例によるコンピュータシステムのブロック図である。 図1の実施例によるコンピュータシステムの他のブロック図である。 本発明の他の実施例によるコンピュータシステムのブロック図である。 本発明の他の実施例によるコンピュータシステムのブロック図である。 本発明の一実施例による適切なデータボリューム(又は適切な名前空間プロファイル)を検査する方法を示す順序図である。 本発明の一実施例による適切なデータボリュームを検査する他の方法を示す順序図である。 本発明の一実施例による適切なデータボリュームを検査する他の方法を示す順序図である。 本発明の一実施例によるデータボリュームパフォーマンスを較正するか又は初期化する方法を示す順序図である。 本発明の一実施例によるデータボリュームパフォーマンスをアップデートする方法を示す順序図である。
本発明による実施例の態様は、パフォーマンスケイパビリティを自己報告(self-reporting)できる不揮発性メモリー(NVM、Non-Volatile Memory)貯蔵装置と関連する。本発明の一実施例によると、NVM貯蔵装置は装置コントローラー及び他のパフォーマンスケイパビリティを有する複数の不揮発性貯蔵媒体を包含する。装置コントローラーは複数の不揮発性貯蔵媒体のパフォーマンスケイパビリティを追跡し、貯蔵する。装置コントローラーは、パフォーマンスケイパビリティ、及びパフォーマンスケイパビリティに対する変化をホストソフトウェアに提供する。
添付した図面と関連して以下に記述する詳細な説明は、例示的な実施例についての説明として意図する。詳細な説明は、開示した実施例と関連した本発明の特徴を提示する。しかし、同一又は均等な機能及び構造などが、本発明の思想及び範囲に属すると意図される他の実施例により達成されることが理解されるはずである。特に言及しない限り、類似の参照番号は類似の要素又は特徴などを示すと意図される。
本発明の実施例は、不揮発性メモリー(NVM、Non-Volatile Memory)貯蔵装置(例えば、SSD(Solid State Device))がアプリケーションのパフォーマンス要件をNVM貯蔵装置にマッピングするにあたって、ホストソフトウェアを支援する内臓されたロジックを含む方法を提供する。
詳細な説明において、‘‘要件(requirements)’’(例えば、アプリケーションマッピング要件)の用語を使用するが、仮にそれらが必須的であるとしても、斯かる要求が必須的な条件ではない。例えば、‘‘要件(requirements)’’の用語は、理想的条件(ideal conditions)、最適の条件(optimal conditions)、提案された条件(suggested conditions)、最小条件(minimum conditions)、最大条件(maxium conditions)、プリセット条件(preset conditions)、推薦された条件(recommended conditions)、及び/または一般条件(normal conditions)などを表わす。
本発明の実施例は、パフォーマンスケイパビリティ(performance capabilities)をホストソフトウェア階層に提供する新しい装置のレベル特徴及び変化をホストソフトウェアに通報する方法を提示する。本発明の実施例は、ホストソフトウェアにより通信される名前空間プロファイル(namespace profiles)に装置のリソースを知能的に割り当てられる、新しい装置のレベル特徴を提示する。
本発明の実施例は、アプリケーションパフォーマンス要件をNVM貯蔵装置に最適にマッチングさせるため、単純化されたソフトウェアを構成するにあたって、新しい装置のレベル特徴に影響を与える新しいホストソフトウェア方法を提示し、細部レベル(finer granular level)におけるパフォーマンスプロファイルを提示する。本発明の実施例は貯蔵システムの内で、他のパフォーマンスケイパビルティを有する異種貯蔵装置(heterogeneous storage devices)を管理できる。
図1は、本発明の一実施例によるコンピュータシステムのブロック図を示す。図1を参照すると、コンピュータシステム100は不揮発性メモリー(NVM、Non-Volatile Memory)貯蔵装置200、ホストソフトウェア300、及び一つ又はそれ以上のアプリケーション320を包含する。NVM貯蔵装置200は装置コントローラー220及びNVMデータブロック240を包含する。一つ又はそれ以上のアプリケーション320はN(Nは整数)個のアプリケーション(例えば、第1乃至第Nアプリケーション)を包含する。
一つ又はそれ以上のアプリケーション320は、最適なパフォーマンス(optimal performance)のために、他のアプリケーションデータボリュームパフォーマンス要件(application data volume performance requirements)(例えば、データ読込み及び書込み要件)を包含する。一つ又はそれ以上のアプリケーション320の全部に対する全てのデータが同一のタイプのデータブロックに貯蔵された場合、データボリュームパフォーマンス特性(data volume performance characteristics)は、最適より高いか又は最適より低いか、又は最適であり得る。データボリュームパフォーマンス特性が低すぎる場合、一つ又はそれ以上のアプリケーション320は最適に作動できないこともあり得る。データボリュームパフォーマンス特性が一つ又はそれ以上のアプリケーション320に対して、最適より高い場合、貯蔵装置に対するコスト(cost)がかかりすぎる。
本発明の実施例によると、一つ又は一つ以上のアプリケーション320は、それらのアプリケーションデータボリュームパフォーマンス要件をホストソフトウェア300に直接提供する。本発明の他の実施例によると、アプリケーションはそれらのデータボリュームパフォーマンス要件をアプリケーション管理ソフトウェアに提供する。アプリケーション管理ソフトウェアはホストソフトウェア300に対するアプリケーションデータを管理する。
ホストソフトウェア300(又はアプリケーション管理ソフトウェア)が、アプリケーション320の要求を満足するデータボリュームパフォーマンス特性を検索するための要請を受信した場合、ホストソフトウェア300はデータボリュームパフォーマンス特性を装置のパフォーマンス属性(device performance attributes)に変換する。
ホストソフトウェア300は、NVMデータブロック240及び/又は一つ又はそれ以上のデータボリューム(図4参照)の各々に対する装置のパフォーマンス属性を貯蔵するデータベース(database)を維持する。又は、装置コントローラー220はNVMデータブロック240及び/又は一つ又はそれ以上のデータボリューム(図4参照)の各々に対する装置のパフォーマンス属性を貯蔵するデータベース(database)を維持する。
一部の実施例によると、ホストソフトウェア300がデータボリュームパフォーマンス特性を装置のパフォーマンス属性に変換した後に、ホストソフトウェア300は変換された装置のパフォーマンス属性をホストソフトウェア300によって維持されるデータベースに貯蔵された装置のパフォーマンス属性と比較し、NVMデータブロック240が可用である(available)か判別する。適切なマッチングが可用であるか判別するにあたって、ホストソフトウェア300は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、ホストソフトウェア300は装置のパフォーマンス属性の全てを超過するか又は満足するNVMデータブロック240が存在する場合にのみ、そのNVMデータブロック240が可用であると判別する。他の実施例によると、ホストソフトウェア300は装置のパフォーマンス属性の一部又は大部分を超過するか又は満足するNVMデータブロックが存在する場合に、そのNVMデータブロック240が可用であると判別する。また、他の実施例によると、ホストソフトウェア300は装置のパフォーマンス属性の各々に対して、特定の比率又はそれ以上(例えば、90%又は95%以上)を持つNVMデータブロック240が存在する場合に、そのNVMデータブロック240が可用であると判別する。
一つ以上の適切なNVMデータブロック240が存在する場合、ホストソフトウェア300は変換された装置のパフォーマンス属性に一番近い装置のパフォーマンス属性を有するNVMデータブロック240を選択する。しかし、本発明はこれに限定されず、例えば、ホストソフトウェア300は最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び/又は最低書込み速度などを有するNVMデータブロック240を選択する。
ホストソフトウェア300がアプリケーション管理ソフトウェアを含む場合、ホストソフトウェア300はアプリケーション管理ソフトウェアに適切なNVMデータブロック240を通報する。
他の実施例によると、ホストソフトウェア300がデータボリュームパフォーマンス特性を装置のパフォーマンス属性に変換した後に、ホストソフトウェア300は装置のパフォーマンス属性及びマッチングするNVMデータブロック240を検索するための要請を装置コントローラー220に提供する。以後、装置コントロ-ラー220は、変換された装置のパフォーマンス属性を装置コントローラー220によって維持されるデータベースに貯蔵された装置のパフォーマンス属性と比較し、適切なNVMデータブロック240が可用であるか判別する。適切なマッチングが可用であるか判別するにあたって、装置コントローラー220は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、装置コントローラー220は、装置のパフォーマンス属性の全てを超過するか又は満足するNVMデータブロック240が存在する場合にのみ、そのNVMデータブロック240が可用であると判別する。他の実施例においては、装置コントローラー220は装置のパフォーマンス属性の一部又は大部分を超過するか又は満足するNVMデータブロック240が存在する場合に、そのNVMデータブロック240が可用であると判別する。また、他の実施例においては、装置コントローラー220は装置のパフォーマンス属性の各々について特定の比率又はそれ以上(例えば、90%又は95%)を有するNVMデータブロック240が存在する場合に、そのNVMデータブロック240が可用であると判別する。
二つ以上の適切なNVMデータブロック240が存在する場合、装置コントローラー220は、変換された装置のパフォーマンス属性に一番近い装置のパフォーマンス属性を含むNVMデータブロック240を選択する。しかし、本発明はこれに限定されず、例えば、装置コントローラー220は、最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び/又は最低書込み速度などを有するNVMデータブロック240を選択する。
装置コントローラ220は、適切で可用なNVMデータブロック240が存在するか否かをホストソフトウェア300に通報する。適切で可用なNVMデータブロック240が存在する場合、装置コントローラー220は装置コントローラー220がどのNVMデータブロック240を選択したかをホストソフトウェア300に通報する。
ホストソフトウェア300がアプリケーション管理ソフトウェアを含む場合、ホストソフトウェア300は適切なNVMデータブロック240をアプリケーション管理ソフトウェアに通報する。
このように、装置のケイパビリティを基盤にして、ホストソフトウェア300又は装置コントローラー220は、装置をマッピングしてアプリケーションの容量要件を満足させる。
ホストソフトウェア300は、標準に定義されたインターフェース(例えば、SCSIである場合、SCSI INQUIRYコマンド、NVMe(Non-Volatile Memory express)である場合、Identify Controller and Identify Namespaceコマンドであり得る。)を使用して装置コントローラーと通信する。しかし、既存のインターフェースは装置のパフォーマンス属性に対する、いかなる情報も提供しない。
本発明の一部の実施例によると、NVM貯蔵装置200はSSD(Solid State Drive)、HDD(Hard Disk Drive)、又はハイブリッドSSD-HDDであり得るが、本発明はこれに制限されない。適切な不揮発性メモリーのデータ貯蔵装置がNVM貯蔵装置200として使用される。NVMデータブロック240はフラッシュメモリーであり得るが、本発明はこれに制限されない。
図2は図1の実施例によるコンピュータシステムのブロック図である。図2はホストソフトウェア300がパフォーマンス属性を要請して、ホストソフトウェア300が、パフォーマンス属性の報告(report)を受信する方法を示す。装置コントローラ220はこのようなメカニズム(mechanism)を使用してパフォーマンス属性をホストソフトウェア300に報告する。
ホストソフトウェア300は、装置コントローラー220にパフォーマンス属性を要請する。スタート時に(at start-up)、ホストソフトウェアがNVM貯蔵装置200(図1参照)の一部の変化を検出する時、及び/又は設定された時間が経過した後に、ホストソフトウェア300はパフォーマンス属性を要請する。
NVM貯蔵装置200は、装置コントローラー220及び装置パフォーマンスモニター400を包含する。装置パフォーマンスモニター400は装置コントローラー220の一部であるか又は装置コントローラー220と区分される。
装置コントローラー220がホストソフトウェア300からパフォーマンス属性に対する要請を受信した場合、装置コントローラー220は装置のパフォーマンスモニター400にパフォーマンス属性を要請する。
装置パフォーマンスモニター400は、NVMデータブロック240(図1参照)のパフォーマンスをモニター(monitor)する。本発明の実施例によると、装置パフォーマンスモニター400はモニタリング方式(monitoring scheme)により、NVMデータブロック240をモニターする。モニタリング方式は連続的に(continuously)NVMデータブロック240をモニターする方式、設定されたスケジュール(set schedule)によりNVMブロックをモニターする方式、及び/又はランダムに(randomly)NVMデータブロック240をモニターする方式などである。
本発明の実施例によると、装置パフォーマンスモニター400がパフォーマンス属性に対する要請を受信した場合、装置パフォーマンスモニター400は上述したモニタリング方式を基盤にして獲得された現在の(又は最近の)装置のパフォーマンス属性を判別する。本発明の他の実施例によると、装置パフォーマンスモニター400が装置のパフォーマンス属性に対する要請を受信した場合、装置パフォーマンスモニター400は現在の装置のパフォーマンス属性を判別するために、NVMデータブロック240をポーリング(polling)するか又はテストする。
装置パフォーマンスモニター400が現在の装置のパフォーマンス属性を判別した場合、装置パフォーマンスモニター400は現在の装置のパフォーマンス属性を装置コントローラー220に報告する。
装置コントローラー220が現在の装置のパフォーマンス属性を受信した場合、装置コントローラー220は現在の装置のパフォーマンス属性をホストソフトウェア300に報告する。
図3は、図1の実施例によるコンピュータシステムの他のブロック図である。図3は、ホストソフトウェア300が動的パフォーマンス変化の通報(dynamic performance change notifications)に登録して、ホストソフトウェア300が動的パフォーマンス変化の通報を受信する方法を示す。装置コントローラー220は、斯かるメカニズムを使用し、ホストソフトウェア300に装置のパフォーマンスに対する重要な変化(significant changes)を通報する。
ホストソフトウェア300は、装置コントローラー220からパフォーマンス変化の通報(performance change notifications)を受信するために登録する。例えば、ホストソフトウェア300は、パフォーマンス変化の通報に対する登録要請(register request)を装置コントローラー220に伝送する。ホストソフトウェア300はNVMデータブロック240(図1参照)のパフォーマンス属性に対する変化(例えば、重要な変化(significant changes))が非同期イベントにより報告されるように要請する。非同期イベントは、主要プログラムの流れと独立的に発生される。斯かるイベントは、主要プログラムの流れが継続されるようにする非遮断型方式(non-blocking scheme)により実行される。
NVM貯蔵装置200は、装置コントローラー220及び装置パフォーマンスモニター400を包含する。装置パフォーマンスモニター400は装置コントローラー220の一部であるか又は装置コントローラー220と別個である。
装置パフォーマンスモニター400は、NVMデータブロック240のパフォーマンスをモニターする。本発明の一実施例によると、装置パフォーマンスモニター400はモニタリング方式によりNVMデータブロック240をモニターする。モニタリング方式は、連続的に(continuously)NVMデータブロック240をモニターする方式、設定されたスケジュール(set schedule)によりNVMブロックをモニターする方式、及び/又はランダムに(randomly)NVMデータブロック240をモニターする方式などである。
装置パフォーマンスモニター400が、装置のパフォーマンス属性において、重要な変化(significant changes)が発生したと判別した場合、装置パフォーマンスモニター400は装置コントローラー220に変化が発生したことを通報し、装置コントローラー220に現在の装置のパフォーマンス属性を通報する。
装置コントローラー220が装置のパフォーマンス属性に対する変化の通報を受信した場合、装置コントローラー220は現在の装置のパフォーマンス属性を非同期イベントにより、ホストソフトウェア300に報告する。
図4は、本発明の他の実施例によるコンピュータシステムのブロック図である。図4を参照すると、コンピュータシステム102は不揮発性メモリー(NVM、Non-Volatile Memory)貯蔵装置202、ホストソフトウェア302、及び一つ又はそれ以上のアプリケーション322を包含する。NVM貯蔵装置202は装置コントローラー222、第1NVMデータブロック242、及び第2NVMデータブロック244を包含する。装置コントローラー222は第1データボリューム224A(又は第1パフォーマンスプロファイル)及び第2データボリューム224B(又は第2パフォーマンスプロファイル)を包含する。データボリュームの各々は、各々に割り当てられたNVMデータブロックに対する情報を包含する。例えば、データボリュームの各々は、データボリュームに割り当てられたNVMデータブロックの容量228A、228B及びデータボリュームのパフォーマンス特性226A、226Bに対する情報を包含する。一つ又はそれ以上のアプリケーション322はN(Nは整数)個のアプリケーション(例えば、第1乃至第Nアプリケーション)を包含する。
図4は、二つのデータボリューム(第1データボリューム224A及び第2データボリューム224B)及び二つの形態のNVMデータブロック(第1NVMデータブロック242及び第2NVM データブロック244)を含むNVM貯蔵装置202を示すが、本発明はこれに制限されない。例えば、NVM貯蔵装置202は二つ以上のデータボリューム及び/又は二つ以上のタイプのNVMデータブロックを包含できる。
一つ又はそれ以上のアプリケーション322は、最適なパフォーマンスのために、他のアプリケーションデータボリュームパフォーマンス要件(例えば、データの読み込み及び書込みの要件)を包含する。一つ又はそれ以上のアプリケーション322の全部に対する全てのデータが全て同一のタイプのデータブロックに貯蔵された場合、データボリュームパフォーマンス特性が最適より高いか、最適より低いか、又は最適であり得る。データボリュームパフォーマンス特性が低すぎる場合、一つ又はそれ以上のアプリケーション322は最適に作動できないことも有る。データボリュームパフォーマンス特性が一つ又はそれ以上のアプリケーション322に対する最適より高い場合、貯蔵装置に対するコストがかかりすぎる。
本発明の実施例によると、一つ又はそれ以上のアプリケーション322は、それらのアプリケーションデータボリュームパフォーマンス要件をホストソフトウェア302に、直接に提供する。本発明の他の実施例によると、アプリケーションはそれらのアプリケーションデータボリュームパフォーマンス要件をアプリケーション管理ソフトウェアに提供する。アプリケーション管理ソフトウェアは、ホストソフトウェア302に対するアプリケーションデータを管理する。
ホストソフトウェア302は、第1データボリューム224A及び第2データボリューム224Bに対するデータボリュームパフォーマンス特性(data volume performance characteristics)を貯蔵するデータベースを維持する。又は、装置コントローラー222は第1データボリューム224A及び第2データボリューム224Bに対するデータボリュームパフォーマンス特性を貯蔵するデータベースを維持する。
本発明の実施例によると、ホストソフトウェア302(又はアプリケーション管理ソフトウェア)がアプリケーション322の要求を満足するデータボリュームパフォーマンス特性を検索するための要請を受信した場合、ホストソフトウェア302は要請されたデータボリュームパフォーマンス特性を、ホストソフトウェア302により維持されるデータベースに貯蔵されたデータボリュームパフォーマンス特性と比較して、適切なデータボリュームが可用であるか判別する。適切なマッチングが可用であるか判別する時、ホストソフトウェア302は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、ホストソフトウェア302はデータボリュームパフォーマンス特性の全てを超過するか又は満足するデータボリュームが存在する場合にのみ、適切なデータボリュームが可用であると判別する。他の実施例によると、ホストソフトウェア302はデータボリュームパフォーマンス特性の内で、一部又は大部分を超過するか又は満足するデータボリュームが存在する場合に、適切なデータボリュームが可用であると判別する。また、本発明の他の実施例によると、ホストソフトウェア302は、データボリュームパフォーマンス特性の各々に対して、特定の比率又はそれ以上(例えば、90%又は95%)を持つデータボリュームが存在する場合、適切なデータボリュームが可用であると判別する。
一つ以上の適切なデータボリュームが存在する場合、ホストソフトウェア302は要請されたデータボリュームパフォーマンス特性に一番近いデータボリューム特性を持つデータボリュームを選択する。しかし、本発明はこれに制限されるのではなく、例えば、ホストソフトウェア302は最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び/又は最低書込み速度などを持つNVMデータブロック240を選択する。
ホストソフトウェア302がアプリケーション管理ソフトウェアを包含する場合、ホストソフトウェア302はアプリケーション管理ソフトウェアに適切なデータボリュームを通報する。
本発明の他の実施例によると、ホストソフトウェア302(又はアプリケーション管理ソフトウェア)がアプリケーション322の要求を満足させるデータボリュームパフォーマンス特性を検索するための要請を受信した場合、ホストソフトウェア302は要請されたデータボリュームパフォーマンス特性及びマッチングされたデータボリュームを検索するための要請を装置コントローラー222に提供する。以後、装置コントローラー222は要請されたデータボリュームパフォーマンス特性を、装置コントローラー222により維持されるデータベースに貯蔵された装置のボリュームパフォーマンス特性と比較して、適切なデータボリュームが可用であるか判別する。適切なマッチングが可用であるか判別する時、装置コントローラー222は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、装置コントローラー222はデータボリュームパフォーマンス特性の全てを超過するか又は満足するデータボリュームが存在する場合にのみ、適切なデータボリュームが可用であると判別する。他の実施例によると、装置コントローラー222はデータボリュームパフォーマンス特性の内で、一部又は大部分を超過するか又は満足するデータボリュームが存在する場合に、適切なデータボリュームが可用であると判別する。本発明の他の実施例によると、装置コントローラー222は、データボリュームパフォーマンス特性の各々に対して、特定の比率又はそれ以上(例えば、90%又は95%)を持つデータボリュームが存在する場合、適切なデータボリュームが可用であると判別する。
一つ以上の適切なデータボリュームが存在する場合、装置コントローラー222は要求されたデータボリュームパフォーマンス特性に一番近いデータボリューム特性を持つデータボリュームを選択する。しかし、本発明はこれに制限されず、例えば、装置コントローラー222は最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び/又は最低書込み速度などを有するデータボリュームを選択する。
装置コントローラー222は、適切な可用データボリュームが存在するか否かをホストソフトウェア302に通報する。適切な可用データボリュームが存在する場合、装置コントローラー222はホストソフトウェア302に装置コントローラー222がどのデータボリュームを選択したかを通報する。
ホストソフトウェア302がアプリケーション管理ソフトウェアを包含する場合、ホストソフトウェア302はアプリケーション管理ソフトウェアに適切なデータボリュームを通報する。
このように、装置のケイパビリティを基盤にして、ホストソフトウェア302又は装置コントローラー222は装置のデータボリュームをマッピングして、アプリケーションの容量要求を充足させる。
ホストソフトウェア302は、標準に定義されたインターフェース(例えば、SCSIの場合、SCSI INQUIITYコマンドであり得、NVMeの場合、Identify Controller及びIdentify Namespaceコマンドであり得る。)を使用して装置コントローラー222と通信する。しかし、既存のインターフェースは装置のパフォーマンス属性のいかなる情報も提供しない。
本発明の一部の実施例によると、NVM貯蔵装置202はSSD(Solid State Drive)、HDD(Hard Disk Drive)、又はハイブリッドSSD-HDDであり得るが、本発明はこれに制限されない。適切な不揮発性メモリーのデータ貯蔵装置がNVM貯蔵装置202として使用される。NVMデータブロックはフラッシュメモリーであり得るが、本発明はこれに制限されない。
図4は、また、他のパフォーマンス属性を有する他のデータボリューム(又は名前空間)を支援する貯蔵装置を示す。装置コントローラーは割り当てられたパフォーマンス属性を有する独立的な他のデータボリュームを生成できる。装置コントローラーはSSDにおいて、使用できる一つ又はそれ以上のタイプのNVMを使用し、データボリュームパフォーマンス要件を充足させる。
本発明の実施例によると、データボリュームは特定のパフォーマンスプロファイルを包含する。上述したように、装置コントローラーは装置のパフォーマンスケイパビリティを較正(calibrate)し、データボリュームパフォーマンス要件を装置のパフォーマンスケイパビリティでマッピングする。従って、装置コントローラーは一つ又はそれ以上のNVMの形態及び他のハードウェアリソースを選択し、データボリュームに対して特定されたパフォーマンスを提供する。与えられた時間に、装置コントローラーにおいて、実際に表われるデータボリュームに対するパフォーマンスケイパビリティの簿記(bookkeeping)の管理において、特定のパフォーマンス基準をこれ以上提供できない場合、新しいデータボリュームに対する要請は失敗する。
本発明の実施例によると、ホストソフトウェアはアプリケーション管理パフォーマンスの基準(application management performance specification)を装置のパフォーマンス属性(device performance attributes)に変換し、パフォーマンス属性情報を貯蔵装置にデータボリューム生成要請により伝達し、貯蔵装置からの応答を処理し、アプリケーション管理ソフトウェアにより成功/失敗(success/failure)を応答するように構成される。
本発明の実施例によると、装置コントローラーはデータボリューム生成要請を処理し、データボリューム属性を基本NVMケイパビリティ(underlying NVM capabilities)でマッピングし、一つ又はそれ以上のNVMタイプを選択してデータボリュームパフォーマンス要件を提供し、ハードウェアキュー、バッファリングメモリーなどの他のリソースを割り当てて、パフォーマンス要件を充足させ、ホストソフトウェアに成功/失敗(success/failure)を応答するように構成される。
図5は、本発明の他の実施例によるコンピュータシステムのブロック図である。図5を参照すると、コンピュータシステム104は複数の不揮発性メモリー(NVM、Non-Volatile Memory)貯蔵装置(例えば、第1NVM貯蔵装置204A、第2NVM貯蔵装置204B、第3NVM貯蔵装置204C)、ホストソフトウェア304及び一つ又はそれ以上のアプリケーション324を包含する。NVM貯蔵装置の各々は装置コントローラー(例えば、第1装置コントローラー230A、第2装置コントローラー230B、第3装置コントローラー230C)、及びNVMデータブロック246を包含する。NVM貯蔵装置の各々のNVMデータブロック246は単一タイプのデータブロックのみ包含するか、又は複数のタイプのデータブロックを包含する。一つ又はそれ以上のアプリケーション322はN(Nは整数)個のアプリケーション(例えば、第1乃至第Nアプリケーション)を包含する。
貯蔵装置の各々は、複数のパフォーマンスプロファイル(performance profiles)を包含する。各々のパフォーマンスプロファイルは、それに割り当てられNVMデータブロック246に対する情報を包含する。例えば、パフォーマンスプロファイルの各々は、パフォーマンスプロファイルに割り当てられたNVMデータブロック246の容量及びパフォーマンス特性に対する情報を包含する。
図5において、各々二つのプロファイルのみ含むNVM貯蔵装置を示しているが、本発明はこれに制限されない。例えば、NVM貯蔵装置は二つ以上のパフォーマンスプロファイルを各々包含できる。同一のパフォーマンスプロファイルが一つ以上のNVM貯蔵装置に存在できる。例えば、図5において、パフォーマンスプロファイルA(232A)は第1NVM貯蔵装置204A及び第2NVM貯蔵装置204Bの両方に存在し、パフォーマンスプロファイルB(232B)は第1NVM貯蔵装置204A及び第3NVM貯蔵装置204Cの両方に存在する。また、パフォーマンスプロファイルは一つのNVM貯蔵装置のみに存在できる。例えば、図5において、パフォーマンスプロファイルC(232C)は第2NVM貯蔵装置204Bにのみ存在する。パフォーマンスプロファイルD(232D)は第3NVM貯蔵装置204Cにのみ存在する。
一つ又はそれ以上のアプリケーション324は、最適なパフォーマンスのために、他のアプリケーションデータボリュームパフォーマンス要件(例えば、データの読み込み及び書込みの要求)を包含する。一つ又はそれ以上のアプリケーション324の全部が全て同一のタイプのデータブロックに貯蔵された場合、データボリュームパフォーマンス特性が最適より高いか、最適より低いか、又は最適であり得る。データボリュームパフォーマンス特性が低すぎる場合、一つ又はそれ以上のアプリケーション324は最適に作動できないことも有り得る。データボリュームパフォーマンス特性が一つ又はそれ以上のアプリケーション324に対する最適より高い場合、貯蔵装置に対するコストがかかりすぎる。
本発明の実施例によると、一つ又はそれ以上のアプリケーション324は、それらのアプリケーションパフォーマンス要件をホストソフトウェア304に、直接提供する。本発明の他の実施例によると、アプリケーションはそれらのアプリケーションパフォーマンス要件をアプリケーション管理ソフトウェアに提供する。アプリケーション管理ソフトウェアは、ホストソフトウェア304に対するアプリケーションデータを管理する。
ホストソフトウェア304は、パフォーマンスプロファイルに対するパフォーマンス特性を貯蔵するデータベースを維持する。又は、装置コントローラー230A乃至230Cの各々はパフォーマンスプロファイルに対するパフォーマンス特性を貯蔵するデータベースを維持する。
本発明の一実施例によると、ホストソフトウェア304(又はアプリケーション管理ソフトウェア)がアプリケーション324の要求を満足するパフォーマンスプロファイルを検索するための要請を受信した場合、ホストソフトウェア304は要請されたパフォーマンス特性を、ホストソフトウェア304により維持されるデータベースに貯蔵されたパフォーマンス特性と比較して、パフォーマンスプロファイルが可用であるか判別する。マッチングが可用であるか判別する時、ホストソフトウェア304は読込み速度、書込み速度、容量などを考慮する。一部の実施例によると、ホストソフトウェア304は要請されたパフォーマンス特性の全てを超過するか又は満足するパフォーマンスプロファイルが存在する場合にのみ、そのパフォーマンスプロファイルが可用であると判別する。他の実施例によると、ホストソフトウェア304は要請されたパフォーマンス特性の一部又は大部分を超過するか又は満足するパフォーマンスプロファイルが存在する場合に、そのパフォーマンスプロファイルが可用であると判別する。また、本発明の他の実施例によると、ホストソフトウェア304は、要請されたパフォーマンス特性の各々に対して、特定の比率又はそれ以上(例えば、90%又は95%)を含むパフォーマンスプロファイルが存在する場合に、そのパフォーマンスプロファイルが可用であると判別する。
一つ以上の適切なパフォーマンスプロファイルが存在する場合、ホストソフトウェア304は要求されたパフォーマンス特性に一番近いパフォーマンス特性を持つパフォーマンスプロファイルを選択する。しかし、本発明はこれに制限されず、例えば、ホストソフトウェア304は最高の可用貯蔵空間、最低の可用貯蔵空間、最高容量、最低容量、最高読込み速度、最低読込み速度、最高書込み速度、及び/又は最低書込み速度などを有するパフォーマンスプロファイルを選択する。
ホストソフトウェア304がアプリケーション管理ソフトウェアを含む場合、ホストソフトウェア304はアプリケーション管理ソフトウェアに適切なパフォーマンスプロファイルを通報する。
このように、装置のケイパビリティを基盤にして、ホストソフトウェア304は装置のパフォーマンスプロファイルをマッピングして、アプリケーション容量要件を満足させる。
本発明の一部の実施例によると、NVM貯蔵装置はSSD(Solid State Drive)、 HDD(Hard Disk Drive)、又はハイブリッドSSD-HDDであり得るが、本発明はこれに制限されない。適切な不揮発性メモリーのデータ貯蔵装置がNVM貯蔵装置として使用される。NVMデータブロックはフラッシュメモリーであり得るが、本発明はこれに制限されない。
ホストソフトウェア304は、標準で定義されたインターフェース(例えば、SCSIの場合、SCSI INQUIITYコマンド、NVMe(Non-Volatile Memory express)の場合、Identify Controller and Identify Namespaceコマンドであり得る。)を使用して装置コントローラーと通信する。しかし、既存のインターフェースは装置のパフォーマンス属性に対する、いかなる情報も提供しない。
図5は、また、各々が他のパフォーマンスプロファイルを支援する三つの他の貯蔵装置を管理するホストソフトウェアを示す。図示したように、ホストソフトウェアは同一の貯蔵装置リソースプールを共有する他のパフォーマンスプロファイルを有する多数のアプリケーションを包含できる。ホストソフトウェアはアプリケーションの各々について、適切な貯蔵装置にデータボリュームを生成し、それらの各々のパフォーマンスプロファイルを充足する。
本発明の一実施例によると、ホストソフトウェアはアプリケーション管理パフォーマンスの仕様(application management performance specification)を装置のパフォーマンス属性(device performance attributes)に変換し、装置のパフォーマンスケイパビリティマトリックスを参照してアプリケーションパフォーマンス要件を充足する一つ又はそれ以上の装置を選択し、パフォーマンス属性情報を貯蔵装置にデータボリューム生成要請により伝送し、貯蔵装置からの応答を処理し、アプリケーション管理ソフトウェアにより成功/失敗(success/failure)を応答するように構成される。
本発明の一実施例によると、ホストソフトウェアは初期化時間及び/又は装置連結イベントを管理する間、システムに実際表れる全ての装置に対する装置パフォーマンスケイパビリティを収集し、必要によって、装置のパフォーマンスケイパビリティマトリックスをデータボリュームにアップデートするように構成される。
本発明の実施例によると、貯蔵装置コントローラーはデータボリューム生成要請を処理し、データボリュームパフォーマンス属性を、基本NVMケイパビリティでマッピングし、一つ又はそれ以上のNVMタイプを選択してデータボリュームパフォーマンス要件を提供し、ハードウェアキュー、バッファリングメモリーなどの他のリソースを割り当てて、パフォーマンス要件を充足させ、ホストソフトウェアに成功/失敗(success/failure)を応答するように構成される。
本発明の一実施例によると、貯蔵装置コントローラーは、初期化の間、ホストソフトウェアにより(例えば、較正要請(calibration request)により)、要請されたように装置のパフォーマンスケイパビリティを較正(calibrate)し、装置のパフォーマンスケイパビリティマトリックスをアップデートし、必要によって、パフォーマンスケイパビリティについて、ホストソフトウェアに通報するように構成される。
図1乃至図5の実施例を参照すると、装置識別コマンド(device identification command)に対する応答は、製造社特定フィールド(vendor specific fields)及び/又は定義され得る追加的なフィールドであり、他のNVMタイプ及びパフォーマンス属性についての情報を通報する。
装置は、装置のケイパビリティのような追加的な情報を提供できる。ケイパビリティはNVM属性情報、装置パフォーマンスケイパビリティ情報、装置のパフォーマンス属性のリスト、パフォーマンスケイパビリティの動的計測、及び/又は装置のパフォーマンス属性における変化などを包含する。
ホストソフトウェアは装置のケイパビリティについて、まず調査する。上述した装置のケイパビリティを支援する装置について、ホストソフトウェアはアプリケーション作業負荷を貯蔵媒体にマッピングするのに、使用され得る追加的な装置情報を、さらに調査する。
加えて、NVM属性情報は、各貯蔵装置に表れたNVMタイプの個数、ASCIIテキスト形態のNVMテキスト(NVM description in ASCII text)、装置内のNVM容量、及び/又はNVMタイプ及び装置の具現と関連したNVMパフォーマンス特性を包含する。
装置のパフォーマンスケイパビリティ情報は、他のIOサイズのIOに対するランダム読込みIOPS、他のIOサイズのIOに対するランダム書込みIOPS、他のIOサイズのIOに対する順次読込帯域幅(BW、BandWidth)、他のIOサイズのIOに対する順次書込みBW、他のIOサイズのIOに対するランダム読込みレイテンシ、他のIOサイズのIOに対するランダム書込みレイテンシ、装置が一つ又はそれ以上の他のアプリケーションにより作動される間100%読込み、100%書込み、それらが組み合わされた作業負荷などを含むが、これに限定されない他のIO作業負荷の条件下での上述されたパフォーマンス属性、SSDにおいて使用されるNVMタイプに適用可能なNVMの残った寿命(%)及び他のオーバープロビジョニングレベル(over provisioning)の測定による予想されるパフォーマンスレベルなどを包含する。
装置は、装置の全体について及び/又はNVMe装置において、名前空間のように、サブ単位(sub-granularity)でこのような情報を提供する。このようなパフォーマンス属性のセットはアプリケーションからホストソフトウェアに、貯蔵装置に、容易に交換され得るパフォーマンスプロファイル下でグループ化される。
装置コントローラーは多様な装置属性、例えば、コントローラーの内部ケイパビリティ、ホストインターフェースケイパビリティ、NVMインターフェースケイパビリティ、NVMケイパビリティ、SSDで構成されたオーバープロビジョニングレベル、及び/又は貯蔵装置ケイパビリティに影響を与える他の関連パラメーターなどの測定(measure)によりパフォーマンスを計測(calibrate)する。
コントローラーの内部ケイパビリティは、バス幅及び比率、IO処理ケイパビリティ、並列IO処理ケイパビリティ、該当する場合、装置ファームウェアにより許容されるパフォーマンス基準、及び/又はパフォーマンスに影響を与える他の属性などを包含する。
ホストインターフェースケイパビリティは、連結されたホストインターフェース及び物理的リンクが、与えられた時間でのトレーニング(training)により許容される物理的リンクにおいて見られるパフォーマンスエラー比率(error rates)、物理的リンクで経験されるレイテンシジッタ比率(latency jitter rate)、及び/又はMTU、バースト(burst)速度、プリフェッチキャッシュ(pre-fetch cache)などのリンク属性を包含する。
NVMインターフェースケイパビリティは、読込み/書込みIOを提供する並列メモリーチャンネルの個数、メモリーチャンネルの速度、及び/又はパフォーマンスに影響を与える他の関連属性を包含する。
SSDの各々の他のタイプについて、NVMケイパビリティは、SSDの全体のNVMの読込み及び書込みIO比率、SSDの全体のNVMの読込み及び書込みIOレイテンシ、及び/又はSSDにフェイル(fail)された又は隔離されたメモリーモジュールを計算する与えられた時間での可用なNVM容量などを包含する。NVMケイパビリティは、経験されたメモリーエラー比率、及び/又はパフォーマンスに影響を与える他の関連属性を、さらに包含する。
上述した装置のパラメーターの機能として列挙したパフォーマンス属性を較正する多様な方法が存在する。例示的な方法は、順次的な読込み/書込みの処理量が以下の属性の最小値と同一である。(貯蔵装置のホストインターフェースがトレーニング(training)される比率の効率的な帯域幅、大きなIOを処理するメモリーチャンネルの個数、コントローラーでのバス(bus)幅の効率的な帯域幅)。
本発明の実施例によると、ホストソフトウェアは上述したような、新しいインターフェースを使用して装置のパフォーマンスケイパビリティを調査する。ホストソフトウェアは、システムで管理されている全ての貯蔵装置及びそれらの各々のパフォーマンスケイパビリティの記録を維持する。なお、貯蔵装置により報告される非同期イベントを支援するものからの動的パフォーマンスの変化を登録し、管理する。
本発明の一実施例によると、アプリケーションパフォーマンス要件について、ホストソフトウェアはアプリケーション管理ソフトウェアから受信された、全てのデータボリューム要請の記録及びそれらが基本貯蔵装置でどのようにマッピングされたかの履歴を維持する。アプリケーションデータボリュームのパフォーマンス及び容量要求を基盤にして、ホストソフトウェアは適切な貯蔵装置を選択してデータボリュームを生成する。
なお、ホストソフトウェアは、超過加入率(over subscription ratios)を調整するためのアプリケーションの実時間使用、生成されて検出されるパフォーマンス基準についての一般的な簿記(bookkeeping)動作などを維持する。
図6は、本発明の一実施例による、適切なデータボリューム(又は適切な名前空間プロファイル)を検査する方法を示す順序図である。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をアプリケーションから受信する(600)。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をホストソフトウェアに提供する(610)。ホストソフトウェアは、データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換する(620)。ホストソフトウェアは、装置のパフォーマンス属性を装置コントローラーに提供する(630)。装置コントローラーは、装置のパフォーマンス属性を貯蔵されたデータボリュームパフォーマンス属性と比較し、適切なマッチングが存在するか判別する(640)。
適切なマッチングが存在する場合、装置コントローラーは、適切なデータボリュームをホストソフトウェアに報告(report)する(650)。ホストソフトウェアは、適切なデータボリュームをアプリケーション管理ソフトウェアに報告する(660)。アプリケーション管理ソフトウェアは、アプリケーションデータを適切なデータボリュームに貯蔵されるように割り当てる(670)。
適切なマッチングが存在しない場合、装置コントローラーは、ホストに適切なデータボリュームが無いことを報告する(680)。ホストソフトウェアは、アプリケーション管理ソフトウェアに適切なデータボリュームが無いことを報告する(690)。
図7は、本発明の実施例による、適切なデータボリュームを検査する他の方法を示す順序図である。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をアプリケーションから受信する(700)。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をホストソフトウェアに伝送する(710)。ホストソフトウェアは、データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換する(720)。ホストソフトウェアは、装置のパフォーマンスケイパビリティマトリックスを参照して装置のパフォーマンス属性を満足させる貯蔵装置を選択する(730)。ホストソフトウェアは、装置のパフォーマンス属性を選択された装置コントローラーに提供する(740)。選択された装置コントローラーは、装置のパフォーマンス属性及び貯蔵されたデータボリュームパフォーマンス属性を比較し、適切なマッチングが存在するか判別する(750)。
適切なマッチングが存在する場合、選択された装置コントローラーは、適切なデータボリュームをホストソフトウェアに報告する(760)。ホストソフトウェアは、適切なデータボリュームをアプリケーション管理ソフトウェアに報告する(770)。アプリケーション管理ソフトウェアは、アプリケーションデータを適切なデータボリュームに貯蔵されるように割り当てる(780)。
適切なマッチングが存在しない場合、選択された装置コントローラーは、ホストソフトウェアに適切なデータボリュームが無いことを報告する(790)。ホストソフトウェアは、アプリケーション管理ソフトウェアに適切なデータボリュームが無いことを報告する(795)。
図8は、本発明の一実施例による、適切なデータボリュームを検査する他の方法を示す順序図である。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をアプリケーションから受信する(800)。アプリケーション管理ソフトウェアは、アプリケーションデータボリュームパフォーマンス要件をホストソフトウェアに提供する(810)。ホストソフトウェアは、データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換する(820)。ホストソフトウェアは、装置のパフォーマンス属性を貯蔵されたデータボリュームパフォーマンス属性(又は一つ又はそれ以上のNVMe名前空間プロファイルのパフォーマンス属性)と比較し、適切なマッチングが存在するか判別する(830)。
適切なマッチングが存在する場合、ホストソフトウェアは、適切なデータボリュームをアプリケーション管理ソフトウェアに報告する(840)。アプリケーション管理ソフトウェアは、アプリケーションデータを適切なデータボリュームに貯蔵されるように割り当てる(850)。
適切なマッチングが存在しない場合、ホストソフトウェアは、アプリケーション管理ソフトウェアに適切なデータボリュームが無いことを報告する(860)。
図9は、本発明の一実施例によるデータボリュームパフォーマンスを較正するか又は初期化する方法を示す順序図である。
装置の初期化の間に又は装置がパフォーマンスを較正する明示的なホストソフトウェア要請を受信した場合(900)、装置コントローラー又はファームウェアは装置のパフォーマンスを較正するために、装置のパラメーターを収集する(910)。装置コントローラー又はファームウェアは装置のパフォーマンス属性を計算する(920)。装置コントローラー又はファームウェアは、ホストソフトウェアに装置のパフォーマンス属性の変化を通報するべきか点検する(930)。
装置コントローラー又はファームウェアがホストソフトウェアに装置のパフォーマンス属性の変化を通報するべき場合、装置コントローラー又はファームウェアがホストソフトウェアに非同期イベントにより、パフォーマンスの変化を通報する(940)。
装置コントローラー又はファームウェアが、ホストソフトウェアに装置のパフォーマンス属性の変化を通報するべきではない場合、装置コントローラー又はファームウェアは、装置に貯蔵されたパフォーマンス属性をアップデートする(950)。
図10は、本発明の一実施例によるデータボリュームパフォーマンスをアップデートする方法を示す順序図である。
装置コントローラー又はファームウェアは、装置のパフォーマンス属性を動的にモニターする(1000)。装置コントローラー又はファームウェアは、装置のパフォーマンスに影響を与える装置のパラメーターから一部の変化を検出する(1010)。装置のパフォーマンスの再較正が始まる(1020)。
装置コントローラー又はファームウェアは、装置のパフォーマンスを較正するため、装置のパラメーターを収集する(1030)。装置コントローラー又はファームウェアは装置のパフォーマンス属性を計算する(1040)。装置コントローラー又はファームウェアは、ホストソフトウェアに装置のパフォーマンス属性の変化を通報するべきか検査する(1050)。
装置コントローラー又はファームウェアが装置のパフォーマンス属性の変化を通報するべき場合、装置コントローラー又はファームウェアは非同期イベントによりホストソフトウェアにパフォーマンスの変化を通報する(1060)。
装置コントローラー又はファームウェアが、ホストソフトウェアに装置のパフォーマンス属性の変化を通報するべきではない場合、装置コントローラー又はファームウェアは、装置に貯蔵されたパフォーマンス属性をアップデートする(1070)。
本発明による実施例の態様は、パフォーマンスケイパビリティを自己報告(self-reporting)できる不揮発性メモリー(NVM、Non-Volatile Memory)の貯蔵装置に関する。本発明の一実施例によると、貯蔵装置は装置コントローラー及び他のパフォーマンスケイパビリティを持つ複数の不揮発性貯蔵媒体を包含する。装置コントローラーは複数の不揮発性貯蔵媒体のパフォーマンスケイパビリティを追跡し、貯蔵する。装置コントローラーは、パフォーマンスケイパビリティ及びパフォーマンスケイパビリティの変化をホストソフトウェアに提供する。
本発明の実施例は、ホストソフトウェア階層にパフォーマンスケイパビリティを提供する方法を包含する。
本発明の実施例は、装置からパフォーマンス属性の変化をホストソフトウェアに通報するいかなる方法も包含する。
本発明の実施例は、ホストソフトウェアにより通信されるNVMe名前空間プロファイルに、装置リソースを知能的に割り当てる方法を包含する。
例えば、本発明の実施例は、ホストソフトウェアにより、データボリュームパフォーマンス要件を含むデータを一つ又はそれ以上の不揮発性メモリーエクスプレス(NVMe、non-volatile memory express)名前空間プロファイルの内で、適切なNVMe名前空間プロファイルに割り当てる方法を包含する。方法は前記ホストソフトウェアにおいて、前記データボリュームパフォーマンス要件を受信するステップ、ホストソフトウェアにより、前記データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換するステップ、ホストソフトウェアにより、装置のパフォーマンス属性を一つ又はそれ以上のNVMe名前空間プロファイルのパフォーマンス属性と比較し、一つ又はそれ以上のNVMe名前空間プロファイルの内の、どれが適切なNVMe名前空間プロファイルであるか判別するステップ、及び一つ又はそれ以上のNVMe名前空間プロファイルの内の少なくとも一つが前記適切なNVMe名前空間プロファイルであると判別された場合、ホストソフトウェアにより、データを前記適切なNVMe名前空間プロファイルに貯蔵されるように割り当てるステップを包含する。
方法は、一つ又はそれ以上のNVMe名前空間プロファイルの内に、適切なNVMe名前空間プロファイルがないと判別される場合、ホストソフトウェアにより、装置のパフォーマンス属性及び複数の貯蔵装置の装置パフォーマンス属性を貯蔵する装置のパフォーマンスケイパビリティマトリックスと比較して、データボリュームパフォーマンス要件を満足する新しいNVMe名前空間プロファイルに、複数の貯蔵装置のどのリソースを割り当てるかを判別するステップ、ホストソフトウェアにより、前記複数の貯蔵装置の内に、適切なリソースを新しいNVMe名前空間プロファイルに割り当てることにより、新しいNVMe名前空間プロファイルを生成するステップ、及びホストソフトウェアにより、データを新しいNVMe名前空間プロファイルに貯蔵されるように割り当てるステップを、さらに包含する。
複数の貯蔵装置は、各々一つ以上のタイプの不揮発性メモリー(NVM、 Non-Volatile Memory)データブロックを包含する。
適切なリソースは、複数の貯蔵装置の一つ以上のリソースを包含する。
方法は、装置のパフォーマンス属性を装置のパフォーマンスケイパビリティマトリックスと比較する以前に、ホストソフトウェアによりかつ複数の貯蔵装置によりアップデートされた装置パフォーマンスを要請するステップ、及び装置のパフォーマンスケイパビリティマトリックスをアップデートするステップをさらに包含する。
一つ又はそれ以上のNVMe名前空間プロファイルの内で、一つ以上が適切なNVMe名前空間プロファイルであると判別された場合、データは前記装置のパフォーマンス属性に一番近いパフォーマンス属性を含む適切なNVMe名前空間プロファイルに貯蔵されるように割り当てられる。
ホストソフトウェアは、データボリュームパフォーマンス要件及びデータを、ホストシステムの内のアプリケーションから受信するホストシステムはホストソフトウェア及び複数の貯蔵装置を、さらに包含する。
本発明の実施例は、単純化されたソフトウェアを構成して、アプリケーションパフォーマンス要件を装置に最適にマッチングし、微細なレベル(finer granular level)によりパフォーマンスプロファイルを定義するにあたって、新しい装置のレベルの特徴を行使する(leveraging)方法を包含する。
本発明の実施例は、ストレージ(貯蔵、storage)システムにおいて、他のパフォーマンスケイパビリティを有する異種貯蔵装置を管理する方法を包含する。
本発明の実施例は、SAS、SATA、又は他のインターフェースに適用できる。
本発明の実施例は、データ(例えば、大容量データ)を貯蔵する不揮発性貯蔵媒体に適用できる。
仮に、‘‘第1(first)’’、‘‘第2(second)’’、‘‘第3(third)’’などの用語が多様な要素、構成、領域、階層、及び/又は区域を説明するために本明細書において使用される場合、斯かる要素、構成、領域、階層、及び/又は区域が、斯かる要素により制限されてはならないことが充分に理解されるはずである。斯かる用語は一つの要素、構成、領域、階層、又は区域を他の一つの要素、構成、領域、階層、又は区域から区分するのに使用する。即ち、本明細書において言及された第1要素、構成、領域、階層、又は区域は、本発明の思想及び範囲から逸脱することなしに、第2要素、構成、領域、階層、又は区域を示す。
本明細書に開示した本発明の実施例による、関連した装置又は構成(又は関連された装置等又は構成等)は、適切なハードウェア(例えば、ASIC(Application-Specific Integrated Circuit))、ファームウェア(例えば、DSP又はFPGA)、ソフトウェア、又はソフトウェア、ファームウェア、及びハードウェアの適切な組み合せを活用して具現される。例えば、関連した装置等の多様な構成等は一つの集積回路(IC、Integrated circuit)チップ又は別のICチップにより形成され得る。なお、関連した装置等の多様な構成は軟性印刷回路フィルム(flexible printed circuit film)、TCP(Tape Carrier Package)、印刷回路基板(PCB、Printed Circuit Board)により具現されるか、又は一つ又はそれ以上の回路及び/又は他の装置として同一の基板上に形成される。なお、関連した装置等の多様な構成は、本明細書に開示した多様な機能を遂行するためにコンピュータプログラムの命令語を実行し、他のシステム構成と通信する一つ又はそれ以上のコンピューティング装置の一つ又はそれ以上のプロセッサー上において駆動するプロセス(process)又はスレッド(thread)である。コンピュータプログラムの命令語は、ランダムアクセスメモリー(RAM、Random Access Memory)のような標準メモリー装置を使用して、コンピュータ装置により具現されるメモリーに貯蔵される。コンピュータプログラムの命令語、例えば、CD-ROM、フラッシュドライブなどの他の非一時的なコンピュータ判読可能な媒体に貯蔵される。当業者は、本発明の例示的な実施例等の思想及び範囲から逸脱することなしに、多様なコンピューティング装置の機能が単一のコンピューティング装置に組み合わせられるか又は集積されうるか、又は特定のコンピューティング装置の機能が一つ又はそれ以上の他のコンピューティング装置等に分散され得ることを理解できる。
本明細書において使用する用語等は、特定の実施例を説明するためのもので、本発明の制限を意図するものではない。本明細書において使用する単数の用語は、明確に別に言及されない限り、複数の形態を含む。本明細書において使用する‘‘包含する(comprise、comprises、comprising、includes、including、include)’’の用語等は言及された特徴、整数、ステップ、作動、要素、及び/又は構成の存在を定義するか、一つ又はそれ以上の他の特徴、整数、ステップ、作動、要素、構成、又はそれらの組み合せの追加又は存在を排除しないことが理解されるはずである。
本明細書において使用する‘‘及び/又は(and/or)’’の用語は、列挙された目録等の一つ又はそれ以上の一部又は全体の組み合せを包含する。要素等の目録の ‘‘少なくとも一つ(at least one of)’’、‘‘~内一つ(one of)’’、‘‘~から選択された(selected from)’’のような表現等は、要素等の全体目録を変形し、目録の個別的な要素等は変形しない。なお、本発明の実施例を説明する時の‘‘~できる(may)’’の使用は、‘‘本発明の一つ又はそれ以上の実施例等(one or more embodiments of the present invention)’’を参照する。‘‘例示的な(exemplary)’’の用語は、例又は例示を参照すると意図される。
本明細書において使用する‘‘使用(use、using、used)’’の用語は、‘‘活用(utilize、utilizing、utilized)’’の用語と各々同義語と見なせる。
本発明の一つ又はそれ以上の実施例と関連して説明した特徴は、本発明の他の実施例の特徴と共に使用され得る。例えば、仮に本明細書において第3実施例を詳しく説明できないことがあっても、第1実施例に開示された特徴は第2実施例に開示された特徴と組み合わされて、第3実施例を構成する。
当業者は、プロセスがハードウェア、ファームウェア(例えば、ASICにより)、又はソフトウェア、ファームウェア、及び/又はハードウェアの組み合わせにより実行され得ることを認識できる。なお、プロセスのステップの順序は固定されていないし、当業者により認識され得る適切な順序に代替できる。代替された順序は、ステップの全体又はステップの一部を包含できる。
仮に、本発明が特定の実施例等について説明されていても、当業者は本発明の範囲及び思想から逸脱せずに、開示した実施例の変形等を容易に考案できるはずである。なお、当業者に、本明細書に開示した本発明は、他のアプリケーションのための他の作業及び適用の解決策を提案するだろう。本発明の思想及び範囲から逸脱せずに、開示の目的のために本明細書において選択した本発明の実施例について、行われることのできる本発明の全ての斯かる用途及び変形及び修正を特許請求範囲に含むことは出願人の意図である。従って、本発明の実施例は、例示的で制限的ではない全ての側面から考慮されるべきであり、本発明の範囲は、添付した特許請求範囲及びそれらの均等物により指示されるべきである。
本発明は、向上したパフォーマンスケイパビリティを自己報告できる不揮発性メモリーの貯蔵装置に有用である。
100、102、104 コンピュータシステム
200、202 NVM貯蔵装置
204A 第1NVM貯蔵装置
204B 第2NVM貯蔵装置
204C 第3NVM貯蔵装置
220、222 装置コントローラー
224A 第1データボリューム
224B 第2データボリューム
226A、226B データボリュームのパフォーマンス特性
228A、228B NVMデータブロックの容量
230A 第1装置コントローラー
230B 第2装置コントローラー
230C 第3装置コントローラー
232A パフォーマンスプロファイルA
232B パフォーマンスプロファイルB
232C パフォーマンスプロファイルC
232D パフォーマンスプロファイルD
240、242、244、246 NVMデータブロック
300、302、304 ホストソフトウェア
320、322、324 アプリケーション
400 装置パフォーマンスモニター

Claims (20)

  1. 第1パフォーマンスケイパビリティ(performance capabilities)を有する第1不揮発性貯蔵媒体と、
    前記第1パフォーマンスケイパビリティと異なる第2パフォーマンスケイパビリティを有する第2不揮発性貯蔵媒体と、
    前記第1パフォーマンスケイパビリティ、前記第2パフォーマンスケイパビリティ、前記第1パフォーマンスケイパビリティに対する変化、及び前記第2パフォーマンスケイパビリティに対する変化をホストソフトウェアに報告(report)するように構成された装置コントローラーと、を包含することを特徴とする貯蔵装置。
  2. 前記貯蔵装置は、NVMe SSD(Non-Volatile Memory express Solid State Drive)である、ことを特徴とする請求項1に記載の貯蔵装置。
  3. 前記装置コントローラーは、
    前記第1パフォーマンスケイパビリティに対する前記変化を検出し、前記第1パフォーマンスケイパビリティに対する前記変化を非同期イベント(asynchronous event)により、前記ホストソフトウェアに報告するように、さらに構成される、ことを特徴とする請求項1に記載の貯蔵装置。
  4. 前記装置コントローラーは、
    装置のパラメーターを収集して装置のパフォーマンスを較正(calibrate)し、前記第1パフォーマンスケイパビリティ及び前記第2パフォーマンスケイパビリティを算出(calculate)し、前記ホストソフトウェアに前記第1パフォーマンスケイパビリティ及び第2パフォーマンスケイパビリティを通報することにより、前記第1パフォーマンスケイパビリティ及び第2パフォーマンスケイパビリティを報告するように、さらに構成される、ことを特徴とする請求項1に記載の貯蔵装置。
  5. 前記装置コントローラーは、前記装置コントローラーにおいて前記ホストソフトウェアから較正要請(calibration request)が受信された場合、前記第1パフォーマンスケイパビリティ及び前記第2パフォーマンスケイパビリティを報告する、ことを特徴とする請求項4に記載の貯蔵装置。
  6. 前記装置コントローラーは、
    前記第1パフォーマンスケイパビリティに対する前記変化について、前記第1不揮発性貯蔵媒体をモニター(monitor)し、前記第2パフォーマンスケイパビリティに対する前記変化について、前記第2不揮発性貯蔵媒体をモニター(monitor)し、前記第1パフォーマンスケイパビリティに対する前記変化、又は前記第2パフォーマンスケイパビリティに対する前記変化を検出し、
    前記第1パフォーマンスケイパビリティに対する前記変化、又は前記第2パフォーマンスケイパビリティに対する前記変化が検出された場合、装置のパラメーターを収集して装置のパフォーマンスを較正し、前記第1パフォーマンスケイパビリティ及び前記第2パフォーマンスケイパビリティを算出し、前記ホストソフトウェアに前記第1パフォーマンスケイパビリティに対する前記変化又は前記第2パフォーマンスケイパビリティに対する前記変化を通報するようにさらに構成される、ことを特徴とする請求項1に記載の貯蔵装置。
  7. 装置コントローラー及び一つ又はそれ以上の不揮発性メモリー(NVM、Non-Volatile Memory)ブロックを含む貯蔵装置からホストソフトウェアにパフォーマンスケイパビリティを報告する方法であって、
    前記装置コントローラーにより、装置のパラメーターを収集して装置のパフォーマンスを較正するステップと、
    前記装置コントローラーにより、装置のパフォーマンス属性(attributes)を算出するステップと、
    前記装置コントローラーにより、前記ホストソフトウェアに前記装置のパフォーマンス属性を通報する(notify)ステップと、を包含することを特徴とする報告する方法。
  8. 前記方法は、前記装置コントローラーにおいて、前記ホストソフトウェアから較正要請(calibration request)を受信する場合遂行される、ことを特徴とする請求項7に記載の報告する方法。
  9. 前記装置コントローラーにより、前記装置のパフォーマンス属性での変化において、前記貯蔵装置をモニター(monitor)するステップをさらに包含する、ことを特徴とする請求項7に記載の報告する方法。
  10. 前記収集するステップ、前記算出するステップ、及び前記通報するステップは前記装置のパフォーマンス属性に対する変化が、前記装置コントローラーにより検出された場合遂行される、ことを特徴とする請求項9に記載の報告する方法。
  11. 前記通報するステップは非同期イベントにより遂行される、ことを特徴とする請求項10に記載の報告する方法。
  12. 前記モニター(monitor)するステップは、前記装置コントローラーが前記ホストソフトウェアからパフォーマンス変化の通報に対する登録(registration)を受信した以後遂行される、ことを特徴とする請求項9に記載の報告する方法。
  13. ホストソフトウェアにより、データボリュームパフォーマンス要件(data volume performance requirements)を含むデータを、一つ又はそれ以上の名前空間プロファイルの内の適切な不揮発性メモリーエクスプレス(NVMe、non-volatile memory express)名前空間プロファイルに割り当てる方法であって、
    前記ホストソフトウェアにおいて、前記データボリュームパフォーマンス要件を受信するステップと、
    前記ホストソフトウェアにより、前記データボリュームパフォーマンス要件を装置のパフォーマンス属性に変換するステップと、
    前記ホストソフトウェアにより、前記装置のパフォーマンス属性を一つ又はそれ以上のNVMe名前空間プロファイルのパフォーマンス属性と比較し、一つ又はそれ以上のNVMe名前空間プロファイルの内の、どれが前記適切なNVMe名前空間プロファイルであるか判別するステップと、
    前記一つ又はそれ以上のNVMe名前空間プロファイルの内の少なくとも一つが前記適切なNVMe名前空間プロファイルであると判別された場合、前記ホストソフトウェアにより、前記データを前記適切なNVMe名前空間プロファイルに貯蔵されるように割り当てるステップと、を包含することを特徴とする割り当てる方法。
  14. 前記方法は、前記一つ又はそれ以上のNVMe名前空間プロファイルの内に、前記適切なNVMe名前空間プロファイルがないと判別された場合、
    前記ホストソフトウェアにより、前記装置のパフォーマンス属性を複数の貯蔵装置の装置パフォーマンス属性を貯蔵する装置のパフォーマンスケイパビリティマトリックスと比較して、前記複数の貯蔵装置の内のどのリソースが前記データボリュームパフォーマンス要件を満足する新しいNVMe名前空間プロファイルに割り当てられるかを判別するステップと、
    前記ホストソフトウェアにより、前記複数の貯蔵装置の内で、適切なリソースを前記新しいNVMe名前空間プロファイルに割り当てることにより、前記新しいNVMe名前空間プロファイルを生成するステップと、
    前記ホストソフトウェアにより、前記データを前記新しいNVMe名前空間プロファイルに貯蔵されるように割り当てるステップと、をさらに包含する、ことを特徴とする請求項13に記載の割り当てる方法。
  15. 前記複数の貯蔵装置の各々は、一つ以上のタイプの不揮発性メモリー(NVM、non-volatile memory)データブロックを包含する、ことを特徴とする請求項14に記載の割り当てる方法。
  16. 前記適切なリソースは、前記複数の貯蔵装置の内の一つ以上のリソースを包含する、ことを特徴とする請求項14に記載の割り当てる方法。
  17. 前記装置のパフォーマンス属性を前記装置のパフォーマンスケイパビリティマトリックスと比較するステップの前に、
    前記ホストソフトウェアによりかつ前記複数の貯蔵装置から、アップデートされた装置のパフォーマンス属性を要請するステップと、
    前記装置のパフォーマンスケイパビリティマトリックスをアップデートするステップと、を包含する、ことを特徴とする請求項14に記載の割り当てる方法。
  18. 前記一つ又はそれ以上のNVMe名前空間プロファイルの内の一つ以上が前記適切なNVMe名前空間プロファイルであると判別された場合、前記データは前記装置のパフォーマンス属性に一番近いパフォーマンス属性を含む、前記適切なNVMe名前空間プロファイルに貯蔵されるように割り当てられる、ことを特徴とする請求項13に記載の割り当てる方法。
  19. 前記ホストソフトウェアは、前記データボリュームパフォーマンス要件及びデータを、ホストシステムに含まれたアプリケーションから受信し、前記ホストシステムは前記ホストソフトウェアを、さらに包含する、ことを特徴とする請求項13に記載の割り当てる方法。
  20. 前記ホストシステムは、複数の貯蔵装置をさらに包含する、ことを特徴とする請求項19に記載の割り当てる方法。

JP2018039902A 2017-03-07 2018-03-06 パフォーマンスケイパビリティを自己報告できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法 Active JP7026534B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762468262P 2017-03-07 2017-03-07
US62/468262 2017-03-07
US15/588,567 US11003381B2 (en) 2017-03-07 2017-05-05 Non-volatile memory storage device capable of self-reporting performance capabilities
US15/588567 2017-05-05

Publications (2)

Publication Number Publication Date
JP2018147490A JP2018147490A (ja) 2018-09-20
JP7026534B2 true JP7026534B2 (ja) 2022-02-28

Family

ID=63445473

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018039902A Active JP7026534B2 (ja) 2017-03-07 2018-03-06 パフォーマンスケイパビリティを自己報告できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法

Country Status (5)

Country Link
US (2) US11003381B2 (ja)
JP (1) JP7026534B2 (ja)
KR (3) KR102496598B1 (ja)
CN (1) CN108572902B (ja)
TW (1) TWI746762B (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10812570B1 (en) * 2017-08-02 2020-10-20 Intuit Inc. System for data consolidation across disparate namespaces
US10996876B2 (en) * 2017-09-22 2021-05-04 Dell Products L.P. Systems and methods for dynamically modifying memory namespace allocation based on memory attributes and application requirements
KR20200088634A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 시스템, 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
KR102455880B1 (ko) 2018-01-12 2022-10-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102394695B1 (ko) * 2017-11-08 2022-05-10 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11636014B2 (en) 2017-10-31 2023-04-25 SK Hynix Inc. Memory system and data processing system including the same
KR102387181B1 (ko) 2017-10-31 2022-04-19 에스케이하이닉스 주식회사 컴퓨팅 디바이스 및 그것의 동작방법
TWI687808B (zh) * 2019-01-25 2020-03-11 睿寬智能科技有限公司 減少寫入效能變化並防止io阻塞的方法
US10802760B2 (en) * 2019-03-05 2020-10-13 Dell Products, L.P. Apparatus and method of intelligent dynamic application aware storage device optimization
TWI701552B (zh) * 2019-03-22 2020-08-11 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
US11550737B2 (en) * 2019-07-31 2023-01-10 Micron Technology, Inc. Adjusting characteristic of system based on profile
SG10202004811XA (en) * 2019-08-29 2021-03-30 Flexxon Pte Ltd Methods and systems using an ai co-processor to detect anomalies caused by malware in storage devices
US11204872B2 (en) * 2019-10-25 2021-12-21 EMC IP Holding Company LLC Achieving guaranteed application performance using transactional I/O scheduling for SSD storage using known read/write latencies
US11263089B2 (en) * 2019-10-31 2022-03-01 EMC IP Holding Company LLC Achieving guaranteed application performance using transactional I/O scheduling for SSD storage by interleaving and splitting read/write I/Os with required latency configurations
US11301156B2 (en) * 2019-11-01 2022-04-12 EMC IP Holding Company, LLC Virtual disk container and NVMe storage management system and method
US11709617B2 (en) * 2020-08-19 2023-07-25 Micron Technology, Inc. Multi-stage memory device performance notification
US11836095B2 (en) * 2021-05-27 2023-12-05 EMC IP Holding Company LLC Forwarding incoming IO to SCM namespaces
KR20230019714A (ko) * 2021-08-02 2023-02-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 컨트롤러
WO2023189326A1 (ja) * 2022-03-30 2023-10-05 パナソニックIpマネジメント株式会社 不揮発性記憶装置、記録装置、及び記録方法
CN116225329A (zh) * 2023-02-24 2023-06-06 合肥兆芯电子有限公司 存储器的性能匹配方法、存储装置及存储器控制电路
CN117012266A (zh) * 2023-06-30 2023-11-07 珠海妙存科技有限公司 基于emmc的性能测试方法、装置及其存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930476B1 (en) 2007-12-28 2011-04-19 Emc Corporation Application aware storage resource provisioning

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001290697A (ja) * 2000-04-06 2001-10-19 Hitachi Ltd 情報処理システム
US7389403B1 (en) * 2005-08-10 2008-06-17 Sun Microsystems, Inc. Adaptive computing ensemble microprocessor architecture
US7493439B2 (en) * 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
WO2008070172A2 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for remote direct memory access to a solid-state storage device
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
KR101433859B1 (ko) 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
JP2009199199A (ja) * 2008-02-20 2009-09-03 Hitachi Ltd ストレージシステム及びそのデータライト方法
US8554983B2 (en) * 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
US8146092B2 (en) 2008-10-10 2012-03-27 Hitachi, Ltd. System and method for selecting and executing an optimal load distribution processing in a storage system
US8225066B2 (en) * 2009-05-13 2012-07-17 Hitachi, Ltd. Storage system and utilization management method for storage system
US9773033B2 (en) 2009-05-22 2017-09-26 International Business Machines Corporation Storing and retrieving volumes in a database by volume attributes
US8478799B2 (en) 2009-06-26 2013-07-02 Simplivity Corporation Namespace file system accessing an object store
US8812770B2 (en) * 2009-07-13 2014-08-19 Microsoft Corporation Health reporting from non-volatile block storage device to processing device
US8601222B2 (en) * 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
TWI436369B (zh) * 2009-11-13 2014-05-01 Silicon Motion Inc 記憶裝置之使用壽命量測方法及系統內編程碼置換方法、及其資料儲存系統
EP2671160A2 (en) 2011-02-01 2013-12-11 Drobo, Inc. System, apparatus, and method supporting asymmetrical block-level redundant storage
US8595415B2 (en) * 2011-02-02 2013-11-26 Micron Technology, Inc. At least semi-autonomous modules in a memory system and methods
US9021215B2 (en) * 2011-03-21 2015-04-28 Apple Inc. Storage system exporting internal storage rules
US10359949B2 (en) 2011-10-31 2019-07-23 Apple Inc. Systems and methods for obtaining and using nonvolatile memory health information
US20130151755A1 (en) * 2011-12-12 2013-06-13 Reuven Elhamias Non-Volatile Storage Systems with Go To Sleep Adaption
US9166890B2 (en) 2012-02-06 2015-10-20 Empire Technology Development Llc Maintaining application performances upon transfer between cloud services
US8918583B2 (en) * 2012-12-20 2014-12-23 Virtium Technology, Inc. Adapting behavior of solid-state drive using real usage model
KR20140100329A (ko) 2013-02-06 2014-08-14 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 메모리 시스템
US8869009B2 (en) * 2013-02-11 2014-10-21 Apple Inc. Read commands specifying error performance
US9071281B2 (en) * 2013-03-10 2015-06-30 Intel Corporation Selective provision of error correction for memory
KR20150014002A (ko) 2013-07-25 2015-02-06 삼성전자주식회사 데이터 전송 속도 관리자를 포함하는 스토리지 시스템 및 그것의 데이터 전송 속도 변경 방법
TW201506790A (zh) * 2013-08-13 2015-02-16 Acer Inc 系統開機方法以及開機系統
JP6165008B2 (ja) * 2013-09-25 2017-07-19 キヤノン株式会社 メモリ制御装置、メモリ制御方法、情報機器及びプログラム
US9317204B2 (en) * 2013-11-14 2016-04-19 Sandisk Technologies Inc. System and method for I/O optimization in a multi-queued environment
US9262316B2 (en) * 2013-12-09 2016-02-16 International Business Machines Corporation Recording dwell time in a non-volatile memory system
JP5871018B2 (ja) * 2014-01-23 2016-03-01 日本電気株式会社 性能予測装置、性能モデル生成方法およびプログラム
US9495478B2 (en) 2014-03-31 2016-11-15 Amazon Technologies, Inc. Namespace management in distributed storage systems
KR20150121560A (ko) * 2014-04-21 2015-10-29 삼성전자주식회사 스토리지 장치, 스토리지 시스템 및 스토리지 시스템의 동작 방법
US9529773B2 (en) * 2014-05-02 2016-12-27 Cavium, Inc. Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller
US9294567B2 (en) * 2014-05-02 2016-03-22 Cavium, Inc. Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller
US9792227B2 (en) 2014-08-19 2017-10-17 Samsung Electronics Co., Ltd. Heterogeneous unified memory
US10067704B2 (en) 2014-10-01 2018-09-04 Prophetstor Data Services, Inc. Method for optimizing storage configuration for future demand and system thereof
US10235097B2 (en) * 2015-07-21 2019-03-19 Samsung Electronics Co., Ltd. Area and performance optimized namespace sharing method in virtualized PCIE based SSD controller
JP6403162B2 (ja) 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
KR20170016205A (ko) 2015-08-03 2017-02-13 삼성전자주식회사 노화 수준에 기초하여 환경 파라미터의 값을 변경하는 스토리지 장치, 및 그것을 관리하기 위한 방법
US10192065B2 (en) * 2015-08-31 2019-01-29 Commvault Systems, Inc. Automated intelligent provisioning of data storage resources in response to user requests in a data storage management system
US10007458B2 (en) * 2015-12-18 2018-06-26 Microsemi Solutions (U.S.), Inc. Method of configuring memory cells in a solid state drive based on read/write activity and controller therefor
CN105700826A (zh) 2015-12-31 2016-06-22 华为技术有限公司 虚拟化方法和装置
US9886195B2 (en) * 2016-01-14 2018-02-06 Microsoft Technology Licensing, Llc Performance-based migration among data storage devices
US10082983B2 (en) * 2016-04-05 2018-09-25 International Business Machines Corporation Monitoring storage systems
US10474374B2 (en) * 2016-05-24 2019-11-12 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring
US10089134B2 (en) * 2016-06-30 2018-10-02 Western Digital Technologies, Inc. Controlling access to namespaces of a storage device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7930476B1 (en) 2007-12-28 2011-04-19 Emc Corporation Application aware storage resource provisioning

Also Published As

Publication number Publication date
CN108572902B (zh) 2023-11-07
KR20240017384A (ko) 2024-02-07
US20180260158A1 (en) 2018-09-13
US11003381B2 (en) 2021-05-11
KR20180102480A (ko) 2018-09-17
US20210232336A1 (en) 2021-07-29
US12093557B2 (en) 2024-09-17
TWI746762B (zh) 2021-11-21
JP2018147490A (ja) 2018-09-20
KR20230021688A (ko) 2023-02-14
CN108572902A (zh) 2018-09-25
TW201833938A (zh) 2018-09-16
KR102496598B1 (ko) 2023-02-06

Similar Documents

Publication Publication Date Title
JP7026534B2 (ja) パフォーマンスケイパビリティを自己報告できる不揮発性メモリー貯蔵装置、パフォーマンスケイパビリティを報告する方法、及びデータを適切な不揮発性メモリーエクスプレス名前空間プロファイルに割り当てる方法
US10448126B2 (en) Technologies for dynamic allocation of tiers of disaggregated memory resources
US8924681B1 (en) Systems, methods, and computer readable media for an adaptative block allocation mechanism
KR101815148B1 (ko) 설정 가능한 컴퓨팅 자원 할당 기술
US10353730B2 (en) Running a virtual machine on a destination host node in a computer cluster
TWI575377B (zh) 具有負載平衡演算法之儲存系統及其操作方法
JP6248560B2 (ja) 管理プログラム、管理方法、および管理装置
EP2966562A1 (en) Method to optimize inline i/o processing in tiered distributed storage systems
KR102414500B1 (ko) 지능형 데이터 배치
US20160147573A1 (en) Computing system with heterogeneous storage and process mechanism and method of operation thereof
US8904144B1 (en) Methods and systems for determining at risk index for storage capacity
JP2008033920A (ja) 仮想化ストレージ環境の管理システム
CN101171567A (zh) 用于增强存储器虚拟化基础结构可用性的自动存储器
JP2011065624A (ja) 動的ページ再配置ストレージシステム管理
US20220229787A1 (en) Dynamic allocation of storage resources based on connection type
US11012316B2 (en) Methods and apparatus to generate and manage workload domains in virtual server racks
US20130185531A1 (en) Method and apparatus to improve efficiency in the use of high performance storage resources in data center
JP2007072672A (ja) 計算機システムおよび記憶領域の割当て方法
US20170185304A1 (en) Adaptive data-partitioning model that responds to observed workload
US11726834B2 (en) Performance-based workload/storage allocation system
US10218779B1 (en) Machine level resource distribution
US11334390B2 (en) Hyper-converged infrastructure (HCI) resource reservation system
JP6752889B2 (ja) 管理方法および管理計算機
US11435954B2 (en) Method and system for maximizing performance of a storage system using normalized tokens based on saturation points
US9037622B1 (en) System and method for managing spool space in a mixed SSD and HDD storage environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220107

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220215

R150 Certificate of patent or registration of utility model

Ref document number: 7026534

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150