TW202215248A - 操作儲存系統的方法、以及對儲存資源的層級進行分區的方法 - Google Patents
操作儲存系統的方法、以及對儲存資源的層級進行分區的方法 Download PDFInfo
- Publication number
- TW202215248A TW202215248A TW110124868A TW110124868A TW202215248A TW 202215248 A TW202215248 A TW 202215248A TW 110124868 A TW110124868 A TW 110124868A TW 110124868 A TW110124868 A TW 110124868A TW 202215248 A TW202215248 A TW 202215248A
- Authority
- TW
- Taiwan
- Prior art keywords
- client
- workload
- partition
- storage
- cache
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of 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/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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0647—Migration mechanisms
- G06F3/0649—Lifecycle 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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
- 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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一種操作儲存系統的方法可包括:將儲存資源的層級的第一分區分配給第一客戶端,其中所述層級至少部分地作為儲存快取運作;將儲存資源的層級的第二分區分配給第二客戶端;監測第一客戶端的工作負荷;監測第二客戶端的工作負荷;以及基於所監測的第一客戶端的工作負荷及所監測的第二客戶端的工作負荷將儲存資源的層級的第一分區重新分配給第一客戶端。所述方法可更包括:基於所監測的第一客戶端的工作負荷及所監測的第二客戶端的工作負荷將儲存資源的層級的第二分區重新分配給第二客戶端。
Description
本揭露大體而言是有關於資料處理,且更具體而言是有關於儲存資源分區管理之系統、方法以及元件。
儲存系統可將儲存資源劃分成供一或多個儲存客戶端使用的分區。
在此先前技術部分中揭露的以上資訊僅用於增強對本發明的背景的理解,且因此其可能含有不構成先前技術的資訊。
一種操作儲存系統的方法可包括:將儲存資源的層級的第一分區分配給第一客戶端,其中所述層級至少部分地作為儲存快取運作;將所述儲存資源的所述層級的第二分區分配給第二客戶端;監測所述第一客戶端的工作負荷;監測所述第二客戶端的工作負荷;以及基於所監測的所述第一客戶端的所述工作負荷及所監測的所述第二客戶端的所述工作負荷將所述儲存資源的所述層級的所述第一分區重新分配給所述第一客戶端。所述方法可更包括:基於所監測的所述第一客戶端的所述工作負荷及所監測的所述第二客戶端的所述工作負荷將所述儲存資源的所述層級的所述第二分區重新分配給所述第二客戶端。所述第一分區可基於所述第一客戶端的所述工作負荷的輸入及/或輸出(input and/or output,I/O)需求進行重新分配。所述第一分區可基於所述第二客戶端的所述工作負荷的I/O需求進行重新分配。所述第一分區可基於所述第一客戶端的所述工作負荷的效能改變估測(performance change estimation)進行重新分配。所述第一分區可基於所述第二客戶端的所述工作負荷的效能改變估測進行重新分配。所述第一分區可基於所述第一客戶端的所述工作負荷的讀取-寫入比率進行重新分配。所述第一分區可基於所述第一客戶端的所述工作負荷的工作集合進行重新分配。所述第一分區可基於所述第一客戶端的所述工作負荷的工作量進行重新分配。
一種系統可包括:儲存層,包括儲存資源的層級,所述儲存資源的層級被配置成至少部分地作為儲存快取運作;應用伺服器層,被配置成對來自第一客戶端及第二客戶端的對儲存層的I/O請求進行處理;監測邏輯,被配置成監測第一客戶端的工作負荷及第二客戶端的工作負荷;決策邏輯,被配置成基於所監測的第一客戶端的工作負荷及所監測的第二客戶端的工作負荷來確定經調整分區方案;以及分區邏輯,被配置成將儲存資源的層級的第一分區分配給第一客戶端,將儲存資源的層級的第二分區分配給第二客戶端,且基於經調整分區方案將儲存資源的層級的第一分區重新分配給第一客戶端。所述監測邏輯可包括I/O濾波器。所述監測邏輯可包括超管理器(hypervisor)。所述應用伺服器層可包括被配置成向第一客戶端及第二客戶端提供標準化I/O介面的介面。
一種對儲存資源的層級進行分區的方法可包括:確定所述層級的第一客戶端及所述層級的第二客戶端的讀取工作量及寫入工作量;基於所述讀取工作量及所述寫入工作量確定工作負荷類型;以及基於所述工作負荷類型在所述第一客戶端與所述第二客戶端之間對儲存資源的所述層級進行分區。所述方法可更包括:基於所述讀取工作量及所述寫入工作量確定讀取比率;以及基於所述讀取比率確定所述工作負荷類型。基於所述讀取比率確定所述工作負荷類型可包括將所述讀取比率與臨限值進行比較。所述方法可更包括:基於所述工作負荷類型確定工作集合大小;以及基於所述工作集合大小在所述第一客戶端與所述第二客戶端之間對儲存資源的所述層級進行分區。所述方法可更包括:基於所述工作負荷類型確定工作量大小;以及基於所述工作量大小在所述第一客戶端與所述第二客戶端之間對儲存資源的所述層級進行分區。
一種偵測儲存資源的層級的存取突發的方法可包括:監測儲存資源的所述層級的工作負荷;確定所述工作負荷的突發度;以及基於所述突發度偵測所述存取突發。基於所述突發度偵測所述存取突發可包括將所述突發度與突發臨限值進行比較。確定所述工作負荷的突發度可包括確定所述工作負荷的讀取強度。確定所述工作負荷的所述突發度可包括:確定所述工作負荷的工作量的改變;以及基於所述工作負荷的所述工作量的所述改變來計算所述突發度。確定所述工作負荷的所述突發度可包括:確定所述工作負荷的工作集合的改變;以及基於所述工作負荷的所述工作集合的所述改變來計算所述突發度。
一種對儲存資源的層級進行分區的方法可包括:監測儲存資源的所述層級的工作負荷;基於所監測的所述工作負荷確定第一客戶端的第一快取需求;基於所監測的所述工作負荷確定第二客戶端的第二快取需求;至少部分地基於所述第一快取需求將儲存資源的所述層級的第一分區分配給所述第一客戶端;以及至少部分地基於所述第二快取需求將儲存資源的所述層級的第二分區分配給所述第二客戶端。可至少部分地與所述第一快取需求及所述第二快取需求成比例地分配所述第一分區及所述第二分區。確定所述第一快取需求可包括確定所述第一客戶端的第一工作負荷數量,且確定所述第二快取需求可包括確定所述第二客戶端的第二工作負荷數量。所述第一工作負荷數量及所述第二工作負荷負荷數量可至少部分地基於所監測的所述工作負荷的讀取強度來確定。所述第一工作負荷數量可至少部分地基於所述第一客戶端的工作量大小來確定,且所述第二工作負荷數量可至少部分地基於所述第二客戶端的工作量大小來確定。所述第一工作負荷數量可至少部分地基於所述第一客戶端的工作集合大小來確定,且所述第二工作負荷數量可至少部分地基於所述第二客戶端的工作集合大小來確定。所述方法可更包括對所述第一工作負荷數量進行加權且對所述第二工作負荷數量進行加權。所述方法可更包括基於經加權的所述第一工作負荷數量及經加權的所述第二工作負荷數量對所述第一客戶端與所述第二客戶端進行排序。所述方法可更包括:至少部分地基於經加權的所述第一工作負荷數量將儲存資源的所述層級的所述第一分區分配給所述第一客戶端;以及至少部分地基於經加權的所述第二工作負荷數量將儲存資源的所述層級的所述第二分區分配給所述第二客戶端。
一種對儲存資源的層級進行分區的方法可包括:為儲存資源的所述層級的第一客戶端與第二客戶端確定第一分區計劃;基於所述第一分區計劃確定第一預期快取命中數量;為儲存資源的所述層級的所述第一客戶端與所述第二客戶端確定第二分區計劃;基於所述第二分區計劃確定第二預期快取命中數量;以及基於所述第一預期快取命中數量及所述第二預期快取命中數量選擇所述第一分區計劃或所述第二分區計劃中的一者。所述方法可更包括:基於所述第一分區計劃確定所述第一客戶端的第一預期命中比率;基於所述第一分區計劃確定所述第二客戶端的第二預期命中比率;基於所述第一分區計劃確定所述第一客戶端的第一預期工作量;以及基於所述第一分區計劃確定所述第二客戶端的第二預期工作量。確定所述第一預期快取命中數量可包括:確定所述第一客戶端的所述第一預期命中比率及所述第一預期工作量以及所述第二客戶端的所述第二預期命中比率及所述第二預期工作量的加權和。所述方法可更包括:為儲存資源的所述層級的所述第一客戶端與所述第二客戶端確定第三分區計劃;基於所述第三分區計劃確定第三預期快取命中數量;以及基於所述第一預期快取命中數量、所述第二預期快取命中數量及所述第三預期快取命中數量選擇所述第一分區計劃、所述第二分區計劃或所述第三分區計劃中的一者。
一種確定儲存資源的層級的客戶端的預期快取命中比率的方法可包括:記錄儲存資源的所述層級的所述客戶端的I/O交易;基於所記錄的所述I/O交易確定再使用距離;以及基於所述再使用距離確定所述預期快取命中比率。確定所述預期快取命中比率可包括:基於所記錄的所述I/O交易確定再使用距離的分佈函數;以及基於所述分佈函數確定所述預期快取命中比率。所述預期快取命中比率可基於再使用距離與快取大小之間的差。
一種確定儲存資源的層級的客戶端的預期工作量的方法可包括:記錄儲存資源的所述層級的所述客戶端的I/O交易;確定所記錄的所述I/O交易的加權平均;以及基於所述加權平均確定所述預期工作量。所述加權平均可呈指數進行加權。
一種對儲存資源的層級進行重新分區的方法可包括:將儲存資源的所述層級的第一分區分配給客戶端,其中所述層級至少部分地作為儲存快取運作;將儲存資源的所述層級的第二分區分配給所述客戶端,其中所述第二分區的大小可大於所述第一分區的大小;以及被動地更新所述第二分區。被動地更新所述第二分區可包括:基於所述客戶端的工作負荷的一或多個I/O交易更新所述第二分區。所述第二分區可基於分區調整及內容更新窗口進行分配。
一種對儲存資源的層級的資料進行預取的方法可包括:將儲存資源的所述層級的第一分區分配給客戶端,其中所述層級至少部分地作為儲存快取運作;確定所述客戶端的I/O請求大小的圖案;將儲存資源的所述層級的第二分區分配給所述客戶端,其中所述第二分區的大小可大於所述第一分區的大小;以及基於所述I/O請求大小的圖案來使用預取資料大小預取所述第二分區的資料。所述預取資料大小可包括客戶端的頂部I/O大小普及性(popularity)。所述方法可更包括對所述預取資料大小應用放大因數(amplification factor)。
一種對儲存資源的層級進行分區的方法可包括:基於對第一客戶端的特性的預先瞭解而將儲存資源的所述層級的第一區中的第一分區分配給所述第一客戶端;以及基於對第二客戶端的特性的預先瞭解而將儲存資源的所述層級的第二區中的第二分區分配給所述第二客戶端。所述方法可更包括調整所述第一區的大小及所述第二區的大小。所述第一區的所述大小與所述第二區的所述大小可成比例地調整。所述第一區的所述大小可基於所述第一區的第一需求數量進行調整,且所述第二區的所述大小可基於所述第二區的第二需求數量進行調整。所述第一區可包括讀取密集型區,且所述第一區的所述大小可基於工作集合大小進行調整。所述第一區可包括寫入密集型區,且所述第一區的所述大小可基於工作量大小進行調整。所述第一區可包括讀取-寫入混合區,且所述第一區的所述大小可基於工作量大小進行調整。所述特性可包括讀取比率、工作量大小或工作集合大小中的至少一者。
1 介紹
1.1 概述
具有儲存資源的一或多個層級的儲存系統可將層級中的一或多者分區成各別的分區,所述各別的分區中的每一者可由多個儲存客戶端中的一者存取。在一些實施例中,根據本揭露示例性實施例的分區管理器系統可為儲存客戶端中的一或多者週期性地及/或動態地調整層級中的一或多者的分區大小。分區調整過程(可被稱為重新分區)可使儲存系統的整體效能改善或最佳化及/或確保對儲存客戶端的公平性。在一些實施例中,根據本揭露示例性實施例的分區管理器系統可基於例如運行時間工作負荷分析、效能改善估測、服務品質(quality-of-service,QoS)、服務等級協議(service level agreement,SLA)及/或類似因素等一或多個因素來提供自動的重新分區決策(decision making)及/或操作。
1.2 儲存工作負荷
在用於遊戲流的儲存系統的一些實施例中,大百分比的遊戲輸入及/或輸出(I/O)工作負荷可為讀取密集型的或者甚至是唯讀的。根據本揭露示例性實施例的分區管理器系統及方法的一些實施例可基於讀取密集型工作負荷與非讀取密集型工作負荷之間的不同之處而提供不同的快取重新分區策略。
在儲存系統的一些實施例中,不同客戶端的工作負荷可具有不同的行為,且甚至一個客戶端的相同工作負荷在運行時間期間亦可能有所不同。根據本揭露示例性實施例的分區管理器系統及方法的一些實施例可同等地將頂部層級儲存資源分派給每一客戶端及/或使得客戶端能夠基於客戶端需求對頂部層級儲存資源進行自由競爭。然而,在一些實施例中,該些技術中的一者或兩者可能未充分利用儲存資源,包括頂部層級儲存資源。根據本揭露示例性實施例的分區管理器系統及方法的一些實施例可週期性地捕獲及/或預測I/O改變,以自適應地重新分配儲存資源,所述儲存資源包括頂部層級資源以及對具有不同突發等級的工作負荷使用不同的分區方法。依據實施細節而定,此可改善儲存快取命中比率及/或降低I/O管理成本。
在儲存系統的一些實施例中,對於不同的工作負荷而言I/O大小分佈可能不同。根據本揭露示例性實施例的分區管理器系統及方法的一些實施例可對第一層級-第二層級預取操作使用自適應I/O大小。依據實現細節而定,此可增大整體命中比率及/或減少I/O潛時。
在儲存系統的一些實施例中,在部署階段期間,可能不存在可用於實施頂部層級快取儲存至客戶端的有效分配的足夠的客戶端運行時間資料。根據本揭露示例性實施例的分區管理器系統及方法的一些實施例可使用例如來自客戶端圖案庫(pattern library)、供應商選擇硬體及/或軟體、QoS、SLA及/或類似物的對客戶端的預先瞭解(例如,先前瞭解)來對客戶端實行頂部層級快取儲存的初始分區。在一些實施例中,可基於對例如工作負荷讀取比率、工作負荷工作集合大小及/或類似因素等一或多個因素的預先瞭解而將不同的客戶端放置於不同的工作負荷區中。在一些實施例中,區劃可為物理區劃、虛擬區劃及/或其任意組合。在物理區劃中,粒度可大於或等於儲存元件的大小(例如,將多個儲存元件分組至區中)。在虛擬區劃中,粒度可小於或等於儲存元件(例如,儲存元件內部的區劃)。
1.3 分區管理
根據本揭露示例性實施例的分區管理系統及/或方法的一些實施例可週期性地及/或動態地對儲存系統的一或多個層級(例如,頂部層級)進行重新分區,所述儲存系統可由多個客戶端共享。一些實施例可將頂部層級儲存資源分配給需要所述頂部層級儲存資源的客戶端(例如基於動態I/O需求)及/或分配給可自所述頂部層級儲存資源受益最大的客戶端(例如基於效能改善的估測)。可基於例如分析運行時間工作負荷參數(例如讀取-寫入比率、工作集合改變、工作量改變及/或類似參數)來進行所述分配。
一些實施例可提供分區最佳化框架,所述分區最佳化框架可考慮一些或全部儲存客戶端的各種因素,例如最近的工作負荷監測窗口期間的工作負荷改變、一或多個客戶端的權重(例如,基於QoS、SLA及/或類似物)、在分區大小增大或較小時可能預期的估測命中比率及/或類似因素。
一些實施例可提供突發偵測方法以判斷當前工作負荷是否是突發的。若當前工作負荷是突發的,則在I/O突發到達之前,系統可能不具有足夠的時間來應用分區最佳化框架。因此,對於突發工作負荷,可使用積極分區方案(aggressive partitioning scheme)來迅速對客戶端之間的頂部層級儲存進行分區。在一些實施例中,積極分區方案可基於例如由工作量大小(對於非讀取密集型工作負荷)或工作集合大小(對於讀取密集型工作負荷)確定的最近需求來成比例地調整分區。
一些實施例可實施如下的技術:所述技術藉由在部署階段期間基於預先瞭解將客戶端分成不同的區來實行初始分區。依據實施細節而定,基於區的分區技術可減少元件側寫入放大、超量配置(over-provisioning)、所有權總成本及/或類似物且可改善潛時、通量、可預測性及/或類似物。
1.4 儲存類型
根據本揭露示例性實施例的分區管理系統、方法、裝置、工作流程及/或類似物可與例如以下任意類型的儲存一起使用:直接附接儲存(direct-attached storage,DAS)、儲存區域網路(storage area network,SAN)、分解儲存(disaggregated storage)及/或類似儲存。
在根據本揭露示例性實施例的DAS系統中,例如固態驅動機(solid state drive,SSD)及硬碟驅動機(hard disk drive,HDD)等儲存元件可附接至單個伺服器。此種配置可為在所述伺服器上運行的任何工作負荷提供相對高的效能。儲存元件容量及/或效能可用於所述伺服器且容量及/或效能可縱向擴展(scale-up)(向伺服器添加驅動機)或橫向擴展(scale-out)(藉由添加附加的伺服器)。
在根據本揭露示例性實施例的SAN系統中,儲存元件可排列成儲存陣列,所述儲存陣列可被供應成在網路上可用的一個或許多個伺服器。SAN系統可將儲存分配給許多伺服器(例如,幾十個或幾百個伺服器),此可增大容量利用率。
在根據本揭露示例性實施例的雲端計算的一些實施例中,客戶端元件可被實施為輕型終端,所述輕型終端可分派任務及/或收集所分派任務的結果,同時可對遠程分佈式伺服器集群實行重型計算任務。此種輕型終端/重型資料中心結構可涉及高可用性儲存系統。在一些實施例中,儲存輸入及/或輸出(I/O)在例如資料中心中可能是瓶頸(bottleneck)。
在根據本揭露示例性實施例的分解儲存系統中,一些數目的儲存元件可用作邏輯儲存池,所述邏輯儲存池可例如藉由高效能網路組構(fabric)被分配給網路上的任何伺服器。在一些實施例中,分解儲存系統可利用SAN的靈活性來提供本地儲存的效能及/或可為可動態重新配置的,此可使得物理資源能夠被重新配置成改善或最大化效能及/或減少潛時。
2. 架構
圖1示出根據本揭露示例性實施例的儲存系統架構的實施例。圖1中所示的架構可代表硬體、軟體、工作流程及/或其任意組合。
圖1中所示的實施例可包括應用伺服器層104及儲存層106。儲存層106可包括可被配置為具有一或多個層級的池的任意數目及/或類型的儲存資源,包括以下闡述的那些儲存資源。舉例而言,儲存資源的第一層級可作為儲存資源的一或多個其他層級的儲存快取運作。層級中的一或多者可被劃分成可被分配給儲存客戶端102中的一或多者的分區。
應用伺服器層104可包括被配置成使得所述一或多個儲存客戶端102能夠存取儲存層106中的儲存資源的池的任意數目及/或類型的計算及/或I/O資源,包括以下闡述的那些計算及/或I/O資源。
應用伺服器層104可經由一或多個連接108連接至儲存客戶端102中的一或多者。應用伺服器層104可經由一或多個連接110連接至儲存層106。可使用任意數目及/或類型的網路、互連及/或類似物來實施連接108及110,包括以下闡述的那些網路、互連及/或類似物。
應用伺服器層104及儲存層106可分別包括邏輯140及142,邏輯140及142可用於實施由相應層實行的任何功能,例如監測系統的操作、做出決策、實行系統操作、實行計算及/或類似功能。在一些實施例中,邏輯140及142可實施本文中所揭露的技術中的任一者,例如監測儲存層106的一或多個層級的工作負荷、確定工作負荷的讀取強度、偵測I/O存取中的突發、確定工作量、確定工作集合、確定重新分區策略、對儲存層的一或多個層級進行分區、實施分區策略、實施客戶端區劃技術及/或類似技術。
可使用硬體、軟體或其任意組合來實施邏輯140及142以及本文中闡述的方法、技術、過程及/或類似物中的任一者。舉例而言,在一些實施例中,可使用執行儲存於揮發性記憶體(例如動態隨機存取記憶體(dynamic random access memory,DRAM)及/或靜態隨機存取記憶體(static random access memory,SRAM))、非揮發性記憶體(例如快閃記憶體)及/或類似記憶體以及圖形處理單元(graphics processing unit,GPU)、神經處理單元(neural processing unit,NPU)及/或類似處理單元中的指令的以下元件來實施邏輯140及142中的任一者:組合邏輯、序列邏輯、一或多個定時器、計數器、暫存器、狀態機、複雜可程式化邏輯元件(complex programmable logic device,CPLD)、現場可程式化閘陣列(field programmable gate array,FPGA)、特殊應用積體電路(application specific integrated circuit,ASIC)、複雜指令集合電腦(complex instruction set computer,CISC)處理器及/或精簡指令集合電腦(reduced instruction set computer,RISC)處理器及/或類似物。
針對圖1中所示的實施例以及本文中闡述的全部其他實施例闡述的操作及/或組件是示例性操作及/或組件。在一些實施例中,可省略一些操作及/或組件,及/或可包括其他操作及/或組件。另外,在一些實施例中,操作及/或組件的時間次序及/或空間次序可有所變化。儘管一些組件可被示出為各別組件,然而在一些實施例中,可將單獨示出的一些組件整合至單個組件中,及/或可使用多個組件來實施被示出為單個組件的一些組件。
2.1 資料中心架構
圖2示出根據本揭露示例性實施例的儲存系統架構的示例性實施例。圖2中所示的系統可包括雲端客戶端層(cloud client layer,CCL)202、應用伺服器層(application server layer,ASL)204及儲存層206。在一些實施例中,儲存層206可被實施為後端儲存層(backend storage layer,BSL)。客戶端雲端層202與應用伺服器層204可例如藉由一或多個網路208連接。應用伺服器層204與儲存層206可例如藉由I/O路徑210連接。
在一些實施例中,客戶端雲端層202可包括任意數目及/或類型的雲端客戶端元件203(例如,異質元件),雲端客戶端元件203可經由任意數目及/或類型的網路連接至客戶端雲端層202及/或在客戶端雲端層202之間進行連接,且最終可經由網路208中的一或多者連接至應用伺服器層204。雲端客戶端元件203的實例可包括桌上型電腦及/或膝上型電腦、伺服器、智慧型電話、平板電腦、列印機、掃描器、網際網路連接設備及/或類似物。客戶端雲端層202可操縱任意數目的以下條件及/或過程:I/O擁塞、延遲及/或超時、工作負荷突波、封包漏失及/或類似條件及/或過程。
可基於任意數目及/或類型的網路硬體、軟體、協定及/或類似物而使用任意數目及/或類型的網路(包括局部區域網路(local area network,LAN)、都會區域網路(metropolitan area network,MAN)、廣域網路(wide area network,WAN)及/或類似網路)來實施所述一或多個網路208。網路類型的實例可包括乙太網路(Ethernet)、無線頻寬(InfiniBand)、光纖通道、無線保真(wireless fidelity,Wi-Fi)、藍芽(Bluetooth)及/或類似物。
在一些實施例中,可使用任意數目及/或類型的伺服器裝置來實施應用伺服器層204,所述伺服器裝置包括配置於一或多個底盤(chassis)、伺服器機架(server rack)、伺服器機架群組、資料室、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任意組合及/或類似物中的主板、開關板(switchboard)、I/O卡及/或模組、底板、中板、網路介面卡(network interface card,NIC)及/或類似物。應用伺服器層204可操縱任意數目的以下條件及/或過程:資源分配、資料競爭、I/O延遲及/或錯誤、I/O等待及/或排隊、I/O超時、鎖定(例如,過度鎖定)、系統不穩定、中央處理單元(central processing unit,CPU)開銷(overhead)及/或類似條件及/或過程。
可使用任意數目及/或類型的連接來實施I/O路徑210,所述連接包括一或多個互連及/或協定(例如快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)、計算快速鏈路(Compute Express Link,CXL)、進階可擴展介面(Advanced eXtensible Interface,AXI)及/或類似物)、一或多個儲存連接及/或協定(例如串列進階技術附接(advanced technology attachment,ATA)(Serial ATA,SATA)、串列附接小型計算器系統介面(small calculator system interface,SCSI)(Serial Attached SCSI,SAS)、快速非揮發性記憶體(Non-Volatile Memory Express,NVMe)及/或類似物)、一或多個網路連接及/或協定(例如乙太網路、光纖通道、無線頻寬及/或類似物)以及其組合(例如架構上NVMe(NVMe-over-Fabrics,NVMe-oF)及/或類似物)。
可使用例如以下任意數目及/或類型的儲存裝置來實施儲存層208:固態驅動機(SSD)、硬碟驅動機(HDD)、光學驅動機、基於任意類型的持續記憶體(例如具有塊狀電阻改變的交叉柵格非揮發性記憶體)的驅動機及/或類似儲存裝置及/或其任意組合。此種裝置可以任何形式及/或配置被實施為例如具有形狀因數(例如3.5英吋、2.5英吋、1.8英吋、M.2及/或類似形狀因數)及/或使用任何連接器配置(例如SATA、SAS、U.2及/或類似連接器配置)的儲存元件。可使用伺服器底盤、伺服器機架、資料室、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任意組合及/或類似物完全或部分地實施一些實施例及/或在伺服器底盤、伺服器機架、資料室、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任意組合及/或類似物內完全或部分地實施所述一些實施例。
在一些實施例中,應用伺服器層204與儲存層206的組合可實施資料中心。因此,依據實施細節而定,應用伺服器層204與儲存層206可被認為是近場排列,而客戶端雲端層202與應用伺服器層204可被認為是遠場排列。
圖2中所示的實施例可更包括一或多個分區管理器應用212,分區管理器應用212可例如在客戶端雲端層202與應用伺服器層204之間及/或在應用伺服器層204與儲存層206之間進行介接。在一些實施例中,分區管理器應用可確定如何將儲存層206中的儲存資源的一或多個層級(例如,儲存資源的頂部層級)分配給不同的客戶端(例如,雲端客戶端203)及/或其應用。
儘管本揭露的原理並非僅限於任何特定的實施細節,然而出於例示目的,一些示例性實施例可如下般實施。客戶端雲端層202可經由使用多吉位元組(gigabyte,GB)乙太網路連接(例如,10吉位元組/25吉位元組/40吉位元組/100吉位元組乙太網路)實施的一或多個LAN、MAN或WAN連接至應用伺服器層204。應用伺服器層204可採用一或多個PCIe互連,使用第四代PCIe(PCIe Generation 4,PCIe Gen 4)的所述一或多個PCIe互連可傳遞多於8吉位元組/秒的通量。應用伺服器層204可使用一或多個NVMe-oF連接而連接至儲存層206,例如NVMe儲存元件可經由所述一或多個NVMe-oF連接傳遞每秒數百萬個輸入及/或輸出操作(input and/or output operations per second,IOPS)。依據實施細節而定,此種實施例可減少或消除頻寬限制及/或瓶頸。
2.2 軟體I/O路徑架構
圖3示出根據本揭露示例性實施例的儲存系統軟體架構的實施例。圖3中所示的軟體架構可例如與圖2中所示的儲存系統架構一起使用,但圖3中所示的軟體架構亦可與其他系統一起使用。圖3中所示的實施例可包括雲端客戶端層(CCL)302、應用伺服器層(ASL)304及儲存層(BSL)306。
在一些實施例中,客戶端雲端層302可包括一或多個客戶端303,所述一或多個客戶端303中的每一者可運行一或多個作業系統(operating system,OS)316及一或多個應用(application,APP)314。在此實例中,可存在N個客戶端:客戶端1、客戶端2、…、客戶端N。在一些實施例中,客戶端303可被建模為作業系統316及/或應用314。依據實施細節而定,客戶端303可具有一或多個作業系統316及/或應用314。另外,每一作業系統316可代管任意數目的應用314。
依據實施細節而定,客戶端中的一些客戶端或全部客戶端可彼此隔離。客戶端的實例可包括圖2中所示的各別客戶端203中的任一者以及例如可自雲端服務供應商租賃給使用者的一或多個虛擬機(virtual machine,VM)。依據實施細節而定,例如VM等客戶端303可基於例如使用者應用而具有不同的工作負荷特性,且因此客戶端303可對儲存I/O速度具有不同等級的敏感度。
每一客戶端303(亦可被稱為儲存客戶端)可經由網路連接318連接至應用儲存層304,可例如使用任意數目及/或類型的網路連接(例如以上參照圖2闡述的那些網路連接)來實施所述網路連接318。對於VM,網路連接可被實施為虛擬網路連接。
應用伺服器層304可包括I/O濾波器320、分區管理器介面322及分區決策器324。在一些實施例中,I/O濾波器320可使用一或多個超管理器來實施或者作為一或多個超管理器的一部分來實施,所述一或多個超管理器亦可用於例如實施客戶端VM。I/O濾波器320可聚集客戶端的I/O相關統計資料並將該些統計資料提供至分區決策器324。在包括超管理器的實施例中,可使用超管理器軟體來代管一或多個VM,所述超管理器軟體可具有內置的I/O濾波器函數(例如,「IOFilter( )」),所述I/O濾波器函數可用於處置I/O請求及/或聚集I/O統計資料。出於例示目的,圖3中所示的實施例中的I/O濾波器320可被示出為超管理器,但可使用其他類型的I/O濾波器。
在一些實施例中,分區管理器介面322可為客戶端303中的一或多者提供標準I/O介面。依據實施細節而定,分區管理器介面322可為基於檔案的系統、鍵值物件儲存系統及/或任何其他類型的儲存系統及/或其組合提供操作,如以下更詳細地闡述。分區管理器介面322可經由I/O路徑326與儲存層306進行介接,可使用任意數目及/或類型的連接(例如參照圖2中所示的I/O路徑210闡述的那些連接)來實施I/O路徑326。
分區決策器324可在各種時間做出決策(例如以週期性間隔做出決策),以觸發對儲存層306的一或多個層級的重新分區。若一或多個客戶端遷移至其他層級且對應的遷移開銷亦遷移至其他層級,則重新分區可基於例如預測的客戶端效能。
儲存層306可操作儲存元件的一或多個層級328,所述儲存元件被排列為例如可在不同客戶端之間分配的儲存資源池。在此實例中,可存在M個層級:層級1、層級2、…、層級M。在一些實施例中,不同的層級可具有不同的特性,以例如用於存取速度、容量及/或類似物之間的折衷(tradeoff)。在圖3中所示的實施例中,所有儲存元件可被示出為各種類型的SSD,但可使用任意類型及/或配置的儲存資源。
儲存層306亦可包括分區器330,分區器330可基於來自分區決策器324的分區決策實行重新分區操作及/或觸發層級328之間(例如,頂部層級(層級1)與第二層級(層級2)之間)的一或多個內容更新。在一些實施例中,根據本揭露示例性實施例的分區管理器系統的分區器330可為每一客戶端303調整對儲存池中的一或多個層級328(例如,頂部層級)的分區的分配。客戶端303中的每一者可存取由分區器330分配的一或多個層級328的所述一或多個對應的分區。
儘管圖3中所示的組件中的一些組件可被示出為與其他特定組件相關聯的各別組件,然而在其他實施例中,組件可與其他組件組合、分離及/或相關聯。舉例而言,在一些實施例中,分區決策器324與分區器330可組合於位於應用伺服器層304、儲存層306及/或一些其他位置中的單個組件中。
分區管理器介面322可使得根據本揭露示例性實施例的分區管理器系統能夠例如經由應用程式化介面(application programming interface,API)向客戶端303提供一或多個介面及/或功能。
當來自客戶端的I/O請求到達應用伺服器層304時,超管理器I/O濾波器(hypervisor I/O filter,HIF)320可對每一I/O流進行區分並進行統計分析,例如確定工作負荷改變及/或頂部層級儲存元件快取命中比率。接著I/O請求可繼續進行至可為各種客戶端提供標準I/O介面的分區管理器介面322。
演算法1示出根據本揭露示例性實施例的介面的實施例的一些示例性操作,所述介面可在儲存層306上為客戶端303提供檔案導向儲存操作。當調用演算法1中所示的函數中的一者時,由所述演算法提供的返送類型可由「=>」符號表示。
圖4示出根據本揭露示例性實施例的檔案導向儲存操作的介面的輸入及輸出的示例性實施例。圖4中所示的實施例可與例如演算法1中所示的實施例一起使用。可使用對應的輸入來調用圖4中所示的函數中的每一者。接著,所述函數可使用對應的輸出作出因應,如圖4中所示。
演算法1
1 | # File-oriented Storage |
2 | Interface PDMS_IO_API_FS: |
3 | Function CreateANewFile(pathToFile) => bool |
4 | Function OpenAnExistingFile(pathToFile) => pointerToFile or fileContent |
5 | Function ReadFileContents(pathToFile) => fileContent |
6 | Function SearchDataOnAFile(pathToFile, data) => pointerToFile or bool |
7 | Function WriteIntoANewFile(pathToFile, data) => bool |
8 | Function UpdateContentsToAnExistingFile(pathToFile, offset, data) => bool |
9 | Function DeleteAFile(pathToFile) => bool |
10 | Function CloseAFile(pathToFile) => bool |
演算法2示出根據本揭露示例性實施例的介面的實施例的一些示例性操作,所述介面可在儲存層306上為客戶端303提供物件導向儲存操作。當調用演算法1中所示的函數中的一者時,由所述演算法提供的返送類型可由「=>」符號表示。
演算法2
1 | # Object-oriented Storage |
2 | Interface PDMS_IO_API_OBJ: |
3 | Function CreateANewObject(key, value) => bool |
4 | Function OpenAnExistingObject(key) => key orvalue |
5 | Function ReadObjectContents(key) => value |
6 | Function SearchDataOnAObject(key, value) => <key, value> or <key, value, offset> orbool |
7 | Function WriteIntoANewObject(key, value) => bool |
8 | Function UpdateContentsToAnExistingObject(key, offset, value) => bool |
9 | Function DeleteAObject(key) => bool |
10 | Function CloseAObject(key) => bool |
圖5示出根據本揭露示例性實施例的物件導向儲存操作的介面的輸入及輸出的示例性實施例。圖5中所示的實施例可與例如演算法2中所示的實施例一起使用。可使用對應的輸入來調用圖5中所示的函數中的每一者。接著,所述函數可使用對應的輸出作出因應,如圖5中所示。
在演算法1及圖4中示出的檔案導向的實施例中,介面可對檔案(可藉由所述檔案的路徑來指向所述檔案)進行操作。在演算法2及圖5中所示的物件導向的實施例中,介面可對鍵值對(可由鍵指向所述鍵值對)進行操作。
在一些實施例中,根據本揭露示例性實施例的分區管理器系統可基於例如客戶端請求來對不同的儲存系統進行調試。另外,依據實施細節而定,調試過程對於雲端客戶端層302及/或儲存層306可為透明的。在一些實施例中,可基於客戶端對附加儲存類型的需求來擴展分區管理器介面322以支援附加的I/O儲存類型(例如,客製的I/O儲存類型)。
在I/O請求通過分區管理器介面322之後,分區決策器324可對每一客戶端的應用的行為以及來自儲存層級328中的一或多者(例如,來自可作為儲存快取運作的頂部層級)的對應回饋進行分析。在一些實施例中,分區決策器324可使用此分析及回饋來調整頂部層級(層級1)的每一客戶端的分區,例如基於例如服務品質(QoS)及/或每一客戶端的實際工作負荷行為等因素來改善或最佳化整個儲存系統的整體效能及/或確保公平性。分區決策器324可基於運行時間工作負荷分析結果週期性地及/或動態地調整每一客戶端的層級328中的一或多者(例如,可為最高效能層級的頂部層級)的儲存分區大小。
在具有儲存元件的二或更多個層級的一些實施例中,可在多個層級對之間(例如在層級1與層級2之間、在層級2與層級3之間、在層級1與層級3之間及/或在類似層級對之間)實施本文中闡述的演算法及/或操作。
表1示出根據本揭露示例性實施例的全部SSD儲存層306的示例性實施例的一些示例性實施細節。可使用不同類型的儲存元件來實施每一層級,所述不同類型的儲存元件可適合於該層級的不同特性。表1中所示的細節可與例如圖3中所示的儲存層306的實施例一起使用。
在一些實施例中,出於例示原理的目的,可提供一些示例性值、參數及/或類似物,但所述原理並非僅限於該些實例且可使用其他值、參數及/或類似物。
表1
層級ID | 儲存元件 | 特性 | 讀取潛時(微秒) | 寫入潛時(微秒) |
層級1 | 交叉柵格塊狀電阻改變 | 非常高的效能 | 10微秒 | 10微秒 |
層級2 | SLC NVMe SSD | 高效能 | 25微秒 | 20微秒 |
層級3 | MLC NVMe SSD | 中等效能 | 50微秒 | 1400微秒 |
層級4 | TLC NVMe SSD | 大容量 | 250微秒 | 2700微秒 |
層級5 | QLC NVMe SSD | 大容量 | 283微秒 | 3000微秒 |
參照表1,可使用基於持續記憶體(例如具有塊狀電阻改變的交叉柵格非揮發性記憶體)的儲存元件來實施層級1,所述持續記憶體可提供非常高的效能。層級1可例如作為其他層級中的一或多者的儲存快取運作。可使用單層階胞元(single-level cell,SLC)NVMe SSD來實施層級2,所述SLC NVMe SSD可提供高效能,但不如層級1高。可使用多層階胞元(multi-level cell,MLC)NVMe SSD來實施層級3,所述MLC NVMe SSD可提供中等效能。可分別使用三層階胞元(triple-level cell,TLC)NVMe SSD及四層階胞元(quad-level cell,QLC)NVMe SSD來實施層級4及層級5,所述TLC NVMe SSD及QLC NVMe SSD可提供依次更低的效能但更高的容量。此種實施例可用於例如雲端計算應用。根據本揭露示例性實施例的分區管理器系統可例如在頂部層級中週期性地及/或動態地調整每一客戶端的分區,所述頂部層級可作為儲存系統(例如,分解儲存系統)的儲存快取運作。在一些實施例中,根據本揭露示例性實施例的分區管理器系統可在例如層級2與層級3之間應用相似的調整方法,其中層級2可作為層級3的快取層級運作,等等。
圖6示出根據本揭露示例性實施例的儲存層的示例性實施例。在圖6中所示的實施例中,儲存層606可為具有SSD與HDD的組合的實施層級628。表2示出可與例如圖6中所示的儲存層606一起使用的一些示例性實施細節。
表2
層級ID | 類型 | 使用實例 | 粒度級別 | 粒度實例 |
層級1 | SLC | 對遊戲運行時間資料及熱門遊戲影像的一部分(熱門檔案)進行快取 | 精細 | 檔案或區塊 |
層級2 | QLC | 熱門遊戲影像(整個遊戲)。 | 粗糙 | 遊戲影像 |
層級3 | HDD | 全部遊戲影像(整個遊戲)。 | 粗糙 | 遊戲影像 |
參照表2,可使用SLC NVMe SSD實施層級1,SLC NVMe SSD可提供非常高的效能等級及相對精細的粒度等級。層級1可例如作為其他層級中的一或多者的儲存快取運作。可使用QLC NVMe SSD實施層級2,QLC NVMe SSD可提供相對高的效能等級及相對粗糙的粒度等級。可使用HDD來實施層級3,HDD可提供相對較低的效能等級及相對粗糙的粒度,但成本相對低。
圖6及表2中所示的實施例可用於例如線上遊戲流服務資料中心。頂部層級(層級1)可用於對運行時間遊戲資料(例如遊戲的運行時間例子)、元資料、遊戲的狀況、熱門遊戲影像的全部或部分(例如,熱門檔案)及/或類似物進行快取。一些實施例可使用差量差分儲存方法來進一步節省空間。第二層級(層級2)可具有相對高的效能與相對大的容量的組合來對熱門遊戲影像進行快取。因此,層級2可作為層級3的快取運作。第三層級(層級3)可具有大容量且可用作遊戲影像(例如,所有遊戲影像)的倉庫。
2.3 工作流程架構
圖7示出根據本揭露示例性實施例的分區管理器系統的工作流程架構的示例性實施例。圖7中所示的實施例可用於例如本文中所揭露的實施例(包括圖1至圖6中所示的實施例)中的任一者、與本文中所揭露的實施例中的任一者一起使用或者結合本文中所揭露的實施例中的任一者使用及/或進行類似使用。出於例示目的,圖7中所示的實施例可在具有儲存層的系統的上下文中闡述,所述儲存層具有頂部層級,所述頂部層級可作為一或多個其他層級的儲存快取運作。然而,所述原理可應用於任何其他配置的層級及/或快取。
圖7中所示的實施例可包括工作負荷監測器子系統(子系統1)702、突發偵測器子系統(子系統2)710、策略選擇器子系統(子系統3)718及分區操作器子系統(子系統4)724。工作負荷監測器子系統702可包括工作負荷狀況監測器(組件1)704及命中比率監測器組件(組件2)706。突發偵測器子系統710可包括突發度計算器(組件3)714及突發偵測器(組件4)716。策略選擇器子系統718可包括積極解決方案組件(組件5)720及最佳化解決方案組件(組件6)722。分區操作器子系統724可包括分區器組件(組件7)726。
圖7中所示的工作流程可在整體循環中運作,以週期性地及/或動態地調整儲存層的一或多個層級中的每一客戶端的儲存分區大小。舉例而言,工作流程可基於運行時間工作負荷分析結果來調整頂部層級(例如,在一些實施方案中的最高效能層級)中的每一客戶端的儲存分區大小。
在一些實施例中,圖7中所示的工作流程可在儲存系統中並行運行的兩個時間窗口上運作。圖8示出根據本揭露示例性實施例的分區管理器系統的工作流程的時間窗口的示例性實施例。如圖8中所示,第一窗口(窗口1)可在相對短的週期上運作,在所述週期期間,工作流程可監測工作負荷行為及/或對由工作負荷監測器子系統702聚集的狀況資訊進行快取。
在一些實施例中,窗口1可被實施為效能監測滑動窗口(performance monitoring sliding window,PMSW)708,其中可在可隨時間移動的時期內對工作流程及/或快取狀況資料進行採樣、聚集、處理及/或類似操作。在一些示例性實施方案中,窗口1可具有約5分鐘的時期長度T1,但可使用任何其他時間段。在一些實施例中,窗口1可對突發偵測器子系統710可記錄由工作負荷監測器子系統702聚集的工作流程及/或快取狀況(例如,層級命中比率)資料的頻率進行設定。可由突發偵測器子系統710使用的工作負荷行為的實例可包括最近時期的工作集合(working set,WS)大小、最近時期的工作量(working volume,WV)大小、最近時期的讀取比率(ratio,R)及/或類似工作負荷行為,此可在以下進行更詳細地闡述。在一些實施例中,根據本揭露示例性實施例的分區管理器系統可保留k個最近連續或離散時期的工作流程及/或快取狀況資料,其中k可為任何數字。在一些示例性實施方案中,k可為10。在一些實施例中,可對所述k個時期的資料應用指數移動平均窗口(exponential moving average window,EMAW)技術。
在一些實施例中,窗口2可被實施為分區調整及內容更新窗口(partition adjustment and content update window,PACUW)712。窗口2可確定可觸發新的重新分區評估的重新分區時間段。在重新分區邊界處,突發度計算器組件714可由窗口2觸發,以確定用於計算突發度(burst degree,Bd)的方法,所述方法可基於讀取比率(R)來指示即將到來的I/O突發,此可在以下進行更詳細地闡述。在一些實施例中,窗口2可具有可較窗口1的一個時期大的窗口長度T2。舉例而言,T2可為約一個小時,但可使用任何其他時間段。在一些實施例中,依據實施細節而定,由於重新分區在頻寬、功耗及/或類似物方面可能相對昂貴,因此實施較窗口1長的窗口2可降低操作分區管理器系統的成本。在一些實施例中,可選擇窗口1的相對長度(T1)及窗口2的相對長度(T2)來使效能與開銷之間的折衷平衡。舉例而言,更頻繁地重新分區可提供改善的效能,但依據實施細節而定,改善的效能可能被與重新分區相關聯的開銷的增加所抵消。在重新分區之間,突發偵測器子系統710可繼續接收工作集合大小(WS)、工作量大小(WV)、讀取比率(R)及/或在窗口1時期期間可由工作負荷監測器子系統702收集的其他資料。
表3列出與根據本揭露示例性實施例的分區管理器系統的工作流程相關的各個態樣的一些示例性實施例。表3列出每一態樣以及對應的符號及對應的代碼符號,所述符號及所述代碼符號可用於例如本文中所揭露的一或多個演算法中。在一些實施例中,表3中列出的態樣可闡述如下。
工作量大小
可指示在儲存元件或儲存資源的其他單元上存取的資料總數量(例如,以位元組為單位)。在記憶體(例如,動態隨機存取記憶體(DRAM))相關的上下文中,工作量大小可被稱為佔用空間(footprint)。
工作集合大小
可指示被存取資料的總位址範圍(例如,以位元組為單位),所述總位址範圍可為例如工作量的工作位址的集合。在一些實施例中,大的工作集合可覆蓋更多的儲存空間。若快取大小大於或等於工作負荷的工作集合大小,則工作負荷的I/O命中比率可等於或接近100%,例如使用最近最少使用(least recently used,LRU)快取演算法。
讀取比率
可例如由讀取工作量除以總工作量來確定,其中總工作量可由讀取工作量與寫入工作量之和來確定。在一些實施例中,讀取比率的範圍可為零至百分之百[0%,100%],其中較高的讀取比率可指示較多的讀取密集型工作負荷。
窗口2
(例如,PACUW的長度)可指示重新分區的時間段T2。此窗口可觸發自突發偵測器子系統710經由策略選擇器子系統718至分區操作器子系統724的整個重新分區操作工作流程。
表3
態樣 | 代碼符號 | 符號 |
工作量大小 | WV | |
工作集合大小 | WS | |
讀取比率 | R | |
PMSW的時期 | W1 | |
PACUW | W2 |
再次參照圖7,在可由窗口2確定的間隔處,突發偵測器子系統710可基於例如最近確定的不同讀取比率(R)來計算突發度。(在一些實施例中,突發亦可被稱為尖波(spike)。)突發度計算可例如由突發度計算器714來實行。對於讀取密集型工作負荷(例如,基於讀取比率(R)確定),可基於工作集合(WS)大小改變來計算突發度。對於非讀取密集型工作負荷,可基於工作量(WV)及/或佔用空間大小改變來計算突發度。
在突發度計算器714確定突發度之後,突發度計算器714可將此資訊傳送至突發偵測器716,突發偵測器716可將突發度與預設臨限值進行比較,以判斷當前工作負荷可被表徵為突發的還是非突發的。突發/非突發判斷可用於確定在策略選擇器子系統718中使用哪種類型的重新分區策略。
若當前工作負荷是突發的,則圖7中所示的工作流程可調用積極解決方案組件720來應用積極重新分區策略,所述積極重新分區策略可例如基於一或多個最近PMSW時期期間的需求來成比例地調整每一客戶端的頂部層級分區。舉例而言,積極方法可基於每一客戶端最近的工作集合大小改變(對於讀取密集型工作負荷)或工作量大小改變(對於非讀取密集型工作負荷)來調整每一客戶端的分區。在一些實施例中,可相對迅速地實施積極策略,此可使得系統能夠迅速作出反應以適應即將到來的預期I/O突發。
然而,若當前工作負荷是非突發的,則所述系統可具有足夠的時間來應用使用最佳化解決方案組件722的最佳化框架,最佳化解決方案組件722可努力找到全域最佳分區解決方案,例如藉由求解、改善及/或最大化目標函數來最佳地利用頂部層級(例如,快取層級),如下所述。因此,對於非突發的工作負荷,最佳化解決方案組件722可被選擇成基於最佳化框架應用重新分區策略,所述最佳化框架可基於例如服務品質(QoS)及/或服務等級協議(SLA)及/或類似物考慮與所有代管客戶端相關的不同因素,例如一或多個最近PMSW時期中的工作負荷改變、在分區大小增大或減小時的估測命中比率、每一客戶端的權重。
基於由策略選擇器子系統718提供的所得分區策略,分區器組件726可例如在儲存層階的頂部層級上進行實際的重新分區操作。接著圖7中所示的工作流程可循環返回至等待突發偵測器子系統710中的窗口2觸發下一重新分區操作。
3. 突發偵測
根據本揭露示例性實施例的突發偵測器子系統710可偵測儲存層的當前工作負荷可為突發的還是非突發的,以使得策略選擇器子系統718能夠基於突發度來選擇重新分區策略,此乃因較高的突發度可容許較少的時間來作出反應,且反之亦然。在一些實施例中,突發(亦可被稱為尖波)可被表徵為在相對短的時間段內可進行的對相對大量的資料進行相對高數目的I/O存取。
在一些實施例中,突發偵測操作可考慮所有或大多數客戶端的I/O圖案,例如一或多個最近PMSW時期中的儲存層的所有I/O客戶端存取,以確定使用哪種策略進行重新分區。然而,在一些其他實施例中,突發狀況確定可集中於相對小的數目的客戶端(例如,基於每個客戶端)。
在一些實施例中,突發度計算可涉及基於所有或大多數客戶端對頂部層級儲存的最近存取的讀取比率(R)的不同方法。舉例而言,預設讀取比率臨限值
e可用於判斷最近工作負荷是讀取密集型還是非讀取密集型。出於例示目的,在本文中所揭露的一些示例性實施例中,
e可被設定為95%。然而,在其他實施方案中,
e可被設定為用於確定讀取密集型工作負荷的臨限值的任何合適的值,例如介於[0%,100%]的範圍內。
在一些實施例中,若讀取比率介於範圍[0,e)內,則工作負荷可被分類為非讀取密集型。在此種情形中,可使用工作量大小的改變計算突發度。在一些實施例中,工作量改變(亦可被稱為佔用空間)可包括所有所接觸位址的完整記錄。對於非讀取密集型工作負荷,可使用工作量計算突發度,此乃應若存在相對大的數目的寫入I/O,則可將每一新的寫入請求分派至新的槽(slot),且亦可對同一位址的重複寫入請求分派快取中的新的槽。因此,突發度計算可基於工作量大小的改變。
圖9示出根據本揭露示例性實施例的對非讀取密集型工作負荷的I/O請求的示例性實施例。在圖9中所示的實施例中,可在時間T0至T5處示出頂部層級(例如,儲存快取)902。表904可指示每次對資料塊A、B、C及D實行的讀取或寫入操作以及每一塊中的資料的數量。字母可指示資料塊,且帶有刻點標記(tick marks)的字母(例如,C’)可指示經更新資料。在時間T0至T3處,可將資料A、B、C及D寫入至頂部層級902。在時間T4處,兩個A塊及B塊中的兩者可由C’資料驅逐及覆寫。在時間T5處,可自頂部層級902讀取D塊中的一者。因此,儲存系統可為每一新的寫入請求分派新的槽,且亦可對同一位址的重複寫入請求分派快取中的新的槽(例如,在時間T4處的四個新的資料塊C)。因此,系統可使突發度計算基於工作負荷的工作量大小的改變。
演算法3示出根據本揭露示例性實施例的突發度計算的實施例的一些示例性操作。演算法3可例如由圖7中所示的突發度計算器組件714(子系統2的組件3)來實行。在演算法3中所示的實施例中,用於非讀取密集型情形的參數選擇的代碼可位於第4列至第7列處。
演算法3
1 | Subsystem_2_Burst_Detector: |
2 | Component_3_Burst_Degree_Cacluator: |
3 | preset threshold e =95 % |
4 | Function calBurst(): |
5 | ifwritePercentage in[0, e): |
6 | # non-read-intensive workload |
7 | burstDegree =calBurst(curWV, preWV) |
8 | else ifreadRatio in[e, 1]: |
9 | # read-intensive workload |
10 | burstDegree =calBurst(curWS, preWS) |
11 | Function calBurst(cur, pre): |
12 | return|cur -pre| /|cur| |
13 | Component_4_Burst_Detector: |
14 | preset threshold bt =0.5 |
15 | Function burstFlag(): |
16 | ifburstDegree>0.5: |
17 | returnTrue |
18 | else: |
19 | returnFalse |
在一些實施例中,若讀取比率介於範圍[e,1]內,則工作負荷可被分類為讀取密集型。在此種情形中,可使用工作集合大小的改變來計算突發度。在一些實施例中,工作集合可被表徵為工作量的去重複版本。
圖10示出根據本揭露示例性實施例的針對讀取密集型工作負荷的I/O請求的示例性實施例。在圖10中所示的實施例中,可在時間T0至T5處示出頂部層級(例如,儲存快取)1002。表1004可指示每次對資料塊A、B、C及D實行的讀取或寫入操作以及每一塊中的資料的數量。在時間T0至T3處,可自頂部層級1002讀取資料塊A、B、C及D。在時間T4處,可再次讀取資料塊C。在時間T5處,可再次讀取資料塊D。如圖10中所示,對於讀取密集型工作負荷,若所請求的I/O內容已在頂部層級1002中被快取(且仍存在於快取中),則所述系統可不為重複的I/O請求分派新的槽。因此,所述系統可使突發度計算基於工作負荷的工作集合大小的改變(例如,已被接觸的唯一位址)。
在演算法3中所示的實施例中,用於讀取密集型情形的參數選擇的代碼可位於第8列至第10列處。
一旦參數(例如,工作量大小或工作集合大小)已被選擇用於突發計算,便可使用所述參數計算突發度。在一些實施例中,可使用例如方程式1中所示的分段函數計算突發度。方程式1中所使用的符號中的一些符號可如下般進行表徵。
可表示當前PMSW時期的工作量大小。
可表示前一PMSW時期的工作量大小。
可表示當前PMSW時期的工作集合大小。
可表示前一PMSW時期的工作集合大小。
可使用差量函數追蹤當前PMSW窗口與前一PMSW窗口之間的工作集合的改變(
)或工作量大小的改變(
)。(在一些實施例中,可使用相同的方法來考慮多於兩個的PMSW窗口以計算突發度。)接著,可如下般計算所述兩個PMSW窗口之間的相對差作為突發度Bd:
方程式1
接著可將所計算的Bd的值與預先定義的突發臨限值Bt進行比較。若Bd > Bt,則可指示當前工作負荷可被表徵為突發的。Bt的值可被預設為任何合適的值,例如介於40%至60%的範圍內。在一些實施例中,將Bt的值設定成50%可確保可捕獲突發的開始(上升邊緣)及結束(下降邊緣)。舉例而言,若將Bt設定為50%,則可指示若偵測到多於50%的工作量大小改變(對於非讀取密集型情形)或工作集合大小改變(對於讀取密集型情形),則工作負荷被確定為突發的。
在一些實施例中,例如圖7中所示的組件3等突發度計算器組件的一些條件關係及支援考量因素可如下所示般。對於讀取密集型工作負荷,突發度計算可基於當前工作負荷的工作集合大小的改變。對於讀取密集型工作負荷,若所請求的I/O內容已在快取中被快取(且仍位於快取中),則儲存系統可不在頂部層級(例如,儲存快取)中為重複的I/O請求分派新的槽。因此,突發度計算可基於工作集合(其可包括已被接觸的唯一位址)的改變。
對於非讀取密集型工作負荷,突發度計算可基於當前工作負荷的工作量大小的改變。若工作負荷包括相對大的數目的寫入I/O,則可在頂部層級中為每一新的寫入請求分派新的槽且亦可在快取中為同一位址的重複寫入請求分派新的槽。因此,突發度計算可基於工作負荷的工作量的改變。在一些實施例中,工作量可為佔用空間,所述佔用空間可包括所有所接觸位址的完整記錄。因此,工作集合可被表徵為工作量的去重複版本。
在一些實施例中,例如圖7中所示的組件4等突發偵測器組件的一些條件關係及支援考量因素可如下所述般。對於突發工作負荷,解決最佳化框架可能花費較可在突發到來之前解決多的時間。因此,可對重新分區操作應用積極方法。在一些實施例中,積極方法可基於每一客戶端的工作集合大小(對於讀取密集型工作負荷)的最近改變或工作量(對於非讀取密集型工作負荷)的最近改變來調整每一客戶端的分區。對於非突發工作負荷,分區管理器系統可具有足夠的時間來解決最佳化框架。因此,可對重新分區操作應用可努力找到全域最佳分區解決方案以達成最佳目標函數的最佳化方法。
圖11示出根據本揭露示例性實施例的突發計算及突發偵測方法的示例性實施例。所述方法可在操作1102處開始,在操作1102中可將當前工作負荷的讀取比率與讀取比率臨限值
e進行比較。若讀取比率小於或等於
e,則所述方法可繼續進行至操作1104,在操作1104中,可使用工作集合的改變計算突發度Bd。然而,若在操作1102處確定出讀取比率大於
e,則所述方法可繼續進行至操作1106,在操作1106中,可使用工作量的改變計算突發度Bd。在操作1108處,可將突發度Bd與突發臨限值Bt進行比較。若突發度大於Bt,則所述方法可繼續進行至操作1112,在操作1112中確定當前工作負荷為突發工作負荷。然而,若在操作1110處突發度小於或等於Bt,則所述方法可繼續進行至操作1114,在操作1114中確定當前工作負荷為非突發工作負荷。
4. 突發工作負荷的分區方法
當突發I/O被例如突發偵測器子系統710等突發偵測器辨識時,根據本揭露示例性實施例的分區管理器系統可基於每一客戶端的工作集合大小(對於讀取密集型工作負荷)的最近改變或工作量大小(對於非讀取密集型工作負荷)的最近改變來在儲存層級(例如,可作為儲存快取運作的頂部層級)中為每一客戶端積極地調整分區。在一些實施例中,此可促成相對快速的重新分區操作,此可適應即將到來的I/O突發。
4.1 突發工作負荷的分區工作流程
在一些實施例中,根據本揭露示例性實施例的用於突發工作負荷的分區方法可至少部分地基於工作負荷的以下兩個態樣中的一或多者來確定每一客戶端的分區大小:(1)最近時期(例如,PMSW時期)期間的工作負荷改變;及/或(2)當前時期中的快取的命中比率。
儘管並非僅限於任何具體的實施細節,然而可例如由策略選擇器子系統718的積極解決方案組件720基於關於工作負荷的回饋(例如自圖7中所示的工作負荷監測器子系統702接收的資料)來使用以下闡述的用於突發工作負荷的分區方法。
在一些實施例中,可使用工作負荷改變計算需求空間大小(demanded space size,DSS),例如以迅速適應工作負荷改變。舉例而言,客戶端可能會經歷I/O突發,此可能涉及相對大量的快取空間。然而,若快取中不存在足夠的可用於I/O突發的空間,則可能會增加所述客戶端的延遲及/或潛時。在一些實施例中,DSS可用於減少或防止此種類型的情況。
在一些實施例中,可使用儲存快取命中比率計算保證最小空間大小(guaranteed minimal space size,GMSS)作為例如每一客戶端的快取的貢獻比率。在一些實施例中,此可用於減少或防止由其他客戶端的I/O突發導致的快取槽自快取被刷新。
圖12示出根據本揭露示例性實施例的用於突發工作負荷的分區方法的方法的示例性實施例。圖12中所示的方法可例如由圖7中所示的積極解決方案組件720來實行。所述方法可在操作1202處開始,在操作1202中可自PACUW窗口712獲得當前時期狀況(第3列至第4列),PACUW窗口712可在工作負荷監測器子系統702中記錄來自PMSW窗口708的多個時期資訊。在操作1204處,可如下所述般計算每一客戶端的工作負荷數量。在操作1206及1208處,可基於如下所述的工作負荷數量分別為每一客戶端計算快取上限及快取下限。在操作1210處,可基於每一客戶端的工作負荷數量及權重對客戶端列表進行排序,在一些實施例中,此可基於QoS進行。在操作1212處,可將快取逐個分區至每一客戶端,以滿足每一客戶端的上限,使得可首先為具有較高權重(例如,優先權)的客戶端分配分區。在操作1214處,可將分區計劃發送至分區操作子系統724以用於實施。
可使用任意類型的權重函數進行排序及/或分區操作。在一些實施例中,可使用任何權重函數來對工作負荷數量與QoS進行組合。在一些示例性實施方案中,基於百分比的QoS可乘以工作負荷數量。舉例而言,對於客戶端i,可使用工作負荷數量Wi及QoS百分比Qi將加權工作負荷數量計算為
, 方程式2
其中
可為所有客戶端
的集合中的迭代客戶端。
演算法4示出根據本揭露示例性實施例的用於突發工作負荷的分區方法的方法的實施例的一些示例性操作。演算法4可例如由圖7中所示的積極解決方案組件720來實行。在演算法4中所示的實施例中,用於獲得當前時期狀況的代碼可位於第3列至第4列處。
演算法4
4.2 工作負荷數量
1 | Subsystem_3_Stradegy_Selector: |
2 | Component_5_Aggressive_Solution: |
3 | # Step 1: Get current epoch status |
4 | curEpochStatus=getCurEpochStatus() |
5 | # Step 2: Calculate workload amount |
6 | workloadAmountList = foreach clientID, calWorkloadAmount(clientID, curEpochStatus) |
7 | # Step 3: Calculate cache upperbound of each client |
8 | upperboundList = foreach clientID, calUpperbound(clientID, curEpochStatus) |
9 | # Step 4: Calculate cache lowerbound of each client |
10 | lowerboundList = foreach clientID, calLowerbound(clientID, curEpochStatus) |
11 | forclientID in lowerboundList: |
12 | iflowerbound(clientID) >= upperbound(clientID): |
13 | lowerbound(clientID) = upperbound(clientID) |
14 | # Step 5: Sort clients by workload amount + QoS |
15 | sortedClientList=sortBy(workloadAmountList, QoSList) |
16 | # Step 6: Satisfy client's upperbound one-by-one, higher priority clients go first |
17 | plan = forclient insortedClientList: satisfy(upperboundList, lowerboundList) |
18 | # Step 7: Send plan to subsystem 4 |
19 | returnplan |
在一些實施例中,由於讀取密集型工作負荷新的快取槽可能不會修改內容,因此可不為重複請求的位址分配讀取密集型工作負荷新的快取槽。因此,如方程式3中所示,若最近PMSW時期工作負荷是非讀取密集型工作負荷,則可使用工作量作為工作負荷數量。然而,若最近PMSW時期工作負荷是讀取密集型工作負荷,則可使用工作集合作為工作負荷數量。
在每一PMSW時期結束時,根據本揭露示例性實施例的分區管理系統可檢查共享分解儲存系統的所有客戶端的最近狀況。表4示出可自工作負荷監測器子系統702獲得且由突發偵測器子系統710中的PACUW窗口712記錄的狀況資訊的一些示例性值。表4中提供的值僅是出於例示目的且可獲得及/或使用其他值。
如表4中所示,可選擇工作集合大小|S|或工作量大小|V|作為可用來計算下一時期分配的工作負荷數量|W|。
表4
客戶端ID(i) | R(最近時期中的讀取比率) | |S|(最近時期中的工作集合大小) | |V|(最近時期中的工作量大小) | |W|(最近時期中的工作負荷數量) | |C|(最近時期中的快取大小) | H(最近時期中的命中比率) |
客戶端1 | 97% | 100吉位元組 | 760吉位元組 | 100吉位元組 | 40吉位元組 | 35% |
客戶端2 | 78% | 120吉位元組 | 200吉位元組 | 200吉位元組 | 60吉位元組 | 70% |
客戶端3 | 47% | 30吉位元組 | 1430吉位元組 | 1430吉位元組 | 100吉位元組 | 43% |
客戶端4 | 98% | 10吉位元組 | 66吉位元組 | 10吉位元組 | 50吉位元組 | 29% |
在一些實施例中,狀況資訊可包括附加資訊,例如所接觸檔案編號、所接觸檔案部分對所接觸檔案大小百分比及/或類似資訊。
4.3 上限及下限
對於突發工作負荷,根據本揭露示例性實施例的分區管理系統可基於最近時期的客戶端的工作負荷數量來積極地及/或成比例地向每一客戶端分派頂部層級儲存資源(其可作為快取空間運作)。因此,所述系統可嘗試動態地及/或積極地將更多頂部層級儲存資源分派給在最近時期可具有較多突發I/O的客戶端。在一些實施例中,所述系統可基於客戶端的當前時期狀況而努力積極地將每一客戶端的下一時期快取空間推至其需求。為達成此種分配,可使用上限在所有客戶端之間按比例重新分配快取空間,如方程式4中所陳述。
方程式4
在一些實施例中,例如由於上限可基於比例分配方法而接近或匹配下一時期的大小,因此上限可被稱為需求空間大小(DSS)。
在一些實施例中,下限可用於確保一或多個客戶端可具有保證最小空間大小(GMSS),例如使得所述一或多個客戶端的快取資料可不會由於工作負荷的突發而輕易被刷新。舉例而言,基於最末時期的命中比率,快取的最末命中比率可在下一時期中潛在有用。因此,所述數量可用作每一客戶端的最小保證快取空間。
用於獲得每一客戶端的上限及下限的代碼可位於演算法4的第7列及第10列處。
在一些實施例中,若下限大於或等於上限,則可存在特殊情形,在所述情形中,所述系統可將上限及下限的最小值分派給上限及下限二者。亦即,上限=最小值(下限,上限)且下限=最小值(下限,上限)。舉例而言,此可發生在客戶端的當前時期具有相對高數目的快取命中(例如,下限可較大)時,而工作負荷在當前時期不被認為是突發的(例如,上限可較小)。在此種情形中,由於上限可為基於預測的目標,因此上限可被賦予對分區數量更大的影響。因此,DSS可覆蓋任何現有的GMSS。(在一些實施例中,GMSS可旨在防止客戶端的快取資料由於來自其他客戶端的突發而被完全刷新)。此可在例如演算法4的第11列至第13列中看到。
5. 非突發工作負荷的分區方法
在一些實施例中,對於非突發工作負荷,根據本揭露示例性實施例的分區管理器系統可具有足夠的時間來實行更廣泛的最佳化重新分區,此可考慮一或多個因素(例如估測命中比率、工作負荷、每一客戶端的權重及/或類似因素)。
5.1 非突發工作負荷的分區工作流程
在一些實施例中,根據本揭露示例性實施例的用於非突發工作負荷的重新分區工作流程可調整每一客戶端(v)的分區大小,以將目標函數最大化,所述目標函數可提供評估給定分區計劃的有效性的方式。
方程式5提供最佳化框架的實施例,所述最佳化框架可用於例如對儲存層的一或多個層級(例如,可作為儲存快取運作的頂部層級)進行重新分區。表5提供方程式5中使用的符號的一些示例性含義。儘管方程式5中所示的工作流程的實施例並非僅限於任何特定的實施細節,然而在一些實施例中,所述工作流程的實施例可例如由圖7中所示的最佳化解決方案組件722來實施。
表5
符號 | 含義 |
第一層級(快取層級)的總容量。 | |
, | 二者皆可表示客戶端v的當前快取大小。 |
可自 迭代的客戶端v的快取的離散改變(步驟)。客戶端 的快取大小可自0迭代至第一層級儲存的全部容量。可藉由改變 的範圍來添加每一客戶端的快取大小的客製上限或下限。 | |
基於QoS、SLA及/或類似物的客戶端 的權重。 一個實施方案可為 。 | |
一個客戶端 及所有客戶端集合 | |
在向當前快取大小添加改變 時客戶端 在下一時期的期望命中比率。 | |
客戶端 在下一時期的期望工作量。 | |
在最佳化解決方案下,分別是客戶端 的快取改變大小及所有客戶端的快取改變大小的集合。 | |
客戶端 的快取的新的大小。 |
方程式5 |
若客戶端在下一PMSW時期具有乘以其預期工作量(例如,
)的快取大小改變
(例如,
),則可藉由計算每一客戶端的預期命中比率的加權和來開始方程式5的框架。如以上章節4.1中所述,用語「權重」(
)可反映每一客戶端的QoS、SLA及/或類似物。用語
可針對一系列可能的快取分派情形進行迭代。在一些實施例中,迭代步驟的粒度可被設定成相對粗糙粒度的數量(例如,100吉位元組),此可減少與解決最佳化框架相關聯的開銷。
在一些實施例中,此結果的物理意義可被表徵為以每位元組快取容量表示的預期命中數量(例如,工作量,以位元組為單位),此可基於實施某個分區計劃在下一時期達成。因此,將方程式5的目標函數最大化可改善或最佳化分區計劃。
方程式5可包括約束部分(「
S.t.」),約束部分可應用以下限制:(1)頂部層級儲存中的每一客戶端的空間大小(例如,快取大小);(2)預期命中比率的範圍介於[0%,100%]內;(3)所有改變((
)的總和為零(由於快取空間的數量可能不會改變,因此快取空間可僅在客戶端之間重新分配);以及(4)所有客戶端的權重的總和為100%。
在一些實施例中,可使用方程式5中的目標函數為所有客戶端找到最佳化解決方案的差量(例如,頂部層級儲存數量的改變)列表(其中所述列表可被表示為
)。基於所述列表
,根據本揭露示例性實施例的分區管理器系統可為所有客戶端返送最終重新分區計劃,如方程式6中所示。
方程式6
5.2 命中比率估測
在演算法5中示出根據本揭露示例性實施例的基於再存取距離的分析建模框架的示例性實施例。可位於第1列至第6列的主程序可召用函數CDF.update(其中CDF可指示累積分佈函數)來更新CDF曲線(可在第8列至第12列處實施)。基於最新的CDF曲線,可藉由將給定的快取大小輸入至CDF的getProbability函數(可在第6列處實施)來估測命中比率。在一些實施例中,此可確定再使用距離可小於快取大小的所記錄存取資料的百分比。
函數runtimeUpdateRecordTable(可在第14列至第37列實施)可為在後台運行的單獨函數,當新的I/O請求到達時,所述函數可更新記錄表。
演算法5
1 | Function estimateHitRatio(clientID, cacheSize): |
2 | # update CDF record |
3 | CDF.update(clientID, getEpochID(), k) |
4 | # input: cacheSize as x-axis, we need to convert the unit |
5 | # output: probability (y-axis) of buckets having equal or less max reaccess distance than the cache size |
6 | returnCDF.getProbability(convertIOReqSizeToBucketsSize(cacheSize)) |
7 | |
8 | Function CDF.update(clientID, curEpochID, k): |
9 | # only focus on recent k (preset number) epochs entries |
10 | focusTable =recordTable[clientID].filter(volume ="epochID", rule =">K") |
11 | # build a CDF data strucutre, x-axis is max reaccess distance, and y-axis is the probability |
12 | buildCDF(focusTable.maxReuseDistance) |
13 | |
14 | Function runtimeUpdateRecordTable(clientID): |
15 | foreach IOReq inclientID: |
16 | buckets =convertIOReqToBuckets(IOReq) |
17 | forbucketID inbuckets: |
18 | curAccessTime +=1 |
19 | recordEntry =recordHashTable[clientID][bucketID] |
20 | # no record found, then create a new entry |
21 | if(recordEntry ==NULL): |
22 | recordEntry.setLastAccessTime(curAccessTime) |
23 | recordEntry.setEpochID(getEpochID()) |
24 | recordEntry.setMaxReuseDistance(infinite) |
25 | recordHashTable[clientID][bucketID] =recordEntry |
26 | # found record, then update it |
27 | else: |
28 | recordEntry.setLastAccessTime(curAccessTime) |
29 | if|recordEntry.getEpochID() -getEpochID()|< =k: |
30 | ifrecordEntry.getMaxReuseDistance() ==infinite: |
32 | recordEntry.setMaxReuseDistance(curAccessTime - recordEntry.getLastAccessTime()) |
33 | else: |
34 | # update ARD |
35 | recordEntry.setMaxReuseDistance(max(recordEntry. getMaxReuseDistance(),curAccessTime -recordEntry. getLastAccessTime())) |
36 | else: |
37 | recordEntry.setMaxReuseDistance(infinite) |
38 | recordEntry.setEpochID(getEpochID()) |
在演算法5中,函數
runtimeUpdateRecordTable(clientID)可在運行時間期間在後台運行。所述函數可首先將傳入的I/O請求(來自
客戶端 ID)轉換成資料桶(data bucket),所述資料桶可具有例如出於統計分析目的而被設定成5百萬位元組(megabyte,MB)或50百萬位元組的粒度。被稱為
curAccessTime的計數器可為每一新的資料桶自加1。
演算法5可記錄傳入的I/O請求資料桶的當前存取與其最末存取之間的「距離」。在一些實施例中,距離可指絕對再存取距離(Absolute Re-access Distance,ARD)而非唯一再存取距離(Unique Re-access Distance,URD)。
此可參照再存取間隔(Re-access Interval,RI)來理解。位址軌跡
T可為連續整數按遞增次序的映射,表示軌跡中的依次位置。可使用元組
來表示所有存取,其中
且其中
可表示位址且
可辨識其重複編號。軌跡中的位址
x的第一次出現可由
)表示。表達式
可表示反函數,且
可表示位址
第
次在軌跡中出現的位置。
接著所述函數可在記錄表中搜尋每一新的桶,此可藉由例如散列表(hash table)來實施,其中鍵可為桶ID,且值可為多個因素的元組。若未找到表項,則可指示此是所述資料桶第一次出現,因此可使用保存於記錄表中的表項的值創建新表項。在一些實施例中,當前的
時期 ID亦可儲存於所述表中,例如以進一步幫助淡出舊資料。用於此操作的代碼可位於演算法5的第10列至第29列處。
表6示出可由函數
runtimeUpdateRecordTable(clientID)記錄於記錄表中的一些示例性值。表6中提供的值僅是出於例示目的且可獲得及/或使用其他值。
表6
(鍵) | (值) | ||
桶ID | 最末存取時間 | 時期ID | 最大再使用距離 |
00000001 | 0 | 0 | 1233 |
00000022 | 14176 | 4 | 464 |
00000510 | 6586 | 1 | 342 |
00001492 | 435 | 0 | 53 |
... |
在演算法5中,可召用函數
estimateHitRatio來估測給定快取大小的快取命中比率。函數
estimateHitRatio可觸發函數
CDF.update,所述函數
CDF.update可例如藉由建立如圖13中所示的最大再使用距離及統計百分比(percentage of bins)的新的CDF曲線來更新CDF記錄。
圖13示出根據本揭露示例性實施例的命中比率估測操作的CDF曲線的示例性實施例。圖13中所示的CDF曲線可幫助估測給定
客戶端 ID及
快取大小的命中比率。在圖13中,X軸可表示最大再使用距離,且Y軸可表示最大再存取距離低於X軸中某個距離的桶數目的百分比。因此,命中比率估測操作可對不同的快取大小(最大再使用距離)進行迭代,以檢查其可為此工作負荷時間段提供的命中比率上限。在一些實施例中,僅當快取大小大於最大再使用距離時,才有可能存在快取命中。因此,可在快取大小與LRU快取演算法命中比率的理論最佳結果之間建立連接。在一些實施例中,所述曲線可表示最大快取命中比率。因此,可對其分派減少調整。
5.3 工作量估測
在一些實施例中,可使用平均技術來估測工作量
。舉例而言,一些實施例可使用移動窗口平均技術(例如加權移動平均(weighted moving average,WMA)及/或指數加權移動平均(exponentially weighted moving average,EWMA))來預測工作量。在一些實施例中,加權平均可被實施為具有乘法因數的平均,以賦予樣本窗口中不同位置處的資料不同的權重。因此,在數學上,加權移動平均可為基準點與固定加權函數的卷積。在一些實施例中,EWMA技術可涉及以算術級數減少的權重。
出於例示目的,一些實施例可在EWMA技術(其可採用一階無限脈衝回應濾波器來應用可呈指數下降的加權因數)及一些特定參數值的上下文中闡述。然而,根據本揭露,可獲得及/或使用其他技術及/或值。
表6提供以下方程式10中使用的符號的一些示例性含義。儘管方程式10中所示的工作流程的實施例並非僅限於任何特定的實施細節,然而在一些實施例中,所述工作流程的實施例可例如由圖7中所示的最佳化解決方案組件722來實施。
表6
符號 | 含義 |
時期ID t(時間順序) | |
時期t期間的客戶端v的工作量大小。 | |
權重降低的程度,可為0至1之間的恆定平滑因數。較高的α可較快地對較舊的觀測值進行計數。一些實施例可使用α=0.5的值。 | |
用於計算工作量的時期的數目(舉例而言,對於k=100,可使用最近的100個時期。) |
由於方程式10可為具有遞減項的無限和,因此根據本揭露示例性實施例的工作量估測技術可限制方程式10中使用的項的數目,以減少計算及/或儲存(例如,用於記錄I/O交易歷史的儲存)的開銷。舉例而言,記錄的前一時期的數目可被限制為值「k」。亦即,為對工作量的預測進行近似,可自方程式10省略第k項之後的項。因此,方程式10可被簡化成方程式11。
方程式11
在一些實施例中,在初始化階段期間,可存可用工作量大小的幾個資料點。因此,在初始化階段期間,可例如自最初的幾個觀察值及/或4個至5個PMSW時期的平均值來計算工作量。
6. 分區及內容更新
在策略選擇器子系統718確定出儲存層級(例如,可作為儲存快取運作的頂部層級)的分區策略之後,可將分區策略傳送至分區操作器子系統724以用於實施。在一些實施例中,實施分區策略可涉及驅逐及/或獲取操作。
6.1 分區及內容更新工作流程
圖14示出根據本揭露示例性實施例的分區及內容更新工作流程的示例性實施例。儘管圖14中所示的工作流程的實施例並非僅限於任何特定的實施細節,然而在一些實施例中,所述工作流程的實施例可例如由圖7中所示的分區器組件726來實施。在一些實施例中,用語「快取大小」、「快取空間」、「新的分區」及「配額」可互換地使用。
圖14中所示的工作流程可在操作1402處開始,在操作1402中,可將客戶端的新的分區的大小與其當前分區的大小進行比較。在一些實施例中,所述比較可得出三種情形中的一種。(情形1)若客戶端的新的分區小於其先前的大小,則工作流程可繼續進行至操作1404,在操作1404中,工作流程可驅逐客戶端的快取槽中的一或多者,接著將分區收縮至新的大小。(情形2)若客戶端的新的分區等於其先前的大小,則工作流程可繼續進行至操作1406,在操作1406中,工作流程可將分區保持在其當前大小。(情形3)若客戶端的新的分區大於其先前的大小,則工作流程可繼續進行至操作1408,在操作1408中,工作流程可增大分區的大小。在情形3中,客戶端的分區中的新的空間可具有兩個選項。(選項1)工作流程可繼續進行至操作1410,操作1410可被闡述為被動選項。在被動選項中,客戶端的分區中的新的空間最初是空白的。隨著新的I/O請求可逐步填充空白空間,新的空白空間可逐漸進行填充。(選項2)工作流程可繼續前進至操作1412,操作1412可被闡述為主動選項。工作流程可主動自另一儲存層級(例如,在快取是頂部層級時的第二層級)預取資料,且將所述資料複製至第一層級以填充空白空間。舉例而言,在一些實施例中,工作流程可將可能未被快取但可基於I/O歷史而被頻繁使用的暖資料(warm data)複製至客戶端的新的分區中的空白空間。在一些實施例中,在所有新的空白空間中進行填充之前,工作流程可繼續進行至操作1414,在操作1414中可如下所述般自適應地調整預取大小。
在完成重新分區之後,客戶端可繼續使用其新的配額,直至進行下一次重新分區操作。
在一些實施例中,使用被動選項(選項1)或主動選項(選項2)的決策可涉及一或多個折衷,所述一或多個折衷可基於系統實施細節進行權衡。舉例而言,由於在資料成為I/O請求的標的物之前可不移動資料,因此被動選項可更容易實施及/或可涉及較少的開銷。然而,對於被動選項,由於空白可能不會被填充,例如直至未來的I/O突發填充所述空白,因此快取空間增加的客戶端的命中比率可能不會得到充分利用。另外地或作為另外一種選擇,舉例而言,若對突發的預測不準確及/或若客戶端的工作負荷在下一時期改變,則空白空間中的一些空白空間可能不會得到充分利用。
在使用主動選項的情況下,由於快取中可存在更多可用資料,因此客戶端的命中比率可增大。另外,主動填充空白空間可達成快取空間的較佳利用率。然而,舉例而言,由於所述系統可實行一或多個操作來選擇(包括選擇之後的任何計算)且對先前未在第一層級中進行快取的暖資料進行傳送,因此主動選項可能會導致較高的開銷。另外,可能存在一些或全部預取的資料在下一時期可能沒有用(例如,再存取)的風險,進而導致額外的開銷。
演算法6示出根據本揭露示例性實施例的分區及內容更新工作流程的實施例的一些示例性操作。演算法6可例如由圖7中所示的分區器組件726來實行。在演算法6中所示的實施例中,用於處理情形1的代碼可位於第4列至第6列處,用於處理情形2的代碼可位於第7列至第10列處,且用於處理情形3(包括選項1及選項2)的代碼可位於第11列至第18列處。
演算法6
6.2 自適應預取大小調整
1 | Subsystem_4_Partition_Operator: |
2 | Component_7_Partitioner: |
3 | Function Partition(): |
4 | # Case 1: Client's new partition is smaller than its previous size, then PMDS needs to evict some of its cached slots, and then shrink the size of its partition. |
5 | ifCacheQuota[clientID, nextEpoch] < CacheQuota[clientID, curEpoch]: |
6 | cache.evictLeastRecentUsedDataToSecondTier(clientID, CacheQuota[clientID, curEpoch] -CacheQuota[clientID, nextEpoch]) |
7 | # Case 2: Client's new partition is equal to its previous size, PMDS keeps the current partition size. |
8 | else ifCacheQuota[clientID, nextEpoch] < CacheQuota[clientID, curEpoch]: |
9 | # keep the current quota plan |
10 | pass |
11 | # Case 3: Client's new partition is greater than its previous size, PMDS needs to increase the size of it and then we have two options. |
12 | else ifCacheQuota[clientID, nextEpoch] > CacheQuota[clientID, curEpoch]: |
13 | ifOPTION_1: |
14 | # passive operation: leave new slots blank |
15 | pass |
16 | else ifOPTION_2: |
17 | # proactive operation: prefetch some warm data from the second tier to fill the blank |
18 | prefetchWarmDataFromSecondTier(clientID, calPrefetchGranularity[clientID], CacheQuota[clientID, nextEpoch] -CacheQuota[clientID, curEpoch]) |
在重新分區操作期間,若客戶端的新的分區大於其先前的大小,且分區管理器系統決定主動填充新的分區中的空白空間(例如,如上所述的情形3,選項2),則根據本揭露示例性實施例的分區管理器系統的一些實施例可提供自適應預取大小調整(adaptive prefetch size adjustment,APSA)特性。
在一些實施例中,APSA特徵可例如基於最近時期中的每一客戶端的頂部I/O大小普及性來調整預取資料大小。舉例而言,APSA特徵可自適應地及/或自動地改變預取資料大小。預取技術可例如藉由在實際需要資料之前將所述資料自較慢的第二層級儲存預取至較快的第一層級(快取層級)儲存來提高執行效能。在主動操作選項中,在客戶端請求資料之前,可預取資料以在新分派的分區的空白空間中進行填充(例如,藉由對先前曾為空白的快取位置進行I/O請求)。
在一些實施例中,若在最近時期來自客戶端的大部分I/O處於頂部I/O大小(範圍)(例如,16千位元組(kilobyte,KB))中,則客戶端在未來可能或有可能遵循相同或相似的圖案。因此,若將來在第一層級中存在部分快取命中,則使用頂部I/O大小的粒度自第二層級預取暖資料可幫助再次繞過第二層級中的查找過程(此可為耗時的)。當在快取中只找到所請求I/O的一部分時,可能會發生部分快取命中,因此可實行第二層級查找來找到所請求I/O的其餘部分。
因此,藉由以頂部I/O大小的粒度實行預取,根據本揭露示例性實施例的分區管理器系統可幫助將部分快取命中升級成完全快取命中(例如,完全請求I/O可在第一層級中進行快取)。
方程式12示出根據本揭露示例性實施例的可用於實施自適應預取大小調整的方程式的實施例。方程式12可例如由圖7中所示的分區器組件726來實施。表7提供在方程式12中使用的符號的一些示例性含義且可進一步闡釋快取未命中、部分快取命中及完全快取命中之間的關係。
在一些實施例中,CachedIOReq可被表徵為新的I/O請求的所找到資料(在第一層級中進行快取),其可基於方程式12如下般進行計算。
方程式12
其中IOReq可指新的I/O請求中的資料集合,而CachedIO可指當前快取層級中的所有資料。IOReq及CachedIO集合的並集可為在快取中找到的的此I/O資料。
在一些實施例中,可使用例如預設預取放大因數AF來增大APSA特徵的靈活性。作為實例,放大因數可介於[-100%,100%]的範圍內。在一些實施例中,可例如藉由將AF設定成5%對預取粒度進行進一步調整,使得相較於「頂部I/O大小」,AF可預取額外5%的資料。例如在可考慮儲存元件區塊及頁面對齊的情況下,此可為有用的。舉例而言,交叉區塊邊界I/O可觸發較其I/O請求大小多的資料存取。
表7
快取狀況 | 子類別 | 方程式 |
快取未命中 | N/A | | CachedIOReq| =0 |
快取命中 | 部分快取命中 | | IOReq|>| CachedIOReq| |
快取命中 | 完全快取命中 | | IOReq|≤| CachedIOReq| |
演算法7示出根據本揭露示例性實施例的自適應預取大小調整特徵的實施例的一些示例性操作。演算法7可例如由圖7中所示的分區器組件726來實行。在演算法7中所示的實施例中,用於實施放大因數AF的代碼可位於第6列至第7列處。
演算法7
1 | Subsystem_4_Partition_Operator: |
2 | Component_7_Partitioner: |
3 | Function calPrefetchGranularity(): |
4 | preset prefetching amplification factor AF |
5 | result =list() |
6 | foreach clientID: |
7 | result[clientID] =getTopRangeIOSize(clientID) *(1 +AF) |
8 | returnresult |
圖15示出根據本揭露示例性實施例的自適應預取大小調整方法的示例性實施例。儘管圖15中所示的實施例並非僅限於任何特定的實施細節,然而在一些實施例中,所述實施例可例如由圖7中所示的分區器組件726來實施。
圖15中所示的方法可在操作1502處開始,在操作1502中所述方法可獲得預取放大因數AF。在操作1504處,所述方法可創建結果列表,所述結果列表可用於儲存自適應預取大小調整方法的結果。在操作1506處,所述方法可遍歷客戶端進行迭代以確定每一客戶端的頂部I/O資料大小。在操作1508處,可返送結果列表。
6.3 填充空白快取空間的資料選擇
在重新分區操作期間,若客戶端的新的分區大於其先前的大小,且分區管理器系統決定主動填充新的分區中的空白空間(例如,如上所述的情形3,選項2),則根據本揭露示例性實施例的分區管理器系統的一些實施例可選擇暖資料來填充空白空間。在一些實施例中,暖資料可不被快取但可基於I/O歷史而被頻繁使用。
演算法8示出根據本揭露示例性實施例的暖資料選擇方法的實施例的一些示例性操作。演算法8可例如由圖7中所示的分區器組件726來實行。
演算法8
1 | Subsystem_4_Partition_Operator: |
2 | Component_7_Partitioner: |
3 | Function prefetchWarmDataFromSecondTier(clientID, granularity, blankSize): |
4 | =list() |
5 | candidates.add(descendingSort(getGlobalHistoryRecord(), freq)) |
6 | candidates.remove(cachedIOList) |
7 | for each candidate chunk in candidates: |
8 | if size(dataToPrefetch)<blankSize: |
9 | dataToAdd=getChunkWithGranularity(chunk,granularity) |
10 | dataToAdd=trim(dataToAdd, blankSize-size(dataToPrefetch)) |
11 | dataToPrefetch.addData(dataToAdd) |
12 | else: |
13 | break |
14 | prefetch(dataToPrefetch, secondTier, firstTier) |
15 | return |
在演算法8中所示的實施例中,第4列至第6列處的代碼可創建候選列表,以將所有遞減排序的全域歷史記錄(global historical record,GHR)儲存於第二層級中,所述候選列表可例如藉由每一資料塊的存取頻率來進行排序。可使用任何塊大小(例如10百萬位元組)。在一些實施例中,可對全域歷史應用一或多種滑動窗口技術(例如,EWMA),以記錄在最近時期已被存取的I/O普及性統計(statistics for bins)。依據實施細節而定,此可更準確地反映暖資料存取行為。
如第6列處所示,藉由忽略已被快取的資料(
cachedIOList),所述方法可進一步自最熱至最冷對每一塊進行迭代,且可將資料添加成填充至
dataToPrefetch列表中(在一些實施例中,考慮在演算法7中計算的放大粒度),直至空白空間被填充。若仍存在任何空白空間且迭代的資料塊大於空白,則可修整資料塊以填充空白,以防止浪費任何空白空間。
如第14列處所示,一旦空白空間被填充,便可將
dataToPrefetch發送至預取函數,以實行自第二層級至頂部層級(快取層級)的實際內容更新。在內容更新完成之後,頂部層級儲存可使用任何快取演算法(例如LRU、應用感知快取替換(application-aware cache replacement,ACR)、具有自適應替換的時脈(clock with adaptive replacement,CAR)及/或類似物)作為快取運行。在一些實施例中,可支援直寫政策及/或回寫政策。
圖16示出根據本揭露示例性實施例的自適應預取大小調整方法的示例性實施例。儘管圖16中所示的實施例並非僅限於任何特定的實施細節,然而在一些實施例中,所述實施例可例如由圖7中所示的分區器組件726來實施。
圖16中所示的方法可在操作1602處開始,在操作1602中可創建候選列表。在操作1604處,可例如基於使用頻率對候選列表進行排序。在操作1606處,可自候選列表移除已被快取的資料。在操作1608處,可針對每一候選塊開始循環。只要將被預取的資料的大小小於空白大小,操作1610、1612及1614便可基於所選擇的粒度等級添加資料塊,修整可大於空白的資料,並將結果分別添加至要添加的資料列表。在操作1608處,一旦將被預取的資料的大小大於或等於空白大小,所述方法便可繼續前進至操作1616,操作1616可實施中斷操作,接著繼續進行至操作1618,在操作1618中,將預取資料實際寫入快取。所述方法可在操作1620處終止。
7. 基於預先瞭解的分區
在一些實施例中,在部署階段(亦可被稱為早期階段或啟動階段)期間,根據本揭露示例性實施例的分區管理器系統可能不具有足夠的資訊來向客戶端分配一或多個儲存層級(例如,可作為儲存快取運作的頂部層級)。在該些情況下,分區管理器系統可使用例如來自客戶端圖案庫、供應商選擇硬體及/或軟體、SLA、QoS及/或類似物的對客戶端I/O圖案的預先瞭解來創建分區計劃。
舉例而言,在遊戲流資料中心應用中,可存在對一或多個代管遊戲的表徵的預先瞭解,例如可涉及頻繁寫入小的隨機資料的第一人稱射擊遊戲,或者可涉及頻繁進行的大的順序讀取I/O的競賽遊戲。作為另一實例,在通用資料中心中,可存在對工作負荷的預先瞭解,例如在可為寫入密集型的虛擬機上工作的開發人員,且在虛擬機上的3D視訊編輯可為CPU密集型的且可具有混合有高工作量及工作集合大小的讀取-寫入I/O。
例如此類的預先瞭解可用於實施一或多種區劃技術,以藉由多個因素(例如,讀取比率、工作集合大小及/或根據預先瞭解的每一工作負荷的類似因素)來使工作負荷分離。區劃可為物理的、虛擬的或其任意組合。在一些實施例中,物理區劃的粒度可大於或等於儲存元件的大小,例如將多個儲存元件分組至一個區中。在一些實施例中,虛擬區劃的粒度可小於或等於儲存元件的大小,例如,儲存元件內部的區劃。
圖17示出根據本揭露示例性實施例的基於預先瞭解的區劃方法的示例性實施例。儘管圖17中所示的實施例並非僅限於任何特定的實施細節,然而在一些實施例中,所述實施例可例如由圖7中所示的分區器組件726來實施。
在圖17中所示的實施例中,對前四個客戶端(客戶端1、客戶端2、客戶端3及客戶端4)的預先瞭解可包括平均讀取比率、平均工作集合大小及平均工作量大小,如表1702中所示。在一些實施例中,平均值可基於歷史記錄的簡單平均值。作為另外一種選擇或另外地,在部署區劃過程中可使用除圖17中列出的那些因素之外的其他因素。
在圖17中所示的實施例中,頂部儲存層級1704可使用SSD實施,且第二儲存層級1706可使用HDD實施,但可使用任何其他數目及/或配置的層級及/或儲存元件。
在此實例中,頂部儲存層級1704可具有三個區:具有讀取比率介於[90%、100%]範圍內的工作負荷的客戶端的讀取密集型區、具有讀取比率介於[10%、90%)範圍內的工作負荷的客戶端的讀取-寫入混合區、以及具有讀取比率介於[0%、10%)範圍內的客戶端的寫入密集型區。該些實例僅是出於例示目的,且可對創建區使用其他數目的區、值的範圍及/或類似物。
在圖17中所示的實施例中,分區管理器系統可基於例如(1)讀取密集型區的工作集合大小及/或(2)讀取-寫入混合區及/或寫入密集型區的工作量大小來成比例地調整每一區的大小。在一些實施例中,可重複(例如,週期性地)應用如圖17中所示的比例區調整以更新區大小。
在一些實施例中,在部署完成之後,根據本揭露示例性實施例的分區管理器系統可使用本文中揭露的技術中的任一者在每一區中單獨運行。舉例而言,圖7中所示的整個循環可在每一區內部運行。
演算法9示出根據本揭露示例性實施例的基於預先瞭解的區劃方法的實施例的一些示例性操作。演算法9可例如由圖7中所示的分區器組件726來實行。
演算法9
1 | Function ZoneDeployment(preknowledgeTable, topTierStorage): |
2 | preset zoneReadRatioThresholds |
3 | zoneMemberPlan =compareReadRatioAndPlaceInZone(preknowledgeTable, zoneReadRatioThresholds) |
4 | forzone inzonePlan: |
5 | formember inzone: |
6 | zoneAmount[zone] +=selectWorkingSetOrWorkingVolume(member) |
7 | zoneSizePlan =adjustZoneSizeProportioanllyBasedOn(zoneAmount) |
8 | assignClientsToZone(zoneMemberPlan, ZoneSizePlan) |
在演算法9中所示的實施例中,函數
ZoneDeployment可採用兩個輸入
preknowledgeTable及
topTierStorage,且可使用預設值
zoneReadRatioThresholds,如第2列處所示,其可為任意數目的區。在第3列處,所述函數可藉由將
preknowledgeTable中的每一客戶端的讀取比率與臨限值進行比較來創建
zoneMemberPlan。在第4列至第6列,接著可對
zoneMemberPlan進行迭代,且基於成員客戶端的工作集合大小(對於讀取密集型區)或工作量大小(對於其他區)計算每一區的需求量。在第7列處,接著所述函數可基於每一區的需求數量成比例地調整區大小。在第8列處,所述函數可基於區成員計劃(zoneMemberPlan)及區大小計劃(ZoneSizePlan)將客戶端分配至區。
在一些實施例中且依據實施細節而定,根據本揭露示例性實施例的基於預先瞭解的區劃方法可:(1)減少元件側寫入放大;(2)減少超量配置(可相似於早期替換,此乃應在此兩種情形中主機可消耗更多元件);(3)減少儲存元件中的記憶體(此可相對昂貴);(4)改善潛時、通量及/或可預測性;及/或(5)對軟體生態系統進行賦能,此乃因多個利益相關者可自一或多個改善受益。
圖18示出根據本揭露示例性實施例的基於預先瞭解的區劃工作流程的示例性實施例。儘管圖18中所示的實施例並非僅限於任何特定的實施細節,然而在一些實施例中,所述實施例可例如由圖7中所示的分區器組件726來實施。
圖18中所示的實施例可在操作1802處開始,在操作1802中可藉由將預先瞭解表中的每一客戶端的讀取比率與區讀取比率臨限值進行比較來創建區成員計劃。在操作1804處,工作流程可對區成員計劃進行迭代且基於成員客戶端的工作集合大小(對於讀取密集型區)或工作量大小(對於其他區)來計算每一區的需求數量。在操作1806處,工作流程可基於每一區的需求數量成比例地調整區大小。在操作1808處,工作流程可基於區成員計劃及區大小計劃將客戶端分派給區。
圖19示出根據本揭露示例性實施例的操作儲存系統的方法的實施例。所述方法可在操作1902處開始。在操作1904處,所述方法可將儲存資源的層級的第一分區分配給第一客戶端,其中所述層級至少部分地作為儲存快取運作。在操作1906處,所述方法可將儲存資源的層級的第二分區分配給第二客戶端。在操作1908處,所述方法可監測第一客戶端的工作負荷。在操作1910處,所述方法可監測第二客戶端的工作負荷。在操作1912處,所述方法可基於所監測的第一客戶端的工作負荷及所監測的第二客戶端的工作負荷將儲存資源的層級的第一分區重新分配給第一客戶端。所述方法可在操作1914處結束。
以上所揭露的實施例已在各種實施細節的上下文中進行闡述,但本揭露的原理並非僅限於該些或任何其他具體細節。舉例而言,一些功能已被闡述為由某些組件實施,但在其他實施例中,所述功能可分配於位於不同位置且具有各種使用者介面的不同系統及組件之間。某些實施例已被闡述為具有特定的過程、操作等,但該些用語亦囊括其中可使用多個過程、操作等來實施特定過程、步驟等的實施例或者其中可將多個過程、操作等整合至單一過程、步驟等中的實施例。對組件或部件的引用可僅指代所述組件或部件的一部分。舉例而言,對積體電路的引用可指代所述積體電路的全部或僅一部分,且對區塊的引用可指代整個區塊或者一或多個子區塊。除非上下文顯而易見,否則在本揭露及申請專利範圍中使用例如「第一」及「第二」等用語可僅是為了區分所述用語所修飾的事物且可能並不指示任何空間次序或時間次序。在一些實施例中,「基於」可指代「至少部分地基於」。在一些實施例中,「分配」可指代「至少部分地分配」。對第一部件的引用可能並不暗示第二部件的存在。為方便起見,可提供各種組織輔助(例如章節標題及類似物),但根據該些輔助及本揭露的原理佈置的標的物不受該些組織輔助界定或限制。
本文中所揭露的原理具有獨立的實用性且可被各別地實施,且並非每個實施例均可利用每個原理。然而,所述原理亦可以各種組合來實施,所述組合中的一些組合可以協同方式放大各別原理的益處。因此,根據本專利揭露的發明原理,可對上述各種細節及實施例進行組合以生成附加的實施例。由於可在不背離本發明概念的條件下對本專利揭露的發明原理進行佈置及細節上的潤飾,因此此種變更及潤飾被認為落於以下申請專利範圍的範圍內。
102:儲存客戶端
104、204、304:應用伺服器層(ASL)
106、206、606:儲存層(BSL)
108、110:連接
140、142:邏輯
202、302:雲端客戶端層(CCL)
203:雲端客戶端元件/客戶端/雲端客戶端
208:網路
210、326:I/O路徑
212:分區管理器應用
303:客戶端
306:儲存層/固態驅動機(SSD)儲存層
314:應用(APP)
316:作業系統(OS)
318:網路連接
320:I/O濾波器 / 超管理器I/O濾波器(HIF)
322:分區管理器介面
324:分區決策器
328:層級/儲存層級
330:分區器
628:實施層級
702:工作負荷監測器子系統
704:工作負荷狀況監測器
706:命中比率監測器組件
708:效能監測滑動窗口(PMSW)/PMSW窗口
710:突發偵測器子系統
712:內容更新窗口(PACUW)/PACUW窗口
714:突發度計算器/突發度計算器組件
716:突發偵測器
718:策略選擇器子系統
720:積極解決方案組件
722:最佳化解決方案組件
724:分區操作器子系統/分區操作子系統
726:分區器組件
902、1002:頂部層級
904、1004、1702:表
1102、1104、1106、1108、1110、1112、1114、1202、1204、1206、1208、1210、1212、1214、1402、1404、1406、1408、1410、1412、1414、1502、1504、1506、1508、1602、1604、1606、1608、1610、1612、1614、1616、1618、1620、1802、1804、1806、1808、1902、1904、1906、1908、1910、1912、1914:操作
1704:頂部儲存層級
1706:第二儲存層級
T1:時期長度/相對長度
T2:時間段/窗口長度/相對長度
各圖未必按比例繪製,且出於例示目的,在所有圖中具有相似的結構或功能的部件可一般由相同的參考編號或其部分表示。各圖僅旨在利於達成對本文中闡述的各種實施例的說明。各圖並未闡述本文中所揭露的教示內容的每個態樣,且不對申請專利範圍的範圍進行限制。為防止圖式變得模糊,可能並未示出所有的組件、連接及類似物,且並非所有的組件皆可具有參考編號。然而,組件配置的圖案在圖式中可容易地顯而易見。附圖與說明書一同示出本揭露的示例性實施例,且與說明一同用於闡釋本揭露的原理。
圖1示出根據本揭露示例性實施例的儲存系統架構的實施例。
圖2示出根據本揭露示例性實施例的儲存系統架構的示例性實施例。
圖3示出根據本揭露示例性實施例的儲存系統軟體架構的實施例。
圖4示出根據本揭露示例性實施例的檔案導向(file-oriented)儲存操作的介面的輸入及輸出的示例性實施例。
圖5示出根據本揭露示例性實施例的物件導向(object-oriented)儲存操作的介面的輸入及輸出的示例性實施例。
圖6示出根據本揭露示例性實施例的儲存層的示例性實施例。
圖7示出根據本揭露示例性實施例的分區管理器系統的工作流程架構的示例性實施例。
圖8示出根據本揭露示例性實施例的分區管理器系統的工作流程的時間窗口的示例性實施例。
圖9示出根據本揭露示例性實施例的混合讀取與寫入工作負荷的示例性實施例。
圖10示出根據本揭露示例性實施例的混合讀取與寫入工作負荷的示例性實施例。
圖11示出根據本揭露示例性實施例的突發計算及突發偵測方法的示例性實施例。
圖12示出根據本揭露示例性實施例的用於突發工作負荷的分區方法的方法的示例性實施例。
圖13示出根據本揭露示例性實施例的命中比率估測操作的累積分佈函數(cumulative distribution function,CDF)曲線的示例性實施例。
圖14示出根據本揭露示例性實施例的分區及內容更新工作流程的示例性實施例。
圖15示出根據本揭露示例性實施例的自適應預取大小調整方法(adaptive prefetch size adjustment method)的示例性實施例。
圖16示出根據本揭露示例性實施例的自適應預取大小調整方法的示例性實施例。
圖17示出根據本揭露示例性實施例的基於預先瞭解的區劃(zoning)方法的示例性實施例。
圖18示出根據本揭露示例性實施例的基於預先瞭解的區劃工作流程的示例性實施例。
圖19示出根據本揭露示例性實施例的操作儲存系統的方法的實施例。
1902、1904、1906、1908、1910、1912、1914:操作
Claims (20)
- 一種操作儲存系統的方法,所述方法包括: 將儲存資源的層級的第一分區分配給第一客戶端,其中所述層級至少部分地作為儲存快取運作; 將所述儲存資源的所述層級的第二分區分配給第二客戶端; 監測所述第一客戶端的工作負荷; 監測所述第二客戶端的工作負荷;以及 基於所述第一客戶端的所述工作負荷及所述第二客戶端的所述工作負荷將所述儲存資源的所述層級的所述第一分區重新分配給所述第一客戶端。
- 如請求項1所述的方法,其中所述第一分區是基於所述第一客戶端的所述工作負荷的輸入及/或輸出(I/O)需求進行重新分配。
- 如請求項1所述的方法,其中所述第一分區是基於所述第一客戶端的所述工作負荷的效能改變估測進行重新分配。
- 如請求項1所述的方法,其中所述第一分區是基於所述第一客戶端的所述工作負荷的讀取-寫入比率進行重新分配。
- 如請求項1所述的方法,其中所述第一分區是基於所述第一客戶端的所述工作負荷的工作集合進行重新分配。
- 如請求項1所述的方法,其中所述第一分區是基於所述第一客戶端的所述工作負荷的工作量進行重新分配。
- 如請求項1所述的方法,更包括: 確定所述第一客戶端的所述工作負荷及所述第二客戶端的工作負荷的突發度;以及 基於所述突發度偵測所述儲存資源的層級的存取突發。
- 如請求項1所述的方法,更包括: 基於所述第一客戶端的所述工作負荷確定所述第一客戶端的第一快取需求;以及 基於所述第二客戶端的所述工作負荷確定所述第二客戶端的第二快取需求; 其中所述第一分區基於所述第一快取需求被分配給所述第一客戶端;且 其中所述第二分區基於所述第二快取需求被分配給所述第二客戶端。
- 如請求項1所述的方法,更包括: 記錄所述第一客戶端的所述工作負荷的輸入及/或輸出(I/O)交易; 基於所記錄的所述輸入及/或輸出交易確定再使用距離;以及 基於所述再使用距離確定預期快取命中比率。
- 如請求項1所述的方法, 記錄所述第一客戶端的所述工作負荷的輸入及/或輸出(I/O)交易; 確定所記錄的所述輸入及/或輸出交易的加權平均;以及 基於所述加權平均確定預期工作量。
- 如請求項1所述的方法,其中重新分配所述第一分區包括增大所述第一分區的大小,所述方法更包括基於所述第一客戶端的所述工作負荷的一或多個輸入及/或輸出(I/O)交易更新所述第一分區。
- 如請求項1所述的方法,其中重新分配所述第一分區包括增大所述第一分區的大小,所述方法更包括: 確定所述第一客戶端的輸入及/或輸出(I/O)請求大小的圖案;以及 基於所述輸入及/或輸出請求大小的圖案使用預取資料大小來預取所述第一分區的資料。
- 如請求項1所述的方法,其中所述第一分區基於對所述第一客戶端的特性的預先瞭解而被分配給所述第一客戶端。
- 一種對儲存資源的層級進行分區的方法,所述方法包括: 確定所述層級的第一客戶端及層級的第二客戶端的讀取工作量及寫入工作量; 基於所述讀取工作量及所述寫入工作量來確定工作負荷類型;以及 基於所述工作負荷類型在所述第一客戶端與所述第二客戶端之間對儲存資源的所述層級進行分區。
- 如請求項14所述的方法,更包括: 基於所述讀取工作量及所述寫入工作量確定讀取比率;以及 基於所述讀取比率確定所述工作負荷類型。
- 如請求項14所述的方法,更包括: 基於所述工作負荷類型確定工作集合大小;以及 基於所述工作集合大小在所述第一客戶端與所述第二客戶端之間對儲存資源的所述層級進行分區。
- 如請求項14所述的方法,更包括: 基於所述工作負荷類型確定工作量大小;以及 基於所述工作量大小在所述第一客戶端與所述第二客戶端之間對儲存資源的所述層級進行分區。
- 一種對儲存資源的層級進行分區的方法,所述方法包括: 為儲存資源的所述層級的第一客戶端與第二客戶端確定第一分區計劃; 基於所述第一分區計劃確定第一預期快取命中數量; 為儲存資源的所述層級的所述第一客戶端與所述第二客戶端確定第二分區計劃; 基於所述第二分區計劃確定第二預期快取命中數量;以及 基於所述第一預期快取命中數量及所述第二預期快取命中數量選擇所述第一分區計劃或所述第二分區計劃中的一者。
- 如請求項18所述的方法,更包括: 基於所述第一分區計劃確定所述第一客戶端的第一預期命中比率; 基於所述第一分區計劃確定所述第二客戶端的第二預期命中比率; 基於所述第一分區計劃確定所述第一客戶端的第一預期工作量;以及 基於所述第一分區計劃確定所述第二客戶端的第二預期工作量。
- 如請求項19所述的方法,其中確定所述第一預期快取命中數量包括:確定所述第一客戶端的所述第一預期命中比率及所述第一預期工作量以及所述第二客戶端的所述第二預期命中比率及所述第二預期工作量的加權和。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063088447P | 2020-10-06 | 2020-10-06 | |
US63/088,447 | 2020-10-06 | ||
US17/168,172 US11782624B2 (en) | 2020-10-06 | 2021-02-04 | Worflow-based partition allocation |
US17/168,172 | 2021-02-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202215248A true TW202215248A (zh) | 2022-04-16 |
TWI861417B TWI861417B (zh) | 2024-11-11 |
Family
ID=80931351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110124868A TWI861417B (zh) | 2020-10-06 | 2021-07-07 | 操作儲存系統的方法、以及對儲存資源的層級進行分區的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11782624B2 (zh) |
KR (1) | KR20220045902A (zh) |
CN (1) | CN114385073A (zh) |
TW (1) | TWI861417B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11836360B2 (en) * | 2021-12-08 | 2023-12-05 | International Business Machines Corporation | Generating multi-dimensional host-specific storage tiering |
CN115043120B (zh) * | 2022-06-22 | 2024-05-10 | 一汽丰田汽车(成都)有限公司长春丰越分公司 | 高效的智能仓储系统及存储方法 |
US11838188B1 (en) * | 2022-09-19 | 2023-12-05 | Verizon Patent And Licensing Inc. | Systems and methods for control of applications based on quality of service monitoring |
KR20240116198A (ko) | 2023-01-20 | 2024-07-29 | 삼성전자주식회사 | 가속기 모듈 및 이를 포함하는 컴퓨팅 시스템 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5016876A (en) | 1988-10-14 | 1991-05-21 | Williams Electronics Games, Inc. | Video display co-processor for use in a video game |
US5052685A (en) | 1989-12-07 | 1991-10-01 | Qsound Ltd. | Sound processor for video game |
US5357604A (en) | 1992-01-30 | 1994-10-18 | A/N, Inc. | Graphics processor with enhanced memory control circuitry for use in a video game system or the like |
US5388841A (en) | 1992-01-30 | 1995-02-14 | A/N Inc. | External memory system having programmable graphics processor for use in a video game system or the like |
US6331856B1 (en) | 1995-11-22 | 2001-12-18 | Nintendo Co., Ltd. | Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6986137B1 (en) * | 1999-09-28 | 2006-01-10 | International Business Machines Corporation | Method, system and program products for managing logical processors of a computing environment |
US7024452B1 (en) | 2001-07-13 | 2006-04-04 | Vignette Corporation | Method and system for file-system based caching |
US7107403B2 (en) * | 2003-09-30 | 2006-09-12 | International Business Machines Corporation | System and method for dynamically allocating cache space among different workload classes that can have different quality of service (QoS) requirements where the system and method may maintain a history of recently evicted pages for each class and may determine a future cache size for the class based on the history and the QoS requirements |
US7660897B2 (en) * | 2004-08-03 | 2010-02-09 | International Business Machines Corporation | Method, system, and program for distributing application transactions among work servers |
US7831793B2 (en) | 2006-03-01 | 2010-11-09 | Quantum Corporation | Data storage system including unique block pool manager and applications in tiered storage |
US8538921B2 (en) | 2006-04-24 | 2013-09-17 | Yahoo! Inc. | File caching |
US7613876B2 (en) | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
EP3796169A1 (en) * | 2011-12-27 | 2021-03-24 | Netapp, Inc. | Proportional quality of service based on client usage and system metrics |
US9054992B2 (en) * | 2011-12-27 | 2015-06-09 | Solidfire, Inc. | Quality of service policy sets |
US9081504B2 (en) * | 2011-12-29 | 2015-07-14 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Write bandwidth management for flash devices |
US9183151B2 (en) * | 2013-08-30 | 2015-11-10 | Vmware, Inc. | Thread cache allocation |
GB2529670A (en) | 2014-08-28 | 2016-03-02 | Ibm | Storage system |
US10579272B2 (en) | 2015-04-07 | 2020-03-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Workload aware storage platform |
US9703664B1 (en) | 2015-06-24 | 2017-07-11 | EMC IP Holding Company LLC | Self adaptive workload classification and forecasting in multi-tiered storage system using ARIMA time series modeling |
TWI545453B (zh) * | 2015-08-25 | 2016-08-11 | 國立清華大學 | 分散式系統及其資料庫管理方法及管理系統 |
US10146469B2 (en) | 2015-09-29 | 2018-12-04 | EMC IP Holding Company, LLC | Dynamic storage tiering based on predicted workloads |
US10353634B1 (en) | 2016-03-28 | 2019-07-16 | Amazon Technologies, Inc. | Storage tier-based volume placement |
KR20180031289A (ko) * | 2016-09-19 | 2018-03-28 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US10360127B1 (en) | 2017-07-24 | 2019-07-23 | EMC IP Holding Company LLC | Techniques for identifying I/O workload patterns using key performance indicators |
US20190196969A1 (en) | 2017-12-22 | 2019-06-27 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptive cache load balancing for ssd-based cloud computing storage system |
US10831526B2 (en) | 2017-12-29 | 2020-11-10 | Virtual Instruments Corporation | System and method of application discovery |
US10691357B2 (en) | 2018-08-08 | 2020-06-23 | International Business Machines Corporation | Consideration of configuration-based input/output predictions in multi-tiered data storage system management |
US20190042457A1 (en) * | 2018-08-22 | 2019-02-07 | Intel Corporation | Cache (partition) size determination method and apparatus |
US10922142B2 (en) | 2018-10-31 | 2021-02-16 | Nutanix, Inc. | Multi-stage IOPS allocation |
US20200175074A1 (en) * | 2018-12-04 | 2020-06-04 | Vmware, Inc. | Tree structure aware cache eviction policy |
US10916306B2 (en) * | 2019-03-07 | 2021-02-09 | Western Digital Technologies, Inc. | Burst mode operation conditioning for a memory device |
CN111857539B (zh) * | 2019-04-25 | 2024-04-12 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机可读介质 |
-
2021
- 2021-02-04 US US17/168,172 patent/US11782624B2/en active Active
- 2021-07-07 TW TW110124868A patent/TWI861417B/zh active
- 2021-08-19 CN CN202110953967.1A patent/CN114385073A/zh active Pending
- 2021-09-29 KR KR1020210129181A patent/KR20220045902A/ko active Pending
-
2023
- 2023-10-03 US US18/376,436 patent/US20240036756A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240036756A1 (en) | 2024-02-01 |
US20220107743A1 (en) | 2022-04-07 |
CN114385073A (zh) | 2022-04-22 |
TWI861417B (zh) | 2024-11-11 |
US11782624B2 (en) | 2023-10-10 |
KR20220045902A (ko) | 2022-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102226017B1 (ko) | 동적으로 입도를 업데이트하는 적응적 캐시 대체 매니저 및 공유 플래시-기반 스토리지 시스템의 파티셔닝 방법 | |
CN109962969B (zh) | 用于云计算存储系统的自适应缓存负载均衡的方法和装置 | |
TWI861417B (zh) | 操作儲存系統的方法、以及對儲存資源的層級進行分區的方法 | |
US10387202B2 (en) | Quality of service implementation in a networked storage system with hierarchical schedulers | |
US8838931B1 (en) | Techniques for automated discovery and performing storage optimizations on a component external to a data storage system | |
US8868797B1 (en) | Techniques for automated discovery of storage devices and their performance characteristics | |
Koller et al. | Centaur: Host-side ssd caching for storage performance control | |
US10496541B2 (en) | Dynamic cache partition manager in heterogeneous virtualization cloud cache environment | |
US8954381B1 (en) | Determining data movements in a multi-tiered storage environment | |
Tai et al. | Improving flash resource utilization at minimal management cost in virtualized flash-based storage systems | |
US9823875B2 (en) | Transparent hybrid data storage | |
US20210157740A1 (en) | Efficient cache management | |
US11762770B2 (en) | Cache memory management | |
US20180121237A1 (en) | Life cycle management of virtualized storage performance | |
US20210117240A1 (en) | Cpu utilization for service level i/o scheduling | |
Bhimani et al. | FIOS: Feature based I/O stream identification for improving endurance of multi-stream SSDs | |
Maruf et al. | Memtrade: Marketplace for disaggregated memory clouds | |
US10782922B2 (en) | Storage device volume selection for improved space allocation | |
US11513849B2 (en) | Weighted resource cost matrix scheduler | |
CN109783006B (zh) | 计算系统及操作计算系统的方法 | |
Tai et al. | SLA-aware data migration in a shared hybrid storage cluster | |
Meyer et al. | Supporting heterogeneous pools in a single ceph storage cluster | |
US20230079746A1 (en) | Managing cache replacement in a storage cache based on input-output access types of data stored in the storage cache | |
Yang | Flash-based storage management in cloud computing datacenter infrastructures | |
Wang | Dynamic Memory Management for Key-Value Store |