JP2022025055A - リソースベースのコマンドのスケジューリングに対するシステム及び方法 - Google Patents

リソースベースのコマンドのスケジューリングに対するシステム及び方法 Download PDF

Info

Publication number
JP2022025055A
JP2022025055A JP2021123001A JP2021123001A JP2022025055A JP 2022025055 A JP2022025055 A JP 2022025055A JP 2021123001 A JP2021123001 A JP 2021123001A JP 2021123001 A JP2021123001 A JP 2021123001A JP 2022025055 A JP2022025055 A JP 2022025055A
Authority
JP
Japan
Prior art keywords
command
queue
pool
resource set
storage device
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
Application number
JP2021123001A
Other languages
English (en)
Inventor
亮 ソク 奇
Yang Seok Ki
一 九 洪
Ilgu Hong
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 JP2022025055A publication Critical patent/JP2022025055A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability

Landscapes

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

Abstract

Figure 2022025055000001
【課題】1つ以上のサーバーを含むシステムにおけるメモリリソースを管理するためのシステム及び方法を提供する。
【解決手段】本発明のストレージ装置による処理のためのコマンドのスケジューリング方法は、アプリケーションからコマンドを受信して第1キューに格納し、ストレージ装置により管理される第1リソース集合に対する情報を獲得し、第1リソース集合に対する情報に基づいて第2リソース集合を同期化し、第2リソース集合を第1プール及び第2プールに割り当て、第1プールで第2リソース集合の条件を決定し、条件の第1決定に基づいて、第1プールで第2リソース集合のうちのいずれか1つをコマンドに割り当て、条件の第2決定に基づいて、第2プールで第2リソース集合のうちのいずれか1つをコマンドに割り当てる。
【選択図】図5

Description

