TW202205103A - 對命令進行排程之系統以及方法 - Google Patents
對命令進行排程之系統以及方法 Download PDFInfo
- Publication number
- TW202205103A TW202205103A TW110115889A TW110115889A TW202205103A TW 202205103 A TW202205103 A TW 202205103A TW 110115889 A TW110115889 A TW 110115889A TW 110115889 A TW110115889 A TW 110115889A TW 202205103 A TW202205103 A TW 202205103A
- Authority
- TW
- Taiwan
- Prior art keywords
- resources
- queue
- command
- pool
- storage device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
- G06F9/4837—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/503—Resource 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
揭露一種對命令進行排程以供由儲存裝置進行處理之系統及方法。自應用程式接收命令並將所述命令儲存於第一佇列中。獲得關於由儲存裝置管理的第一組資源的資訊。基於關於第一組資源的資訊,將第二組資源同步化。將第二組資源分配至第一池及第二池中。判定第一池中的第二組資源的狀態。基於對狀態的第一判定,將第一池中的第二組資源中的一者分配給所述命令,且基於對狀態的第二判定,將第二池中的第二組資源中的一者分配給所述命令。
Description
根據本揭露的實施例的一或多個態樣是有關於儲存裝置,且更具體而言是有關於基於儲存裝置的硬體資源對命令進行排程之系統以及方法。
主機計算裝置可提供命令(例如,讀取命令及寫入命令)以供由儲存裝置進行處理。主機計算裝置可對命令的處理具有一定的服務品質(quality of service,QoS)預期。然而,在某些情形中,可能不存在足夠的硬體資源來處理與QoS要求符合的命令,進而導致抖動。
因此,需要一種對命令進行排程以供由儲存裝置進行處理之系統以及方法,所述系統以及方法會考慮儲存裝置的硬體資源對於解決QoS要求而言的可用性。
本揭露的實施例是有關於一種對命令進行排程以供由儲存裝置進行處理之方法。所述方法包括:自應用程式接收命令並將所述命令儲存於第一佇列中;獲得關於由所述儲存裝置管理的第一組資源的資訊;基於關於所述第一組資源的所述資訊,將第二組資源同步化;將所述第二組資源分配至第一池及第二池中;判定所述第一池中的所述第二組資源的狀態;基於對所述狀態的第一判定,將所述第一池中的所述第二組資源中的一者分配給所述命令;以及基於對所述狀態的第二判定,將所述第二池中的所述第二組資源中的一者分配給所述命令。基於對所述第二組資源中的所述一者的所述分配,將所述命令儲存於與所述儲存裝置相關聯的第二佇列中以供由所述儲存裝置進行處理。
根據一個實施例,所述命令包括來自在主機上運行的應用程式的資料操作,且對所述命令的所述處理包括對非揮發性儲存媒體實行所述資料操作。
根據一個實施例,關於所述第一組資源的所述資訊包括所述第一組資源對於處理所述命令而言的可用性。
根據一個實施例,所述將所述第二組資源同步化包括:確定滿足準則;基於滿足所述準則而確定可用的第一組資源的數目;以及將可用的第二組資源的數目設定成等於可用的第一組資源的數目。
根據一個實施例,所述準則包括時間週期的逾期。
根據一個實施例,所述第一池由所述第一佇列與第二佇列共享,且所述第二池被預留用於所述第一佇列。
根據一個實施例,所述第二池是基於所偵測到的準則而動態確定。所述所偵測到的準則可包括辨識到所述第一佇列的服務品質要求。
根據一個實施例,所述對命令進行排程以供由儲存裝置進行處理之方法更包括:由所述儲存裝置基於將所述命令儲存於所述第二佇列中而分配所述第一組資源中的一者;由所述儲存裝置對所述命令進行處理;以及基於對所述命令的所述處理的完成而將所述第一組資源中的所述一者解除分配。
根據一個實施例,所述狀態是所述第一池中的所述第二組資源的可用性。
本揭露的實施例亦是有關於一種對命令進行排程以供由儲存裝置進行處理之系統。所述系統包括處理器及記憶體。所述記憶體儲存指令,所述指令在被執行時使所述處理器:自應用程式接收命令並將所述命令儲存於第一佇列中;獲得關於由所述儲存裝置管理的第一組資源的資訊;基於關於所述第一組資源的所述資訊,將第二組資源同步化;將所述第二組資源分配至第一池及第二池中;判定所述第一池中的所述第二組資源的狀態;基於對所述狀態的第一判定,將所述第一池中的所述第二組資源中的一者分配給所述命令;以及基於對所述狀態的第二判定,將所述第二池中的所述第二組資源中的一者分配給所述命令,其中,基於對所述第二組資源中的所述一者的所述分配,將所述命令儲存於與所述儲存裝置相關聯的第二佇列中以供由所述儲存裝置進行處理。
當針對以下詳細說明、隨附申請專利範圍及附圖而進行考慮時,將更全面地理解本揭露的實施例的該些及其他特徵、態樣及優點。當然,本發明的實際範圍由隨附申請專利範圍界定。
在下文中,將參照附圖更詳細地闡述示例性實施例,在附圖中相同的參考編號始終指代相同的元件。然而,本揭露可實施為各種不同的形式,且不應被視為僅限於本文中所示的實施例。確切而言,提供該些實施例作為實例是為了使此揭露內容將透徹及完整,並將向熟習此項技術者充分傳達本揭露的態樣及特徵。因此,可不闡述對於此項技術中具有通常知識者全面理解本揭露的態樣及特徵而言所不必要的過程、元件及技術。除非另外指出,否則在附圖及本書面說明中,相同的參考編號始終表示相同的組件,且因此可不再對其予以贅述。此外,在圖式中,為清晰起見,可誇大及/或簡化元件、層及區的相對大小。
一般而言,儲存裝置可具有有限數目的硬體資源來處理來自主機計算裝置的命令。硬體資源可為例如硬體佇列及相關聯的符記,所述符記可用於對命令進行排程以進行處理。硬體佇列的大小及相關聯的符記數目可為特定實施方案,且可取決於儲存裝置的效能及QoS要求。
與儲存裝置交互作用的裝置驅動器可將軟體資源分配給將被處理的命令。軟體資源可為例如軟體佇列及相關聯的符記。軟體佇列及相關聯的符記的深度可為任意的且超過硬體佇列及其相關聯的符記的深度。有時此可能會導致裝置驅動器對較儲存裝置中可用的硬體資源多的命令進行排程。在此種情形中,由裝置驅動器進行排程但無法消耗硬體資源的命令可能會經歷處理延遲,進而導致高的抖動。
圖1是根據現有技術機制的對命令進行排程的系統的概念方塊圖。所述系統包括裝置驅動器100,裝置驅動器100被配置成提交命令以供由儲存裝置102進行處理。裝置驅動器100可包括各種軟體佇列104至108以用於儲存由主機處理裝置的一或多個應用程式提交的命令。舉例而言,佇列104(Q1)可為被配置成儲存寫入命令的深寫入佇列,而佇列106(Q2)可為被配置成儲存讀取命令的淺讀取佇列。所述命令可消耗軟體資源(例如,軟體佇列104至108及符記110),以將命令傳遞至儲存裝置102進行處理。
與裝置驅動器100相似,儲存裝置102可包括被配置成儲存由裝置驅動器100提交的命令的一或多個硬體佇列112至114。舉例而言,硬體佇列112可被配置成儲存自Q1 104及Q2 106獲取的命令。硬體佇列112中的命令可消耗硬體資源(例如,硬體符記)116。可對具有分派的硬體資源116的命令進行排程以供由儲存裝置進行處理。
裝置驅動器中所配置的所述各種軟體佇列104至108可用於解決對命令的處理的QoS規定。舉例而言,藉由將寫入命令及讀取命令分成單獨的佇列104、106且藉由採用例如循環法(round robin)等排程演算法,Q2中的讀取命令一般可在可預測的時間窗口中得到服務。然而,在一些情形中,儘管在Q2中存在預期被處理而已排隊等候的命令,然而儲存裝置內的資源衝突可能會阻止如預期般對Q2中的命令進行服務。
為對這一點進行例示,可考慮其中Q1 104具有排隊的1000個寫入命令且Q2 106具有排隊的10個讀取命令的實例。出於此實例的目的,假設所述1000個寫入命令消耗1000個軟體符記110且可被提交至儲存裝置以進行處理。然而,根據此實例,儲存裝置102僅具有將被分派的768個硬體符記116。因此,儲存裝置102自Q1 104獲取多達768個寫入命令以進行處理,進而使所有768個硬體符記116被消耗。假定寫入命令已消耗所有的硬體符記116、分派有軟體符記110的更多寫入命令被留下以進行處理,則Q2中的讀取命令可能無法在其預期的時間窗口期間被處理。因此,Q2的QoS要求可能無法得到滿足。
本揭露的實施例是有關於對命令進行資源導向排程的系統及方法,所述系統及方法會考慮儲存裝置的硬體資源對於提交命令以進行處理而言的可用性。根據一個實施例,對儲存裝置的硬體資源進行監測以與軟體資源匹配/同步化。一旦同步化,便可根據需要將軟體資源分派給命令。將軟體資源分派給命令可基於例如服務等級協議(service level agreement,SLA)中所陳述的所確定的QoS。儘管QoS被用作可用於確定軟體資源分配的準則的實例,然而此項技術中具有通常知識者應認識到,亦可考慮其他準則,例如(舉例而言)使用者偏好及/或類似準則。
根據一個實施例,裝置驅動器包括被配置成辨識硬體資源資訊並相應地更新軟體資源資訊的軟體符記管理器。在一個實施例中,軟體符記管理器將可用軟體資源的數目更新成與可用硬體資源的數目匹配。基於例如QoS預期,可將可用軟體資源的一定部分預留用於裝置驅動器的一或多個佇列。剩餘的軟體資源可為共享池的一部分。在一個實施例中,軟體符記管理器將來自共享池的軟體符記/資源分派給軟體佇列中的命令,以用於將命令提交至儲存裝置以進行處理。根據一個實施例,若共享池中不存在將要分派給佇列中的命令的軟體資源,則軟體符記管理器可對為佇列預留的軟體符記進行存取且將預留的符記中的一者分派給所述命令。預留的符記可使得命令能夠被及時處理,以滿足QoS要求。
圖2是根據一個實施例的對命令進行資源導向排程的系統的方塊圖。所述系統可包括藉由儲存介面匯流排204耦合至儲存裝置202的主機計算裝置200。儲存裝置202可為非揮發性儲存裝置,例如(舉例而言)固態驅動機(solid state drive,SSD)、乙太網路SSD(Ethernet SSD,eSSD)、通用串列匯流排(Universal Serial Bus,USB)驅動機、安全數位(Security Digial,SD)卡、嵌入式多媒體控制器(embedded Multi-Media Controller,eMMC)、通用快閃儲存器(Universal Flash Storage,UFS)及/或類似裝置。儲存介面匯流排204可為例如快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)匯流排、乙太網路及計算快速鏈路(Compute Express Link,CXL)。在一個實施例中,主機計算裝置200使用儲存介面協定來藉由儲存介面匯流排204向儲存裝置202傳輸資料並自儲存裝置202接收資料。儲存介面協定可為例如快速非揮發性記憶體(non-volatile memory express,NVMe)協定或使用佇列來儲存將被處理的命令的任何其他類似協定。
在一個實施例中,主機計算裝置200包括在主機計算裝置200的應用程式層中運行的一或多個應用程式206。所述一或多個應用程式206可為儲存於主機記憶體空間中以供由處理器執行的軟體應用程式。在一個實施例中,所述一或多個應用程式206可向儲存裝置202發送命令以進行處理。舉例而言,所述一或多個應用程式可發出自儲存裝置202讀取資料的讀取命令、將資料寫入至儲存裝置202中的寫入命令及/或其他輸入/輸出(input/output,I/O)請求。
在一個實施例中,主機計算裝置200包括被配置成與儲存裝置202進行介接的裝置驅動器208。在一個實施例中,裝置驅動器208被實施為儲存於主機記憶體中並由處理器執行的軟體指令。裝置驅動器208可包括一或多個佇列212a、212b(在下文中被稱為軟體佇列212)。軟體佇列212可包括例如一或多個提交佇列及完成佇列。提交佇列可被配置成儲存由各種應用程式206提交的命令/請求。完成佇列可被配置成儲存由儲存裝置202處理的命令/請求的完成訊息。
所述一或多個軟體佇列212(例如,提交佇列)可專用於儲存來自主機計算裝置200的某些類型的命令。舉例而言,一個佇列可專用於儲存來自應用程式的讀取命令,而另一佇列可專用於儲存寫入命令。在一個實施例中,可基於一或多個SLA對軟體佇列212施用某些QoS要求。舉例而言,可預期在給定的時間週期內對軟體佇列212中的一定數目的命令進行處理。不同的QoS要求可與不同的軟體佇列212相關聯。
裝置驅動器208可更包括被配置成管理軟體資源的符記管理器210,所述軟體資源可能會影響將被處理的命令的排程。軟體資源可為例如軟體符記及/或佇列212。在一個實施例中,軟體符記管理器210被配置成基於來自儲存裝置202的資訊來確定軟體符記的可用性,且將可用符記分派給儲存於軟體佇列212中的命令。軟體符記管理器210可被配置成基於每個控制器及/或符記類型來維護可用性資訊。當符記在共享池中可用時,所分派的符記可來自共享池或者來自為佇列預留的池,以用於被提交至佇列的命令。
在一個實施例中,儲存裝置202包括主機介面層(host interface layer,HIL)214,以用於主機計算裝置200與裝置控制子系統216之間的介接。HIL 214可包括但不限於一或多個控制器218及一或多個佇列220a至220c(在下文中被稱為硬體佇列220)。硬體佇列220的深度可取決於例如儲存裝置202的處理能力。在一個實施例中,可由儲存裝置202針對不同類型的處理維護不同的佇列。舉例而言,一個硬體佇列可儲存由硬體加速引擎進行處理的命令,且另一佇列可儲存經由韌體進行處理的命令。
可經由一或多個處理器(例如(舉例而言)現場可程式化閘陣列(field programmable gate array,FPGA)或特殊應用積體電路(application specific integrated circuit,ASIC))來實施控制器218。所述一或多個控制器218中的一者可與一或多個硬體佇列220相關聯。控制器218中的所述一者可被配置成管理硬體資源並將硬體資源分派給被提交用於在軟體佇列212中進行處理的命令。硬體資源可為例如硬體符記及/或佇列220。
在一個實施例中,所述一或多個控制器218被配置成自軟體佇列212中的一或多者獲取輸入/輸出請求/命令並將所獲取的請求儲存至硬體佇列220中與所述一或多個控制器218對應的一或多者中。在一些實施例中,可由裝置驅動器208獲取並提交所述請求。
可對儲存於硬體佇列220中的命令分派硬體符記以進行處理。在一個實施例中,依據硬體佇列220的類型及數目而定,可維護並分派不同類型的硬體符記。舉例而言,可將第一類型的硬體符記分派至專用於由硬體加速引擎進行處理的第一硬體佇列220a,而可將第二類型的硬體符記分派至專用於經由韌體進行處理的第二硬體佇列220b。
將被分派給不同硬體佇列220中的命令的可用硬體符記的數目可取決於佇列中已存在的命令的數目。在一個實施例中,由控制器218基於硬體佇列類型來分派符記。在一個實施例中,在將命令儲存於所述一或多個硬體佇列220中時自動分派硬體符記。可對已被分派硬體符記的命令進行排程以供由裝置控制子系統216進行處理。
在一個實施例中,裝置控制子系統216與控制器218交互作用,以用於執行應用程式206所請求的命令。裝置控制子系統216可包括但不限於一或多個處理器222及一或多個媒體介面224。所述一或多個處理器222可被配置成執行電腦可讀取指令,以用於對到達控制器218的命令及來自控制器218的命令進行處理且用於管理儲存裝置202的操作。由所述一或多個處理器222執行的電腦可讀取指令可為例如韌體代碼。
在一個實例中,所述一或多個處理器222可被配置成與控制器218進行交互,以用於接收到達NVM媒體226的寫入命令或讀取命令或者來自NVM媒體226的寫入命令或讀取命令。所述一或多個處理器222可藉由媒體介面224與NVM媒體226進行交互,以達成寫入動作或讀取動作。NVM媒體226可包括一或多種類型的非揮發性記憶體,例如(舉例而言)快閃記憶體。
在一個實施例中,儲存裝置202更包括內部記憶體228,以用於在儲存裝置202的操作期間的短期儲存器或臨時記憶體。內部記憶體228可包括動態隨機存取記憶體(dynamic random access memory,DRAM)、靜態隨機存取記憶體(static random access memory,SRAM)及/或資料緊密耦合記憶體(Data Tightly Coupled Memory,DTCM)。內部記憶體228可用於儲存例如硬體佇列220。
圖3是根據一個實施例的圖2所示系統的各種抽象層的方塊圖。為便於闡釋,將參照圖2對圖3進行闡述。主機計算裝置200的抽象層可包括應用程式層300及裝置驅動器層302。應用程式層300可被配置成基於由應用程式206發出的輸入/輸出請求來產生命令。由應用程式層300產生的命令可對儲存介面匯流排204的用於與儲存裝置202進行通訊的儲存介面協議進行確認。
在一個實施例中,裝置驅動器層302包括軟體佇列212及符記管理器210。基於例如命令類型而將由應用程式層300產生的命令儲存於裝置驅動器208中的佇列212中。軟體符記管理器210可基於來自儲存裝置202的資訊確定軟體符記的可用性並將可用符記分派給儲存於軟體佇列212中的命令。在所有的符記被分派的情況下,服務可能會被拒絕。在一個實施例中,可容許命令在軟體佇列212中排隊,但若不存在可用符記,則所述命令可不被提交至硬體佇列220以進行處理。
在一個實施例中,儲存裝置202包括儲存層304,儲存層304可包括各種子層。所述各種子層可包括主機介面層214以及用於與NVM媒體226進行介接的其他層(例如(舉例而言)快閃轉譯層306及快閃介面層308)。NVM媒體226可作為快閃媒體310而被包括於儲存層304中。
圖4是根據一個實施例的對第一佇列及第二佇列中的命令進行排程的圖2的概念方塊圖。軟體符記管理器210可管理關於可用軟體符記400的資訊,所述資訊包括關於共享池中的可用軟體符記的數目的資訊以及關於預留池中的可用軟體符記的數目的資訊。在一個實施例中,軟體符記管理器210為由儲存裝置202中的各種控制器218中的控制器管理的佇列112維護符記可用性資訊。在儲存裝置202包括多個控制器218的情況下,軟體符記管理器210可為由所述多個控制器218管理的佇列維護多組符記可用性資訊。
軟體符記管理器210亦可維護給定的一組可用符記中不同類型的符記的可用性資訊。舉例而言,可基於命令是由硬體加速引擎進行處理還是經由韌體進行處理來分派不同的符記。軟體符記管理器210可被配置成對用於硬體加速處理的符記的可用性及用於韌體處理的符記的可用性進行監測,並基於可用性將適當類型的符記分派給命令。
在一個實施例中,可在預留池中為每一軟體佇列212預留一定數目的軟體符記。所述預留亦可基於不同的符記類型。對於不同的佇列及符記類型而言,為軟體佇列預留的軟體符記的數目可相同或不同。
在一個實施例中,可基於一或多個準則來動態確定為佇列212預留的符記的數目(其應被理解為亦包括符記類型)。所述準則可為例如使用統計及/或SLA要求。在一個實施例中,軟體符記管理器210被配置成辨識用於佇列212的SLA要求(例如,每秒所需的輸入/輸出、頻寬等),且基於SLA要求而專用可用軟體符記400的一部分。舉例而言,若佇列的頻寬要求為BW1,且總的可用頻寬是BW,則預留符記的數目可基於BW1對BW的比率(BW1/BW)。
在一些實施例中,軟體符記管理器210被配置成收集與軟體佇列的使用相關的歷史資訊(所述歷史資訊包括使用的時間週期、使用量、負責使用的應用程式等)且基於歷史資訊動態地調整佇列的符記的預留數目。以此種方式,當達到佇列212中的一者的使用被預測為高的某一時間週期時,軟體符記管理器210可被配置成基於所述預測為所述佇列預留更多符記。
在又一些實施例中,軟體符記管理器210自各種應用程式206接收關於自應用程式206所預期(例如,在下一毫秒)的命令的數目及類型的資訊。軟體符記管理器210可基於所述資訊動態地調整受影響佇列的預留符記的數目。舉例而言,若期望第一佇列較第二佇列被更高度地利用,則給定時間週期內第一佇列的預留符記的數目可成比例地高於第二佇列的預留符記的數目。
在一個實例中,由軟體符記管理器210針對特定控制器218在給定時間窗口辨識的可用軟體符記400的總數目是768個符記。可用軟體符記400的數目可與和特定控制器218相關聯的硬體符記402的總數目匹配。軟體符記管理器210可被配置成在預留池中預留一定數目的可用軟體符記400。舉例而言,可用符記的10%(77個符記)可被分配至預留池中,而剩餘的691個符記可被分配至共享池中。在軟體佇列212a中的第一個軟體佇列212a(Q1)具有儲存於佇列中的691個命令且軟體佇列212b(Q2)中的第二個軟體佇列212b具有儲存於佇列中的兩個命令的情況下,軟體符記管理器210可被配置成基於排程演算法(例如(舉例而言),例如循環法、加權循環法、固定優先權等排程演算法)來對Q1 212a中的命令進行排程以進行處理。Q1 212a中的命令可被分配有共享池中的691個可用軟體符記,以使得命令能夠被提交至相關聯的硬體佇列220a以進行處理。被提交至硬體佇列220a的所述691個命令可消耗來自可用硬體符記402的池的691個硬體符記。
接下來可根據排程演算法選擇Q2 212b中的兩個命令進行處理。假設被分派給Q1 212a中的命令的所述691個符記尚未被釋放,則共享池中不存在將被分派給Q2 212b中的命令的更多的符記。然而,假定所述77個符記已被分配至預留池且在各種軟體佇列212之間被劃分,預留池中已被分配至Q2 212b的軟體符記中的兩者被分派給Q2 212b中的所述兩個命令。就此而言,即使共享池中不存在更多的可用的軟體符記,Q2 212b中的所述兩個命令仍可經由預留的軟體符記被提交至對應的硬體佇列220a以進行處理,進而使得能夠保持排程的公平性。被提交至硬體佇列220a的所述兩個命令可消耗來自可用硬體符記的兩個符記,進而使可用硬體符記402的總數目減少至75。
在一個實施例中,關於經更新硬體符記的資訊經由命令或經由應用程式化介面(application programming interface,API)404而被暴露至軟體符記管理器210。接著,可由軟體符記管理器210使用所述資訊來將其軟體符記400同步化。關於經更新符記的資訊可被週期性地(規律或不規律)推送至軟體符記管理器210或者由軟體符記管理器自儲存裝置226獲取。舉例而言,基於處理器222完成對一或多個命令的處理,控制器218可使用中斷訊號向裝置驅動器208提交完成訊息,處理器222轉而可將一或多個對應的硬體符記402解除分配/釋放所述一或多個對應的硬體符記402。完成訊息可被傳送至軟體符記管理器210及/或被提交至所述一或多個軟體佇列212的完成佇列。當被提交至完成佇列時,軟體符記管理器210可被配置成週期性地自完成佇列獲取完成訊息,且相應地更新可用軟體符記400。舉例而言,當軟體符記管理器210接收到與五個經處理命令相關聯的一或多個完成訊息時,軟體符記管理器210可將先前被分配給命令的五個對應的軟體符記解除分配。
圖5是根據一個實施例的對儲存於軟體佇列212中的命令進行資源導向排程的過程的流程圖。應理解,所述過程的步驟順序不是固定的,而是可被變更成熟習此項技術者所認可的任何期望的順序。為便於闡釋,將參照圖2對圖5進行闡述。
開始進行所述過程,且在方塊500處,軟體符記管理器210接收對軟體佇列212中的一者中的命令的軟體符記的請求。在一些實施例中,命令在佇列中的放置可被認為是對軟體符記的請求。所述請求可包括儲存命令的佇列的辨識符及符記類型。
在方塊502處,軟體符記管理器210判定是否應更新關於可用軟體符記的資訊。可在滿足準則(例如(舉例而言)時間週期的逾期)時更新軟體符記,或者在當接收到請求時在判定出共享池及預留池中不存在可用軟體符記時更新軟體符記。
若符記可用性資訊將被更新,則軟體符記管理器210獲得關於可用硬體符記的資訊且將可用軟體符記同步化成與可用硬體符記匹配。此可包括例如自所述一或多個控制器218接收用於接收更新資訊的中斷訊號,或者向一或多個完成佇列查詢關於儲存裝置202完成的命令的資訊。在一個實施例中,更新資訊可包括用於使得軟體符記管理器210能夠基於每個符記類型將可用軟體符記的數目同步化的符記類型資訊。
在方塊506處,軟體符記管理器210為每個佇列及每個符記類型預留一定數目的可用符記。舉例而言,假設可用符記的總數目為1000,則軟體符記管理器210可將可用符記的10%分配至佇列中的第一佇列,且將可用符記的5%分配至佇列中的第二佇列。百分比可為靜態的(例如,手動設定)或動態確定。亦可存在其他百分比。預留符記的數目可基於例如佇列的預期使用及/或佇列類型、QoS預期及/或類似物。
在方塊508處,將剩餘的可用符記分配為共享池中的共享符記。
在方塊510處,判定共享池中的共享符記是否滿足狀態。所述狀態可為例如將被分配給命令的共享符記的可用性。若答案為是(YES),則在方塊512處將共享池中的可用符記分配給所述命令。所述命令現在可由控制器218提交/獲取以進行處理,進而使硬體符記被消耗。
在方塊514處,軟體符記管理器210將共享池中的可用軟體符記的數目減少一個。
再次參照方塊510,若判定出共享符記不滿足狀態(例如,共享池中不存在共享符記),則軟體符記管理器210在方塊516中判定是否存在與命令相關聯的佇列及符記類型的任何預留符記。若答案為是,則在方塊518處將佇列及符記類型的預留池中的可用符記分配給所述命令。
在方塊520處,軟體符記管理器210將佇列及符記類型的預留符記的數目減少一個。
若不存在將被分派給所述命令的共享符記或預留符記,則所述命令可能會保留於佇列中而不被服務,直至軟體符記變得再次可用為止。
在一些實施例中,在一或多個處理器中實施上述對命令進行資源導向排程的系統及方法。用語處理器可指一或多個處理器及/或一或多個處理核心。所述一或多個處理器可代管於單個裝置中或者分佈於多個裝置之上(例如,雲端系統之上)。處理器可包括例如特殊應用積體電路(ASIC)、通用或專用中央處理單元(central processing unit,CPU)、數位訊號處理器(digital signal processor,DSP)、圖形處理單元(graphics processing unit,GPU)及可程式化邏輯裝置,例如現場可程式化閘陣列(FPGA)。在如本文中所使用的處理器中,每一功能由被配置(即,硬接線)成實行所述功能的硬體來實行,或者由被配置成執行儲存於非暫時性儲存媒體(例如,記憶體)中的指令的更通用的硬體(例如,CPU)來實行。處理器可製作於單個印刷電路板(printed circuit board,PCB)上或者分佈於若干互連的PCB之上。處理器可包含其他處理電路;舉例而言,處理電路可包括在PCB上互連的兩個處理電路、FPGA及CPU。
應理解,儘管可在本文中使用用語「第一(first)」、「第二(second)」、「第三(third)」等來闡述各種元件、組件、區、層及/或區段,然而該些元件、組件、區、層及/或區段不應受限於該些用語。該些用語僅用於區分各個元件、組件、區、層或區段。因此,在不背離本發明概念的精神及範圍的條件下,本文中所論述的第一元件、組件、區、層或區段可被稱為第二元件、組件、區、層或區段。
本文中所使用的術語僅出於闡述特定實施例的目的,而不旨在限制本發明概念。如本文中所使用的用語「實質上(substantially)」、「大約(about)」及相似用語用作近似用語、而並非用作程度用語,且旨在考慮到此項技術中具有通常知識者將知的量測值或計算值的固有偏差。
除非上下文清楚地另外指明,否則本文中所使用的單數形式「一(a及an)」旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。如本文中所使用的用語「及/或(and/or)」包括相關所列項中一或多個項的任意及所有組合。例如「…中的至少一者(at least one of)」等表達當出現在一系列元件之後時,是修飾整個系列的元件而並非修飾所述系列的各別元件。此外,在闡述本發明概念的實施例時使用「可(may)」是指「本揭露的一或多個實施例」。另外,用語「示例性的」旨在指實例或例示。本文中所使用的用語「使用(use)」、「正使用(using)」、及「被使用(used)」可被視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。
應理解,當稱一元件或層位於另一元件或層「上」、「連接至」、「耦合至」或「相鄰於」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至、直接耦合至或直接相鄰於所述另一元件或層,或者可存在一或多個中間元件或層。相比之下,當稱一元件或層「直接」位於另一元件或層「上」、「直接連接至」、「直接耦合至」或「緊鄰於」另一元件或層時,則不存在中間元件或層。
本文中所述的任何數值範圍旨在包括所述範圍內所包含的具有相同數值精度的所有子範圍。舉例而言,範圍「1.0至10.0」旨在包括介於所述最小值1.0與所述最大值10.0之間(且包括1.0及10.0)的所有子範圍,即,具有等於或大於1.0的最小值及等於或小於10.0的最大值(例如(舉例而言,2.4至7.6))。本文中所述任何最大數值限制旨在包括其中所包含的所有較低的數值限制,且本說明書中所述的任何最小數值限制旨在包括其中所包含的所有較高的數值限制。
儘管已在本文中具體闡述及示出了對命令進行資源導向排程的系統及方法的示例性實施例,然而許多潤飾及變型將對熟習此項技術者顯而易見。因此,應理解,根據本揭露的原理構造的對命令進行資源導向排程的系統及方法可被實施成不同於本文中所具體闡述者。亦在以下申請專利範圍及其等效範圍中界定本揭露。
100、208:裝置驅動器
102、202:儲存裝置
104、106、212a、212b、Q1、Q2:軟體佇列/佇列
108:軟體佇列
110:符記/軟體符記
112、114:硬體佇列
116:硬體資源/硬體符記
200:主機計算裝置
204:儲存介面匯流排
206:應用程式
210:符記管理器/軟體符記管理器
214:主機介面層(HIL)
216:裝置控制子系統
218:控制器
220a:佇列/第一硬體佇列/硬體佇列
220b:佇列/第二硬體佇列
220c:佇列
222:處理器
224:媒體介面
226:非揮發性記憶體(NVM)媒體/儲存裝置
228:內部記憶體
300:應用程式層
302:裝置驅動器層
304:儲存層
306:快閃轉譯層
308:快閃介面層
310:快閃媒體
400:軟體符記/可用軟體符記
402:硬體符記/可用硬體符記
404:應用程式化介面(API)
500、502、504、506、508、510、512、514、516、518、520:方塊
參照以下各圖闡述本揭露實施例的非限制性及非窮盡性實施例,其中除非另外規定,否則在各個視圖中相同的參考編號始終指代相同的部件。
圖1是根據現有技術機制對命令進行排程的系統的概念方塊圖。
圖2是根據一個實施例的對命令進行資源導向排程的系統的方塊圖。
圖3是根據一個實施例的圖2所示系統的各種抽象層的方塊圖。
圖4是根據一個實施例的對第一佇列及第二佇列中的命令進行排程的圖2的概念方塊圖。
圖5是根據一個實施例的對儲存於軟體佇列中的命令進行資源導向排程的過程的流程圖。
200:主機計算裝置
202:儲存裝置
204:儲存介面匯流排
206:應用程式
208:裝置驅動器
210:符記管理器/軟體符記管理器
212a、212b:軟體佇列/佇列
214:主機介面層(HIL)
216:裝置控制子系統
218:控制器
220a:佇列/第一硬體佇列/硬體佇列
220b:佇列/第二硬體佇列
220c:佇列
222:處理器
224:媒體介面
226:非揮發性記憶體(NVM)媒體/儲存裝置
228:內部記憶體
Claims (20)
- 一種對命令進行排程以供由儲存裝置進行處理之方法,所述方法包括: 自應用程式接收命令並將所述命令儲存於第一佇列中; 獲得關於由所述儲存裝置管理的第一組資源的資訊; 基於關於所述第一組資源的所述資訊,將第二組資源同步化; 將所述第二組資源分配至第一池及第二池中; 判定所述第一池中的所述第二組資源的狀態; 基於對所述狀態的第一判定,將所述第一池中的所述第二組資源中的一者分配給所述命令;以及 基於對所述狀態的第二判定,將所述第二池中的所述第二組資源中的一者分配給所述命令,其中,基於對所述第二組資源中的所述一者的分配,將所述命令儲存於與所述儲存裝置相關聯的第二佇列中以供由所述儲存裝置進行處理。
- 如請求項1所述的方法,其中所述命令包括來自在主機上運行的應用程式的資料操作,且對所述命令的處理包括對非揮發性儲存媒體實行所述資料操作。
- 如請求項1所述的方法,其中關於所述第一組資源的所述資訊包括所述第一組資源對於處理所述命令而言的可用性。
- 如請求項1所述的方法,其中將所述第二組資源同步化包括: 確定滿足準則; 基於滿足所述準則而確定可用的第一組資源的數目;以及 將可用的第二組資源的數目設定成等於可用的第一組資源的數目。
- 如請求項4所述的方法,其中所述準則包括時間週期的逾期。
- 如請求項1所述的方法,其中所述第一池由所述第一佇列與所述第二佇列共享,且所述第二池被預留用於所述第一佇列。
- 如請求項6所述的方法,其中所述第二池是基於所偵測到的準則而動態確定。
- 如請求項7所述的方法,其中所述所偵測到的準則包括辨識到所述第一佇列的服務品質要求。
- 如請求項1所述的方法,更包括: 由所述儲存裝置基於將所述命令儲存於所述第二佇列中而分配所述第一組資源中的一者; 由所述儲存裝置對所述命令進行處理;以及 基於對所述命令的處理的完成而將所述第一組資源中的所述一者解除分配。
- 如請求項1所述的方法,其中所述狀態是所述第一池中的所述第二組資源的可用性。
- 一種對命令進行排程以供由儲存裝置進行處理之系統,所述系統包括: 處理器;以及 記憶體,其中所述記憶體儲存指令,所述指令在被執行時使所述處理器: 自應用程式接收命令並將所述命令儲存於第一佇列中; 獲得關於由所述儲存裝置管理的第一組資源的資訊; 基於關於所述第一組資源的所述資訊,將第二組資源同步化; 將所述第二組資源分配至第一池及第二池中; 判定所述第一池中的所述第二組資源的狀態; 基於對所述狀態的第一判定,將所述第一池中的所述第二組資源中的一者分配給所述命令;以及 基於對所述狀態的第二判定,將所述第二池中的所述第二組資源中的一者分配給所述命令,其中,基於對所述第二組資源中的所述一者的分配,將所述命令儲存於與所述儲存裝置相關聯的第二佇列中以供由所述儲存裝置進行處理。
- 如請求項11所述的系統,其中所述命令包括來自在主機上運行的應用程式的資料操作,且對所述命令的處理包括對非揮發性儲存媒體實行所述資料操作。
- 如請求項11所述的系統,其中關於所述第一組資源的所述資訊包括所述第一組資源對於處理所述命令而言的可用性。
- 如請求項11所述的系統,其中使所述處理器將所述第二組資源同步化的所述指令包括使所述處理器實行以下操作的指令: 確定滿足準則; 基於滿足所述準則而確定可用的第一組資源的數目;以及 將可用的第二組資源的數目設定成等於可用的第一組資源的數目。
- 如請求項14所述的系統,其中所述準則包括時間週期的逾期。
- 如請求項11所述的系統,其中所述第一池由所述第一佇列與第二佇列共享,且所述第二池被預留用於所述第一佇列。
- 如請求項16所述的系統,其中所述第二池是基於所偵測到的準則而動態確定。
- 如請求項17所述的系統,其中所述所偵測到的準則包括辨識到所述第一佇列的服務品質要求。
- 如請求項11所述的系統,其中所述儲存裝置被配置成: 基於將所述命令儲存於所述第二佇列中而分配所述第一組資源中的一者; 對所述命令進行處理;以及 基於對所述命令的處理的完成而傳送將所述第一組資源中的所述一者解除分配的訊號。
- 如請求項11所述的系統,其中所述狀態是所述第一池中的所述第二組資源的可用性。
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 |
---|---|
TW202205103A true TW202205103A (zh) | 2022-02-01 |
Family
ID=75746503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110115889A TW202205103A (zh) | 2020-07-28 | 2021-05-03 | 對命令進行排程之系統以及方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11704058B2 (zh) |
EP (1) | EP3945419A1 (zh) |
JP (1) | JP2022025055A (zh) |
KR (1) | KR20220014280A (zh) |
CN (1) | CN114003369A (zh) |
TW (1) | TW202205103A (zh) |
Families Citing this family (2)
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)
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 |
US8966490B2 (en) | 2008-06-19 | 2015-02-24 | Freescale Semiconductor, Inc. | System, method and computer program product for scheduling a processing entity task by a scheduler in response to a peripheral task completion indicator |
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 |
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 |
-
2020
- 2020-10-28 US US17/082,933 patent/US11704058B2/en active Active
-
2021
- 2021-04-30 EP EP21171599.0A patent/EP3945419A1/en active Pending
- 2021-05-03 TW TW110115889A patent/TW202205103A/zh unknown
- 2021-05-25 KR KR1020210067120A patent/KR20220014280A/ko active Search and Examination
- 2021-07-27 CN CN202110849020.6A patent/CN114003369A/zh active Pending
- 2021-07-28 JP JP2021123001A patent/JP2022025055A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US11704058B2 (en) | 2023-07-18 |
EP3945419A1 (en) | 2022-02-02 |
KR20220014280A (ko) | 2022-02-04 |
JP2022025055A (ja) | 2022-02-09 |
US20220035565A1 (en) | 2022-02-03 |
CN114003369A (zh) | 2022-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10387202B2 (en) | Quality of service implementation in a networked storage system with hierarchical schedulers | |
US9208116B2 (en) | Maintaining I/O priority and I/O sorting | |
US10534542B2 (en) | Dynamic core allocation for consistent performance in a non-preemptive scheduling environment | |
US8793443B2 (en) | Methods and structure for improved buffer allocation in a storage controller | |
US11620159B2 (en) | Systems and methods for I/O command scheduling based on multiple resource parameters | |
US10394606B2 (en) | Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy | |
CN107515786B (zh) | 资源分配方法、主装置、从装置和分布式计算系统 | |
US10545791B2 (en) | Methods to apply IOPS and MBPS limits independently using cross charging and global cost synchronization | |
US9760392B1 (en) | Adaptive throttling in hybrid storage environments | |
US11093352B2 (en) | Fault management in NVMe systems | |
CN109726005B (zh) | 用于管理资源的方法、服务器系统和计算机可读介质 | |
TW202205103A (zh) | 對命令進行排程之系統以及方法 | |
KR20110046719A (ko) | 복수 코어 장치 및 그의 로드 조정 방법 | |
US10496444B2 (en) | Computer and control method for computer | |
US9697047B2 (en) | Cooperation of hoarding memory allocators in a multi-process system | |
US20130042252A1 (en) | Processing resource allocation within an integrated circuit | |
CN117078495A (zh) | 图形处理器的内存分配方法、装置、设备及存储介质 | |
US9842074B2 (en) | Tag allocation for non-posted commands in a PCIe application layer | |
US11620083B2 (en) | Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device | |
US20230108001A1 (en) | Priority-based scheduling with limited resources | |
JP2015170270A (ja) | 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム |