JP2020046752A - 記憶装置及び情報処理システム - Google Patents
記憶装置及び情報処理システム Download PDFInfo
- Publication number
- JP2020046752A JP2020046752A JP2018172756A JP2018172756A JP2020046752A JP 2020046752 A JP2020046752 A JP 2020046752A JP 2018172756 A JP2018172756 A JP 2018172756A JP 2018172756 A JP2018172756 A JP 2018172756A JP 2020046752 A JP2020046752 A JP 2020046752A
- Authority
- JP
- Japan
- Prior art keywords
- request
- performance
- host
- response
- ssd
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
Abstract
【課題】 応答性能を最適に調整する記憶装置及び情報処理システムを提供する。【解決手段】 実施形態によれば、記憶装置は、インタフェースを介してホストと接続可能であり、複数のブロックを含む不揮発性メモリと、不揮発性メモリに電気的に接続されたコントローラとを具備する。コントローラは、ホストからリクエスト及びリクエストの応答性能を低下させる旨の通知を受信した場合に、リクエストの処理時間よりも長い応答時間を決定し、応答時間とリクエストの処理時間との差である遊休時間を使って不揮発性メモリのブロック管理処理を実行する第1の性能低下処理を実行するか、又は、応答時間を費やしてリクエストを処理するよう応答性能を低下させる第2の性能低下処理を実行するように構成される。【選択図】 図1
Description
本発明の実施形態は、記憶装置及び情報処理システムに関する。
近年、不揮発性メモリを備えるストレージが広く普及している。このようなストレージの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
SSDは、例えばデータのライト又はリードといったリクエストを受信した場合に、ベストエフォートで当該リクエストを処理する。ここで、ベストエフォートとは、意図的に処理を遅延させずに、SSDの備えるリソースを最大限に活用して処理を実行することを指す。
本発明が解決しようとする課題は、応答性能を最適に調整する記憶装置及び情報処理システムを提供することである。
実施形態によれば、記憶装置は、インタフェースを介してホストと接続可能であり、複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラとを具備する。前記コントローラは、前記ホストからリクエスト及び前記リクエストの応答性能を低下させる旨の通知を受信した場合に、前記リクエストの処理時間よりも長い応答時間を決定し、前記応答時間と前記リクエストの処理時間との差である遊休時間を使って前記不揮発性メモリのブロック管理処理を実行する第1の性能低下処理を実行するか、又は、前記応答時間を費やして前記リクエストを処理するよう前記応答性能を低下させる第2の性能低下処理を実行するように構成される。
以下、図面を参照しながら各実施形態について説明する。以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
[第1の実施形態]
本実施形態において、I/Oとは、例えば後述するホスト(ホストデバイス)2からSSD3へのアクセスを意味する。I/O待ちとは、ホスト2がSSD3からの応答を待っている状態を意味する。ここで、ホストとは、SSD3へアクセスする情報処理装置である。
本実施形態において、I/Oとは、例えば後述するホスト(ホストデバイス)2からSSD3へのアクセスを意味する。I/O待ちとは、ホスト2がSSD3からの応答を待っている状態を意味する。ここで、ホストとは、SSD3へアクセスする情報処理装置である。
本実施形態において、リクエストとは、例えば処理要求を意味する。リクエストは、主としてホスト2からSSD3に対して発行される。リクエストを処理したSSD3は、ホスト2に対してレスポンスを返す。レスポンスとは、リクエストに対して処理結果を応答することを意味する。
以下では、ホスト2とSSD3で協調しながら、最適な応答性能を定めるホスト2及びSSD3の構成及び処理について説明する。
図1は、本実施形態に係るコンピュータシステム1の構成例を示すブロック図である。なお、コンピュータシステム1は情報処理システム1とも称される。
コンピュータシステム1は、ホスト2と、SSD3とを含む。
ホスト2は、SSD3にアクセスする情報処理装置(コンピューティングデバイス)である。ホスト2は、大量かつ多様なデータをSSD3に保存するサーバ(ストレージサーバ)であってもよいし、パーソナルコンピュータであってもよい。SSD3は、NAND型フラシュメモリのような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。
ホスト2は、SSD3に対してリクエストを発行する際に、当該リクエストについて下記の第1〜第3のケースを把握しうる。第1のケースは、当該リクエストが同期I/Oである場合である。この場合、ホスト2は、SSD3よりベストエフォートで当該リクエストに対するレスポンスが返ってくることを期待する。第2のケースは、当該リクエストが非同期I/Oであり、かつ当該リクエストの処理速度のボトルネックがSSD3へのアクセスではないと把握している場合である。第3のケースは、当該リクエストが非同期I/Oであり、かつ当該リクエストの処理速度のボトルネックがSSD3へのアクセスであることを把握している場合である。
第1及び第3のケースにおいては、SSD3はベストエフォートで当該リクエストを処理することが好ましい。一方、第2のケースにおいては、ボトルネックがSSD3へのアクセス以外であるため、SSD3はホスト2に対してベストエフォートでレスポンスを返す必要は無い。
SSD3は記憶装置であり、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブル又はネットワークを介して接続されてもよい。SSD3は、例えば、ダイレクト・アタッチド・ストレージ(DAS)としてホスト2に電気的に接続されている。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)などが使用され得る。
SSD3は、コントローラ4、NAND型フラッシュメモリ5などを含む。コントローラ4は、例えばSystem−on−a−chip(SoC)のような回路によって実現され得る。SSD3は、揮発性メモリであるランダムアクセスメモリ、例えば、DRAM(Dynamic Random Access Memory)6を備えていてもよい。あるいは、SRAM(Static Random Access Memory)のようなランダムアクセスメモリがコントローラ4に内蔵されていてもよい。
DRAM6などのランダムアクセスメモリには、例えば、NAND型フラッシュメモリ5から読み出されたデータを一時的に格納するためのバッファ領域であるリードバッファ、NAND型フラッシュメモリ5に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ、ガベージコレクションに用いられるバッファなどが設けられている。なお、DRAM6は、コントローラ4の内部に設けられていてもよい。
NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリチップ(複数のNAND型フラッシュメモリダイ)を含んでいてもよい。
各チップは、メモリセルアレイを含む。このメモリセルアレイは、複数のNANDブロック(ブロック)B0〜Bm−1を含む。ブロックB0〜Bm−1は、消去単位として機能する。ブロックは「物理ブロック」又は「消去ブロック」と称されることもある。
ブロックB0〜Bm−1は複数のページ(物理ページ)を含む。つまり、ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。不揮発性メモリにおいては、データの読み出し及びデータの書き込みはページ単位で実行される。データの消去はブロック単位で実行される。
コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラである。
コントローラ4は、例えば、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14などを含む。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続されていてもよい。
ホストインタフェース11は、ホスト2から様々なリクエストを受信し、ホスト2へ当該リクエストに対するレスポンスを送信する回路として機能する。リクエストには、例えば、I/Oコマンド、制御コマンド、などの各種コマンドが含まれる。I/Oコマンドには、ライト(書き込み)コマンド、リード(読み出し)コマンド、アンマップコマンド(トリムコマンド)、フォーマットコマンド、フラッシュコマンドなどが含まれうる。なお、ライトコマンドは、プログラムコマンドとも呼ばれる。フォーマットコマンドは、メモリシステム(SSD3)全体をアンマップするためのコマンドである。フラッシュコマンドは、メモリシステム内にキャッシュされている(バッファされている)ダーティデータ(ユーザデータ及び関連する管理データ)をNAND型フラッシュメモリ5に書き込むことですべてクリーンな状態にするためのコマンドである。
DRAMインタフェース14は、DRAM6のアクセスを制御するように構成されたDRAMコントローラとして機能する。
NANDインタフェース13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。NANDインタフェース13は、複数のチャンネルを介して、NAND型フラッシュメモリ5内の複数のチップにそれぞれ接続されていてもよい。
CPU12は、ホストインタフェース11、NANDインタフェース13、及びDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROMなどに格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。
本実施形態において、CPU12は、例えばコマンド制御部21、フラッシュトランスレーション層(FTL)22などとして機能する。
コマンド制御部21は、ホスト2より受信する上述のような各種コマンドを処理するためのコマンド処理を実行する。
フラッシュトランスレーション層22は、NAND型フラッシュメモリ5のデータ管理及びブロック管理を実行する。
データ管理には、例えば、論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理などが含まれる。ここで、論理アドレスは、SSD3をアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては、例えば、論理ブロックアドレス(LBA)が使用される。
論理ブロックアドレス(LBA)それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するルックアップテーブル23を用いて実行される。コントローラ4は、ルックアップテーブル23を使用して、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNAND型フラッシュメモリ5内の物理記憶位置を示す。なお、ルックアップテーブル23は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
コマンド制御部21は、例えばリードコマンドを受信した場合に、論理アドレス(LBA)に対応するルックアップテーブル23のエントリに基づいて、LBAに対応する物理アドレスを求め、NAND型フラッシュメモリ5からリードコマンドに応じたデータを読み出す。
また、コマンド制御部21は、例えばライトコマンドを受信した場合に、当該ライトコマンドに応じてホスト2から受信されたデータを、DRAM6上のバッファに蓄積する。さらに、コマンド制御部21は、NAND型フラッシュメモリ5のチップにプログラムコマンドを送ることにより、当該チップに対して、バッファに蓄積されたデータを書き込み先ブロックにプログラムさせる。
一方、ブロック管理には、例えば、ガベージコレクション(GC)、ウェアレベリングなどが含まれる。
ガベージコレクション制御部24は、ガベージコレクション(GC)を実行する。ここで、GCは、データの書き込み先ブロックとしてのフリーブロックを生成するために実行される処理である。より具体的には、ガベージコレクション制御部24は、既に書き込み済みのブロック(アクティブブロック)からGCソースブロックを選択し、GCソースブロックから有効データを集め、それを新しいブロック(GCデスティネーションブロック)に書き込み、有効データが元々格納されていたブロックをフリーブロックとする。
ウェアレベリング制御部25は、ウェアレベリングを実行する。ウェアレベリングは、ブロックの消去回数を平準化する処理である。特に、消去回数が多いブロックの発生を防ぐことにより、SSD3の故障確率を低下させることができる。
NAND制御部26は、上述のNANDインタフェース13の制御を実行する。
パフォーマンス制御部30は、SSD3の性能調整処理を実行する。より具体的には、パフォーマンス制御部30は、例えばホスト2からの通知により性能調整処理を実行するか否かを判定する。性能調整処理を実行する場合、パフォーマンス制御部30は、SSD3の性能調整幅の範囲内で、リクエストに対する応答性能を向上又は低下させる。
パフォーマンス制御部30は、性能調整処理を実行する際に、ホスト2よりリクエストを受信してから、ホスト2へレスポンスを送信するまでの応答時間(以下、レスポンス時間とする)を算出する。また、パフォーマンス制御部30は、ベストエフォートでリクエストを処理した場合にかかる処理時間(以下、リクエスト処理時間とする)をあらかじめ算出しておくことが好ましい。
パフォーマンス制御部30は、このレスポンス時間がリクエスト処理時間よりも長い場合に、このレスポンス時間とリクエスト処理時間との差である遊休時間を算出する。この場合、パフォーマンス制御部30は、ベストエフォートでリクエストを処理し、かつ遊休時間内で完了する処理(例えば、上述のGC、ウェアレベリングなど)を実行する。
また、この場合、パフォーマンス制御部30は、例えば遊休時間を費やして(レスポンス時間を費やして)リクエストの処理が完了するように、リクエストに対応する応答性能を低下させてもよい。リクエストに対する応答性能を低下させる例として、例えば、NANDアクセスの並列数を減らすことなどが挙げられる。NANDアクセスの並列数とは、コントローラ4からNAND型フラッシュメモリ5に対して並列的にアクセス可能なチャンネルの数を示す。このNANDアクセスの並列数を増やすほど、NAND型フラッシュメモリ5に対するアクセス速度は向上する。例えば、NANDアクセスの並列数が16チャンネルである場合のアクセス速度は、NANDアクセスの並列数が8チャンネルである場合に比べおおよそ2倍となる。
パフォーマンス制御部30は、SSD3における性能調整状態を管理し、ホスト2に通知してもよい。SSD3の性能調整状態の管理については、図5を用いて後述する。
次に、ホスト2の構成について説明する。ホスト2は、DASとして接続されているSSD3にアクセスするための機能を有する。また、ホスト2は、ネットワーク(クラウド)上のストレージにアクセスするための機能を有していてもよい。
ホスト2は、様々なプログラムを実行する。情報処理装置によって実行されるプログラムには、ファイルシステム41、オペレーティングシステム(OS)42、アプリケーションレイヤ43などが含まれる。
ファイルシステム41は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。例えば、ZFS、Btrfs、XFS、ext4、NTFSなどがファイルシステム41として使用されてもよい。あるいは、ファイルオブジェクトシステム(例えば、Ceph Object Storage Daemon)、Key Value Store System(例えば、Rocks DB)がファイルシステム41として使用されてもよい。
一般に知られているように、オペレーティングシステム(OS)42は、ホスト2全体を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェア及びSSD3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
オペレーティングシステム42は、例えば、プロセス管理部51、ハードウェアリソース管理部52などを含む。
プロセス管理部51は、オペレーティングシステム42上で動作する各種プロセスの状態を管理する。
ハードウェアリソース管理部52は、ホスト2内のハードウェアリソースの状態を管理する。ホスト2が有するハードウェアリソースの例としては、例えば、CPU(Central Processing Unit)、各種ストレージ、メモリ、ネットワークなどが挙げられる。
アプリケーションレイヤ43上では、様々なアプリケーションソフトウェアスレッドが実行される。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェア、データベースソフトウェア、仮想マシン等がある。
アプリケーションレイヤ43がリクエストをSSD3に送信する際、アプリケーションレイヤ43は、まずOS42にそのリクエストを送信する。OS42はそのリクエストをファイルシステム41に送信する。ファイルシステム41は、当該リクエストを、コマンド(例えば、リードコマンド、ライトコマンドなど)に変換する。ファイルシステム41は、コマンドを、SSD3に送信する。SSD3からのレスポンスが受信された際、ファイルシステム41は、そのレスポンスをOS42に送信する。OS42は、そのレスポンスをアプリケーションレイヤ43に送信する。
アプリケーションレイヤ43は、I/O特性把握部431を含む。I/O特性把握部431が各プロセスにおいて使用されるハードウェアの状態を監視し、I/O待ちがボトルネックであるか否かを判定する。
I/O特性把握部431は、プロセス管理部51で管理される各プロセスのI/O特性を把握し、SSD3が性能調整を行うか否かを決定する。そして、ホスト2は、SSD3にリクエストを送信する際に、当該決定に基づくSSD3の性能調整に関する通知を送信することにより、SSD3に対して性能調整を指示する。なお、この性能調整に関する通知の詳細は、図4を用いて後述する。
I/O特性把握部431は、例えば、下記第1又は第2の視点で各プロセスのI/O特性を把握する。第1の視点においては、I/O特性把握部431は、I/Oリクエストを発行した単一のプロセスの状態、種類などに基づいて、当該プロセスのI/O特性を判定する。すなわち、I/O特性把握部431は、発行するI/Oリクエストが、当該プロセスの実行にあたりボトルネックであるかどうかを判定する。
具体的には、例えば、プロセスが動画再生である場合、動画再生中のI/Oリクエストは、動画データをキャッシュするためのリードリクエストである場合が多い。したがって、当該I/Oリクエストは、ベストエフォートでのレスポンスは不要であると判定されてもよい。
一方、第2の視点においては、I/O特性把握部431は、他のハードウェアリソースの使用率などに基づいて、I/Oリクエストを発行したプロセスのI/O特性を判定する。
具体的には、例えば、ホスト2全体でCPUリソースの使用率が高く、I/Oリクエストを発行したプロセスにおいてもCPUリソースがボトルネックとなる場合、I/O特性把握部431は、当該I/Oリクエストについてはベストエフォートでのレスポンスは不要であると判定してもよい。
換言すれば、第2の視点によれば、I/O特性把握部431は、I/Oリクエストを発行した単一のプロセスだけでなく、他の複数のプロセスの実行状態に基づいて当該プロセスのI/O特性を把握可能である。
なお、I/O特性把握部431は、SSD3より性能調整状態を取得してもよい。I/O特性把握部431は、例えば取得した性能調整状態に基づき、今後のSSD3の性能調整に関する通知内容を決定してもよい。
図2及び図3は、比較例にかかるコンピュータシステム1Aにおけるホスト2AとSSD3Aとの間のリクエスト及びレスポンスの例を示す図である。
図2に示すように、比較例のコンピュータシステム1Aにおいては、ホスト2AはSSD3Aに対して、例えば、リードコマンド、ライトコマンドなどを含むリクエストを発行し、SSD3Aに対して送信する(矢印A1)。SSD3Aは、ベストエフォートで受信したリクエストを処理する。そして、SSD3Aは、ホスト2Aに対し、当該リクエストに対するレスポンスを送信する(矢印A2)。
すなわち、比較例にかかるコンピュータシステム1Aにおいては、当該リクエストを発行したプロセスにおいてI/O待ちがボトルネックであるか否かにかかわらず、SSD3Aからほぼ同じ時間でレスポンスが送信される。
図3に示すように、比較例のコンピュータシステム1Aにおいて、ホスト2Aは、SSD3Aより受信したレスポンスを確認した後、次にSSD3Aに依頼する処理が無い場合は、SSD3Aに対してスリープコマンドを送信する(矢印A3)。SSD3Aは、ホスト2Aに対してスリープ完了通知を送信し(矢印A4)、低消費電力モードに遷移する。このように、比較例のコンピュータシステム1Aにおいては、ホスト2Aは、処理対象のリクエストがなくなればSSD3Aを低消費電力モードに遷移するよう制御する。SSD3Aが低消費電力モードに遷移することにより、SSD3Aのバックグラウンド処理であるNAND型フラッシュメモリのブロック管理のための処理(例えば、ウェアレベリング、GCなど)の実行が制限され得る。
図4は、本実施形態に係る性能調整に関する属性情報の一例を示す図である。
性能調整に関する属性情報は、例えば2ビットの情報である。この属性情報は、上述のように、ホスト2からSSD3に送信されるリクエストとともに、SSD3に通知される。SSD3は、受信した属性情報に基づいて、実行する性能調整処理の内容を決定する。
例えば、属性情報が“00”である場合、ホスト2は、SSD3に対して最も高い応答性能で(すなわち、ベストパフォーマンスで)リクエストの処理を要求することを示す。属性情報が“01”である場合、ホスト2は、SSD3に対して現在の応答性能の維持を要求することを示す。属性情報が“10”である場合、ホスト2は、リクエストを発行したプロセスにおいてI/O待ちが発生している(I/Oボトルネックである)ため、SSD3に対して応答性能の向上を要求することを示す。属性情報が“11”である場合、ホスト2は、他のリソース待ちが発生している(I/Oボトルネックでない)ため、SSD3に対して応答性能の低下を要求することを示す。
なお、この属性情報は、例えばNVMe規格に規定されるリードコマンド又はライトコマンドの予約領域の一部を用いて実現されてもよい。
また、この属性情報は、例えば性能調整のオン又はオフを示す1ビットの情報でもよく、性能調整の内容をより細かく表現した3ビット以上の情報でもよい。属性情報のビット数が多い場合、例えば、上述のように応答性能を向上又は低下させる要求に、応答性能の調整割合に関する情報を付加してもよい。応答性能の調整割合に関する情報とは、例えば、ベストエフォートからどれだけ応答性能を低下させるか、又は、現在よりどれだけ応答性能を向上させるか、などである。これにより、SSD3は、より細かく性能調整を実行できる。
図5は、本実施形態に係るSSD3の性能調整状態を管理するテーブルTB1の一例を示す図である。
SSD3のパフォーマンス制御部30は、例えば、テーブルTB1を用いて性能調整状態を管理する。テーブルTB1は、例えば、最新のリクエスト処理における性能調整状態を記憶してもよく、又は、過去の数回のリクエスト処理における性能調整状態を記憶してもよい。テーブルTB1は、例えばDRAM6などに格納される。
テーブルTB1は、アクセス種別101、リクエスト処理時間102、調整状態103などを関連付けて管理する。
アクセス種別101は、リクエストに含まれるコマンドの種類を示す。リクエスト処理時間102は、アクセス種別101ごとのコマンド処理にかかった時間を示す。
調整状態103は、アクセス種別101ごとの処理が、例えばベストエフォートからどれだけ性能調整されているかを示す情報である。
例えば、テーブルTB1は、4KiBランダムリードのリクエスト処理時間102がx1[us]であることを示す。また、テーブルTB1は、4KiBランダムリードがベストエフォートの状態からz1[%]だけ応答性能を低下させるよう調整されていることを示す。
また、SSD3には、性能調整可能な調整幅があらかじめ設定されることが好ましい。この調整幅は、例えば、NVMe規格のSet Featuresコマンドなどにより設定可能である。
パフォーマンス制御部30は、テーブルTB1で管理されるリクエスト処理時間102と、この調整幅とに基づいて、現在のリクエストに対するレスポンス時間を算出する。
図6は、本実施形態に係るコンピュータシステムにおける性能調整処理の一例を示すフローチャートである。図6において、ホスト2では、SSD3に対してアクセスが必要なあるプロセスが実行されているとする。
ステップS101において、ホスト2は、SSD3に対しI/Oリクエストを送信する。当該I/Oリクエストは、処理対象のプロセスの指示により実行される。
ステップS102において、ホスト2のI/O特性把握部431は、処理対象のプロセスがI/Oボトルネックであるか否かを確認する。処理対象のプロセスがI/Oボトルネックでない場合、処理はステップS103へ進む。一方、処理対象のプロセスがI/Oボトルネックである場合、処理はステップS108へ進む。
ステップS103において、ホスト2は、SSD3に対し、I/Oボトルネックでない旨の通知を行う。より具体的には、ホスト2は、性能調整に関する属性情報“11”とし、ステップS101で送信するI/Oリクエストに、当該属性情報を付加することにより、SSD3に対して性能調整の通知を行う。
ステップS104及びステップS105は、SSD3が受信したI/Oリクエストに対して応答性能を低下させる処理である。ステップS104において、パフォーマンス制御部30は、ホスト2より受信した性能調整の通知に基づき、遊休時間を算出する。ステップS105において、パフォーマンス制御部30は、算出された遊休時間内で処理可能なバックグラウンド処理を選択し、実行する。なお、パフォーマンス制御部30は、遊休時間(レスポンス時間)を費やしてリクエストの処理が完了するよう、リクエストの応答性能を低下させてもよい。
ステップS106において、SSD3は、ホスト2に対して処理したリクエストに対するレスポンスを送信する。
ステップS107において、パフォーマンス制御部30は、性能調整状態を管理するテーブルTB1に、リクエスト処理にかかった時間、調整状態などを記録する。
ステップS108〜S112は、SSD3の応答性能を向上させる処理である。
ステップS108において、ホスト2は、SSD3に対し、I/Oボトルネックでない旨の通知を行う。より具体的には、ホスト2は、ステップS101で送信するI/Oリクエストに、性能調整に関する属性情報“10”を付加する。
ステップS109において、パフォーマンス制御部30は、応答性能を低下させる処理がすでに実行されているか否かを確認する。より具体的には、パフォーマンス制御部30は、テーブルTB1の調整状態103を読み出すことにより、例えばリクエスト処理の性能をベストエフォートからどれだけ低下させているかを判定する。
応答性能を低下させる処理が実行されている場合、ステップS110において、パフォーマンス制御部30は、応答性能を向上させる処理を実行する。より具体的には、パフォーマンス制御部30は、例えば所定の割合で遊休時間を減らしてもよく、又は、NAND並列数を増やしてレスポンス時間を短縮してもよい。
一方、ステップS109において、応答性能を低下させる処理が実行されていない場合、SSD3はすでにベストエフォートで動作しているため、応答性能を向上させる処理(ステップS110)は行われない。
ステップS111,S112の処理は、ステップS106,S107の処理と同様であるため、説明を省略する。
図7は、本実施形態に係るコンピュータシステムにおける性能調整処理の一例を示すタイミングチャートである。図7において、横軸は時間を示す。
まず、ホスト2は、SSD3に対してI/Oリクエストを送信する。SSD3は、時刻T1において、受信したI/Oリクエストに含まれるコマンド処理を開始する。SSD3は、当該コマンド処理をベストエフォートで実行し、時間ΔTA後に処理を完了する。その後、SSD3は、ホスト2に対し、レスポンスを送信する。
ホスト2は、時刻T2より、例えばCPU待機プロセスを実行する。その後、SSD3に対し、I/Oボトルネックでない旨の通知とともに、I/Oリクエスト送信する。
SSD3のパフォーマンス制御部30は、受信した当該通知に基づいてSSD3の応答性能を低下させる。具体的には、パフォーマンス制御部30は、遊休時間ΔTbを算出する。そして、SSD3は、例えば、時刻T3より受信したリクエストに含まれるコマンド処理をベストエフォートで実行し、その後の遊休時間ΔTbでGCを実行する。その後、SSD3は、ホスト2に対し、レスポンスを送信する。なお、コマンド処理時間ΔTAと遊休時間ΔTbの和が、このI/Oリクエストに対するレスポンス時間ΔTBとなる。
ホスト2は、時刻T4より、例えばさらにCPU待機プロセスを実行する。その後、SSD3に対し、I/Oボトルネックでない旨の通知とともに、I/Oリクエスト送信する。
SSD3のパフォーマンス制御部30は、受信した当該通知に基づいて、さらにSSD3の応答性能を低下させる。図7の例では、パフォーマンス制御部30は、遊休時間を算出した上でレスポンス時間ΔTCを算出する。そして、パフォーマンス制御部30は、時刻T5より、受信したI/Oリクエストに含まれるコマンド処理を実行し、コマンド処理時間がこのレスポンス時間ΔTCとなるように、例えばNANDアクセスの並列数を減らす。その後、SSD3は、ホスト2に対し、レスポンスを送信する。
以上説明した本実施形態において、ホスト2は、あるプロセスがI/Oボトルネックでない場合に、SSD3に対し、I/OリクエストとともにI/Oボトルネックでない旨の通知を送信する。SSD3は、当該通知に基づき、SSD3の応答性能を低下させる。これにより、ホスト2のユーザの体感性能を低下させることなく、SSD3の性能調整を実行できる。
また、SSD3は、この性能調整により遊休時間が発生するたびに、遊休時間を使ってウェアレベリング、GCなどのブロック管理を実行する。したがって、SSD3においてはブロック管理がなされた状態が維持されるため、例えば、ブロック管理を集中的に行う場合と比べて、恒常的に応答性能を向上させることができる。より具体的には、SSD3内部で発生するブロック管理のリクエストの増加のためにホスト2からのリクエストが制限される状態を回避できる。このため、例えば、ホスト2が意図しないタイミングで、急にSSD3からのレスポンスが遅延することを防ぐことができる。
また、ホスト2は、性能調整により遅延したタイミングで、当該I/Oリクエストに対するレスポンスを受け取る。ホスト2は、当該プロセスのボトルネックとなるリソースを再度確認する。ここでなおI/O待ちが発生していない場合は、さらにSSD3に対してI/Oボトルネックでない旨を通知する。これにより、ホスト2は、SSD3の性能調整を連続的に実行できる。
また、上記ブロック管理を定期的に実行することは、SSD3の恒常的なピーク電力の抑制にも寄与する。
本実施形態において、SSD3は、遊休時間を使って実行する処理の内容を変化させることにより、処理速度以外のSSD3の応答性能を柔軟に改善できる。例えば、SSD3の応答性能が低下している場合は、遊休時間を使ってブロック管理を実行することにより、応答性能が改善する。また、SSD3の消費電力が高い場合は、遊休時間(レスポンス時間)を費やしてリクエストの処理を実行するためにNANDアクセスの並列数を減らすことにより、一時的に消費電力を低下させることができる。
本実施形態において、ホスト2は、リードコマンド又はライトコマンドのリザーブ領域を利用して、SSD3に対して性能調整に関する属性情報を通知する。すなわち、ホスト2は、既存のインタフェースを利用して、SSD3に対して当該属性情報を通知できるため、コンピュータシステム1のユーザの利便性が確保される。
本実施形態において、ホスト2は、1つ以上のハードウェアリソースの使用率などに基づいて、あるプロセスのI/O特性を判定する。すなわち、他の複数のプロセスの実行状態を考慮に入れたI/O特性の判定が可能となるため、I/O特性の判定精度が向上する。
なお、本実施形態においては、SSD3はホスト2より受信した単一のI/Oリクエストに対して性能調整を実行するとして説明した。しかしながら、SSD3は、複数のI/Oリクエストに対して性能調整を実行してもよい。これにより、SSD3は、複数のリクエストを1つのトランザクションとして捉えた性能調整が可能となるため、より多くの遊休時間を得ることができる。
例えば、SSD3から動画データを読み出す場合、ホスト2からSSD3に対して複数回のリードリクエストが送信される。SSD3は、例えば、複数のリードリクエストを1連のアクセスシーケンスとしてまとめてテーブルTB1で管理する。これにより、SSD3は、複数のリードリクエスト分の遊休時間をまとめて得ることができる。
[第2の実施形態]
本実施形態は、第1の実施形態の変形例である。第1の実施形態では、アプリケーションレイヤ43のI/O特性把握部431が、あるプロセスに対して性能調整を行うか否かを決定するとして説明した。一方、本実施形態では、。オペレーティングシステム42がプロセスをグループ分けし、プロセスグループごとに性能特性を決定する。
本実施形態は、第1の実施形態の変形例である。第1の実施形態では、アプリケーションレイヤ43のI/O特性把握部431が、あるプロセスに対して性能調整を行うか否かを決定するとして説明した。一方、本実施形態では、。オペレーティングシステム42がプロセスをグループ分けし、プロセスグループごとに性能特性を決定する。
図8は、本実施形態に係るホスト2におけるプロセス管理処理の一例を示すフローチャートである。また、図9は、本実施形態に係るプロセスグループの一例を示す図である。なお、本実施形態において、プロセス管理部51以外のコンピュータシステム1の構成は、第1の実施形態と同様であるため、説明を省略する。
ステップS301において、ホスト2のプロセス管理部51は、各プロセスを性能特性ごとにグルーピングする。
より具体的には、プロセス管理部51は、例えば図9に示すように、複数のプロセスグループを管理する。例えば、プロセスグループG1は、I/Oがボトルネックであるプロセス(例えばプロセスA,B)を管理し、プロセスグループG2は、他のハードウェアリソースがボトルネックであるプロセス(例えば、プロセスC,D)を管理する。
このようなプロセスグループを生成することにより、例えば、ホスト2は、CPUがボトルネックであるプロセスグループに含まれるプロセスを処理する際には、SSD3に対して性能調整を行うことを把握できる。また、例えば、ホスト2は、I/Oがボトルネックであるプロセスグループに含まれるプロセスを処理する際には、SSD3に対して性能調整を行わないこと(すなわち、ベストエフォートでの処理を要求すること)を把握できる。
なお、プロセス管理部51は、例えば各プロセスの性能特性の変化に応じて、各プロセスが所属するプロセスグループを変更することができる。
ステップS302において、プロセス管理部51は、ステップS301で得られたプロセスグループごとの性能特性に関する情報に基づいて、I/Oリクエストを発行するプロセスのI/O特性を決定する。
ステップS303において、プロセス管理部51は、SSD3に対し、I/Oリクエストとともに、決定されたI/O特性に基づいてI/Oボトルネック発生の有無を通知する。SSD3は、当該通知を受けて性能調整を行う。性能調整処理については、図6で上述した処理と同様であるため、説明を省略する。
ステップS304において、プロセス管理部51は、必要に応じて、プロセスごとに所属するプロセスグループを変更する。
以上説明したように、本実施形態においては、オペレーティングシステム42が、各プロセスの性能特性に応じてプロセスグループを生成することにより、各プロセスを管理する。これにより、ホスト2においてはプロセスごとにI/O特性を把握するための処理が不要となるため、ホスト2の処理負荷が低減される。
[第3の実施形態]
本実施形態は、第2の実施形態の変形例である。本実施形態においては、第2の実施形態に加え、性能調整を要するプロセスが、あらかじめホスト2からSSD3に通知される。SSD3は、ホスト2の指示に従い、プロセスごとの応答性能の調整値を示す情報を記憶する。この情報は、例えばテーブル形式で表される。SSD3は、このテーブルにより管理されるプロセスに紐づいたリクエストに対し、当該テーブルに記載された調整値に基づいて応答性能を調整する。SSD3で実行する性能調整処理については、図6で上述した処理と同様であるため、説明を省略する。
本実施形態は、第2の実施形態の変形例である。本実施形態においては、第2の実施形態に加え、性能調整を要するプロセスが、あらかじめホスト2からSSD3に通知される。SSD3は、ホスト2の指示に従い、プロセスごとの応答性能の調整値を示す情報を記憶する。この情報は、例えばテーブル形式で表される。SSD3は、このテーブルにより管理されるプロセスに紐づいたリクエストに対し、当該テーブルに記載された調整値に基づいて応答性能を調整する。SSD3で実行する性能調整処理については、図6で上述した処理と同様であるため、説明を省略する。
なお、本実施形態に係るコンピュータシステム1の構成は、第1の実施形態と同様であるため、説明を省略する。
図10は、本実施形態に係るプロセスごとの性能調整を管理するテーブルTB2の一例を示す図である。
テーブルTB2は、プロセスID201及び調整値202などを関連付けて管理する。
プロセスID201は、プロセスを特定可能な情報であり、例えば、プロセスごとに割り振られたID番号である。プロセスIDは、例えばプロセス名などでもよい。
調整値202は、プロセスに紐づくリクエストを、どれだけ応答性能を落として処理するかを示す数値である。換言すれば、調整値202は、プロセスごとに期待される動作性能を示す。例えば、図10の例では、SSD3は、プロセスID1に紐づくリクエストに対してはベストエフォートで処理することを示し、プロセスID2に紐づくリクエストに対してはベストエフォートの90%の応答性能で処理することを示している。
テーブルTB2に含まれる内容は、柔軟に変更可能であることが好ましい。例えば、ホスト2からの指示又はパフォーマンス制御部30の指示などにより、テーブルTB2に含まれる内容の変更、更新、削除などが行われてもよい。
なお、ホスト2は、SSD3に対してプロセスIDを通知する際に、例えば、NVMe規格に規定されるリードコマンド又はライトコマンドの予約領域の一部を用いてもよい。
以上説明したように、本実施形態では、SSD3内部に性能調整を行うプロセスごとの動作性能の調整値を管理するテーブルが記憶される。これにより、SSD3においてプロセスIDごとの細かい性能調整が可能となる。
なお、テーブルTB2は、リクエストと調整値202とを関連付け可能な他の態様により表現されてもよい。例えば、テーブルTB2は、データの種別IDと調整値を関連付けて管理してもよい。より具体的には、テーブルTB2は、例えばメタデータに対してはベストエフォートで処理することを示し、動画データであればベストエフォートの90%の応答性能で処理することを示してもよい。
本実施形態において、SSD3は、例えばホスト2からの要求に応じて、各リクエストの性能調整後の処理時間をホスト2に送信してもよい。性能調整後の処理時間は、例えばテーブルTB1に記録された処理時間でもよく、又は、過去の実行履歴から想定される処理時間でもよい。また、SSD3は、ホスト2から当該要求を受信したタイミングで、SSD3内部で並列に処理している処理量、余剰容量などのを想定される処理時間に加算し手もよい。ホスト2は、SSD3より送信された処理時間に基づいて、上述の調整値202を決定してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…コンピュータシステム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、10…バス、11…ホストインタフェース、12…CPU、13…NANDインタフェース、14…DRAMインタフェース、21…コマンド制御部、22…FTL、23…ルックアップテーブル、24…ガベージコレクション制御部、25…ウェアレベリング制御部、26…NAND制御部、30…パフォーマンス制御部、41…ファイルシステム、42…オペレーティングシステム、43…アプリケーションレイヤ、51…プロセス管理部、52…ハードウェアリソース管理部、431…I/O特性把握部、B0〜Bm−1…ブロック、P0〜Pn−1…ページ。
Claims (9)
- インタフェースを介してホストと接続可能であり、
1つ以上のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラと、
を具備し、
前記コントローラは、
前記ホストからリクエスト及び前記リクエストの応答性能を低下させる旨の通知を受信した場合に前記リクエストの処理時間よりも長い応答時間を決定し、前記応答時間と前記リクエストの処理時間との差である遊休時間を使って前記不揮発性メモリのブロック管理処理を実行する第1の性能低下処理を実行するか、又は、前記応答時間を費やして前記リクエストを処理するよう前記応答性能を低下させる第2の性能低下処理を実行するように構成される
記憶装置。 - 前記応答性能の調整幅を示す第1の情報と、前記ホストより受信したリクエストの処理時間及び前記応答性能の調整状態とを示す第2の情報とを記憶し、
前記コントローラは、前記第1の情報と前記第2の情報とに基づいて、前記応答時間を決定する
請求項1に記載の記憶装置。 - 前記第2の性能低下処理は、前記不揮発性メモリに対するアクセスの並列数を減らす処理である、
請求項1又は請求項2に記載の記憶装置。 - 前記ブロック管理処理は、ウェアレベリング又はガベージコレクションである、
請求項1乃至請求項3のいずれか一項に記載の記憶装置。 - ホストと、
請求項1の記憶装置と、
を備え、
前記ホストは、
前記ホストで実行される複数のプロセスを性能特性ごとにグループ分けして管理し、前記グループごとに前記リクエストを発行するプロセスのI/O特性を決定し、
前記I/O特性に基づいて、前記記憶装置に対し、前記リクエストに対する応答性能を低下させるか否かの通知を送信する
情報処理システム。 - 複数のハードウェアリソースを含むホストと、
請求項1の記憶装置と、
を備え、
前記ホストは、
前記複数のハードウェアリソースの使用率に基づいて、前記リクエストを発行するプロセスのI/O特性を決定し、
前記I/O特性に基づいて、前記記憶装置に対し、前記リクエストに対する応答性能を低下させるか否かの通知を送信する
情報処理システム。 - インタフェースを介してホストと接続可能であり、
1つ以上のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラと、
を具備し、
前記コントローラは、前記ホストより受信するリクエストごとの応答性能の調整値を示す情報を記憶し、前記情報に基づいて前記ホストより受信したリクエストに対する応答時間を決定し、前記応答時間と前記受信したリクエストの処理時間との差である遊休時間を使って前記不揮発性メモリのブロック管理処理を実行する第1の性能低下処理を実行するか、又は、前記応答時間を費やして前記受信したリクエストを処理するよう前記応答性能を低下させる第2の性能低下処理を実行するように構成される
記憶装置。 - 前記第2の性能低下処理は、前記不揮発性メモリに対するアクセスの並列数を減らす処理である、
請求項7に記載の記憶装置。 - 前記ブロック管理処理は、ウェアレベリング又はガベージコレクションである、
請求項7又は請求項8に記載の記憶装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018172756A JP2020046752A (ja) | 2018-09-14 | 2018-09-14 | 記憶装置及び情報処理システム |
CN201910143422.7A CN110908595B (zh) | 2018-09-14 | 2019-02-26 | 存储装置及信息处理系统 |
TW108106682A TWI722392B (zh) | 2018-09-14 | 2019-02-27 | 記憶裝置 |
US16/290,633 US11307797B2 (en) | 2018-09-14 | 2019-03-01 | Storage device and information processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018172756A JP2020046752A (ja) | 2018-09-14 | 2018-09-14 | 記憶装置及び情報処理システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020046752A true JP2020046752A (ja) | 2020-03-26 |
Family
ID=69772935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018172756A Pending JP2020046752A (ja) | 2018-09-14 | 2018-09-14 | 記憶装置及び情報処理システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US11307797B2 (ja) |
JP (1) | JP2020046752A (ja) |
CN (1) | CN110908595B (ja) |
TW (1) | TWI722392B (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11003384B2 (en) | 2019-08-30 | 2021-05-11 | Micron Technology, Inc. | Scheduling media management operations based on determined host system usage requirements |
US11301132B2 (en) * | 2019-08-30 | 2022-04-12 | Micron Technology, Inc. | Scheduling media management operations based on provided host system usage requirements |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003036205A (ja) * | 2001-07-24 | 2003-02-07 | Matsushita Electric Ind Co Ltd | 記憶装置 |
JP2005321959A (ja) * | 2004-05-07 | 2005-11-17 | Hitachi Ltd | 情報処理装置、情報処理装置の制御方法、及びプログラム |
US20160299689A1 (en) * | 2015-04-07 | 2016-10-13 | Samsung Electronics Co., Ltd. | Operation method of nonvolatile memory system and operation method of user system including the same |
JP2017117055A (ja) * | 2015-12-22 | 2017-06-29 | 株式会社東芝 | メモリシステムおよび制御方法 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4924428A (en) * | 1987-12-08 | 1990-05-08 | Northern Telecom Limited | Real time digital signal processor idle indicator |
US5856786A (en) * | 1997-03-05 | 1999-01-05 | Northrop Grumman Corporation | Adaptive sleep circuit using network timing feedback |
US5784616A (en) * | 1997-05-02 | 1998-07-21 | Microsoft Corporation | Apparatus and methods for optimally using available computer resources for task execution during idle-time for future task instances exhibiting incremental value with computation |
US6009452A (en) * | 1997-05-02 | 1999-12-28 | Microsoft Corporation | Apparatus and methods for optimally using available computer resources for task execution during idle-time based on probabilistic assessment of future task instances |
US5995997A (en) * | 1997-05-02 | 1999-11-30 | Microsoft Corporation | Apparatus and methods for optimally allocating currently available computer resources to future task instances versus continued execution of current task instances |
US6160848A (en) | 1998-01-22 | 2000-12-12 | International Business Machines Corp. | Conditional replenishment device for a video encoder |
US7050203B2 (en) * | 2001-06-08 | 2006-05-23 | Kabushiki Kaisha Toshiba | Composite apparatus and method for controlling entering of the sleep state |
JP3812405B2 (ja) * | 2001-10-25 | 2006-08-23 | 株式会社日立製作所 | ディスクアレイシステム |
JP4287435B2 (ja) * | 2004-01-07 | 2009-07-01 | パナソニック株式会社 | サーバ、機器登録システム |
US20050223385A1 (en) * | 2004-03-31 | 2005-10-06 | Christof Braun | Method and structure for explicit software control of execution of a thread including a helper subthread |
US8443373B2 (en) * | 2010-01-26 | 2013-05-14 | Microsoft Corporation | Efficient utilization of idle resources in a resource manager |
KR101702392B1 (ko) * | 2010-08-20 | 2017-02-06 | 삼성전자주식회사 | 반도체 저장 장치 및 상기 반도체 저장 장치의 성능 조절 방법 |
US9009391B2 (en) * | 2010-10-25 | 2015-04-14 | Fastor Systems, Inc. | Solid state drive architecture |
KR101861184B1 (ko) * | 2011-11-02 | 2018-05-28 | 삼성전자주식회사 | 스토리지의 동작 성능 조절방법 및 그에 따른 반도체 저장장치 |
US9285858B2 (en) * | 2013-01-29 | 2016-03-15 | Blackberry Limited | Methods for monitoring and adjusting performance of a mobile computing device |
US20140359196A1 (en) * | 2013-05-31 | 2014-12-04 | Daniel J. Ragland | On-the-fly performance adjustment for solid state storage devices |
KR20150068747A (ko) * | 2013-12-12 | 2015-06-22 | 삼성전자주식회사 | 비휘발성 메모리 시스템, 이를 포함하는 모바일 장치 및 비휘발성 메모리 시스템의 동작방법 |
US9727248B2 (en) * | 2014-02-05 | 2017-08-08 | Apple Inc. | Dynamic IO operation timeout assignment for a solid state drive |
US9400654B2 (en) * | 2014-06-27 | 2016-07-26 | Freescale Semiconductor, Inc. | System on a chip with managing processor and method therefor |
US9934151B2 (en) * | 2016-06-28 | 2018-04-03 | Dell Products, Lp | System and method for dynamic optimization for burst and sustained performance in solid state drives |
US10235178B2 (en) * | 2017-06-02 | 2019-03-19 | Microsoft Technology Licensing, Llc | Performance scaling for binary translation |
US10929285B2 (en) * | 2018-02-27 | 2021-02-23 | Western Digital Technologies, Inc. | Storage system and method for generating a reverse map during a background operation and storing it in a host memory buffer |
KR20200016075A (ko) * | 2018-08-06 | 2020-02-14 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치 |
-
2018
- 2018-09-14 JP JP2018172756A patent/JP2020046752A/ja active Pending
-
2019
- 2019-02-26 CN CN201910143422.7A patent/CN110908595B/zh active Active
- 2019-02-27 TW TW108106682A patent/TWI722392B/zh active
- 2019-03-01 US US16/290,633 patent/US11307797B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003036205A (ja) * | 2001-07-24 | 2003-02-07 | Matsushita Electric Ind Co Ltd | 記憶装置 |
JP2005321959A (ja) * | 2004-05-07 | 2005-11-17 | Hitachi Ltd | 情報処理装置、情報処理装置の制御方法、及びプログラム |
US20160299689A1 (en) * | 2015-04-07 | 2016-10-13 | Samsung Electronics Co., Ltd. | Operation method of nonvolatile memory system and operation method of user system including the same |
JP2017117055A (ja) * | 2015-12-22 | 2017-06-29 | 株式会社東芝 | メモリシステムおよび制御方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110908595A (zh) | 2020-03-24 |
CN110908595B (zh) | 2023-12-01 |
US20200089428A1 (en) | 2020-03-19 |
TWI722392B (zh) | 2021-03-21 |
TW202011197A (zh) | 2020-03-16 |
US11307797B2 (en) | 2022-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531480B2 (en) | Storage device that secures a block for a stream or namespace and system having the storage device | |
US11474702B2 (en) | Storage device that writes data from a host during garbage collection | |
JP6517684B2 (ja) | メモリシステムおよび制御方法 | |
JP6517685B2 (ja) | メモリシステムおよび制御方法 | |
KR102094236B1 (ko) | 스토리지 디바이스 및 컴퓨터 시스템 | |
JP6785204B2 (ja) | メモリシステムおよび制御方法 | |
US11747979B2 (en) | Electronic device, computer system, and control method | |
KR20090109959A (ko) | 스토리지 장치 | |
US11899580B2 (en) | Cache space management method and apparatus | |
KR20200110547A (ko) | 스토리지 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치 | |
US11307797B2 (en) | Storage device and information processing system | |
US20240020014A1 (en) | Method for Writing Data to Solid-State Drive | |
US10365857B2 (en) | Memory system | |
US20230244383A1 (en) | Memory system and method of controlling nonvolatile memory | |
US11797183B1 (en) | Host assisted application grouping for efficient utilization of device resources | |
JP6721765B2 (ja) | メモリシステムおよび制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210318 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210930 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20211005 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20220405 |