本発明は、ストレージ装置に関し、より詳細には、ストレージ装置のハードウェアリソースに基づいてコマンドをスケジューリングするシステム及び方法に関する。
ホストコンピューティング装置は、ストレージ装置による処理のためのコマンド(例えば、リード(read)及びライト(write)のコマンド)を提供する。ホストコンピューティング装置は、コマンドの実行のための特定のQoS(quality of service)の期待値を有する。しかし、特定の状況では、QoS要求値に応じてコマンドを処理するハードウェアリソースが十分ではなく、ジッター(jitter)が引き起こされる。
従って、QoS要求値を満たすために、ストレージ装置のハードウェアリソースの利用可能性を考慮したストレージ装置による処理のためのコマンドをスケジューリングするシステム及び方法が要求される。
米国特許第6466559号明細書 米国特許第6857020号明細書 米国特許出願公開第2010/0146103号明細書 米国特許出願公開第2018/0143855号明細書 米国特許出願公開第2019/0114208号明細書 米国特許出願公開第2020/0104184号明細書
本発明は、上記従来技術に鑑みてなされたものであって、本発明の目的は、1つ以上のサーバーを含むシステムにおけるメモリリソースを管理するためのシステム及び方法を提供することにある。
上記目的を達成するためになされた本発明の一態様によるストレージ装置による処理のためのコマンドのスケジューリング方法は、アプリケーションからコマンドを受信して第1キュー(queue)に格納する段階と、前記ストレージ装置により管理される第1リソース集合に対する情報を獲得する段階と、前記第1リソース集合に対する情報に基づいて第2リソース集合を同期化する段階と、前記第2リソース集合を第1プール(pool)及び第2プールに割り当てる段階と、前記第1プールで前記第2リソース集合の条件を決定する段階と、前記条件の第1決定に基づいて、前記第1プールで前記第2リソース集合のうちのいずれか1つを前記コマンドに割り当てる段階と、前記条件の第2決定に基づいて、前記第2プールで前記第2リソース集合のうちのいずれか1つを前記コマンドに割り当てる段階と、を有し、前記コマンドは、前記第2リソース集合のうちのいずれか1つの割り当てに基づいて、前記ストレージ装置による処理のための前記ストレージ装置に関連する第2キューに格納される。
前記コマンドは、ホスト上で実行中のアプリケーションからのデータオペレーションを含み、前記コマンドの処理は、不揮発性ストレージ媒体に対する前記データオペレーションを遂行し得る。
前記第1リソース集合に対する情報は、前記コマンドを処理するための前記第1リソース集合の利用可能性を含み得る。
前記第1リソース集合に対する情報に基づいて第2リソース集合を同期化する段階は、基準を満足するか否かを判定する段階と、前記基準を満足するか否かに基づいて、使用可能な前記第1リソース集合の数を決定する段階と、使用可能な前記第1リソース集合の数と同じになるように、使用可能な前記第2リソース集合の数を設定する段階と、を含み得る。
前記条件は、期間の満了を含み得る。
前記第1プールは、前記第1キュー及び前記第2キューにより共有され、前記第2プールは、前記第1キューのために予約され得る。
前記第2プールは、検出された条件に基づいて動的に決定され得る。
前記検出された基準は、前記第1キューに対するQoS(Quality of Service)要求値の識別を含み得る。
前記方法は、前記ストレージ装置により、前記第2キューにコマンドを格納することに基づいて、前記第1リソース集合のうちのいずれか1つを割り当てる段階と、前記コマンドを処理する段階と、前記コマンドの処理の完了に基づいて、前記第1リソース集合のうちのいずれか1つを割り当て解除する段階と、を更に有する。
前記条件は、前記第1プールでの前記第2リソース集合の利用可能性であり得る。
上記目的を達成するためになされた本発明の一態様によるストレージ装置による処理のためのコマンドのスケジューリングシステムは、プロセッサと、命令語(instructions)を格納するメモリと、を備え、前記命令語が実行されると、前記プロセッサは、アプリケーションからコマンドを受信して第1キュー(queue)に格納し、前記ストレージ装置により管理される第1リソース集合に対する情報を獲得し、前記第1リソース集合に対する情報に基づいて第2リソース集合を同期化し、前記第2リソース集合を第1プール(pool)及び第2プールに割り当て、前記第1プールで前記第2リソース集合の条件を決定し、前記条件の第1決定に基づいて、第1プールで前記第2リソース集合のうちのいずれか1つを前記コマンドに割り当て、前記条件の第2決定に基づいて、前記第2プールで前記第2リソース集合のうちのいずれか1つを前記コマンドに割り当てるようにし、前記コマンドは、前記第2リソース集合のうちのいずれか1つの割り当てに基づいて、前記ストレージ装置による処理のための前記ストレージ装置に関連する第2キューに格納される。
本発明の実施形態の特徴、態様、利点は、後述する発明の詳細な説明、請求項、及び図面に関連して考慮すると、完全に理解することができる。
本発明によると、ストレージ装置のハードウェアリソースの利用可能性を考慮してストレージ装置による処理のためのコマンドをスケジューリングすることによりQoS要求値を満たすことができる。
現在の技術のメカニズムに基づいてコマンドをスケジューリングするシステムの概念的なブロック図である。 一実施形態によるリソースベースのコマンドスケジューリングシステムのブロック図である。 図2のシステムの多様な抽象化レイヤーを示すブロック図である 第1及び第2キューからコマンドをスケジューリングする図2の概念的なブロック図である。 一実施形態によるソフトウェアキューに格納されるリソースベースのコマンドスケジューリングの処理フローチャートである
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。ここで同じ参照符号は同じ構成要素を指す。しかし、本発明は、多様な形態に具現化され、後述する実施形態に限定されるものと解釈してはならない。むしろ、実施形態は、本発明が徹底且つ完全になるように、そして通常の技術者に本発明の態様及び特徴を完全に伝達できるようにする例として提供する。従って、本発明の態様及び特徴の完全な理解のために必要としないプロセス、要素(エレメント)、及び技術は、説明しないことがある。別途の言及がない限り、同じ参照符号は、図面及び後述する説明全体に亘って同じ要素を表すため、繰り返さないことがある。なお、図面では、要素、レイヤー、及び領域の相対的なサイズは、明確性のために誇張及び/又は簡略化(単純化)されることがある。
一般的に、ストレージ装置は、ホストコンピューティング装置からのコマンドを処理するための限られた数のハードウェアリソースを有する。例えば、ハードウェアリソースは、ハードウェアキュー及び処理のためのコマンドをスケジューリングするために使用されるトークン(tokens)である。ハードウェアキューのサイズ及び関連トークンの数は、実装に応じて異なり、ストレージ装置の性能及びQoS要求値に依存的である。
ストレージ装置と相互作用する装置ドライバは、ソフトウェアリソースを、処理されるコマンドに割り当てる。例えば、ソフトウェアリソースは、ソフトウェアキュー及び関連トークンである。ソフトウェアキュー及び関連トークンの深さは任意であり、ハードウェアキュー及びこれに関連するトークンの深さを超えることがある。これにより、装置ドライバは、ストレージ装置で利用可能なハードウェアリソースよりも多くのコマンドをスケジューリングすることができる。このような状況では、装置ドライバによってスケジューリングされているがハードウェアリソースを使用できないコマンドは、処理が遅延されて高いジッターが発生する。
図1は、現在の技術のメカニズムに基づいてコマンドをスケジューリングするシステムの概念的なブロック図である。システムは、ストレージ装置102による処理のためのコマンドをサブミット(submit)する装置ドライバ100を含む。装置ドライバ100は、ホスト処理装置の1つ以上のアプリケーションによってサブミットされたコマンドを格納する多様なソフトウェアキュー(104~108)を含む。例えば、Q1(104)は、ライト(write)コマンドを格納するように構成されたディープライトキュー(deep write queue)である一方、Q2(106)は、リード(read)コマンドを格納するように構成されたシャロウリードキュー(shallow read queue)である。処理のためにストレージ装置102にコマンドを伝達するように、コマンドは、ソフトウェアリソース(例えば、ソフトウェアキュー(104~108)及びトークン110)を使用する。
装置ドライバ100と同様に、ストレージ装置102は、装置ドライバ100によってサブミットされるコマンドを格納するように構成された1つ以上のハードウェアキュー(112~114)を含む。例えば、ハードウェアキュー112は、Q1(104)及びQ2(106)からフェッチ(fetch)されるコマンドを格納するように構成される。ハードウェアキュー112内のコマンドは、ハードウェアリソース116(例えば、ハードウェアトークン)を使用する。ハードウェアリソース116が割り当てられているコマンドは、ストレージ装置による処理のためにスケジューリングされる。
装置ドライバ100内に構成された多様なソフトウェアキュー(104~108)は、コマンドの処理のためのQoSの提供を満たすためのものである。例えば、分離されたキュー(104及び106)内にライト(write)及びリード(read)コマンドを分離してラウンドロビン(round robin)のようなスケジューリングアルゴリズムを適用することにより、Q2(106)内のリード(read)コマンドは、一般的に予測可能なタイムウィンドウ(time window)でサービスされる。但し、一部の状況で、Q2(106)内に処理されることが予想されるコマンドがキューアップ(queue up)されたにも拘らず、ストレージ装置内のリソースのコンフリクト(conflicts)に起因してQ2(106)内のコマンドが予想通りにサービスされないことがある。
この点を説明するために、Q1(104)が1000個のライト(write)コマンドをキューアップし、Q2(106)が10個のリード(read)コマンドをキューアップする例示が考慮される。1000個のライト(write)コマンドが1000個のソフトウェアトークン110を使用して、処理のためにストレージ装置102にサブミットされると仮定する。しかし、この例示によると、ストレージ装置102は、768個のハードウェアトークン116のみが割り当てられる。従って、ストレージ装置102は、処理のためにQ1(104)から、最大768個のライト(write)コマンドをフェッチして、全ての768個のハードウェアトークン116が使用されるようにする。ライト(write)コマンドが全てのハードウェアトークン116を使用して、ソフトウェアトークン110が割り当てられる更に多くのライトコマンドが処理されるように残されるという点を考慮すると、予想タイムウィンドウの間にQ2(106)内のリード(read)コマンドが処理されることは可能でない。従って、Q2(106)に対するQoS要求値を満たすことは可能でない。
本発明の実施形態は、処理を目的としてコマンドをサブミットするために、ストレージ装置のハードウェアリソースの利用可能性を考慮したコマンドのリソースベースのスケジューリングシステム及び方法に関するものである。一実施形態によると、ストレージ装置のハードウェアリソースは、ソフトウェアリソースと一致化/同期化するためにモニタリング(監視)される。一度同期化されると、ソフトウェアリソースが所望の通りコマンドに割り当てられる。例えば、コマンドにソフトウェアリソースを割り当てることは、サービス水準合意(service level agreement:SLA)に明示されたように決定されたQoSに基づく。ソフトウェアリソースの割り当てを決定するために使用される基準の例示としてQoSが使用されるが、通常の技術者は、他の基準(例えば、ユーザー・プリファレンス(user preference)など)も考慮され得ることを認識しなければならない。
一実施形態によると、装置ドライバ100は、ハードウェアリソース情報を識別し、ソフトウェアのリソース情報をそれに応じてアップデートするように構成されたソフトウェアトークンのマネージャーを含む。一実施形態で、ソフトウェアトークンのマネージャーは、多数の利用可能なハードウェアリソースに一致するように、多数の利用可能なソフトウェアリソースをアップデートする。利用可能なソフトウェアリソースの特定の部分は、例えばQoS期待値に基づいて装置ドライバの1つ以上のキューのために予約される。残りのソフトウェアリソースは、共有プールの一部である。一実施形態で、ソフトウェアトークンのマネージャーは、処理を目的としてストレージ装置にコマンドをサブミットするために、共有プールからソフトウェアトークン/リソースをソフトウェアキューのコマンドに割り当てる。一実施形態によると、キューのコマンドに割り当てられるソフトウェアリソースが共有プールに存在しない場合、ソフトウェアトークンのマネージャーは、キューのために予約されたソフトウェアトークンにアクセス(access)して、予約されたトークンのうちのいずれか1つをコマンドに割り当てる。予約されたトークンは、コマンドがQoS要求値を満たすためにタイムリー(timely)に処理されるようにする。
図2は、一実施形態によるリソースベースのコマンドスケジューリングシステムのブロック図である。システムは、ストレージインターフェースバス204を介してストレージ装置202に連結されるホストコンピューティング装置200を含む。例えば、ストレージ装置202は、SSD(solid state drive)、eSSD(Ethernet solid state drive)、USB(universal serial bus)ドライブ、SD(security digital)カード、eMMC(embedded Multi-Media Controller)、UFC(Universal Flash Storage)などのような不揮発性ストレージ装置である。例えば、ストレージインターフェースバス204は、PCIe(Peripheral Component Interconnect Express)バス、イーサネット(登録商標)(ethernet(登録商標))、及びCXL(Compute Express Link)である。一実施形態で、ホストコンピューティング装置200は、ストレージインターフェースプロトコルを使用して、ストレージインターフェースバス204を介してストレージ装置202とデータを送受信する。例えば、ストレージインターフェースプロトコルは、NVMe(non-volatile memory express)又は処理されるコマンドを格納するためにキューを使用するその他の類似するプロトコルである。
一実施形態で、ホストコンピューティング装置200は、ホストコンピューティング装置200のアプリケーションレイヤーで実行中の1つ以上のアプリケーション206を含む。1つ以上のアプリケーション206は、プロセッサによる実行のためにホストメモリ領域に格納されるソフトウェアアプリケーションである。一実施形態で、1つ以上のアプリケーション206は、処理のためにストレージ装置202にコマンドを送る。例えば、1つ以上のアプリケーションは、ストレージ装置202からデータを読み取るためのリード(read)コマンド、ストレージ装置202にデータを書き込むためのライトコマンド及び/又は他の入出力(I/O)要請を発行する。
一実施形態で、ホストコンピューティング装置200は、ストレージ装置202とインターフェースするように構成された装置ドライバ208を含む。一実施形態で、装置ドライバ208は、ホストメモリに格納されてプロセッサによって実行されるソフトウェアの命令語として具現化される。装置ドライバ208は、1つ以上のキュー(212a、212b)(以下、ソフトウェアキュー212)を含む。例えば、ソフトウェアキュー212は、1つ以上のサブミットキュー及び完了キューを含む。サブミットキューは、多様なアプリケーション206によってサブミットされたコマンド/リクエストを格納するように構成される。完了キューは、ストレージ装置202によって処理されたコマンド/リクエストに対する完了メッセージを格納するように構成される。
1つ以上のソフトウェアキュー212(例えば、サブミットキュー)は、ホストコンピューティング装置200からの特定のタイプのコマンドを格納するために専用使用される。例えば、あるキューは、アプリケーションからのリードコマンドを格納するために専用使用される。一方、あるキューは、ライト(write)コマンドを格納するために専用使用される。一実施形態で、特定のQoS要件は、1つ以上のSLAに基づいてソフトウェアキュー212に対して課される。例えば、ソフトウェアキュー212の特定の数のコマンドは、与えられた時間内に処理されると予想される。他のQoS要件は、他のソフトウェアキュー212に関連する。
装置ドライバ208は、処理されるコマンドのスケジューリングに多くの影響を与えるソフトウェアリソースを管理するように構成されたソフトウェアトークンのマネージャー210を更に含む。例えば、ソフトウェアリソースはソフトウェアトークン及び/又はキュー212である。一実施形態で、ソフトウェアトークンのマネージャー210は、ストレージ装置からの情報に基づいてソフトウェアの利用可能性を決定し、ソフトウェアキュー212に格納されたコマンドに使用可能なトークンを割り当てるように構成される。ソフトウェアトークンのマネージャー210は、コントローラ及び/又はトークンタイプベイシス(basis、基底)毎に利用可能な情報を保持するように構成される。割り当てられたトークンは、共有プールで使用可能な場合、共有プールから、又は任意のキューにサブミットされたコマンドに対して、そのキューのために予約されたプールからのものである。
一実施形態で、ストレージ装置202は、ホストコンピューティング装置200と装置制御サブシステム216との間のインターフェーシング(interfacing)のためのホストインターフェースレイヤー(host interface layer:HIL)214を含む。ホストインターフェース214は、限定なしに1つ以上のコントローラ218及び1つ以上のキュー(220a~220c)(以下、ハードウェアキュー220)を含む。例えば、ハードウェアキュー220の深さは、ストレージ装置202の処理能力に応じて異なる。一実施形態で、異なるキューは、ストレージ装置202による異なるタイプの処理のために維持される。例えば、あるハードウェアキューはハードウェア・アクセラレーション・エンジンによる処理のためのコマンドを格納し、あるハードウェアキューはファームウェアを介して処理するためのコマンドを格納する。
コントローラ218は、1つ以上のプロセッサ(例えば、FPGA(a field programmable gate array)やASIC(an application specific integrated circuit))を使用して具現化される。1つ以上のコントローラ218のうちのいずれか1つは、1つ以上のハードウェアキュー220に関連する。上述した1つ以上のコントローラ218のうちのいずれか1つは、ソフトウェアキュー212での処理のためにサブミットされるコマンドにハードウェアリソースを管理して割り当てるように構成される。例えば、ハードウェアリソースは、ハードウェアトークン及び/又はキュー220である。
一実施形態で、1つ以上のコントローラ218は、1つ以上のソフトウェアキュー212から入出力要請/コマンドをフェッチし、フェッチされたリクエストを1つ以上のコントローラ218に対応する一つ以上のハードウェアキュー220に格納するように構成される。いくつかの実施形態で、要請は、装置ドライバ208によってフェッチされてサブミットされる。
ハードウェアキュー220に格納されたコマンドは、処理のためにハードウェアトークンに割り当てられる。一実施形態で、異なるタイプのハードウェアトークンは、ハードウェアキュー220のタイプ及び個数に応じて維持されて割り当てられる。例えば、第1タイプのハードウェアトークンは、ハードウェア・アクセラレーション・エンジンによる処理のために専用使用される第1ハードウェアキュー220aに割り当てられるのに対し、第2タイプのハードウェアトークンは、ファームウェアを介して処理のために専用使用される第2ハードウェアキュー220bに割り当てられる。
異なるキュー220のコマンドに割り当てられる利用可能なハードウェアトークンの数は、キューに既に存在するコマンドの数に依存的である。一実施形態で、トークンは、ハードウェアキューのタイプに基づいてコントローラ218によって割り当てられる。一実施形態で、ハードウェアトークンは1つ以上のハードウェアキュー220のコマンドを格納するために自動的に割り当てられる。割り当てられたハードウェアトークンを有するコマンドは、装置制御サブシステム216による処理のためにスケジューリングされる。
一実施形態で、装置制御サブシステム216は、アプリケーション206によって要請されたコマンドを実行するためにコントローラ218と相互作用する。装置制御サブシステム216は、限定なしに1つ以上のプロセッサ222及び1つ以上のメディアインターフェースを含む。1つ以上のプロセッサ222は、コントローラ218への又はコントローラ218からのコマンドを処理し、ストレージ装置202のオペレーションを管理するためにコンピュータ読み取り可能な命令語を実行するように構成される。例えば、1つ以上のプロセッサ222によって実行されるコンピュータ読み取り可能な命令語は、ファームウェアコードである。
例えば、1つ以上のプロセッサ222は、NVMメディア226に又はNVMメディア226からライト(write)又はリード(read)のコマンドを受信するためにコントローラ218と相互作用するように構成される。1つ以上のプロセッサ222は、ライト(write)又はリード(read)の動作を実行するために、メディアインターフェース224を介してNVMメディア226と相互作用する。NVMメディア226は、1つ以上のタイプの不揮発性メモリ(例えば、フラッシュメモリ(flash memory))を含む。
一実施形態で、ストレージ装置202は、ストレージ装置202の実行中に短期ストレージや一時的な記憶のための内部メモリ228を更に含む。内部メモリ228は、DRAM(dynamic random access memory)、SRAM(static random access memory)、及び/又はDTCM(Data Tightly Coupled Memory)を含む。例えば、内部メモリ228は、ハードウェアキュー220を格納するために使用される。
図3は、図2のシステムの多様な抽象化レイヤーを示すブロック図である。説明の便宜のために、以下、図2を参照して図3を説明する。ホストコンピューティング装置200の抽象化レイヤーは、アプリケーションレイヤー300及び装置ドライバレイヤー302を含む。アプリケーションレイヤー300は、アプリケーション206から発行された入出力要請に基づいてコマンドを生成するように構成される。アプリケーションレイヤー300によって生成されたコマンドは、ストレージ装置202と通信するために使用されるストレージインターフェースバス204のストレージインターフェースプロトコルを確認する。
一実施形態で、装置ドライバレイヤー302は、ソフトウェアキュー212及びソフトウェアトークンのマネージャー210を含む。例えば、アプリケーションレイヤー300によって生成されたコマンドは、コマンドタイプに基づいて装置ドライバ208のキュー212に格納される。ソフトウェアトークンのマネージャー210は、ストレージ装置202からの情報に基づいてソフトウェアトークンの利用可能性を決定し、ソフトウェアキュー212に格納されたコマンドに利用可能なトークンを割り当てる。全てのトークンが割り当てられている場合には、サービスは拒否される。一実施形態で、コマンドは、ソフトウェアキュー212にキューイング(queuing)されるように許容されるが、利用可能なトークンが存在しない場合、コマンドは、処理のためのハードウェアキュー220にサブミットされない。
一実施形態で、ストレージ装置202は、多様なサブレイヤーを含むストレージレイヤー304を含む。多様なサブレイヤーは、ホストインターフェースレイヤー214だけでなく、NVMメディア226とのインターフェースのための他のレイヤー、例えばフラッシュ変換レイヤー306及びフラッシュインターフェースレイヤー308を含む。NVMメディア226は、フラッシュメディア310として、ストレージレイヤー304に含まれる。
図4は、第1及び第2のキューからコマンドをスケジューリングする図2の概念的なブロック図である。ソフトウェアトークンのマネージャー210は、共有プールで使用可能なソフトウェアトークンの数に対する情報と、予約されたプールで使用可能なソフトウェアトークンの数に対する情報とを含む利用可能なソフトウェアトークン400に対する情報を管理する。一実施形態で、ソフトウェアトークンのマネージャー210は、ストレージ装置202の多様なコントローラ218のうちのいずれか1つによって管理されるキュー112に対するトークンの利用可能な情報を維持する。ストレージ装置202が複数のコントローラ218を含む場合、ソフトウェアトークンのマネージャー210は、複数のコントローラ218によって管理されるキューに対する複数のトークンの利用可能な情報集合を維持する。
また、ソフトウェアトークンのマネージャー210は、与えられた利用可能なトークンの集合において異なるタイプのトークンの利用可能な情報を保持する。例えば、コマンドがハードウェア・アクセラレーション・エンジンによって処理されるか、又はファームウェアを介して処理されるかに応じて、異なるトークンが割り当てられる。ソフトウェアトークンのマネージャー210は、ハードウェア・アクセラレーション処理のためのトークン及びファームウェアの処理のためのトークンの利用可能性をモニタリング(監視)し、利用可能性に基づいてコマンドに適切なタイプのトークンを割り当てるように構成される。
一実施形態で、特定の数のソフトウェアトークンは、各ソフトウェアキュー212に対する予約プールに予約される。また、予約は、異なるトークンタイプに基づく。ソフトウェアキューに予約されたソフトウェアトークンの数は、異なるキュー及びトークンタイプに応じて同一であるか又は異なる。
一実施形態で、キュー212(トークンタイプも含まれるものと理解すべきである)に予約されたトークンの数は、1つ以上の基準に基づいて動的に決定される。例えば、基準は、利用統計及び/又はSLA要求値である。一実施形態で、ソフトウェアトークンのマネージャー210は、キュー212に対するSLA要求値(例えば、毎秒要求される入出力、帯域幅など)を識別し、SLA要求値に基づいて利用可能なソフトウェアトークン400の一部を専用使用するように構成される。例えば、キューに対する帯域幅の要求値がBW1であり、全体の利用可能な帯域幅がBWである場合、予約されたトークンの数は、BW1対BWの比率(BW1/BW)に基づく。
いくつかの実施形態で、ソフトウェアトークンのマネージャー210は、使用期間、使用量、及び使用を担当するアプリケーションなどを含めてソフトウェアキューの使用に関連する履歴情報を収集し、履歴情報に基づいてキューに予約されたトークンの数を動的に調整するように構成される。このような方式で、キュー212のうちのいずれか1つの使用量が高まると予測される特定の期間が到来すると、ソフトウェアトークンのマネージャー210は、予測に基づいてキューに更に多くのトークンを予約するように構成される。
他のいくつかの実施形態で、ソフトウェアトークンのマネージャー210は、アプリケーション206から予想される(例えば、次のミリ秒(millisecond)内に)コマンドの数及びタイプに関する情報を多様なアプリケーション206から受信する。ソフトウェアトークンのマネージャー210は、情報に基づいて影響を受けるキューに対する予約されたトークンの数を動的に調整する。例えば、第1キューが第2キューよりも多く活用されると予想される場合、与えられた期間中に第1キューに対する予約されたトークンの数は、第2キューに対する予約されたトークンの数よりも比率的にもっと多い。
例えば、与えられたタイムウィンドウにおいて特定のコントローラ218に対してソフトウェアトークンのマネージャー210によって識別された利用可能なソフトウェアトークン400の総数は768である。利用可能なソフトウェアトークン400の数は、特定のコントローラ218に関連するハードウェアトークン402の総数に一致する。ソフトウェアトークンのマネージャー210は、予約プールで使用可能なソフトウェアトークン400の特定の数を予約するように構成される。例えば、使用可能なトークンの10%(例えば、77個)は予約プールに割り当てられ、残りの691個のトークンは共用プールに割り当てられる。ソフトウェアキューQ1(212a)のうちの第1キューには691個のコマンドが格納され、ソフトウェアキューQ2(212b)のうちの第2キューに2つのコマンドが格納された場合、ソフトウェアトークンのマネージャー210は、スケジューリングアルゴリズム(例えば、ラウンドロビン、加重ラウンドロビン、又は固定優先順位など)に基づいて処理するためにQ1(212a)でコマンドをスケジューリングするように構成される。Q1(212a)のコマンドは、処理のためにコマンドが関連ハードウェアキュー220aにサブミットされるように、共有プールで691個の使用可能なソフトウェアトークンが割り当てられる。ハードウェアキュー220aにサブミットされた691個のコマンドは、利用可能なハードウェアトークン402のプールから691個のハードウェアトークンを使用する。
Q2(212b)の2つのコマンドは、スケジューリングアルゴリズムによる処理のために次に選択される。Q1(212a)のコマンドに割り当てられた691個のトークンがまだリリース(release)されなかったと仮定した場合、Q2(212b)のコマンドに割り当てられる共有プール内のトークンがもはや存在しない。しかし、77個のトークンが予約プールに割り当てられて多様なソフトウェアキュー212の中で分割された場合、Q2(212b)に割り当てられた予約プールのソフトウェアトークンのうちの2つがQ2(212b)に割り当てられる。これに関連し、共有プールに利用可能なソフトウェアトークンがもはや存在していないにも拘らず、Q2(212b)の2つのコマンドは、予約されたソフトウェアトークンを使用する処理のために、対応するハードウェアキュー220aに続けてサブミットし、これはスケジューリングの公平性が維持されるようにする。ハードウェアキューにサブミットされた2つのコマンドは、利用可能なハードウェアトークンから2つのトークンを使用することにより、使用可能なハードウェアトークン402の総数を75個に減少させる。
一実施形態で、アップデートされたハードウェアトークンに関する情報は、コマンドを介して又はAPI(application programming interface)404を介してソフトウェアトークンのマネージャー210に開示される。その後、情報は、ソフトウェアトークン400を同期化するために、ソフトウェアトークンのマネージャー210によって使用される。アップデートされたトークンに関する情報は、周期的に(規則的又は不規則的に)ソフトウェアトークンのマネージャー210にプッシュ(push)されるか、或いはストレージ装置226からソフトウェアトークンのマネージャー210によってフェッチされる。例えば、コントローラ218は、プロセッサ222による1つ以上のコマンドの処理を完了することに基づいて、割り込み(interrupt)信号を使用して装置ドライバ208に完了メッセージをサブミットし、これは順次的に1つ以上の対応するハードウェアトークン402を割り当て解除/使用可能な状態にする。完了メッセージは、ソフトウェアトークンのマネージャー210に送信され、そして/又は1つ以上のソフトウェアキュー212の完了キューにサブミットされる。完了キューにサブミットされると、ソフトウェアトークンのマネージャー210は、完了キューから周期的に完了メッセージをフェッチし、利用可能なソフトウェアトークン400をそれに応じてアップデートするように構成される。例えば、5つの処理されたコマンドに関連する1つ以上の完了メッセージがソフトウェアトークンのマネージャー210によって受信された場合、ソフトウェアトークンのマネージャー210は、前にコマンドに割り当てられた5つの対応するソフトウェアトークンを割り当て解除する。
図5は、一実施形態によるソフトウェアキュー212に格納されるリソースベースのコマンドスケジューリングの処理フローチャートである。処理段階の順序は固定されないが、通常の技術者によって認識される任意の順序に変更されることがあると理解すべきである。説明の便宜のために、図2を参照して以下の図5を説明する。
処理プロセスが開始され、段階500で、ソフトウェアトークンのマネージャー210は、ソフトウェアキュー212のうちのいずれか1つのコマンドに対して、ソフトウェアトークンに対する要請を受信する。いくつかの実施形態で、キューでのコマンドの配置は、ソフトウェアトークンに対する要請であると見なされる。要請は、コマンドを格納するキューの識別子及びトークンタイプを含む。
段階502で、ソフトウェアトークンのマネージャー210は、利用可能なソフトウェアトークンに対する情報がアップデートされるか否かを判定する。例えば、ソフトウェアトークンは、期間満了のような基準を満たしているか、又は要請が受信されるときに共有プール及び予約プールで使用可能なソフトウェアトークンがないという判定に基づいてアップデートされる。
トークンの利用可能な情報がアップデートされるべき場合、段階504で、ソフトウェアトークンのマネージャー210は、利用可能なハードウェアトークンに関する情報を獲得し、利用可能なハードウェアトークンに一致するように使用可能なソフトウェアトークンを同期化する。例えば、これはアップデート情報を受信するために1つ以上のコントローラ218から割り込み信号を受信すること、又はストレージ装置202によって完了されたコマンドに関する情報に対して1つ以上の完了キューをクエリ(query)することを含む。一実施形態で、アップデート情報は、ソフトウェアトークンのマネージャー210がトークンタイプ毎に1つ以上の利用可能なソフトウェアトークンを同期化するためのトークンタイプの情報を含む。
段階506で、ソフトウェアトークンのマネージャー210は、キュー毎及びトークンタイプ毎の特定の数の使用可能なトークンを予約する。例えば、使用可能なトークンの総数が1000である場合、ソフトウェアトークンのマネージャー210は、10%の利用可能なトークンを1番目のキューに割り当て、5%の利用可能なトークンを2番目のキューに割り当てる。その比率は、固定(例えば、手動設定)的であり、動的に決定される。他の比率も可能である。例えば、予約されたトークンの数は、キュー、キュータイプの予想使用率、及び/又はQoS期待値に基づく。
段階508で、残りの利用可能なトークンは、共有プールで共有トークンとして割り当てられる。
段階510で、共有プールの共有トークンが条件を満たしているか否かに対する判定が行われる。例えば、その条件は、コマンドに割り当てられた共有トークンの利用可能性である。条件が満足されると(例えば)、共有プールの使用可能なトークンは、段階512でコマンドに割り当てられる。コマンドは、処理のためにコントローラ218によってサブミット/フェッチされ、ハードウェアトークンの使用を引き起こす。
段階514で、ソフトウェアトークンのマネージャー210は、共有プールの使用可能なソフトウェアトークンの数を1つずつ減少させる。
段階510を再び参照すると、共有トークンが条件を満たしていないと判定されると(いいえ)(例えば、共有プールに共有トークンがない場合)、ソフトウェアトークンのマネージャー210は、段階516で、コマンドに関連するトークンタイプ及びキューに対して予約されたトークンが存在するか否かを判定する。存在する場合(はい)、トークンタイプ及びキューに対して予約プールで使用可能なトークンが段階518でコマンドに割り当てられる。
段階520で、ソフトウェアトークンのマネージャー210は、トークンタイプ及びキューに対して予約トークンの数を1つずつ減少させる。
コマンドに割り当てられた共有又は予約されたトークンがない場合、コマンドは、ソフトウェアトークンが再び使用可能になるまでサービスされないままキューに残る。
いくつかの実施形態において、上述したリソースベースのコマンドスケジューリングシステム及び方法は、1つ以上のプロセッサで実装される。ここで、プロセッサは、1つ以上のプロセッサ及び/又は1つ以上のプロセッシングコア(processing cores)を指す。1つ以上のプロセッサは、単一の装置でホスティングされるか、又は1つ以上の装置に亘って分散(例えば、クラウドシステムを介して)される。例えば、プロセッサは、ASIC(application specific integrated circuit)、CPU(general purpose or special purpose central processing unit)、DSPs(digital signal processor)、GPU(graphics processing units)、及びFPGA(field programmable gate array)のようなプログラム可能な論理装置を含む。本明細書に記載されているプロセッサで、それぞれの機能は、その機能を遂行するように構成されたハードウェア、即ちハードワイヤ(hard-wire)によって遂行されるか、又はCPUのようなより汎用的なハードウェアによって遂行され、非一時的なストレージ媒体(例えば、メモリ)に格納されたコマンドを遂行するように構成される。プロセッサは、1つの印刷回路基板(printed circuit board、以下PCBと称する)で製作されるか、又は複数の相互連結されたPCBに分散される。プロセッサは、他の処理回路、例えばPCB上で相互連結された2つの処理回路であるFPGA及びCPUを含む。
「第1」、「第2」、「第3」などが多様な要素、構成、領域、レイヤー、及び/又はセクションを説明するために使用されるが、これらの要素、構成、領域、レイヤー、及び/又はセクションは、これらの用語に限定されない。これらの用語は、要素、構成、領域、レイヤー、又はセクションを他の要素、構成、領域、レイヤー、又はセクションと区別するためにのみ使用される。従って、本明細書で議論された第1要素、構成、領域、レイヤー、又はセクションは、本発明の技術的思想及び範囲を逸脱することなく、第2要素、構成、領域、レイヤー、又はセクションと称される。
本明細書で使用される用語は、特定の実施形態を説明するためのものであり、本発明の概念を限定しようとする意図ではない。本明細書で使用される用語「実質的に」、「約」、及び類似の用語は、程度を表す用語ではなく、近似値を示す用語として使用され、通常の技術者によって認識される測定値又は計算値の固有の偏差を説明するものである。
本明細書で使用されているように、単数形で使用された単語は、文脈上明らかに別の意味を示していると判定されない限り、複数形も含むように意図される。本明細書で使用される場合、「含む(comprises)」、及び/又は「含んでいる(comprising)」という用語は、言及された特徴、整数、段階、演算、要素、及び構成の存在を明示するが、その存在又は1つ以上の他の特徴、整数、段階、演算、要素、構成、及び/又はそれらの集合の追加を排除しない。本明細書で使用される「及び/又は」は、1つ以上の関連するリスト項目の任意且つ全ての組み合わせを含む。「少なくとも1つ以上の」のような表現は、リストされた要素の前に来る場合、全体のリスト要素を修飾するが、個々のリスト要素を修飾しない。なお、本発明の実施形態を説明する際、「できる(may)」という用語は、「本発明の1つ以上の実施形態」を意味する。また、「例としての」という用語は、例示又は説明を示すものと意図される。本明細書で使用される「使用(use)」、「使用している(using)」、及び「使用された(used)」は、それぞれ「活用する(utilize)」、「活用している(utilizing)」、及び「活用された(utilized)」という用語と同意語であると見なされる。
ある要素又はレイヤーに関連して、「上に置かれる」、「連結される」、「結合される」、又は「隣接する」と述べる場合、それは他の要素又はレイヤーに関連して、直接その上に配置されるか、連結されるか、結合されるか、隣接するか、又は1つ以上の介在する要素又はレイヤーが存在する。対照的に、要素又はレイヤーが他の要素又はレイヤーに関連して、「直接上に置かれた」、「直接連結される」、「直接結合される」、又は「すぐに隣接する」と記載されている場合は、介在する要素又はレイヤーが存在しないものと理解することができる。
本明細書で引用された任意の数値範囲は、引用された範囲内に含まれる同じ数値精度の全てのサブ範囲を含むように意図される。例えば、「1.0~10.0」の範囲は、最小値1.0と最大値10.0との間の全てのサブ範囲を含む。即ち、最小値が1.0以上であり、最大値が10.0以下である(例えば、2.4~7.6)サブ範囲を含む。本明細書に記載された任意の最大値の限定は、その中に含まれる全てのより低い数値限定を含むように意図され、本明細書に記載された任意の最小の数値限定は、そこに含まれる全てのより高い数値限定を含むように意図される。
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的思想から逸脱しない範囲内で多様に変更実施することが可能である。
100、208 装置ドライバ
102、202 ストレージ装置(SSD)
104、106、108、212 ソフトウェアキュー(Q1~Q4)
110 ソフトウェア(S/W)トークン
112、114、220 ハードウェアキュー
116 ハードウェア(H/W)トークン(ハードウェアリソース)
200 ホストコンピューティング装置
204 ストレージインターフェースバス
206 アプリケーション
210 マネージャー
212a、212b ソフトウェアキュー
214 ホストインターフェースレイヤー(HIL)
216 装置制御サブシステム
218 コントローラ
220a、220b、220c ハードウェアキュー
222 プロセッサ
224 メディアインターフェース
226 NVMメディア
228 内部メモリ
300 アプリケーションレイヤー
302 装置ドライバレイヤー
304 ストレージレイヤー
306 フラッシュ変換レイヤー
308 フラッシュインターフェースレイヤー
310 フラッシュメディア
400 利用可能なソフトウェアトークン
402 ハードウェアトークン
404 API

