G06F2212/314

Object-backed block-based distributed storage

An object-backed block-based storage system may store data blocks in a block cache in a non-relational database and data block objects in an object data store. Access requests for a particular data block may be received at a storage protocol target that are formatted according to a network-based storage protocol. Translated access requests formatted according to respective programmatic interfaces may be generated and sent to the non-relational database or to the object data store in order to access the particular data block. A response indicating success or failure of the access request may be sent.

Invalidation and refresh of multi-tier distributed caches
11775435 · 2023-10-03 · ·

To deliver up-to-date, coherent user data to applications upon request, the disclosed technology includes systems and methods for caching data and metadata after it has been synchronously loaded—for future retrieval with a page load time close to zero milliseconds. To provide this experience, data needs to be stored as locally to a user as possible, in the cache on the local device or in an edge cache located geographically nearby, for use in responding to requests. Applications which maintain caches of API results can be notified of their invalidation, and can detect the invalidation, propagate the invalidation to any further client tiers with the appropriate derivative type mapping, and refresh their cached values so that clients need not synchronously make the API requests again—ensuring that the client has access to the most up-to-date copy of data as inexpensively as possible—in terms of bandwidth and latency.

Transactional allocation and deallocation of blocks in a block store

Various embodiments set forth techniques for transactional allocation and deallocation of blocks in a block store. A first technique includes sending a first request that causes a non-persistent allocation of a block. The first technique also includes adding a first entry in a log recording the allocation as tentative, sending a second request that causes persistence of the allocation, and adding a second entry in a log recording the allocation as finalized. A second technique includes adding a first entry in a log recording a deallocation of a block, sending a first request that causes the deallocation of the block and causes the block to be unavailable for reallocation in a non-persistent manner, adding a second entry in the log recording that the deallocation is finalized, and sending a second request that causes the block to be made available for reallocation.

Maintaining a cached version of a file at a router device

A router device may receive a copy of a file. The router device may identify metadata associated with the copy of the file. The router device may process the metadata to identify a priority position in a first data structure associated with the router device. The router device may cause a copy of the file to be stored as a cached version of the file at the priority position in the first data structure. The router device may generate a copy of the cached version of the file. The router device may send the copy of the cached version of the file to a user device.

Security of dynamic I/O virtualization system having a bidirectional extended hybrid address space (EHAS) for allowing host kernel to access guest memory
11822945 · 2023-11-21 · ·

A system and method for providing dynamic I/O virtualization is herein disclosed. According to one embodiment, a device capable of performing hypervisor-agnostic and device-agnostic I/O virtualization includes a host computer interface, memory, I/O devices (GPU, disk, NIC), and efficient communication mechanisms for virtual machines to communicate their intention to perform I/O operations on the device. According to one embodiment, the communication mechanism may use shared memory. According to some embodiments, the device may be implemented purely in hardware, in software, or using a combination of hardware and software. According to some embodiments, the device may share its memory with guest processes to perform optimizations including but not limited to a shared page cache and a shared heap.

Storage efficient content revalidation for multimedia assets

Techniques relating to caching a content object are disclosed. A first server receives a revalidation request, relating to a content object, from a requestor. It is determined that metadata, relating to the content object, is stored in a cache associated with the first server. In response, the first server determines not to retrieve the content object from a second server. The content object is not stored in the cache. A response to the revalidation request, indicating that the content object is not modified, is transmitted from the first server to the requestor, based on analyzing the metadata.

Maintaining consistency of asynchronous replication

Maintaining consistency for asynchronous replication of LUNs of a local storage system to corresponding LUNs of a remote storage system includes copying application data written to LUNs to cache slots, copying metadata of LUNs to cache slots, associating a first sequence number to all metadata modifications and all application data writes that are begun after a first time and before a second time, associating a second sequence number, different from the first sequence number, to all metadata modifications and all application data writes that are begun after the second time, and, after completion of all metadata modifications and all application data writes associated with the first sequence number, initiating transfer to the remote storage system of all metadata modifications and all application data writes associated with the first sequence number. Each cache slot may include a field that indicates a corresponding sequence number.

Information processing apparatus and non-transitory computer-readable storage medium storing cache control program
11474947 · 2022-10-18 · ·

An information processing apparatus includes a processor. The processor configured to allocate, to a process, a first number of first divided regions from among a plurality of divided regions obtained by division of a cache, and determine, based on an address of each data block corresponding to the process and the first number, a storage destination of the data block corresponding to the process from among the first divided regions. The processor configured to determine a second number that is a divisor of the first number, identify, for the individual first divided regions after the reduction, second divided regions from among the first divided regions before the reduction, determine data blocks to be stored in the individual first divided regions after the reduction by allocating data blocks to the first divided regions after the reduction from the corresponding second divided regions in ascending order of purging order.

Technologies for predictive file caching and synchronization

Technologies for predictive caching include a computing device to receive sensor data generated by one or more sensors of the computing device and determine a device context of the computing device based on the sensor data. Based on the device context, the computing device determines a file to cache that has similar characteristics to another file recently accessed by a user of the computing device. The computing device includes a file cache with a first partition to store files identified to have similar characteristics to files recently accessed by a user and a second partition to store files identified based on access patterns of the user. The computing device stores the determined file to the first partition.

Dynamic caching and eviction policy in different points-of-presence of a content delivery network

Dynamic caching policies and/or dynamic purging policies are provided for modifying the entry and eviction of content to the cache (e.g., storage and/or memory) of a caching server based on the current and past cache performance and/or demand. The caching server may modify or replace a configured policy when cache performance is below one or more thresholds. Modifying the caching policy may change caching behavior of the caching server by changing the conditions that control the content that is entered into cache or the content that is deferred and not entered into cache after a request. This may include assigning different probabilities for entering the same content into cache based on different caching policies. Modifying the purging policy may change eviction behavior of the caching server by changing the conditions that control the cached content that is selected and removed from cache.