US12430249B1ActiveUtilityA1

Location-based global cache tiering

59
Assignee: DELL PRODUCTS LPPriority: Mar 28, 2024Filed: Mar 28, 2024Granted: Sep 30, 2025
Est. expiryMar 28, 2044(~17.7 yrs left)· nominal 20-yr term from priority
G06F 12/0676G06F 2212/225G06F 2212/314G06F 2212/312G06F 2212/214G06F 2212/284G06F 12/0871G06F 2212/261G06F 2212/7201G06F 12/0848G06F 12/0802
59
PatentIndex Score
0
Cited by
2
References
17
Claims

Abstract

A method for use in a storage processor, comprising: generating or updating a cache metadata table that identifies a plurality of cache slots, for each of the plurality of cache slots, the cache metadata table including a different respective location identifier that indicates a location for that cache slot; receiving an I/O request that is associated with a logical block address; allocating a given one of the plurality of cache slots to the logical block address based on the respective location identifier that corresponds to the given cache slot; and executing the I/O request by using the given cache slot, wherein using the given cache slot includes identifying a memory address that is associated with the cache slot and executing at least one direct memory access (DMA) command based on the memory address.

Claims

exact text as granted — not AI-modified
The invention claimed is: 
     
       1. A method for use in a storage processor, comprising:
 generating or updating a cache metadata table that identifies a plurality of cache slots, for each of the plurality of cache slots, the cache metadata table including a different respective location identifier that indicates a location for that cache slot; 
 receiving an I/O request that is associated with a logical block address; 
 allocating a given one of the plurality of cache slots to the logical block address based on the respective location identifier that corresponds to the given cache slot; and 
 executing the I/O request by using the given cache slot, wherein using the given cache slot includes identifying a memory address that is associated with the cache slot and executing at least one direct memory access (DMA) command based on the memory address, 
 wherein the cache metadata table includes a global memory cache table for a storage system of which the storage processor is part, and at least some of the plurality of cache slots are resident in random access memory modules of other storage processors that are part of the storage system, 
 wherein identified memory address is a global memory address belonging to a memory namespace that encompasses multiple storage processors in the storage system, 
 wherein allocating the given cache slot includes obtaining an identifier of a host device that is associated with the I/O request, and retrieving a location-based policy that corresponds to the host device, and 
 wherein the given cache slot is allocated based on both the location-based policy and the respective location identifier of the given cache slot. 
 
     
     
       2. The method of  claim 1 , wherein allocating the given cache slot based on the respective location identifier of the given cache slot m includes allocating one of the plurality of slots that is situated within a predetermined geographic distance from the storage processor. 
     
     
       3. The method of  claim 1 , wherein at least one of the plurality of cache slots is resident in a storage controller memory buffer of a solid state drive (SSD). 
     
     
       4. The method of  claim 1 , wherein at least one of the plurality of cache slots is part of a persistent memory region of an SSD. 
     
     
       5. The method of  claim 1 , wherein:
 the given cache slot is resident in a volatile memory of an SSD, and 
 executing the DMA command includes identifying a parallel computing interface (PCI) address for a portion of the volatile memory of the SSD and using the identified PCI address to execute the DMA command, the PCI address being identified based on the memory address. 
 
     
     
       6. The method of  claim 5 , wherein the SSD is one of:
 an SSD that is situated in a same enclosure as the storage processor and plugged into an M.2 slot that is provided in a motherboard of the storage processor; 
 an SSD that is external to the storage processor and coupled to the storage processor via an InfiniBand adapter of the storage processor; and 
 an SSD that is external to the storage processor and coupled to the storage processor via a backplane of a server enclosure in which the storage processor is situated. 
 
     
     
       7. A computing device, comprising:
 a memory; and 
 at least one processor that is operatively coupled to the memory, the at least one processor being configured to perform the operations of:
 generating or updating a cache metadata table that identifies a plurality of cache slots, for each of the plurality of cache slots, the cache metadata table including a different respective location identifier that indicates a location for that cache slot; 
 receiving an I/O request that is associated with a logical block address; 
 allocating a given one of the plurality of cache slots to the logical block address based on the respective location identifier that corresponds to the given cache slot; and 
 executing the I/O request by using the given cache slot, wherein using the given cache slot includes identifying a memory address that is associated with the cache slot and executing at least one direct memory access (DMA) command based on the memory address, 
 
 wherein the cache metadata table includes a global memory cache table for a storage system of which the computing device is part, and at least some of the plurality of cache slots are resident in random access memory modules of other computing devices that are part of the storage system, 
 wherein identified memory address is a global memory address belonging to a memory namespace that encompasses multiple computing devices in the storage system, 
 wherein allocating the given cache slot includes obtaining an identifier of a host device that is associated with the I/O request, and retrieving a location-based policy that corresponds to the host device, and 
 wherein the given cache slot is allocated based on both the location-based policy and the respective location identifier of the given cache slot. 
 
     
     
       8. The computing device of  claim 7 , wherein allocating the given cache slot based on the respective location identifier of the given cache slot and the location-based policy includes allocating one of the plurality of slots that is situated within a predetermined geographic distance from the computing device. 
     
     
       9. The computing device of  claim 7 , wherein at least one of the plurality of cache slots is resident in a storage controller memory buffer of a solid state drive (SSD). 
     
     
       10. The computing device of  claim 7 , wherein at least one of the plurality of cache slots is part of a persistent memory region of an SSD. 
     
     
       11. The computing device of  claim 7 , wherein:
 the given cache slot is resident in a volatile memory of an SSD, and 
 executing the DMA command includes identifying a parallel computing interface (PCI) address for a portion of the volatile memory of the SSD and using the identified PCI address to execute the DMA command, the PCI address being identified based on the memory address. 
 
     
     
       12. The computing device of  claim 11 , wherein the SSD is one of:
 an SSD that is situated in a same enclosure as the computing device and plugged into an M.2 slot that is provided in a motherboard of the computing device; 
 an SSD that is external to the computing device and coupled to the computing device via an InfiniBand adapter of the computing device; and 
 an SSD that is external to the computing device and coupled to the computing device via a backplane of a server enclosure in which the computing device is situated. 
 
     
     
       13. A non-transitory computer-readable medium storing one or more processor-executable instructions, which, when executed by at least one processor of a computing device, causes the computing device to perform the operations of:
 generating or updating a cache metadata table that identifies a plurality of cache slots, for each of the plurality of cache slots, the cache metadata table including a different respective location identifier that indicates a location for that cache slot; 
 receiving an I/O request that is associated with a logical block address; 
 allocating a given one of the plurality of cache slots to the logical block address based on the respective location identifier that corresponds to the given cache slot; and 
 executing the I/O request by using the given cache slot, wherein using the given cache slot includes identifying a memory address that is associated with the cache slot and executing at least one direct memory access (DMA) command based on the memory address, 
 wherein the cache metadata table includes a global memory cache table for a storage system of which the computing device is part, and at least some of the plurality of cache slots are resident in random access memory modules of other computing devices that are part of the storage system, 
 wherein identified memory address is a global memory address belonging to a memory namespace that encompasses multiple computing devices in the storage system, 
 wherein allocating the given cache slot includes obtaining an identifier of a host device that is associated with the I/O request, and retrieving a location-based policy that corresponds to the host device, and 
 wherein the given cache slot is allocated based on both the location-based policy and the respective location identifier of the given cache slot. 
 
     
     
       14. The non-transitory computer-readable medium of  claim 13 , wherein allocating the given cache slot based on the respective location identifier of the given cache slot and the location-based policy includes allocating one of the plurality of slots that is situated within a predetermined geographic distance from the computing device. 
     
     
       15. The non-transitory computer-readable medium of  claim 13 , wherein at least one of the plurality of cache slots is resident in a storage controller memory buffer of a solid state drive (SSD). 
     
     
       16. The non-transitory computer-readable medium of  claim 13 , wherein at least one of the plurality of cache slots is part of a persistent memory region of an SSD. 
     
     
       17. The non-transitory computer-readable medium of  claim 13 , wherein:
 the given cache slot is resident in a volatile memory of an SSD, and 
 executing the DMA command includes identifying a parallel computing interface (PCI) address for a portion of the volatile memory of the SSD and using the identified PCI address to execute the DMA command, the PCI address being identified based on the memory address.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.