Claims (20)

  1. ストレージ装置による処理のためのコマンドのスケジューリング方法であって、
    アプリケーションからコマンドを受信して第1キュー(queue)に格納する段階と、
    前記ストレージ装置により管理される第1リソース集合に対する情報を獲得する段階と、
    前記第1リソース集合に対する情報に基づいて第2リソース集合を同期化する段階と、
    前記第2リソース集合を第1プール(pool)及び第2プールに割り当てる段階と、
    前記第1プールで前記第2リソース集合の条件を決定する段階と、
    前記条件の第1決定に基づいて、前記第1プールで前記第2リソース集合のうちのいずれか1つを前記コマンドに割り当てる段階と、
    前記条件の第2決定に基づいて、前記第2プールで前記第2リソース集合のうちのいずれか1つを前記コマンドに割り当てる段階と、を有し、
    前記コマンドは、前記第2リソース集合のうちのいずれか1つの割り当てに基づいて、前記ストレージ装置による処理のための前記ストレージ装置に関連する第2キューに格納されることを特徴とする方法。
  2. 前記コマンドは、ホスト上で実行中のアプリケーションからのデータオペレーションを含み、
    前記コマンドの処理は、不揮発性ストレージ媒体に対する前記データオペレーションを遂行することを特徴とする請求項1に記載の方法。
  3. 前記第1リソース集合に対する情報は、前記コマンドを処理するための前記第1リソース集合の利用可能性を含むことを特徴とする請求項1に記載の方法。
  4. 前記第1リソース集合に対する情報に基づいて第2リソース集合を同期化する段階は、
    基準を満足するか否かを判定する段階と、
    前記基準を満足するか否かに基づいて、使用可能な前記第1リソース集合の数を決定する段階と、
    使用可能な前記第1リソース集合の数と同じになるように、使用可能な前記第2リソース集合の数を設定する段階と、を含むことを特徴とする請求項1に記載の方法。
  5. 前記基準は、期間の満了を含むことを特徴とする請求項4に記載の方法。
  6. 前記第1プールは、前記第1キュー及び前記第2キューにより共有され、
    前記第2プールは、前記第1キューのために予約されることを特徴とする請求項1に記載の方法。
  7. 前記第2プールは、検出された基準に基づいて動的に決定されることを特徴とする請求項6に記載の方法。
  8. 前記検出された基準は、前記第1キューに対するQoS(Quality of Service)要求値の識別を含むことを特徴とする請求項7に記載の方法。
  9. 前記ストレージ装置により、
    前記第2キューに前記コマンドを格納することに基づいて、前記第1リソース集合のうちのいずれか1つを割り当てる段階と、
    前記コマンドを処理する段階と、
    前記コマンドの処理の完了に基づいて、前記第1リソース集合のうちのいずれか1つを割り当て解除する段階と、を更に有することを特徴とする請求項1に記載の方法。
  10. 前記条件は、前記第1プールでの前記第2リソース集合の利用可能性であることを特徴とする請求項1に記載の方法。
  11. ストレージ装置による処理のためのコマンドのスケジューリングシステムであって、
    プロセッサと、
    命令語(instructions)を格納するメモリと、を備え、
    前記命令語が実行されると、前記プロセッサは、
    アプリケーションからコマンドを受信して第1キュー(queue)に格納し、
    前記ストレージ装置により管理される第1リソース集合に対する情報を獲得し、
    前記第1リソース集合に対する情報に基づいて第2リソース集合を同期化し、
    前記第2リソース集合を第1プール(pool)及び第2プールに割り当て、
    前記第1プールで前記第2リソース集合の条件を決定し、
    前記条件の第1決定に基づいて、前記第1プールで前記第2リソース集合のうちのいずれか1つを前記コマンドに割り当て、
    前記条件の第2決定に基づいて、前記第2プールで前記第2リソース集合のうちのいずれか1つを前記コマンドに割り当てるようにし、
    前記コマンドは、前記第2リソース集合のうちのいずれか1つの割り当てに基づいて、前記ストレージ装置による処理のための前記ストレージ装置に関連する第2キューに格納されることを特徴とするシステム。
  12. 前記コマンドは、ホスト上で実行中のアプリケーションからのデータオペレーションを含み、
    前記コマンドの処理は、不揮発性ストレージ媒体に対する前記データオペレーションを遂行することを特徴とする請求項11に記載のシステム。
  13. 前記第1リソース集合に対する情報は、前記コマンドを処理するための前記第1リソース集合の利用可能性を含むことを特徴とする請求項11に記載のシステム。
  14. 前記命令語が実行されると、前記プロセッサは、
    前記第1リソース集合に対する情報に基づいて第2リソース集合を同期化し、
    基準を満足するか否かを判定し、
    前記基準を満足するか否かに基づいて、使用可能な前記第1リソース集合の数を決定し、
    使用可能な前記第1リソース集合の数と同じになるように、使用可能な前記第2リソース集合の数を設定するようにすることを特徴とする請求項11に記載のシステム。
  15. 前記基準は、期間の満了を含むことを特徴とする請求項14に記載のシステム。
  16. 前記第1プールは、前記第1キュー及び前記第2キューにより共有され、
    前記第2プールは、前記第1キューのために予約されることを特徴とする請求項11に記載のシステム。
  17. 前記第2プールは、検出された基準に基づいて動的に決定されることを特徴とする請求項16に記載のシステム。
  18. 前記検出された基準は、前記第1キューに対するQoS(Quality of Service)要求値の識別を含むことを特徴とする請求項17に記載のシステム。
  19. 前記ストレージ装置は、
    前記第2キューに前記コマンドを格納することに基づいて前記第1リソース集合のうちのいずれか1つを割り当て、
    前記コマンドを処理し、
    前記コマンドの処理の完了に基づいて前記第1リソース集合のうちのいずれか1つを割り当て解除する信号を送信するように構成されることを特徴とする請求項11に記載のシステム。
  20. 前記条件は、前記第1プールでの前記第2リソース集合の利用可能性であることを特徴とする請求項11に記載の方法。

JP2021123001A 2020-07-28 2021-07-28 リソースベースのコマンドのスケジューリングに対するシステム及び方法 Pending JP2022025055A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063057771P 2020-07-28 2020-07-28
US63/057,771 2020-07-28
US17/082,933 2020-10-28
US17/082,933 US11704058B2 (en) 2020-07-28 2020-10-28 Systems and methods for resource-based scheduling of commands

Publications (1)

Publication Number Publication Date
JP2022025055A true JP2022025055A (ja) 2022-02-09

Family

ID=75746503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021123001A Pending JP2022025055A (ja) 2020-07-28 2021-07-28 リソースベースのコマンドのスケジューリングに対するシステム及び方法

Country Status (6)

Country Link
US (1) US11704058B2 (ja)
EP (1) EP3945419A1 (ja)
JP (1) JP2022025055A (ja)
KR (1) KR20220014280A (ja)
CN (1) CN114003369A (ja)
TW (1) TW202205103A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210089225A1 (en) * 2020-11-19 2021-03-25 Intel Corporation Adaptive device behavior based on available energy
US20220350536A1 (en) * 2021-04-28 2022-11-03 Mediatek Inc. Abort handling by host controller for storage device

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6333936B1 (en) 1998-04-29 2001-12-25 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for allocating processing resources
US6857020B1 (en) 2000-11-20 2005-02-15 International Business Machines Corporation Apparatus, system, and method for managing quality-of-service-assured e-business service systems
US8145785B1 (en) 2004-02-13 2012-03-27 Habanero Holdings, Inc. Unused resource recognition in real time for provisioning and management of fabric-backplane enterprise servers
US9397944B1 (en) 2006-03-31 2016-07-19 Teradici Corporation Apparatus and method for dynamic communication scheduling of virtualized device traffic based on changing available bandwidth
US9128883B2 (en) * 2008-06-19 2015-09-08 Commvault Systems, Inc Data storage resource allocation by performing abbreviated resource checks based on relative chances of failure of the data storage resources to determine whether data storage requests would fail
WO2009153620A1 (en) 2008-06-19 2009-12-23 Freescale Semiconductor, Inc. A system, method and computer program product for scheduling a processing entity task
JP4764915B2 (ja) 2008-12-08 2011-09-07 株式会社日立製作所 性能管理システム、情報処理システム、及び性能管理システムにおける情報収集方法
US8037219B2 (en) 2009-04-14 2011-10-11 Lsi Corporation System for handling parallel input/output threads with cache coherency in a multi-core based storage array
US7970861B2 (en) * 2009-11-18 2011-06-28 Microsoft Corporation Load balancing in a distributed computing environment
US20210349749A1 (en) * 2012-02-14 2021-11-11 Aloke Guha Systems and methods for dynamic provisioning of resources for virtualized
US9396031B2 (en) 2013-09-27 2016-07-19 International Business Machines Corporation Distributed UIMA cluster computing (DUCC) facility
KR101699377B1 (ko) * 2014-07-02 2017-01-26 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US11467769B2 (en) 2015-09-28 2022-10-11 Sandisk Technologies Llc Managed fetching and execution of commands from submission queues
US9792051B2 (en) 2016-02-24 2017-10-17 Samsung Electronics Co., Ltd. System and method of application aware efficient IO scheduler
CN107306232B (zh) 2016-04-22 2021-02-26 华为技术有限公司 网络设备、控制器、队列管理方法及流量管理芯片
US10146585B2 (en) * 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
KR20180057036A (ko) 2016-11-21 2018-05-30 삼성전자주식회사 효율적인 리소스 관리를 위한 전자 장치 및 이의 방법
US10496563B2 (en) 2017-04-07 2019-12-03 Intel Corporation Apparatus and method for dynamic provisioning, quality of service, and scheduling in a graphics processor
US10541939B2 (en) 2017-08-15 2020-01-21 Google Llc Systems and methods for provision of a guaranteed batch
JP2019074995A (ja) 2017-10-18 2019-05-16 富士ゼロックス株式会社 情報処理装置
CN116010312A (zh) * 2018-01-18 2023-04-25 伊姆西Ip控股有限责任公司 用于管理输入/输出的方法、设备和计算机程序产品
US11409436B2 (en) * 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US11163452B2 (en) 2018-09-24 2021-11-02 Elastic Flash Inc. Workload based device access
US11507430B2 (en) 2018-09-27 2022-11-22 Intel Corporation Accelerated resource allocation techniques
US10834009B2 (en) 2019-03-18 2020-11-10 Intel Corporation Systems and methods for predictive scheduling and rate limiting
US11669272B2 (en) 2019-05-31 2023-06-06 Micron Technology, Inc. Predictive data transfer based on availability of media units in memory sub-systems
US11748278B2 (en) 2019-06-20 2023-09-05 Intel Corporation Multi-protocol support for transactions
US11231963B2 (en) * 2019-08-15 2022-01-25 Intel Corporation Methods and apparatus to enable out-of-order pipelined execution of static mapping of a workload
US20200089537A1 (en) * 2019-11-20 2020-03-19 Intel Corporation Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants
US11321257B2 (en) * 2019-12-31 2022-05-03 Micron Technology, Inc. Quality of service control of logical devices for a memory sub-system
US11436049B2 (en) * 2020-04-17 2022-09-06 Apple Inc. Systems and methods to control bandwidth through shared transaction limits
US20210349657A1 (en) * 2020-05-08 2021-11-11 Pure Storage, Inc. Providing data management as-a-service
US20210266253A1 (en) 2021-04-23 2021-08-26 Intel Corporation Pooling of network processing resources

