CN107870732B - 从固态存储设备冲刷页面的方法和设备 - Google Patents
从固态存储设备冲刷页面的方法和设备 Download PDFInfo
- Publication number
- CN107870732B CN107870732B CN201610849719.1A CN201610849719A CN107870732B CN 107870732 B CN107870732 B CN 107870732B CN 201610849719 A CN201610849719 A CN 201610849719A CN 107870732 B CN107870732 B CN 107870732B
- Authority
- CN
- China
- Prior art keywords
- flush
- page
- flushing
- state storage
- pages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/217—Hybrid disk, e.g. using both magnetic and solid state storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例涉及从固态存储设备冲刷页面的方法和设备。具体而言,本公开公开了一种从固态存储设备冲刷页面的方法包括基于一个冲刷周期的时段长度和构建一个冲刷事务所需的时段长度来确定第一数目,第一数目指示在冲刷周期中能够被构建的冲刷事务的最大数目;以及在冲刷周期中,以第一数目为上限从固态存储设备冲刷页面。本公开还公开了一种从固态存储设备冲刷页面的设备和用于执行一种从固态存储设备冲刷页面的方法的步骤的计算机程序产品。
Description
技术领域
本公开的实施例总体上涉及存储技术,更具体地,涉及从固态存储设备冲刷页面的方法和设备。
背景技术
在存储技术中,多层高速缓存栈技术已经得到使用。在多层高速缓存栈技术中,使用了固态存储设备,即,固态存储盘(solid storage disk,SSD)。在多层高速缓存栈技术的应用过程中,有时需要执行从固态存储设备向硬盘冲刷页面的操作。然而,在现有技术中,当执行从固态存储设备向硬盘冲刷页面的操作,存在诸如冲刷过程的吞吐量较低之类的问题,从而影响应用多层高速缓存栈技术的高效性,并且可能给用户带来不良的用户体验。
发明内容
总体上,本公开的实施例提出了从固态存储设备冲刷页面的方法。
在第一方面,本公开的实施例提供了一种从固态存储设备冲刷页面的方法。该方法包括:基于一个冲刷周期的时段长度和构建一个冲刷事务所需的时段长度来确定第一数目,所述第一数目指示在所述冲刷周期中能够被构建的冲刷事务的最大数目;以及在所述冲刷周期中,以所述第一数目为上限从所述固态存储设备冲刷页面。
在第二方面,本公开的实施例提供了一种电子设备。该电子设备包括:处理器;以及存储器,所述存储器被耦合到所述处理器并且存储有供所述处理器执行的指令,所述指令当由所述处理器执行时,使得所述设备执行:基于一个冲刷周期的时段长度和构建一个冲刷事务所需的时段长度来确定第一数目,所述第一数目指示在所述冲刷周期中能够被构建的冲刷事务的最大数目;以及在所述冲刷周期中,以所述第一数目为上限从固态存储设备冲刷页面。
在第三方面,本公开的实施例提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行使得机器执行根据本公开的第一方面的一种从固态存储设备冲刷页面的方法的步骤。
通过下文描述将会理解,根据本公开的实施例,可以实现根据中央处理器的使用来构建冲刷事务以及使用每个RAID的队列深度来避免忙碌的卷(例如,EMC公司的产品中的flare卷)阻塞冲刷过程,从而可以提高冲刷过程的吞吐量。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了多层高速缓存栈技术中的多层高速缓存栈的概览;
图2是SSD高速缓存设备的示意图;
图3示出了在某些实施例中的从固态存储设备冲刷页面的方法300;
图4示出了在某些实施例中的SSD高速缓存所涉及的RAID管理中的各RAID的深度;
图5示出了RAID的忙碌程度的时间排序;
图6示出了在某些实施例中的从固态存储设备冲刷干净页面的方法600的流程图;
图7示出了在某些实施例中的从固态存储设备冲刷脏页面的方法700的流程图;
图8在某些实施例中的装置800的框图;以及
图9示出了可以用来实施本公开的实施例的设备900的框图。
在所有附图中,相同或相似参考数字表示相同或相似元素。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而,应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在此使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。
图1示出了多层高速缓存栈技术中的多层高速缓存栈的概览。该多层高速缓存栈从上至下包括三层,即,动态随机存取存储器(DRAM)高速缓存层,SSD高速缓存层以及独立磁盘冗余阵列(RAID)管理层。在操作中,当试图从多层高速缓存栈读取数据时,分为三种情况:情况一,当在DRAM高速缓存中命中需要读取的数据时,从DRAM高速缓存读取该数据;情况二,当在DRAM高速缓存中未命中而在SSD高速缓存中命中需要读取的数据时,从SSD高速缓存读取该数据,也即从SSD高速缓存所属于的固态存储盘读取该数据;情况三,当在DRAM高速缓存和在SSD高速缓存中均未命中需要读取的数据时,从硬盘(也即硬盘驱动器,HDD)读取该数据。
根据图1中所图示的,SSD高速缓存是多层高速缓存栈中的第二层高速缓存。图2是SSD高速缓存设备的示意图。如图2中所示,SSD高速缓存设备具有两个被配置有两个固态存储设备(SSD对)的RAID 1,即,设备0和设备1。应当理解,图2中的RAID的类型、RAID 1的数目以及每个RAID 1中的固态存储设备的数目仅为示例而非限制。在图2中所示出的SSD高速缓存设备中,SSD高速缓存将每对固态存储设备视为可以用来存储用于用户的数据的设备。用于用户的数据可以是热数据,即被访问较多的数据。在SSD高速缓存中,每个被高速缓存的页面(例如,大小为64kb)与元数据对应,该元数据被存储在固态存储设备中并且存储与固态存储设备以及HDD中的页面的映射信息以及指示该页面是否为“脏”的数据。干净页面是指在固态存储设备中的如下页面,该页面在HDD中已具有相同页面数据。对照而言,脏页面是指在固态存储设备中的如下页面,该页面在HDD中不具有相同的页面数据,因而需要将页面数据复制到硬盘中。在SSD高速缓存设备中,每个SSD高速缓存能够高速缓存特定数目的页面(例如,N个页面)。为此,SSD高速缓存将分配N个影子页面以跟踪未被高速缓存在固态存储设备中的IO历史信息。该历史信息可以用来判断数据时冷数据还是热数据。在操作中,SSD高速缓存使用后台线程来执行一些后台任务,例如:将热数据提升到SSD高速缓存中,在SSD高速缓存设备被降级(例如,RAID1中的一个固态存储设备出现故障,因此为了避免数据丢失,需要将另一个固态存储设备中的数据存储到HDD中)时冲刷高速缓存设备,在收缩SSD高速缓存设备(例如,从SSD高速缓存设备减少一个RAID1)时冲刷页面,在对高速缓存设备调整大小时处理过度供应,处理垃圾箱以及清洁脏页面。
尽管目前已经实现了多层高速缓存栈技术中的多层高速缓存栈,尤其是其中的SSD高速缓存设备,但是在当前使用的技术中,当从固态存储设备向HHD冲刷页面时存在一些问题。
首先,在针对SSD高速缓存的实现方式的先前发布中,使用被绑定到核2(即,多核处理器中的第二个核)的后台线程(即,指定核2作为这些后台线程的执行者)来执行一些后台服务,比如将用户数据提升到SSD高速缓存中,在SSD高速缓存设备被降级时将用户数据冲刷到HDD中,在SSD高速缓存设备被收缩时将用户数据冲刷到HDD中,将脏页面清洁到HDD中以及在用户卷被移除时逐出页面(例如,在删除用户卷时删除数据)。这些后台服务以15毫秒(ms)的时间间隔被调用。对于每个服务,后台线程构建对应的事务(即,操作,例如,删除、提升、移除等)并且在每个周期将它们递送至底层设备。对于将用户数据冲刷到HDD中,现有系统定义后台线程构建最多8个事务,并且在每个周期将它们递送到底层驱动器RAID管理。然而,这一实现方式并未考虑系统的状态。
因此,即使在系统空闲时也只能够在15ms中将最多8个页面冲刷到HDD中。这限制了系统吞吐量。对于大的SSD高速缓存而言,当SSD高速缓存设备被降级、SSD高速缓存设备被收缩以及SSD高速缓存被毁坏时将花费数小时来将页面冲刷到HDD。以200G的SSD高速缓存为例,其具有构成SSD高速缓存的1490542个页面。假设热用户数据被完全提升到SSD高速缓存中,那么为了将1490542个页面冲刷到HDD中,将花费1490542/8*(15/1000)=2800秒,接近一小时。
其次,当前实现方式为所有HDD和快闪盘使用一个固定的深度。深度是指可以被并行执行的事务的数目并且是指全局的深度。因此,只要一个卷达到了该固定的深度之后,其他卷均无法再继续操作。这同样限制了将页面从固态存储设备刷到HDD以及更新固态存储设备上的对应的元数据的吞吐量。例如,如果一个卷忙碌,并且被排队的请求的数目达到最大队列深度,则后台线程将在这一卷上阻塞并且无法从其他卷冲刷更多页面。这也延长了将所有页面从固态存储设备冲刷到HDD的时间。
而且,在从降级的/收缩的固态存储设备冲刷页面的过程期间,这一固态存储设备将仍然服务于IO。因此,这增加了固态存储设备中的干净的页面由于被上述IO中的写入命令命中而变脏的可能性。这也导致了将消耗更多时间来冲刷固态存储设备中的页面。
为了至少部分地解决以上以及其他可能存在的问题,根据本公开的实施例,构建与中央处理器能力相适应的更多事务,并且为对应于多个用户卷的每个RAID组使用一个队列深度以避免一个忙碌卷阻塞该RAID组的整个冲刷过程。该队列深度是动态的,并且可以根据HDD和固态存储设备的IO负载情况而被调整。具体而言,以下讨论了在SSD高速缓存被降级、SSD高速缓存被毁坏或者SSD高速缓存设备被移除时如何加速冲刷过程。本公开根据当前中央处理器能力构建冲刷事务,并且每个RAID组使用一个队列深度以避免一个忙碌卷阻塞该RAID组的整个冲刷过程。本公开使用两个列表来维持高速缓存的页面。一个列表用来维持干净的高速缓存的页面。另一个列表用来维持脏的高速缓存的页面。冲刷过程首先冲刷干净的高速缓存页面。这减小了干净的高速缓存的页面变脏的可能性。在冲刷干净的高速缓存的页面之后,其开始冲刷脏的高速缓存的页面。
具体而言,冲刷一个被高速缓存的页面的过程可以被分为4个子过程:(1)构建冲刷事务;(2)从固态存储设备读取页面中用户数据;(3)向HDD写入该页面中的用户数据;以及(4)更新固态存储设备上与该页面对应的元数据,这例如包括使该元数据无效(即,作废)以及删除该元数据。对于干净的页面,仅需上述子过程(1)和(4),对于脏的页面,则需要全部上述子过程(1)-(4)。
子过程(1)由于通常不涉及IO操作而可以由中央处理器直接执行,而子过程(2)-(4)由于涉及IO而通常在固态存储设备和HDD上被执行。此外,子过程(2)仅仅涉及从固态存储设备中读取数据并且通常被很快地完成,因此在本公开中并未详细进行讨论。在本公开中,主要关注于子过程(1)、(3)和(4)。
图3示出了在某些实施例中的从固态存储设备冲刷页面的方法300。在方法300中涉及构建冲刷事务。通常,一个专用线程将被建立以用于构建冲刷事务,这一专用线程作为冲刷线程被绑定到多个处理器中的一个核。构建单个冲刷事务的过程可以参照存储技术领域中的惯常方法进行,在此不再赘述。
如图所示,在302,基于中央处理器时间来确定构建冲刷事务的开始时间与结束时间。操作系统通常提供一些用于获得中央处理器时间的接口。例如,linux内核提供全局变量Jiffies以记录中央处理器时间。因此,可以利用操作系统提供的上述接口来测量构建冲刷事务所需的时间。具体而言,为了计算构建冲刷事务的时间,可以在(1)构建冲刷事务的开始处,以及(2)构建冲刷事务的结束处分别插入一个采样点。如上所述,在这两个采样点,可以获得两个Jiffies值J1和J2,它们即为构建冲刷事务的开始时间与结束时间。
在304,基于在302确定的构建冲刷事务的开始时间与结束时间来确定构建冲刷事务所需的时段长度。具体而言,基于在302获得的两个Jiffies值J1和J2,构建冲刷事务所需的时段长度例如可以是BT=J2-J1。
应当理解,在302和304处执行的动作是为了确定构建冲刷事务所需的时段长度,因此它们并非是必须的,并且因此在图3中以虚线示出。例如,当构建冲刷事务所需的时段长度已通过其他方式被计算出或者可以按照其他方式被预先确定时,可以无需再次确定构建冲刷事务所需的时段长度,而是可以直接使用已被计算出或者确定的构建冲刷事务所需的时段长度。在这些情况下,302和304均可以被省略。
在306,基于一个冲刷周期的时段长度和构建一个冲刷事务所需的时段长度来确定第一数目,其中该第一数目指示在该冲刷周期中能够被构建的冲刷事务的最大数目。例如,以前述时段长度为15ms的冲刷周期为例,由于构建冲刷事务在冲刷周期中被顺序进行,因此第一数目可以被构建为:第一数目=15ms/(J2-J1)。应当理解,该第一数目并不是固定不变的,为了更好地基于中央处理器的能力来调整构建的冲刷事务的最大数目,可以例如每隔一段时间计算下一段时间内的在冲刷周期中能够被构建的冲刷事务的最大数目。在某些实施例中,可以每个冲刷周期均执行对第一数目的确定,以作为在下一冲刷周期中能够被构建的冲刷事务的最大数目。
在308,根据固态存储设备所属于的RAID对一个冲刷事务的响应时间来确定第二数目,该第二数目指示在该冲刷周期中在该固态存储设备所属于的RAID中能够并行执行的冲刷事务的最大数目。
应当理解,308所涉及的第二数目即为该固态存储设备所属于的RAID的深度。根据本公开的某些实施例,在对页面进行冲刷的过程中,SSD高速缓存基于固态存储设备中的页面构建冲刷事务。如果该页面是干净的页面,则向固态存储设备发送用于使与这一页面对应的元数据无效的请求。如果该页面是脏的页面,则首先向硬盘写入高速缓存的页面,并且然后向固态存储设备发送用于使与这一页面对应的元数据无效的请求。
图4示出了在某些实施例中的SSD高速缓存所涉及的RAID管理中的各RAID的深度(也被称为队列深度)。如图4中所示,RAID管理中涉及分别被命名为R1SSD、R2SSD、R3HDD、R4HDD和R5HDD的五个RAID,其中R1和R2的队列深度为4,R3的队列深度为2,R4的队列深度为1并且R5的队列深度是为3。
根据本公开的某些实施例,可以为RAID管理中的包括固态存储设备RAID和硬盘RAID中的每个RAID确定深度。每个RAID的深度指示在冲刷周期中在该RAID中能够并行执行的冲刷事务的最大数目。对于一个RAID而言,确定其深度主要需要考虑该RAID对冲刷事务的平均响应时间。图5示出了RAID的忙碌程度的时间排序。如图5中所示,根据本公开的某些实施例,可以根据RAID对冲刷事务的平均响应时间(T)将该RAID的忙碌程度分为5个忙碌级别,即,非常空闲、空闲、普通、忙碌和高度忙碌。
根据本公开的某些实施例,对于RAID管理中的RAID的不同的忙碌级别,可以直接为其定义队列深度。RAID的忙碌级别、平均响应时间以及对应的冲刷队列深度的对应关系可以如下面的表1中所示。
表1
由于在RAID管理的操作过程中,用户的写入/读取IO将会影响所涉及的RAID的忙碌级别,因此,为了更好地基于RAID的能力来调整其队列深度,可以例如每隔一段时间计算下一段时间内的队列深度。在某些实施例中,可以每个冲刷周期均执行对忙碌级别的确定,以用来确定在下一冲刷周期中的队列深度。
继续参考图3,应当理解,由于在308处执行的动作是为了进一步按照RAID的忙级别来调整其队列深度,从而达到更佳地执行页面冲刷的效果,因此309并非是必须的,并且因此在图3中以虚线示出。例如,当仅仅通过调整第一数目就可以实现的页面冲刷吞吐量的期望的改善时,就并不需要调整RAID的队列深度,而是仅按照系统预设的执行页面冲刷即可。在这些情况下,308可以被省略。
在310,在冲刷周期中,以第一数目为上限或者以第一数目和第二数目中较小的数目为上限,从固态存储设备冲刷页面。根据本公开的某些实施例,当在方法300中包括308时,在310以第一数目和第二数目中较小的数目为上限从固态存储设备冲刷页面,当在方法300中省略了308时,在310以第一数目为上限从固态存储设备冲刷页面。
根据本公开的某些实施例,当执行在310的冲刷页面的操作时,对于干净的页面和脏页面采取不同的处理方式。当将要冲刷的页面是干净页面时,通过直接使与该页面对应的元数据无效来进行页面冲刷。当将要冲刷的页面是脏页面时,通过将该页面的数据复制到硬盘中、然后使与该页面对应的元数据无效来进行页面冲刷。
图6示出了在某些实施例中的从固态存储设备冲刷干净页面的方法600的流程图。一般而言,冲刷干净页面的过程比冲刷脏页面的过程相对而言简单,仅需要使固态存储设备上的与该干净页面对应的元数据无效即可实现页面冲刷。因此,冲刷干净页面通常花费比冲刷脏页面更少的时间。根据本公开的某些实施例,对干净页面的冲刷先于对脏页面的冲刷来进行,这可以减少在从固态存储设备冲刷页面时未被冲刷的干净页面由于仍然在进行的IO写入操作而变脏的可能性。
在602,确定在冲刷周期中被构建的冲刷事务是否达到第一数目,即,在该冲刷周期中能够被构建的冲刷事务的最大数目。如果在冲刷周期中被构建的冲刷事务已达到第一数目,则在这一冲刷周期中将无法构建更多的冲刷事务,此时方法600直接退出操作并等待下一冲刷周期。如果在冲刷周期中被构建的冲刷事务尚未达到第一数目,则在这一冲刷周期中可以构建更多的冲刷事务,此时进入604。
在604,确定一个或下一用于冲刷页面的固态存储设备。应当理解,由于604是循环步骤,因此,仅在第一次执行604时才执行确定一个用于冲刷页面的固态存储设备,而当此后通过步骤的循环而再次进入604时,执行确定下一用于冲刷页面的固态存储设备。根据本公开的某些实施例,在执行确定下一用于冲刷页面的固态存储设备时,直接从另一RAID中的固态存储设备确定固态存储设备。
在606,针对在604所确定的固态存储设备所属于的RAID,确定在当前冲刷周期中被构建的冲刷事务是否达到第二数目,即,在该冲刷周期中在该固态存储设备所属于的RAID中能够并行执行的冲刷事务的最大数目。如果在当前冲刷周期中被构建的冲刷事务已达到第二数目,则所确定的固态存储设备将无法并行执行更多的冲刷事务,此时方法600返回604并继续确定下一用于冲刷页面的固态存储设备。如果在当前冲刷周期中被构建的冲刷事务尚未达到第二数目,则所确定的固态存储设备能够并行执行更多的冲刷事务,此时进入608。
在608,根据指示所确定的固态存储设备中的干净页面的第一列表来确定用于冲刷的干净页面。根据本公开的某些实施例,在每个固态存储设备中维护第一列表和第二列表,其中第一列表指示在该固态存储设备中的干净页面,而第二列表指示在该固态存储设备中的干净页面。因此,通过这两个列表,可以定位该固态存储设备中的每个干净页面和每个脏页面。
应当理解,也可以并不在每个固态存储设备中维护第一列表和第二列表二者,此时,可以通过读取与页面对应的元数据来确定该页面是干净页面还是脏页面。而且,即使在每个固态存储设备中维护了第一列表和第二列表,也可以通过读取与页面对应的元数据来确定该页面是干净页面还是脏页面。
根据本公开的某些实施例,上述第一列表、第二列表以及与页面对应的元数据均同时存储在固态存储设备以及该固态存储设备的SSD高速缓存中。当在该固态存储设备中存储的第一列表、第二列表以及元数据由于被操作而发生变化时,该变化将被自动反馈到SSD高速缓存中。
在610,使与在608确定的用于冲刷的干净页面对应的元数据无效。此时,即完成了对该干净页面的冲刷过程。
图7示出了在某些实施例中的从固态存储设备冲刷脏页面的方法700的流程图。如上所述,用于从固态存储设备冲刷脏页面的方法700比用于从固态存储设备冲刷干净页面的方法600具有更多步骤,即与用于向硬盘冲刷在固态存储设备的脏页面中的数据相关的步骤。
在702,确定在冲刷周期中被构建的冲刷事务是否达到第一数目,即,在该冲刷周期中能够被构建的冲刷事务的最大数目。如果在冲刷周期中被构建的冲刷事务已达到第一数目,则在这一冲刷周期中将无法构建更多的冲刷事务,此时方法700直接退出操作并等待下一冲刷周期。如果在冲刷周期中被构建的冲刷事务尚未达到第一数目,则在这一冲刷周期中可以构建更多的冲刷事务,此时进入704。
在704,确定一个或下一用于冲刷页面的固态存储设备。应当理解,由于704是循环步骤,因此,仅在第一次执行704时才执行确定一个用于冲刷页面的固态存储设备,而当此后通过步骤的循环而再次进入704时,执行确定下一用于冲刷页面的固态存储设备。根据本公开的某些实施例,在执行确定下一用于冲刷页面的固态存储设备时,直接从另一RAID中的固态存储设备确定固态存储设备。
在706,针对在704所确定的固态存储设备所属于的RAID,确定在当前冲刷周期中被构建的冲刷事务是否达到第二数目,即,在该冲刷周期中在该固态存储设备所属于的RAID中能够并行执行的冲刷事务的最大数目。如果在当前冲刷周期中被构建的冲刷事务已达到第二数目,则所确定的固态存储设备将无法并行执行更多的冲刷事务,此时方法700返回704并继续确定下一用于冲刷页面的固态存储设备。如果在当前冲刷周期中被构建的冲刷事务尚未达到第二数目,则所确定的固态存储设备能够并行执行更多的冲刷事务,此时进入708。
在708,根据指示所确定的固态存储设备中的脏页面的第二列表来确定一个或下一用于冲刷的脏页面。应当理解,由于708是循环步骤,因此,仅在第一次执行708时才执行确定一个用于冲刷的脏页面,而当此后通过步骤的循环而再次进入708时,执行确定下一用于冲刷的脏页面。
在710,从在708所确定的脏页面读取数据。在712,确定在710所读取的数据将被存储到的硬盘,并且根据确定的硬盘所属于的RAID,确定在当前冲刷周期中被构建的冲刷事务是否达到第三数目,即,在该冲刷周期中在该硬盘所属于的RAID中能够并行执行的冲刷事务的最大数目。
如果在当前冲刷周期中被构建的冲刷事务已达到第三数目,则所确定的硬盘将无法并行执行更多的冲刷事务,此时方法700返回708并继续确定下一用于冲刷的脏页面。如果在当前冲刷周期中被构建的冲刷事务尚未达到第三数目,则所确定的硬盘能够并行执行更多的冲刷事务,此时进入714。
在714,从在704所确定的固态存储设备向在712所确定的硬盘冲刷在708所确定的脏页面中的数据。在716,使与在708确定的用于冲刷的脏页面对应的元数据无效。此时,即完成了对该脏页面的冲刷过程。
图8示出了在某些实施例中的装置800的框图。如图8所示,装置800包括:第一确定单元805,被配置为基于一个冲刷周期的时段长度和构建一个冲刷事务所需的时段长度来确定第一数目,其中该第一数目指示在该冲刷周期中能够被构建的冲刷事务的最大数目;以及第一冲刷单元810,被配置为在冲刷周期中,以第一数目为上限,从固态存储设备冲刷页面。
在某些实施例中,装置800还可以包括:第二确定单元,被配置为基于中央处理器时间来确定构建冲刷事务的开始时间与结束时间;以及第三确定单元,被配置为基于由第二确定单元确定的构建冲刷事务的开始时间与结束时间来确定构建冲刷事务所需的时段长度。
在某些实施例中,装置800还可以包括:第四确定单元,被配置为根据固态存储设备所属于的RAID对一个冲刷事务的响应时间来确定第二数目,该第二数目指示在该冲刷周期中在该固态存储设备所属于的RAID中能够并行执行的冲刷事务的最大数目;以及第二冲刷单元,被配置为在冲刷周期中,以第一数目和第二数目中较小的数目为上限,从固态存储设备冲刷页面。
在某些实施例中,第一冲刷单元810还可以包括:干净页面冲刷单元,被配置为响应于将要冲刷的页面是干净页面,使与该页面对应的元数据无效;以及脏页面冲刷单元,被配置为响应于将要冲刷的页面是脏页面,将该页面的数据复制到硬盘中,以及使与该页面对应的元数据无效。
在某些实施例中,脏页面冲刷单元还可以包括:第五确定单元,被配置为根据确定的硬盘所属于的RAID,确定在当前冲刷周期中被构建的冲刷事务是否达到第三数目;以及第六确定单元,被配置为在冲刷周期中,以第三数目为上限,向硬盘冲刷页面。
在某些实施例中,装置800还可以包括:维护单元,被配置为在每个固态存储设备中维护第一列表和第二列表,其中第一列表指示在该固态存储设备中的干净页面,而第二列表指示在该固态存储设备中的干净页面。
在某些实施例中,干净页面冲刷单元先于脏页面冲刷单元操作,以使得对干净页面的冲刷先于对脏页面的冲刷来进行。
应当理解,装置800中记载的每个单元分别与参考图1至图6描述的方法300、600和700中的每个步骤相对应。因此,上文结合图1至图7描述的操作和特征同样适用于装置800以及其中包含的单元,并且具有同样的效果,具体细节不再赘述。
装置800中所包括的单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。在一个实施例中,一个或多个单元可以使用软件和/或固件来实现,例如存储在存储介质上的机器可执行指令。除了机器可执行指令之外或者作为替代,装置800中的部分或者全部单元可以至少部分地由一个或多个硬件逻辑组件来实现。作为示例而非限制,可以使用的示范类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD),等等。
图8中所示的装置800的单元可以部分或者全部地实现为硬件模块、软件模块、固件模块或者其任意组合。特别地,在某些实施例中,上文描述的流程、方法或过程可以由基站或者终端设备中的硬件来实现。例如,基站或者终端设备可以利用其发射器、接收器、收发器和/或处理器或控制器来实现方法300和700。
图9示出了可以用来实施本公开的实施例的设备900的框图。设备900可以用来实现一种电子设备,其例如包括上文描述的电子设备。如图所示,设备900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的计算机程序指令或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序指令,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
在某些实施例中,处理单元901可被配置为执行上文所描述的各个过程和处理,例如方法300、600和700。例如,在一些实施例中,方法300、600和700可被实现为计算机软件程序,其被有形地包含于机器可读介质(例如,存储单元908)中。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序被加载到RAM 903并由CPU 901执行时,可以执行上文描述的方法300、600和700的一个或多个步骤。
根据本公开的一个实施例,还提供了一种计算机程序产品,该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,该机器可执行指令在被执行使得机器执行根据本公开的方法300、600和700的步骤。
根据本公开的实施例所涉及的从固态存储设备冲刷页面的方法和设备,可以提供明显优于现有技术的优点。具体而言,先前的SSD高速缓存实现方式将提升数目、冲刷数目等限制为固定数目,因此即使中央处理单元并不忙碌并且后端固态存储设备和硬盘具有用于处理读取/写入IO的许多容量,其也仍然花费很长时间来将页面冲刷至硬盘或者将页面从固态存储设备逐出。与此形成对照,利用本公开的实施例所涉及的从固态存储设备冲刷页面的方法和设备,可以通过利用根据中央处理单元使用、响应时间和队列深度等来动态地调整冲刷数目来加速高速缓存设备冲刷和高速缓存设备收缩。例如,根据本公开的实施例,如果将冲刷数目调整为当前数目的两倍,则收缩高速缓存所花费的时间将减少至当前时间的一半。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
作为示例,本公开的实施林可以在机器可执行指令的上下文中被描述,机器可执行指令诸如包括在目标的真实或者虚拟处理器上的器件中执行的程序模块中。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的机器可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。
用于实现本公开的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,使得程序代码在被计算机或其他可编程的数据处理装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。
在本公开的上下文中,机器可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。机器可读介质可以是机器可读信号介质或机器可读存储介质。机器可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。机器可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光存储设备、磁存储设备,或其任意合适的组合。
另外,尽管操作以特定顺序被描绘,但这并不应该理解为要求此类操作以示出的特定顺序或以相继顺序完成,或者执行所有图示的操作以获取期望结果。在某些情况下,多任务或并行处理会是有益的。同样地,尽管上述讨论包含了某些特定的实施细节,但这并不应解释为限制任何发明或权利要求的范围,而应解释为对可以针对特定发明的特定实施例的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可以整合实施在单个实施例中。反之,在单个实施例的上下文中描述的各种特征也可以分离地在多个实施例或在任意合适的子组合中实施。
尽管已经以特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求中限定的主题并不限于上文描述的特定特征或动作。相反,上文描述的特定特征和动作是作为实现权利要求的示例形式而被公开的。
Claims (15)
1.一种从固态存储设备冲刷页面的方法,包括:
基于一个冲刷周期的时段长度和构建一个冲刷事务所需的时段长度来确定第一数目,所述第一数目指示在所述冲刷周期中能够被构建的冲刷事务的最大数目;以及
在所述冲刷周期中,以所述第一数目为上限从所述固态存储设备冲刷页面。
2.根据权利要求1所述的方法,还包括:
基于中央处理器时间,来确定构建所述冲刷事务的开始时间与结束时间;以及
基于所述开始时间与所述结束之间的差值,来确定构建所述冲刷事务所需的所述时段长度。
3.根据权利要求1所述的方法,还包括:
根据所述固态存储设备对一个冲刷事务的响应时间来确定第二数目,所述第二数目指示在所述冲刷周期中在所述固态存储设备中能够并行执行的冲刷事务的最大数目;以及
在所述冲刷周期中,以所述第一数目和所述第二数目中较小的数目为上限,从固态存储设备冲刷页面。
4.根据权利要求1所述的方法,其中冲刷页面包括:
响应于将要冲刷的页面是干净页面,使与所述页面对应的元数据无效;以及
响应于将要冲刷的页面是脏页面,
将所述页面的数据复制到硬盘中;以及
使与所述页面对应的元数据无效。
5.根据权利要求4所述的方法,其中将所述页面的数据复制到所述硬盘包括:
根据所述硬盘对一个冲刷事务的响应时间来确定第三数目,所述第三数目指示在所述冲刷周期中在所述硬盘中能够并行执行的冲刷事务的最大数目;以及
在所述冲刷周期中,以所述第一数目和所述第三数目中较小的数目为上限,向所述硬盘冲刷页面。
6.根据权利要求4所述的方法,还包括:
在所述固态存储设备中维护第一列表和第二列表,所述第一列表指示所述干净页面,所述第二列表指示脏页面;以及
利用所述第一列表和所述第二列表来执行冲刷所述页面。
7.根据权利要求4所述的方法,其中对所述干净页面的冲刷先于对所述脏页面的冲刷。
8.一种电子设备,包括:
处理器;以及
存储器,所述存储器被耦合到所述处理器并且存储有供所述处理器执行的指令,所述指令当由所述处理器执行时,使得所述设备执行:
基于一个冲刷周期的时段长度和构建一个冲刷事务所需的时段长度来确定第一数目,所述第一数目指示在所述冲刷周期中能够被构建的冲刷事务的最大数目;以及
在所述冲刷周期中,以所述第一数目为上限从固态存储设备冲刷页面。
9.根据权利要求8所述的电子设备,其中所述指令在由所述处理器执行时,还执行:
基于中央处理器时间,来确定构建所述冲刷事务的开始时间与结束时间;以及
基于所述开始时间与所述结束之间的差值,来确定构建所述冲刷事务所需的所述时段长度。
10.根据权利要求8所述的电子设备,其中所述指令在由所述处理器执行时,还执行:
根据所述固态存储设备对一个冲刷事务的响应时间来确定第二数目,所述第二数目指示在所述冲刷周期中在所述固态存储设备中能够并行执行的冲刷事务的最大数目;以及
在所述冲刷周期中,以所述第一数目和所述第二数目中较小的数目为上限,从固态存储设备冲刷页面。
11.根据权利要求8所述的电子设备,其中使得所述设备执行冲刷页面包括使得所述设备执行:
响应于将要冲刷的页面是干净页面,使与所述页面对应的元数据无效;以及
响应于将要冲刷的页面是脏页面,
将所述页面的数据复制到硬盘中;以及
使与所述页面对应的元数据无效。
12.根据权利要求11所述的电子设备,其中使得所述设备执行将所述页面的数据复制到所述硬盘包括使得所述设备执行:
根据所述硬盘对一个冲刷事务的响应时间来确定第三数目,所述第三数目指示在所述冲刷周期中在所述硬盘中能够并行执行的冲刷事务的最大数目;以及
在所述冲刷周期中,以所述第一数目和所述第三数目中较小的数目为上限,向所述硬盘冲刷页面。
13.根据权利要求11所述的电子设备,其中所述指令在由所述处理器执行时,还执行:
在所述固态存储设备中维护第一列表和第二列表,所述第一列表指示所述干净页面,所述第二列表指示脏页面;以及
利用所述第一列表和所述第二列表来执行冲刷所述页面。
14.根据权利要求11所述的电子设备,其中使得所述设备执行冲刷页面包括使得所述设备先于对所述脏页面的冲刷来执行对所述干净页面的冲刷。
15.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行使得机器执行根据权利要求1至7中的任一权利要求所述的方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610849719.1A CN107870732B (zh) | 2016-09-23 | 2016-09-23 | 从固态存储设备冲刷页面的方法和设备 |
US15/712,483 US10417137B2 (en) | 2016-09-23 | 2017-09-22 | Flushing pages from solid-state storage device |
US16/514,291 US10860494B2 (en) | 2016-09-23 | 2019-07-17 | Flushing pages from solid-state storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610849719.1A CN107870732B (zh) | 2016-09-23 | 2016-09-23 | 从固态存储设备冲刷页面的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107870732A CN107870732A (zh) | 2018-04-03 |
CN107870732B true CN107870732B (zh) | 2020-12-25 |
Family
ID=61685411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610849719.1A Active CN107870732B (zh) | 2016-09-23 | 2016-09-23 | 从固态存储设备冲刷页面的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10417137B2 (zh) |
CN (1) | CN107870732B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933492B (zh) * | 2015-12-30 | 2020-05-22 | 伊姆西Ip控股有限责任公司 | 有助于固态硬盘的磨损平衡的方法和装置 |
CN109213695B (zh) * | 2017-06-30 | 2023-07-21 | 伊姆西Ip控股有限责任公司 | 缓存管理方法、存储系统以及计算机程序产品 |
CN109213693B (zh) | 2017-06-30 | 2023-05-05 | 伊姆西Ip控股有限责任公司 | 存储管理方法、存储系统和计算机程序产品 |
CN110413492B (zh) * | 2018-04-28 | 2023-07-04 | 伊姆西Ip控股有限责任公司 | 存储盘的健康评估方法、电子设备和计算机程序产品 |
CN110413545B (zh) * | 2018-04-28 | 2023-06-20 | 伊姆西Ip控股有限责任公司 | 存储管理方法、电子设备和计算机程序产品 |
CN109933546B (zh) * | 2019-01-29 | 2023-03-10 | 山东华芯半导体有限公司 | 一种ssd主控中的raid主动加速装置和加速方法 |
CN111858130A (zh) | 2019-04-29 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 用于拆分盘集的方法、设备和计算机程序产品 |
US10860483B2 (en) | 2019-04-30 | 2020-12-08 | EMC IP Holding Company LLC | Handling metadata corruption to avoid data unavailability |
US11340900B2 (en) * | 2020-05-01 | 2022-05-24 | EMC IP Holding Company LLC | Flushing dirty pages from page buffers indicated by non-sequential page descriptors |
US11599468B1 (en) * | 2021-11-30 | 2023-03-07 | Qualcomm Incorporated | Marshalled data coherency |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6912637B1 (en) * | 1998-07-08 | 2005-06-28 | Broadcom Corporation | Apparatus and method for managing memory in a network switch |
US7010645B2 (en) * | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
US7697557B2 (en) * | 2007-12-26 | 2010-04-13 | Alcatel Lucent | Predictive caching content distribution network |
US8161241B2 (en) * | 2010-01-12 | 2012-04-17 | International Business Machines Corporation | Temperature-aware buffered caching for solid state storage |
CN102622309B (zh) * | 2011-01-30 | 2016-03-30 | 华为数字技术(成都)有限公司 | 数据安全擦除方法及装置 |
JP5751156B2 (ja) * | 2011-12-19 | 2015-07-22 | 富士通株式会社 | ストレージシステム、制御装置およびストレージシステムの制御方法 |
JP6060277B2 (ja) * | 2012-12-26 | 2017-01-11 | 華為技術有限公司Huawei Technologies Co.,Ltd. | ディスクアレイ・フラッシュ方法及びディスクアレイ・フラッシュ装置 |
CN103136121B (zh) * | 2013-03-25 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种固态盘的缓存管理方法 |
CN103246519B (zh) * | 2013-05-23 | 2016-06-01 | 清华大学 | 在闪存存储设备中提供通用事务支持的方法 |
CN103631536B (zh) * | 2013-11-26 | 2016-06-01 | 华中科技大学 | 一种利用ssd的无效数据优化raid5/6写性能的方法 |
-
2016
- 2016-09-23 CN CN201610849719.1A patent/CN107870732B/zh active Active
-
2017
- 2017-09-22 US US15/712,483 patent/US10417137B2/en active Active
-
2019
- 2019-07-17 US US16/514,291 patent/US10860494B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10860494B2 (en) | 2020-12-08 |
CN107870732A (zh) | 2018-04-03 |
US20180089095A1 (en) | 2018-03-29 |
US20190340132A1 (en) | 2019-11-07 |
US10417137B2 (en) | 2019-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107870732B (zh) | 从固态存储设备冲刷页面的方法和设备 | |
US10635323B2 (en) | Managing storage system | |
US20150378888A1 (en) | Controller, flash memory apparatus, and method for writing data into flash memory apparatus | |
CN109725840B (zh) | 利用异步冲刷对写入进行节流 | |
CN109213696B (zh) | 用于缓存管理的方法和设备 | |
US9658888B2 (en) | Thresholding task control blocks for staging and destaging | |
EP2784683A1 (en) | Storage control program, storage control method, storage system and hierarchy control apparatus thereof | |
KR20180086120A (ko) | 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘 | |
US20170123975A1 (en) | Centralized distributed systems and methods for managing operations | |
US20210141559A1 (en) | Memory controller and storage device including the same | |
US9740618B2 (en) | Memory nest efficiency with cache demand generation | |
US20190171564A1 (en) | Selection of mass storage device streams for garbage collection based on logical saturation | |
US8732404B2 (en) | Method and apparatus for managing buffer cache to perform page replacement by using reference time information regarding time at which page is referred to | |
US10042773B2 (en) | Advance cache allocator | |
JP2015158910A (ja) | ラップ読出しから連続読出しを行うメモリサブシステム | |
CN101853218A (zh) | 用于磁盘阵列的读取方法和系统 | |
US10621096B2 (en) | Read ahead management in a multi-stream workload | |
CN110502457B (zh) | 一种元数据存储方法及装置 | |
US11307797B2 (en) | Storage device and information processing system | |
US20170052899A1 (en) | Buffer cache device method for managing the same and applying system thereof | |
US9384135B2 (en) | System and method of caching hinted data | |
EP4044039A1 (en) | Data access method and apparatus, and storage medium | |
KR102334473B1 (ko) | 적응형 딥러닝 가속 장치 및 방법 | |
CN104123243A (zh) | 数据缓存系统及方法 | |
US11003578B2 (en) | Method and system for parallel mark processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |