CN111837102A - 使用轨道锁和跨步组锁来管理高速缓存操作 - Google Patents
使用轨道锁和跨步组锁来管理高速缓存操作 Download PDFInfo
- Publication number
- CN111837102A CN111837102A CN201980018116.9A CN201980018116A CN111837102A CN 111837102 A CN111837102 A CN 111837102A CN 201980018116 A CN201980018116 A CN 201980018116A CN 111837102 A CN111837102 A CN 111837102A
- Authority
- CN
- China
- Prior art keywords
- cache
- lock
- tracks
- data
- track
- 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.)
- Granted
Links
- 230000004044 response Effects 0.000 claims abstract description 39
- 238000000034 method Methods 0.000 claims abstract description 32
- 238000004590 computer program Methods 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims description 21
- 239000004744 fabric Substances 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 12
- 230000000977 initiatory effect Effects 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000006872 improvement Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 239000000835 fiber Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/462—Track or segment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Detection And Correction Of Errors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供用于使用轨道锁和跨步组锁来管理高速缓存操作的计算机程序产品、系统和方法。对于到高速缓存中的组中的轨道的写入,授予对高速缓存中的组中的轨道的独占轨道锁,其中对于到高速缓存中的不同轨道的写入,可以同时保持独占轨道锁;对高速缓存中的轨道组授予独占组锁以将组中的轨道从高速缓存送出到存储设备。响应于完成高速缓存中的组中的轨道到存储设备的送出而释放独占组锁。
Description
技术领域
本发明涉及用于使用轨道锁和跨步组(stride group)锁来管理高速缓存操作的计算机程序产品、系统和方法。
背景技术
存储控制器维护一个或多个设备适配器以与存储设备阵列(诸如独立磁盘冗余阵列(RAID)阵列的存储设备)对接。设备适配器管理对所连接的存储设备的请求,并且实现RAID控制器和用于存储控制器的功能。在非易失性存储器标准(Nonvolatile MemoryExpress)(NVMe)中,NVMe控制器可存取对主机系统中的提交队列中的存储装置的读取和写入请求,且包含RAID功能性以跨存储装置(例如固态驱动器(SSD))条带化(stripe)数据。
本领域存在对在多个处理器核正在对存储在存储设备中的高速缓存中的跨步组中的轨道进行读取和写入的环境中跨存储设备阵列(诸如RAID阵列)写入和读取数据的改进技术的需求。
发明内容
第一实施例提供了一种用于使用轨道锁和跨步组锁来管理高速缓存操作的计算机程序产品、系统和方法。来自存储设备的一组轨道被存储在高速缓存中。对于到高速缓存中的组中的轨道的写入,授予对高速缓存中的组中的轨道的独占轨道锁,其中对于到高速缓存中的不同轨道的写入,可以同时保持独占轨道锁。授予用于高速缓存中的轨道组的独占组锁以将该组中的轨道从高速缓存送出到存储设备。响应于完成高速缓存中的组中的轨道到存储设备的送出而释放独占组锁。
第一实施例提供对计算机技术的改进,以允许同时持有用于写入的多个独占轨道锁,以允许对高速缓存中的不同轨道的写入。进一步,为轨道组授予独占组锁以为该轨道组的送出。当持有用于送出过程的独占组锁时,尝试访问经受送出的轨道的不同过程被阻止。释放用于送出的独占组锁允许授予独占轨道锁以用于对组中的轨道的并行写入。以此方式,所描述的实施例提供了对管理的改进,并且允许对轨道组(诸如跨步组)中的不同轨道的同时写入,并且同时提供用于送出操作的组中的所有轨道的锁定。
第二实施例可以可选地还包括:接收对所述组中的目标轨道的写入;确定所述组的所述独占组锁是否被持有;响应于确定所述独占组锁未被持有,向所述目标轨道授予独占轨道锁;以及响应于确定所述独占组锁被持有,重试访问所述目标轨道的所述独占轨道锁。
对于第二实施例,仅在对于送出操作不持有独占组锁的情况下才准许向目标轨道的写入,以防止写入向正在进行的送出操作中涉及的轨道写入。这提供了用于协调对轨道组中的不同轨道的同时写入与对轨道组的送出操作以使组中的所有轨道送出的改进。
第三实施例可选地可进一步包括:授予共享组锁以用于对高速缓存中的组中的轨道的写入;响应于完成对所述高速缓存中的轨道的写入,释放用于写入的共享组锁;以及响应于启动所述轨道组的所述送出来确定是否持有任何共享组锁,其中仅响应于确定没有持有用于要送出的组的共享组锁来授予独占组锁。
对于第三实施例,共享组锁被授予同时向共享组锁所应用到的组中的轨道写入的写入。为了在同时发生写入时进一步协调送出操作,由写入持有的共享组锁防止发起送出操作,直到所有写入都已完成,这通过没有为要送出的轨道组持有共享组锁来指示。
第四实施例可以可选地还包括:轨道组的送出还包括:确定高速缓存中的组中的轨道中的经修改数据;生成添加到提交队列的读取请求,所述读取请求指示经修改数据和从至少一个存储设备读取以送入高速缓存的组的旧奇偶校验数据的数据;使用针对经修改数据和送入所述高速缓存中的所述旧的奇偶校验数据的所述读取数据来计算新的奇偶校验数据;以及将新奇偶校验数据和高速缓存中的经修改的数据写入到所述存储设备中的所述至少一个,其中响应于完成将新的奇偶校验数据和经修改的数据写入到所述存储设备中的所述至少一个,释放所述独占组锁。
第四实施例通过生成读取请求以从存储设备读取经修改的数据和旧的奇偶校验数据以进入到高速缓存中,然后使用该进入的数据来计算新的奇偶校验数据,提供了对计算组中的轨道的奇偶校验数据的改进。在计算新的奇偶校验数据时,通过送出操作持有独占组锁,并且在计算新的奇偶校验数据并将其写入存储设备之前,不释放独占组锁。这通过防止写入直到轨道的所有经修改的数据和新的奇偶校验数据被送出完成,来改进送出操作与对轨道的写入的协调。
第五实施例可以可选地包括:写入新的奇偶校验数据和经修改的数据包括生成写入请求以添加到提交队列,该写入请求指示针对高速缓存中的经修改的数据和新的奇偶校验数据的的数据从高速缓存传输到存储设备中的至少一个。
对于第五实施例,写入请求被添加到提交队列以将经修改的数据和新的奇偶校验数据写入高速缓存中以从高速缓存转移到存储设备。该写入请求管理在部署控制器以访问来自提交队列的读取和写入请求的系统中是有用的,诸如具有NVMe控制器的情况,以便允许控制器完成用于部分组送出操作的经修改的数据和奇偶校验数据的读取和写入,所述部分组送出操作仅将经修改的数据和新的奇偶校验数据写入存储器。以此方式,控制器和系统之间的带宽通过通过提交队列仅传输经修改的数据和新的奇偶校验数据来优化。
第六实施例可以可选地包括:生成读取请求包括:确定组中的轨道的经修改段;在所述高速缓存中为所述确定的经修改段分配高速缓存段和为用于旧奇偶校验数据的段分配高速缓存段;以及针对所分配的高速缓存段,生成列表,该指示所述经修改的数据的段和所述奇偶校验数据的段以及所述分配的高速缓存段在高速缓存中的的目的地位置,其中,所述列表被提供有所述读取请求以用于确定要从所述存储设备中的所述至少一个存储设备读取以写入所述高速缓存中的所述目的地位置的数据。
第六实施例通过生成指示经修改的数据和旧的奇偶校验数据的段的列表(该列表和读请求一起提供给提交队列),提高了将经修改的数据和奇偶校验数据的段送入到高速缓存中的操作的效率。控制器可以访问提交队列以处理读取请求,并且访问列表以将经修改的数据和旧的奇偶校验数据的段送入到高速缓存中以用于计算新的奇偶校验数据。控制器(诸如NVMe控制器)访问来自提交队列的读取请求以送入到计算新的奇偶校验数据所需的段中。所描述的实施例通过仅送入到部分跨步送出中的经修改数据的段中而不是未经修改的段中来优化送入操作。
第七实施例提供了一种计算机程序产品、系统和方法,用于通过执行计算机可读存储介质中的程序代码的多个处理核来管理对存储在多个存储设备中的高速缓存中的轨道的输入/输出请求,以授予共享跨步锁对轨道的跨步组中的轨道的写入,其中对同时写入跨步组中的不同轨道的写入授予共享跨步锁。响应于使轨道的跨步组送出的送出请求,确定是否存在用于写入的未完成的共享跨步锁。响应于确定不存在用于写入的未完成的共享跨步锁,准许将轨道的跨步组从高速缓存送出到存储设备。
第七实施例通过将共享跨步锁同时授予处理核以写入跨步组中的不同轨道,在多个处理核写入跨步组中的轨道时,提供改进的高速缓存技术。送出请求不能继续进行直到被授予独占跨步组锁,除非不存在用于写入的未完成的共享跨步锁,否则不能授予独占跨步组锁。以此方式,所描述的实施例提供了用于协调多个核进行的写入的改进技术,该多个核可利用跨步的送出操作来同时写入跨步组中的轨道,该送出操作需要独占访问跨步组中的所有轨道。
附图说明
图1展示了存储控制器的实施例。
图2展示了轨道锁的实施例。
图3示出用于处理对跨步组中的轨道的读取请求的操作的实施例。
图4示出用于处理对跨步组中的轨道的写入请求的操作的实施例。
图5示出了执行跨步组中的轨道的部分跨步送出的操作的实施例。
图6示出执行跨步组中的轨道的完整跨步送出的操作的实施例。
图7展示了实现图1的组件的计算环境。
具体实施方式
所描述的实施例提供高速缓存锁管理技术,以改善多个处理器核对跨存储设备条带化的跨步组中的轨道的读取和写入的管理。在某些实施例中,存储控制器可以不包括用于处理RAID操作的设备适配器,而是可以将读取和写入放置在由控制器访问以读取和写入存储设备的提交队列中。所描述的实施例提供由多个处理器核对高速缓存的读取和写入的管理,以及用于对存储在存储设备阵列中的组(诸如AID阵列中的跨存储设备的跨步组)中的轨道的送出。所述实施例提供独占轨道锁以允许独立核或进程同时写入跨步组中的不同轨道,并且提供独占和共享组锁以管理跨步中的轨道的送出。可仅在接收到独占组锁时允许送出操作继续进行,该独占组锁在没有其他写入持有对跨步组中的轨道的锁时被授予,并且一旦被授予,就防止写入在送出操作期间写入到跨步组。
所描述的实施例提供了在单独的控制器管理高速缓存与存储设备之间的读取和写入的环境中的高速缓存管理技术的改进。所述实施例允许向写入(writes)授予锁以向跨步组中的轨道写入,并协调允许写入在跨存储设备写入的跨步组的送出期间不继续进行。
图1展示了存储控制器100或其他类型的系统的实施例,所述存储控制器或其他类型的系统包括多个核1021,1022....102n和存储器104,所述存储器包括用于高速缓存从存储阵列110中的存储设备108送入的轨道以便可用于读取请求的高速缓存106。存储控制器100通过结构(Fabric)114与子系统112通信,其中对存储设备108的读取和写入请求由子系统112管理。存储器104包括队列116,每个核1021,1022....102n各一个,其中每个核的队列116包括一个或多个提交队列(SQ)118和完成队列120(CQ),读和写请求被添加到所述提交队列。队列118、120可以包括环形队列,每个环形队列具有指向队列的末端的头指针,当队列被处理时请求从其被访问,每个环形队列还具有指向队列的末端的尾指针,请求被添加到该末端。核102i执行I/O管理器122以向提交队列118添加请求以便核102i将轨道从存储设备108送入到高速缓存106并将轨道从高速缓存106送出到存储设备108。
当I/O管理器122写入控制器124中的提交队列门铃(doorbell)126时,子系统112中的控制器124获取由I/O管理器122添加到提交队列118的对存储装置108的读取和写入请求。响应于完成关于存储设备108的取回的读取或写入请求,控制器124向完成队列120返回读取或写入请求的完成,这向发起读或写请求的核1021,1022....102n通知完成。执行I/O管理器122的核102i可以写入完成队列门铃128以指示完成处理对完成队列120的写入完成以协调完成。
在快速非易失性存储器(NVMe)实施例中,控制器124可以包括NVMe控制器,并且I/O管理器122可以包括NVMe驱动器以与NVMe控制器124接口连接,并且实现队列116。NVMe控制器124可包括提交队列门铃126(为核102i使用的每个提交队列提交一个)和完成队列门铃128。将请求添加到其提交队列118的核102i向控制器124写入提交队列门铃126,以使得控制器124访问添加到与写入的提交队列门铃126相关联的提交队列118的读取或写入请求。控制器124可以任何次序执行所获取的命令。当核1021,1022....102n处理在完成队列120中指示的读/写请求的完成时,核1021,1022....102n写入完成队列120的完成队列门铃128。控制器124可以支持多个命名空间130,其包括在存储设备108中实现的非易失性存储器空间的部分。存储控制器100可以将读取和写入请求定向到映射到存储设备108中的非易失性存储器空间的命名空间130。存储装置108将进一步包括与NVMe控制器124接口的硬件和软件。
实施例1可在结构(Fabrics)上实现NVMe,其中存储控制器100和子系统112通过结构114通信。在这样的实施例中,存储控制器100和NVMe子系统112分别包括传输层132、134,以实现网络通信,例如使用远程直接存储器访问(RDMA)、融合以太网上的RDMA(RoCE)、互联网广域RDMA协议(iWARP),无限带宽(InfiniBand)和光纤信道。在替代实施例中,子系统112(诸如NVME子系统112)可在存储控制器100中的外围组件互连高速(PCIe)卡中实现,并且存储控制器100和NVMe子系统112通过PCIe接口通信。
结构114可以包括一个或多个网络,包括局域网(LAN)、存储区域网(SAN)、广域网(WAN)、对等网络、无线网络、互联网等。
存储控制器100维持由核1021,1022....102n,执行的输入/输出(I/O)管理器代码122,以将轨道从存储设备108送入和送出到高速缓存106。I/O管理器代码122可进一步实施独立磁盘冗余阵列(RAID)算法或其他类型的存储阵列管理算法,以将跨步组中的轨道条条带化(stripe)到存储装置108上,且计算跨步组中的轨道的奇偶校验以与跨存储装置108的轨道条带化。I/O管理器122维护用于在存储设备108中配置的跨步组的跨步组锁200,以管理由不同核1021,1022....102n,执行的跨步组中的轨道的读取、写入、送入和送出,以避免争用并维护高速缓存和送出一致性。
核1021,1022....102n,可包括同一中央处理单元(CPU)/集成电路基板上的多个核,或包括单独的处理单元。每个核1021,1022....102n,可执行I/O管理器122代码以将读和写提交给配置在维持在高速缓存106中的存储设备的跨步的轨道,以从存储设备108送入轨道并从高速缓存106送出轨道的跨步组以跨存储设备条带化。
I/O管理器122可以维持轨道索引,该轨道索引将高速缓存106中的轨道的索引提供给控制块目录中的高速缓存控制块。控制块目录包括高速缓存控制块,其中针对高速缓存106中的每个轨道存在一个高速缓存控制块,该高速缓存106提供关于高速缓存中的轨道的元数据,诸如关于其中维护该轨道的跨步组的跨步组信息。轨道索引将轨道与提供关于高速缓存106中的轨道的信息的高速缓存控制块相关联。
存储阵列110中的存储设备108可以包括不同类型或类别的存储设备,诸如磁性硬盘驱动器、磁带存储设备、包括固态电子装置的固态存储设备(SSD)、EEPROM(电可擦除可编程只读存储器)、闪存、闪存盘、随机存取存储器(RAM)驱动器、存储级存储器(SCM)等、相变存储器(PCM)、电阻式随机存取存储器(RRAM)、自旋转移矩存储器(STM-RAM)、导电桥接RAM(CBRAM)、磁性硬盘驱动器、光盘、磁带等。存储空间中的卷还可以由设备阵列配置,例如,简单磁盘簇(JBOD)、直接存取存储设备(DASD)、独立磁盘冗余阵列(RAID)阵列、虚拟化设备等。进一步,存储阵列110中的存储设备108可以包括来自不同供应商的异构存储设备和不同类型的存储设备,诸如具有比第二类型的存储设备(例如,SSD)更慢的数据传输速率的第一类型的存储设备(例如,硬盘驱动器)。
在NVMe实现方式中,存储装置108将包括用于与NVMe子系统112接口连接的NVMe部件,诸如NVMe SSD装置。
存储器104可以包括本领域已知的合适的系统存储器,包括易失性和非易失性存储器设备,诸如动态随机存取存储器(DRAM)、相变存储器(PCM)、磁阻随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、SRAM存储设备、DRAM、铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器和具有字节可寻址就地写入存储器的非易失性直接在线存储器模块(DIMM)等。
图2示出在存储装置108中配置的跨步组中的一个的跨步组锁200i的实例的实施例,包括识别跨步组的跨步组标识符(ID)202;跨步组202中每个轨道的轨道锁2041,2042...204n,其中跨步组202中每个轨道的轨道锁204i包括指示是否已为该轨道授予独占锁的独占轨道锁206和指示为该轨道授予的共享轨道锁的数目的共享轨道锁计数器208;指示跨步组202的独占锁已被授予的独占跨步锁210;以及指示已被授予的共享跨步锁的数量的共享跨步锁计数器212。跨步组锁200i信息可进一步指示跨步组中提供锁204i的轨道。
图3示出由核1021,1022....102n执行的用于处理对跨步组中的轨道的读取请求的I/O管理器122执行的操作的实施例。在接收到(在块300)从处理器/核1021,1022....102n对跨步组中的轨道的读取时,如果(在块302)所请求的轨道在高速缓存106中,则I/O管理器122确定(在块304)该轨道上是否持有独占轨道锁206或该跨步210包括该轨道。如果是,则轨道被写入或送出,并且读取请求被排队或重试(在块306)以获得对轨道的共享锁。如果(在块304)没有持有独占轨道锁206或独占跨步锁210,则通过递增该轨道的共享轨道锁计数器208来向请求核1021,1022....102n授予共享轨道锁(在块308)。当读取完成时,使共享轨道锁定计数器208递减(在块310)。
如果(在块302)所请求的轨道不在高速缓存106中,则I/O管理器122在高速缓存106中为所请求的轨道分配(在块312)段,并为所请求的轨道授予(在块314)独占轨道锁206,通过递增共享跨步锁计数212器来为授予用于包括该要送入的轨道的跨步的共享跨步锁。读取请求在提交队列118中排队(在块316)以读取所请求的轨道的片段。在NVMe实现中,存储控制器100的NVMe驱动程序可通过结构114或总线接口写入到提交队列门铃126,以向控制器124发信号通知存在I/O请求以在提交队列118中针对发起读取请求的核102i进行处理。控制器124可以在高速缓存106中的轨道的分配的段中写入(在块318)轨道的段。控制器124还向核102i的完成队列120写入完成,核102i发起用信号通知读取已经完成的请求。然后,I/O管理器122可通过释放所请求的轨道的轨道锁206来释放(在块320)为将要送入的轨道持有的锁,并通过递减共享跨步锁计数器212来释放用于包括该要送入的轨道的跨步的共享跨步锁。在释放针对送入处理持有的锁之后,控制可以前进到框308以允许发起核102i从高速缓存106读取轨道。
对于图3的实施例,为轨道和包括该轨道的跨步组持有独占轨道锁206和共享跨步锁,以便在可以写入或送出轨道之前将其暂存到用于读取请求的缓存中。所描述的实施例通过在不同核可同时写入跨步组中的不同轨道或轨道处于正被送出的跨步组中时允许对轨道进行读取来提供对计算机技术的改进。进一步,在某些实施例中,可允许送出到跨步组继续进行,同时存在对跨步组中的轨道的待决读取。所描述的实施例提供锁、数据结构和功能以协调对高速缓存中的轨道的操作以及将轨道送入存储到高速缓存中。
图4示出由核1021,1022....102n执行的I/O管理器122执行以处理对跨步组中的轨道的写入请求的操作的实施例。在从处理器/核1021,1022....102n接收到(在块400)对跨步组中的轨道的写入时,I/O管理器122确定(在块402)在该轨道上是否持有独占轨道锁206或共享208轨道锁,或者在包含要写入的轨道的跨步组200i上是否持有独占跨步锁210。如果是,则轨道正被读、写或送出,并且写请求被排队或重试(在框404)以获得轨道上的独占锁206。如果(在块402)未持有独占轨道锁206/共享轨道锁208或独占跨步锁210,则(在块406)向请求核1021,1022....102n授予独占轨道锁206,并且(在块408)通过递增用于共享跨步锁计数器212来授予对包括要写入的轨道的跨步组的共享跨步锁。然后对高速缓存106中分配的轨道执行写入(在块410)。在完成写入时,释放独占轨道锁206(在框412处),并且通过递减共享跨步锁计数器212来释放共享跨步锁。
对于图4的实施例,当轨道正被写入高速缓存106中时,对包括要写入的轨道的跨步组和轨道持有共享跨步锁和独占轨道锁,以防止该轨道被读取或或者包括该轨道的跨步组被送出。所描述的实施例通过在不同核同时向跨步组中的轨道写入时允许对轨道同时发生写入并且通过不发起对经受待决写入的轨道的写入或在正被送出的跨步组中的写入来协调跨步组的送出与写入操作来提供对计算机技术的改进。进一步,所描述的锁实施例防止在存在对跨步组中的轨道的待决写入时送出继续进行,如由所持有的共享跨步锁所指示的,共享跨步锁由大于零的共享跨步锁计数器212指示。
图5示出了由核1021,1022....102n执行的由I/O管理器122执行以使高速缓存106中具有少于跨步组中的所有轨道的部分跨步组送出的操作的实施例。I/O管理器122可通过使用选择算法(诸如无线顺序写入(WOW)或本领域已知的其他合适的跨步组选择技术)来选择要送出的跨步组来发起(在块500处)送出操作。如果(在块502处)为跨步组持有共享跨步锁,如由大于零的共享跨步锁计数器212所指示的,那么使送出请求排队或重试(在块504处),直到可授予独占跨步锁210。如果(在块502)未针对要送出的跨步组持有共享跨步锁,即,共享跨步锁计数器212为零,则I/O管理器122准许(在块506)针对要送出的跨步组的独占跨步锁210。(在块508)确定高速缓存106中的跨步组中的经修改轨道。在高速缓存106中为所确定的经修改轨道和旧奇偶校验数据分配(在块510)高速缓存段,以可用于送入到(stage in)经修改轨道的预经修改版本中以及来自存储设备108的旧奇偶校验数据。I/O管理器可以生成(在块512)经修改轨道中的段和具有在存储设备108中旧奇偶校验数据的段的读取列表,以便送入到所分配的高速缓存段中。在NVMe实现方式中,读取列表可以包括指示要从存储设备108读取到高速缓存106中的分段的分散集中列表(SGL)或物理区域空间(PRP)列表。对于执行送出操作的核102i,I/O管理器122向提交队列118添加(在块514)具有读取列表的读取请求(或多个读取请求),识别要读取的经修改轨道和旧奇偶校验数据的分段,以及要存储读取分段的分配的高速缓存分段在高速缓存106中的目的地位置。I/O管理器122写入(在块516)到门铃寄存器、提交队列门铃126,以用信号通知控制器124读取添加了读取请求的提交队列118。
在控制器124将读取列表中的段从存储设备108写入高速缓存106中的分配的高速缓存段之后控制器124将完成添加(在块518)到执行送出的核102i的完成队列120,之后,I/O管理器122使用(在块520)经修改轨道、经修改轨道的旧数据和旧奇偶校验来计算新奇偶校验,诸如通过对在读取-经修改-写入期间执行的数据的XOR计算来更新奇偶校验。在更新奇偶校验之后,I/O管理器122生成(在块524)写入列表,例如用于NVMe实现的分散集中列表(scatter gather list)或PRP列表,其指示具有要送出的跨步组的经修改轨道的高速缓存106段和计算的新奇偶校验。I/O管理器122向提交队列118添加(在块526处)写入请求(或多个写入请求),其中写入列表标识要写入存储设备108中的命名空间130的经修改轨道的高速缓存段和新的奇偶校验数据。I/O管理器122写入(在块528处)到门铃寄存器、提交队列门铃126,以用信号通知控制器124读取写入请求被添加到的提交队列118。
在控制器124将写入列表中指示的高速缓存106中的分段写入到存储设备108的目的地位置之后控制器124将完成添加(在块530)到执行送出的核102i的完成队列120,之后,I/O管理器122释放(在块532)用于送出的跨步的独占跨步锁210。
对于图5的实施例,持有要送出的跨步组的独占跨步锁,以防止在轨道送出时读取或写入轨道,但待决读取可在送出操作期间继续。所描述的实施例提供对用于送出部分跨步组的计算机技术的改进,其通过防止在送出操作期间发起写入和读取并且在用于要送出的跨步组的并非所有轨道都在高速缓存中时在要用来更新奇偶校验的经修改版本的经修改轨道的分段中进行送入。虽然存在对跨步组中的轨道的待决写入,但如被持有的共享跨步锁所指示的,共享跨步锁由大于零的共享跨步锁计数器212指示。
图6示出了由核1021,1022....102n执行的由I/O管理器122执行以在跨步组的所有轨道(包括经修改轨道)都在高速缓存106中时使全跨步组送出的操作的实施例。I/O管理器122可通过使用选择算法(诸如无线顺序写入(WOW)或本领域已知的其他合适的跨步组选择技术)来选择要送出的跨步组来发起(在块600)送出操作。如果(在块602)持有跨步组的共享跨步锁,如共享跨步锁计数器212大于零所指示的,则送出请求被排队或重试(在块604),直到可授予独占跨步锁210。如果(在块602)未针对要送出的跨步组持有共享跨步锁,即,共享跨步锁计数器212为零,则I/O管理器122准许(在块606)针对要送出的跨步组的独占跨步锁210。I/O管理器122然后从高速缓存106中的跨步的所有轨道计算(在块608)奇偶校验,并用新的奇偶校验更新奇偶校验。
I/O管理器122生成(在块610)指示跨步的经修改轨道中的分段和所计算的新奇偶校验的写入列表。I/O管理器122向提交队列118添加(在块612)写入请求,其中写入列表标识经修改轨道的高速缓存段和要写入存储设备108中的命名空间的新奇偶校验数据。I/O管理器122写入(在块614)到提交队列门铃126以用信号通知控制器124读取写入请求被添加到的提交队列118。
在控制器124将写入列表中指示的高速缓存106中的分段写入到存储设备108的目的地位置之后控制器124将完成添加(在块616)到执行送出的核102i的完成队列120,之后,I/O管理器122释放(在块618)用于送出的跨步的独占跨步锁210。
对于图5和6的实施例,持有要送出的跨步组的独占跨步锁,以防止在轨道正被送出的同时读取或写入轨道,但待决读取可在送出操作期间继续。所描述的实施例提供对计算机技术的改进,该计算机技术用于通过防止在送出操作期间发起写入和读取并且在用于要送出的跨步组的并非所有轨道都在高速缓存中时在要用来更新奇偶校验的经修改版本的经修改轨道的分段中进行送入,来使部分或全部跨步组送出。
本发明可以实现为系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储媒体(或媒体),所述计算机可读程序指令用于致使处理器执行本发明的方面。
计算机可读存储介质可以是可以持有和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡或具有记录在其上的指令的凹槽中的凸起结构的机械编码设备、以及前述的任意合适组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,例如Java、Smalltalk、C++等,以及常规的过程式编程语言,例如"C"编程语言或类似的编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个块中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,所述计算机可读存储介质可以指引计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得具有存储在其中的指令的计算机可读存储介质包括制品,所述制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得一系列操作步骤在计算机、其他可编程装置或其他设备上执行以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
图1的计算组件,包括存储控制器100和子系统112,可以在一个或多个计算机系统(例如图1所示的计算机系统702)中实施。计算机系统/服务器702可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器702可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可位于包括存储器存储设备的本地和远程计算机系统存储介质两者中。
如图7所示,计算机系统/服务器702以通用计算设备的形式示出。计算机系统/服务器702的组件可以包括但不限于一个或多个处理器或处理单元704、系统存储器706和将包括系统存储器706的不同系统组件耦合到处理器704的总线708。总线708表示若干类型的总线结构中的任一种总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,此类架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围组件互连(PCI)总线。
计算机系统/服务器702通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器702访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质两者。
系统存储器706可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)710和/或高速缓存存储器712。计算机系统/服务器702还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统713可被提供用于从不可移动、非易失性磁介质(未示出且通常被称为"硬盘驱动器")读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,"软盘")读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线708。如下面将进一步描绘和描述的,存储器706可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,该程序模块被配置成执行本发明的实施例的功能。
具有一组(至少一个)程序模块716的程序/实用程序714以及操作系统、一个或多个应用程序、其它程序模块和程序数据可被存储在存储器706中,这是作为示例而非限制。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。计算机702的组件可以被实现为程序模块716,其通常执行如这里所描述的本发明的实施例的功能和/或方法。图1的系统可以在一个或多个计算机系统702中实现,其中如果它们在多个计算机系统702中实现,则计算机系统可以通过网络通信。
计算机系统/服务器702还可以与一个或多个外部设备718(诸如键盘、定点设备、显示器720等)通信;使得用户能够与计算机系统/服务器702交互的一个或多个设备;和/或使计算机系统/服务器702能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)。这样的通信可以经由输入/输出(I/O)接口722发生。再者,计算机系统/服务器702可以经由网络适配器724与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,互联网)之类的一个或多个网络通信。如图所示,网络适配器724通过总线708与计算机系统/服务器702的其他组件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器702结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据归档存储系统等。
术语"实施例"、"多个实施例"、"该实施例"、"这些实施例"、"一个或多个实施例"、"一些实施例"和"一个实施例"表示"本发明的一个或多个(但不是全部)实施例",除非另有明确说明。
术语"包括"、"包含"、"具有"及其变体表示"包括但不限于",除非另有明确说明。
除非另外明确规定,否则列举的项目列表并不意味着任何或所有项目是互斥的。
术语"一"、"一个"和"该"表示"一个或多个",除非另有明确说明。
除非另有明确规定,否则彼此通信的装置不需要彼此连续通信。此外,彼此通信的设备可通过一个或多个中介直接或间接通信。
具有彼此通信的若干组件的实施例的描述不暗示需要所有此类组件。相反,描述各种可选部件以说明本发明的各种可能实施例。
当在本文中描述单个设备或物品时,将显而易见的是,可以使用多于一个设备/物品(无论它们是否协作)来代替单个设备/物品。类似地,当在此描述多于一个设备或物品(无论它们是否协作)时,将容易明显的是,可以使用单个设备/物品代替多于一个设备或物品,或者可以使用不同数量的设备/物品代替所示数量的设备或程序。设备的功能和/或特征可以可替代地由未明确描述为具有这样的功能/特征的一个或多个其他设备来体现。由此,本发明的其他实施例不需要包括设备本身。
出于说明和描述的目的,已经呈现了本发明的不同实施例的前述描述。它不旨在是详尽的或将本发明限制在所披露的精确形式。鉴于以上传授内容,许多经修改和变化是可能的。本发明的范围旨在不受该详细描述的限制,而是受所附权利要求的限制。以上说明、实例以及数据提供了本发明的组合物的制造和用途的完整说明。因为在不脱离本发明的范围的情况下可以做出本发明的许多实施例,所以本发明在于以下所附的权利要求书中。
Claims (25)
1.一种用于管理到多个存储设备的输入/输出请求的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有在其中体现的可执行以执行操作的计算机可读程序代码,所述操作包括:
将存储在所述存储设备中的轨道组存储到高速缓存中;
对于到高速缓存中的组中的轨道的写入,授予对高速缓存中的组中的轨道的独占轨道锁,其中对于到高速缓存中的不同轨道的写入,可以同时保持独占轨道锁;
授予对所述高速缓存中的所述轨道组的独占组锁以将所述组中的所述轨道从所述高速缓存送出到所述存储设备;并且
响应于完成所述高速缓存中的所述组中的所述轨道到所述存储设备的所述送出,释放所述独占组锁。
2.根据权利要求1所述的计算机程序产品,该操作进一步包括:
接收对所述组中的目标轨道的写入;
确定是否持有所述组的所述独占组锁;
响应于确定所述独占组锁未被持有,向所述目标轨道授予独占轨道锁;并且
响应于确定持有所述独占组锁,重试访问所述目标轨道的所述独占轨道锁。
3.根据权利要求1所述的计算机程序产品,该操作进一步包括:
向所述高速缓存中的所述组中的所述轨道授予用于写入的共享组锁;
响应于完成对所述高速缓存中的轨道的写入,释放用于写入的共享组锁;并且
响应于启动所述轨道组的所述送出来确定是否持有任何共享组锁,其中仅响应于确定没有持有用于所述组送出的共享组锁来准予所述独占组锁。
4.根据权利要求1所述的计算机程序产品,其中所述轨道组的送出还包括:
确定所述高速缓存中的所述组中的轨道中的经修改的数据;
生成添加到提交队列的读取请求,所述读取请求指示用于所述经修改数据的数据和用于所述组的的旧奇偶校验数据以从所述存储设备中的至少一个读取以送入到所述高速缓存中;
使用送入到所述高速缓存中的针对所述经修改的数据和所述旧的奇偶校验数据的所述读取数据来计算新的奇偶校验数据;并且
将所述新的奇偶校验数据和所述高速缓存中的所述经修改的数据写入到所述存储设备中的所述至少一个,其中响应于完成将所述新的奇偶校验数据和所述经修改的数据写入到所述存储设备中的所述至少一个,释放所述独占组锁。
5.根据权利要求4所述的计算机程序产品,其中,写入新的奇偶校验数据和经修改的数据包括:
生成添加到所述提交队列的写入请求,所述写入请求指示所述高速缓存中的所述经修改的数据和所述新的奇偶校验数据的数据,以从所述高速缓存转移到所述存储设备中的所述至少一个存储设备。
6.根据权利要求5的所述计算机程序产品,其中所述计算机可读程序代码由包含计算机可读存储介质的系统执行,其中所述系统耦合到与所述存储装置介接的控制器,其中所述操作进一步包括:
当将所述读取请求和所述写入请求添加到所述提交队列时,为所述提交队列设置门铃寄存器,其中所述门铃寄存器的所述设置用信号通知所述控制器处理所述读取请求以将数据从所述存储装置中的所述至少一个传输到所述高速缓冲存储器,以及处理所述写入请求以将经修改的数据和所述新的奇偶校验数据从所述高速缓存传输到所述存储装置中的所述至少一个。
7.根据权利要求4所述的计算机程序产品,其中所述生成所述读取请求包括:
确定所述组中的轨道的经修改段;
在所述高速缓存中为所述确定的经修改段和用于旧奇偶校验数据的段分配高速缓存段;并且
生成列表,所述列表指示经修改数据和奇偶校验数据的段以及已分配的缓存段在缓存中的目的地位置,其中,所述列表与所述读取请求一起提供以用于确定要从所述存储设备中的所述至少一个存储设备读取以写入所述高速缓存中的所述目的地位置的数据。
8.根据权利要求1所述的计算机程序产品,其中,使所述轨道送出进一步包括:
确定所述组的所有轨道都在所述高速缓存中;
从所述高速缓存中的所述组的所述轨道计算所述组的新奇偶校验数据;并且
生成写入请求以添加到提交队列,所述写入请求包括列表,所述列表指示所述高速缓存中的所述组的经修改的轨道以及所述新奇偶校验数据和要写入所述经修改的轨道和新奇偶校验数据的所述存储设备的至少一个中的目的地位置,其中,控制器访问所述提交队列中的所述写请求和所述列表,并访问列表中指示的所述经修改的轨道的所述数据和所述新奇偶校验数据的数据,并跨在所述列表中指示为目的地位置的所述存储设备的所述至少一个进行写操作。
9.根据权利要求1的所述计算机程序产品,其中所述操作进一步包括:
发起操作以将轨道的数据从所述存储设备中的至少一个送入到所述高速缓存中;
在所述高速缓存中为所述要送入的数据分配段;
为所述要送入的数据在所述高速缓存中所述分配的段授予锁;
将读取请求添加到提交队列,所述读取请求指示要送入到所述高速缓存中的所述轨道的所述数据;
将来自所述读取请求的所述数据存储在所述高速缓存中的所述所分配的段中;并且
响应于完成所述高速缓存中的所述段的所述数据的所述读取,释放所述高速缓存中的所述段上的所述锁。
10.一种用于管理对存储在多个存储设备中的高速缓存中的轨道的输入/输出请求的计算机程序产品,所述计算机程序产品包括其中体现有计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码在由多个处理核执行时执行操作,所述操作包括:
对轨道的跨步组中的轨道的写入授予共享跨步锁,其中对同时写入所述跨步组中的不同轨道的写入授予所述共享跨步锁;
响应于使轨道的所述跨步组送出的送出请求,确定是否存在用于写入的未完成的共享跨步锁;并且
响应于确定不存在用于写入的未完成的共享跨步锁,对将轨道的跨步组从高速缓存送出到存储设备的送出授予独占跨步锁。
11.根据权利要求10所述的计算机程序产品,其中该操作进一步包括:
与管理通过结构对所述存储设备访问的控制器通信;
将读取请求添加到至少一个提交队列以将轨道从所述存储装置送入到所述高速缓存中以返回对所述轨道的读取请求,其中所述控制器通过所述结构从所述至少一个提交队列检索所述读取请求以从所述存储装置读取数据以写入到所述高速缓存;并且
响应于接收到所述跨步组的所述独占跨步锁,将写入请求添加到所述至少一个提交队列以为所述跨步组写入要送出的轨道,其中所述控制器通过所述结构从所述至少一个提交队列检索所述写入请求,以将数据写入所述存储设备。
12.一种用于管理对多个存储装置的输入/输出请求的系统,包括:
至少一个处理器;以及
计算机可读存储介质,具有计算机可读程序代码,所述计算机可读程序代码被体现为在由所述至少一个处理器执行时执行操作,所述操作包括:
将存储在所述存储设备中的轨道组存储到高速缓存中;
对于到高速缓存中的组中的轨道的写入,授予对高速缓存中的组中的轨道的独占轨道锁,其中对于到高速缓存中的不同轨道的写入,可以同时保持独占轨道锁;
授予对所述高速缓存中的所述轨道组的独占组锁以将所述组中的所述轨道从所述高速缓存送出到所述存储设备;并且
响应于完成所述高速缓存中的所述组中的所述轨道到所述存储设备的所述送出,释放所述独占组锁。
13.根据权利要求12所述的系统,其中所述操作进一步包括:
接收对所述组中的目标轨道的写入;
确定是否持有所述组的所述独占组锁;
响应于确定所述独占组锁未被持有,向所述目标轨道授予独占轨道锁;并且
响应于确定持有所述独占组锁,重试访问所述目标轨道的所述独占轨道锁。
14.根据权利要求12所述的系统,其中该操作进一步包括:
向所述高速缓存中的所述组中的所述轨道授予用于写入的共享组锁;
响应于完成对所述高速缓存中的轨道的写入,释放用于写入的共享组锁;并且
响应于启动所述轨道组的所述送出来确定是否持有任何共享组锁,其中仅响应于确定没有持有用于所述组送出的共享组锁来准予所述独占组锁。
15.根据权利要求12所述的系统,其中所述轨道组的所述送出还包括:
确定所述高速缓存中的所述组中的轨道中的经修改的数据;
生成添加到提交队列的读取请求,所述读取请求指示用于所述经修改数据的数据和用于所述组的的旧奇偶校验数据以从所述存储设备中的至少一个读取以送入到所述高速缓存中;
使用送入到所述高速缓存中的针对所述经修改的数据和所述旧的奇偶校验数据的所述读取数据来计算新的奇偶校验数据;并且
将所述新的奇偶校验数据和所述高速缓存中的所述经修改的数据写入到所述存储设备中的所述至少一个,其中响应于完成将所述新的奇偶校验数据和所述经修改的数据写入到所述存储设备中的所述至少一个,释放所述独占组锁。
16.根据权利要求15所述的系统,其中,写入所述新的奇偶校验数据和所述经修改的数据包括:
生成添加到所述提交队列的写入请求,所述写入请求指示所述高速缓存中的所述经修改的数据和所述新的奇偶校验数据的数据,以从所述高速缓存转移到所述存储设备中的所述至少一个存储设备。
17.根据权利要求15所述的系统,其中所述生成所述读取请求包括:
确定所述组中的轨道的经修改段;
在所述高速缓存中为所述确定的经修改段和用于旧奇偶校验数据的段分配高速缓存段;并且
生成列表,所述列表指示经修改数据和奇偶校验数据的段以及已分配的缓存段在缓存中的目的地位置,其中,所述列表与所述读取请求一起提供以用于确定要从所述存储设备中的所述至少一个存储设备读取以写入所述高速缓存中的所述目的地位置的数据。
18.一种用于管理对多个存储装置的输入/输出请求的系统,包括:
多个处理核;以及
计算机可读存储介质,所述计算机可读存储介质具有计算机可读程序代码,所述计算机可读程序代码在由所述处理核执行时执行操作,所述操作包括:
对轨道的跨步组中的轨道的写入授予共享跨步锁,其中对同时写入所述跨步组中的不同轨道的写入授予所述共享跨步锁;
响应于使轨道的所述跨步组送出的送出请求,确定是否存在用于写入的未完成的共享跨步锁;并且
响应于确定不存在用于写入的未完成的共享跨步锁,对将轨道的跨步组从高速缓存送出到存储设备的送出授予独占跨步锁。
19.根据权利要求18的系统,其中所述操作进一步包括:
与管理通过结构对所述存储设备访问的控制器通信;
将读取请求添加到至少一个提交队列以将轨道从所述存储装置送入到所述高速缓存中以返回对所述轨道的读取请求,其中所述控制器通过所述结构从所述至少一个提交队列检索所述读取请求以从所述存储装置读取数据以写入到所述高速缓存;并且
响应于接收到所述跨步组的所述独占跨步锁,将写入请求添加到所述至少一个提交队列以为所述跨步组写入要送出的轨道,其中所述控制器通过所述结构从所述至少一个提交队列检索所述写入请求,以将数据写入所述存储设备。
20.一种用于管理对多个存储装置的输入/输出请求的方法,包括:
将存储在所述存储设备中的轨道组存储到高速缓存中;
对于到高速缓存中的组中的轨道的写入,授予对高速缓存中的组中的轨道的独占轨道锁,其中对于到高速缓存中的不同轨道的写入,可以同时保持独占轨道锁;
授予对所述高速缓存中的所述轨道组的独占组锁以将所述组中的所述轨道从所述高速缓存送出到所述存储设备;并且
响应于完成所述高速缓存中的所述组中的所述轨道到所述存储设备的所述送出,释放所述独占组锁。
21.根据权利要求20所述的方法,进一步包括:
接收对所述组中的目标轨道的写入;
确定是否持有所述组的所述独占组锁;
响应于确定所述独占组锁未被持有,向所述目标轨道授予独占轨道锁;并且
响应于确定持有所述独占组锁,重试访问所述目标轨道的所述独占轨道锁。
22.根据权利要求20所述的方法,进一步包括:
向所述高速缓存中的所述组中的所述轨道授予用于写入的共享组锁;
响应于完成对所述高速缓存中的轨道的写入,释放用于写入的共享组锁;并且
响应于启动所述轨道组的所述送出来确定是否持有任何共享组锁,其中仅响应于确定没有持有用于所述组送出的共享组锁来准予所述独占组锁。
23.根据权利要求20所述的方法,其中所述轨道组的所述送出还包括:
确定所述高速缓存中的所述组中的轨道中的经修改的数据;
生成添加到提交队列的读取请求,所述读取请求指示用于所述经修改数据的数据和用于所述组的的旧奇偶校验数据以从所述存储设备中的至少一个读取以送入到所述高速缓存中;
使用送入到所述高速缓存中的针对所述经修改的数据和所述旧的奇偶校验数据的所述读取数据来计算新的奇偶校验数据;并且
将所述新的奇偶校验数据和所述高速缓存中的所述经修改的数据写入到所述存储设备中的所述至少一个,其中响应于完成将所述新的奇偶校验数据和所述经修改的数据写入到所述存储设备中的所述至少一个,释放所述独占组锁。
24.根据权利要求23所述的方法,其中,所述写入新的奇偶校验数据和所述经修改的数据包括:
生成添加到所述提交队列的写入请求,所述写入请求指示所述高速缓存中的所述经修改的数据和所述新的奇偶校验数据的数据,以从所述高速缓存转移到所述存储设备中的所述至少一个存储设备。
25.权利要求23的方法,其中,产生读取请求包括:
确定所述组中的轨道的经修改段;
在所述高速缓存中为所述确定的经修改段和用于旧奇偶校验数据的段分配高速缓存段;并且
生成列表,所述列表指示经修改数据和奇偶校验数据的段以及已分配的缓存段在缓存中的目的地位置,其中,所述列表与所述读取请求一起提供以用于确定要从所述存储设备中的所述至少一个存储设备读取以写入所述高速缓存中的所述目的地位置的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/951,168 US11151037B2 (en) | 2018-04-12 | 2018-04-12 | Using track locks and stride group locks to manage cache operations |
US15/951,168 | 2018-04-12 | ||
PCT/IB2019/052653 WO2019197935A1 (en) | 2018-04-12 | 2019-04-01 | Using track locks and stride group locks to manage cache operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111837102A true CN111837102A (zh) | 2020-10-27 |
CN111837102B CN111837102B (zh) | 2024-04-19 |
Family
ID=68160866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980018116.9A Active CN111837102B (zh) | 2018-04-12 | 2019-04-01 | 使用轨道锁和跨步组锁来管理高速缓存操作 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11151037B2 (zh) |
JP (1) | JP7256815B2 (zh) |
CN (1) | CN111837102B (zh) |
DE (1) | DE112019001863T5 (zh) |
GB (1) | GB2585320B (zh) |
WO (1) | WO2019197935A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112346891A (zh) * | 2020-11-26 | 2021-02-09 | 北京沃东天骏信息技术有限公司 | 消息存储方法、装置、设备和计算机可读介质 |
WO2023029729A1 (en) * | 2021-09-03 | 2023-03-09 | International Business Machines Corporation | Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel |
US11720500B2 (en) | 2021-09-03 | 2023-08-08 | International Business Machines Corporation | Providing availability status on tracks for a host to access from a storage controller cache |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884849B2 (en) | 2018-04-27 | 2021-01-05 | International Business Machines Corporation | Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data |
US10831597B2 (en) | 2018-04-27 | 2020-11-10 | International Business Machines Corporation | Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data |
US11226744B2 (en) | 2020-04-14 | 2022-01-18 | International Business Machines Corporation | Determination of a type of destage to perform based on preference between performance of operations and preservation of drive life |
US11231855B2 (en) | 2020-04-14 | 2022-01-25 | International Business Machines Corporation | Determination of a type of destage to perform based on preference between performance of operations and preservation of drive life using a machine learning module |
CN113687788A (zh) * | 2021-08-30 | 2021-11-23 | 西安超越申泰信息科技有限公司 | 国产平台的数据读写优化方法、装置、计算机及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010002480A1 (en) * | 1997-09-30 | 2001-05-31 | Lsi Logic Corporation | Method and apparatus for providing centralized intelligent cache between multiple data controlling elements |
CN1967507A (zh) * | 2005-11-18 | 2007-05-23 | 国际商业机器公司 | 数据存储控制器及用于管理其中的高速缓存数据的方法 |
CN102150131A (zh) * | 2008-09-15 | 2011-08-10 | 微软公司 | 管理高速缓存数据和元数据 |
CN103562843A (zh) * | 2011-05-23 | 2014-02-05 | 国际商业机器公司 | 在具有多个高速缓存的存储系统中高速缓存数据 |
US20160110283A1 (en) * | 2014-10-20 | 2016-04-21 | Microsoft Corporation | On-demand expansion of synchronization primitives |
US20160328301A1 (en) * | 2012-12-19 | 2016-11-10 | Amazon Technologies, Inc. | Cached data replication for cache recovery |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4354232A (en) * | 1977-12-16 | 1982-10-12 | Honeywell Information Systems Inc. | Cache memory command buffer circuit |
US6520490B1 (en) | 1999-09-23 | 2003-02-18 | Soilsoup Inc. | Liquid compost aerator and method of using same |
US5574882A (en) * | 1995-03-03 | 1996-11-12 | International Business Machines Corporation | System and method for identifying inconsistent parity in an array of storage |
US5922057A (en) | 1997-01-10 | 1999-07-13 | Lsi Logic Corporation | Method for multiprocessor system of controlling a dynamically expandable shared queue in which ownership of a queue entry by a processor is indicated by a semaphore |
JP3495266B2 (ja) * | 1998-11-13 | 2004-02-09 | Necエレクトロニクス株式会社 | キャッシュロック装置及びキャッシュロック方法 |
US6463503B1 (en) | 1999-05-12 | 2002-10-08 | International Business Machines Corporation | Method and system for increasing concurrency during staging and destaging in a log structured array |
US6564271B2 (en) | 1999-06-09 | 2003-05-13 | Qlogic Corporation | Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter |
US6385683B1 (en) | 1999-08-13 | 2002-05-07 | Lsi Logic Corporation | Methods and apparatus for raid hardware sequencing to achieve a higher performance raid architecture |
US6289039B1 (en) | 2000-06-14 | 2001-09-11 | Linex Technologies, Inc. | Spread-spectrum communications utilizing variable throughput reduction |
US6934318B2 (en) | 2000-12-22 | 2005-08-23 | Qualcomm, Incorporated | Method and system for energy based frame rate determination |
US6516380B2 (en) | 2001-02-05 | 2003-02-04 | International Business Machines Corporation | System and method for a log-based non-volatile write cache in a storage controller |
US6950966B2 (en) | 2001-07-17 | 2005-09-27 | Seachange International, Inc. | Data transmission from raid services |
US7389507B2 (en) | 2003-02-10 | 2008-06-17 | Tandberg Data Corporation | Operating-system-independent modular programming method for robust just-in-time response to multiple asynchronous data streams |
US7155655B2 (en) | 2003-07-22 | 2006-12-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Adaptive hybrid ARQ algorithms |
US7457980B2 (en) | 2004-08-13 | 2008-11-25 | Ken Qing Yang | Data replication method over a limited bandwidth network by mirroring parities |
JP2009098996A (ja) | 2007-10-18 | 2009-05-07 | Hitachi Ltd | ストレージシステム |
US20090172244A1 (en) | 2007-12-31 | 2009-07-02 | Chaoyang Wang | Hierarchical secondary raid stripe mapping |
US9223642B2 (en) | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
CN101566977B (zh) | 2009-06-08 | 2011-02-02 | 华为技术有限公司 | 处理器访问共享数据的方法、装置及系统 |
US8392800B2 (en) | 2009-10-20 | 2013-03-05 | Hewlett-Packard Development Company, L.P. | Multi-hop network having increased reliability |
US9552299B2 (en) | 2010-06-11 | 2017-01-24 | California Institute Of Technology | Systems and methods for rapid processing and storage of data |
US8762609B1 (en) | 2010-11-03 | 2014-06-24 | Pmc-Sierra Us, Inc. | System and method for multiengine operation with super descriptor in SAS/SATA controller wherein portion of super-descriptor is executed without intervention of initiator |
KR101772951B1 (ko) | 2011-03-10 | 2017-09-13 | 삼성전자주식회사 | 불 휘발성 메모리 장치 및 그것의 읽기 방법 |
US8365023B2 (en) | 2011-04-29 | 2013-01-29 | International Business Machines Corporation | Runtime dynamic performance skew elimination |
US9798615B2 (en) | 2011-07-05 | 2017-10-24 | Dell Products, Lp | System and method for providing a RAID plus copy model for a storage network |
US8554963B1 (en) | 2012-03-23 | 2013-10-08 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
CN104508645B (zh) | 2012-07-31 | 2017-08-18 | 慧与发展有限责任合伙企业 | 用于使用多个子锁来控制对具有读取器‑写入器锁的共享数据结构的访问的系统和方法 |
US9542344B2 (en) | 2014-02-19 | 2017-01-10 | Sandisk Technologies Llc | Datapath management in a memory controller |
US9304689B2 (en) | 2014-03-27 | 2016-04-05 | International Business Machines Corporation | Modeling workload information for a primary storage and a secondary storage |
US10209898B2 (en) | 2014-04-03 | 2019-02-19 | International Business Machines Corporation | Estimation of performance utilization of a storage device |
JP6181860B2 (ja) | 2014-04-28 | 2017-08-16 | 株式会社日立製作所 | ストレージ装置とそのデータ処理方法及びストレージシステム |
JP6211693B2 (ja) | 2014-05-28 | 2017-10-11 | 株式会社日立製作所 | 計算機システムおよび計算機システム制御方法 |
US9384093B1 (en) | 2014-05-28 | 2016-07-05 | Microsemi Storage Solutions (U.S.), Inc. | Raid enabled NVME device |
US9563382B2 (en) | 2014-06-05 | 2017-02-07 | Sandisk Technologies Llc | Methods, systems, and computer readable media for providing flexible host memory buffer |
US9720601B2 (en) | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
JP6328335B2 (ja) | 2015-06-01 | 2018-05-23 | 株式会社日立製作所 | ストレージ装置及びその制御方法 |
US9772773B2 (en) | 2015-07-30 | 2017-09-26 | International Business Machines Corporation | Parity stripe lock engine |
US10235288B2 (en) * | 2015-10-02 | 2019-03-19 | Netapp, Inc. | Cache flushing and interrupted write handling in storage systems |
US9940250B2 (en) | 2015-11-09 | 2018-04-10 | International Business Machines Corporation | Implementing hardware accelerator for storage write cache management for writes to storage write cache |
US9946642B2 (en) | 2015-11-13 | 2018-04-17 | Samsung Electronics Co., Ltd | Distributed multimode storage management |
US20170139594A1 (en) | 2015-11-17 | 2017-05-18 | Samsung Electronics Co., Ltd. | Key-value integrated translation layer |
US20170139825A1 (en) | 2015-11-17 | 2017-05-18 | HGST Netherlands B.V. | Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach |
US10176064B2 (en) | 2016-02-26 | 2019-01-08 | Netapp Inc. | Granular consistency group replication |
WO2017196315A1 (en) | 2016-05-11 | 2017-11-16 | Hitachi, Ltd. | Data storage system and process for reducing read and write amplifications |
US10853268B2 (en) | 2016-06-15 | 2020-12-01 | Hitachi, Ltd. | Parity generating information processing system |
US9824767B1 (en) | 2016-06-29 | 2017-11-21 | Intel Corporation | Methods and apparatus to reduce threshold voltage drift |
KR20180006164A (ko) | 2016-07-08 | 2018-01-17 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10521118B2 (en) | 2016-07-13 | 2019-12-31 | Sandisk Technologies Llc | Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB) |
CN106790599B (zh) | 2016-12-29 | 2019-06-28 | 中国人民解放军国防科学技术大学 | 一种基于多核无锁环形缓冲区的共生虚拟机通信方法 |
US10416928B2 (en) | 2017-06-15 | 2019-09-17 | Hitachi, Ltd. | Data storage system and process for data compression of distributed data in a scalable cluster system and computer program for such data storage system |
US10831597B2 (en) | 2018-04-27 | 2020-11-10 | International Business Machines Corporation | Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data |
US10884849B2 (en) | 2018-04-27 | 2021-01-05 | International Business Machines Corporation | Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data |
-
2018
- 2018-04-12 US US15/951,168 patent/US11151037B2/en active Active
-
2019
- 2019-04-01 CN CN201980018116.9A patent/CN111837102B/zh active Active
- 2019-04-01 DE DE112019001863.9T patent/DE112019001863T5/de active Pending
- 2019-04-01 GB GB2017405.8A patent/GB2585320B/en active Active
- 2019-04-01 WO PCT/IB2019/052653 patent/WO2019197935A1/en active Application Filing
- 2019-04-01 JP JP2020545285A patent/JP7256815B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010002480A1 (en) * | 1997-09-30 | 2001-05-31 | Lsi Logic Corporation | Method and apparatus for providing centralized intelligent cache between multiple data controlling elements |
CN1967507A (zh) * | 2005-11-18 | 2007-05-23 | 国际商业机器公司 | 数据存储控制器及用于管理其中的高速缓存数据的方法 |
CN102150131A (zh) * | 2008-09-15 | 2011-08-10 | 微软公司 | 管理高速缓存数据和元数据 |
CN103562843A (zh) * | 2011-05-23 | 2014-02-05 | 国际商业机器公司 | 在具有多个高速缓存的存储系统中高速缓存数据 |
US20160328301A1 (en) * | 2012-12-19 | 2016-11-10 | Amazon Technologies, Inc. | Cached data replication for cache recovery |
US20160110283A1 (en) * | 2014-10-20 | 2016-04-21 | Microsoft Corporation | On-demand expansion of synchronization primitives |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112346891A (zh) * | 2020-11-26 | 2021-02-09 | 北京沃东天骏信息技术有限公司 | 消息存储方法、装置、设备和计算机可读介质 |
WO2023029729A1 (en) * | 2021-09-03 | 2023-03-09 | International Business Machines Corporation | Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel |
US11720500B2 (en) | 2021-09-03 | 2023-08-08 | International Business Machines Corporation | Providing availability status on tracks for a host to access from a storage controller cache |
US11726913B2 (en) | 2021-09-03 | 2023-08-15 | International Business Machines Corporation | Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel |
GB2623732A (en) * | 2021-09-03 | 2024-04-24 | Ibm | Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel |
GB2623732B (en) * | 2021-09-03 | 2024-09-11 | Ibm | Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel |
Also Published As
Publication number | Publication date |
---|---|
US20190317898A1 (en) | 2019-10-17 |
GB2585320A (en) | 2021-01-06 |
JP2021517684A (ja) | 2021-07-26 |
US11151037B2 (en) | 2021-10-19 |
JP7256815B2 (ja) | 2023-04-12 |
WO2019197935A1 (en) | 2019-10-17 |
GB2585320B (en) | 2021-06-09 |
DE112019001863T5 (de) | 2020-12-31 |
GB202017405D0 (en) | 2020-12-16 |
CN111837102B (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111837102B (zh) | 使用轨道锁和跨步组锁来管理高速缓存操作 | |
US10776013B2 (en) | Performing workload balancing of tracks in storage areas assigned to processing units | |
US10831597B2 (en) | Receiving, at a secondary storage controller, information on modified data from a primary storage controller to use to calculate parity data | |
US10884849B2 (en) | Mirroring information on modified data from a primary storage controller to a secondary storage controller for the secondary storage controller to use to calculate parity data | |
US10176101B2 (en) | Allocate a segment of a buffer to each of a plurality of threads to use for writing data | |
US11093399B2 (en) | Selecting resources to make available in local queues for processors to use | |
US11080197B2 (en) | Pre-allocating cache resources for a range of tracks in anticipation of access requests to the range of tracks | |
US11226899B2 (en) | Populating a second cache with tracks from a first cache when transferring management of the tracks from a first node to a second node | |
US10606776B2 (en) | Adding dummy requests to a submission queue to manage processing queued requests according to priorities of the queued requests | |
US11294812B2 (en) | Obtaining cache resources for expected writes to tracks in a write set after the cache resources were released for the tracks in the write set | |
US11726913B2 (en) | Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel | |
US11720500B2 (en) | Providing availability status on tracks for a host to access from a storage controller cache | |
US11550726B1 (en) | Maintaining an active track data structure to determine active tracks in cache to process |
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 |