Also Published As

Publication number Publication date
EP3945419A1 (en) 2022-02-02
US11704058B2 (en) 2023-07-18
CN114003369A (zh) 2022-02-01
KR20220014280A (ko) 2022-02-04
TW202205103A (zh) 2022-02-01
US20220035565A1 (en) 2022-02-03

Similar Documents

Publication Publication Date Title
CN107018091B (zh) 资源请求的调度方法和装置
US11507420B2 (en) Systems and methods for scheduling tasks using sliding time windows
CN111444012B (zh) 一种保证延迟敏感应用延迟slo的动态调控资源方法及***
US9176774B2 (en) Workflow control of reservations and regular jobs using a flexible job scheduler
US7530068B2 (en) Method of resource allocation using an access control mechanism
WO2020001320A1 (zh) 一种资源分配方法、装置及设备
EP3251021B1 (en) Memory network to prioritize processing of a memory access request
US11620159B2 (en) Systems and methods for I/O command scheduling based on multiple resource parameters
US11586392B2 (en) Multi-stream SSD QoS management
CN109564528B (zh) 分布式计算中计算资源分配的***和方法
US20140013330A1 (en) Multiple core real-time task execution
JP2022025055A (ja) リソースベースのコマンドのスケジューリングに対するシステム及び方法
WO2019024508A1 (zh) 资源分配方法、主装置、从装置和分布式计算***
CN109992418B (zh) Sla感知的多租户大数据平台资源优先级调度方法及***
CN112783659B (zh) 一种资源分配方法、装置、计算机设备及存储介质
WO2024021489A1 (zh) 一种任务调度方法、装置及Kubernetes调度器
US20170344266A1 (en) Methods for dynamic resource reservation based on classified i/o requests and devices thereof
CA2316643C (en) Fair assignment of processing resources to queued requests
US10853138B2 (en) Scheduling resource usage
JP7478918B2 (ja) 分散型異機種混在システムに基づくタスクインテリジェント処理方法
JPH11175357A (ja) タスク管理方法
WO2016006228A1 (ja) 仮想化システムおよび仮想化方法
CN115543554A (zh) 一种计算作业的调度方法、装置及计算机可读存储介质