US 11,669,255 B2
Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations
Conner Saltiel Hansen, Portland, OR (US); Patrick Jakubowski, Seattle, WA (US); David Patrick Rogers, III, Seattle, WA (US); Thomas Gregory Rothschilds, Seattle, WA (US); Porter Michael Smith, Seattle, WA (US); and Hanqing Zhang, Seattle, WA (US)
Assigned to Qumulo, Inc., Seattle, WA (US)
Filed by Qumulo, Inc., Seattle, WA (US)
Filed on Jan. 28, 2022, as Appl. No. 17/588,120.
Claims priority of provisional application 63/217,136, filed on Jun. 30, 2021.
Prior Publication US 2023/0004312 A1, Jan. 5, 2023
Int. Cl. G06F 3/06 (2006.01); G06F 12/0871 (2016.01)
CPC G06F 3/0631 (2013.01) [G06F 3/0604 (2013.01); G06F 3/067 (2013.01); G06F 3/0659 (2013.01); G06F 12/0871 (2013.01)] 28 Claims
OG exemplary drawing
 
1. A method for managing data in a file system over a network using one or more processors that execute instructions to perform actions, comprising:
providing the file system that includes one or more cache volumes and one or more agents that are associated with one or more clients of the file system;
determining a cache allocation for each of the agents based on a capacity of the one or more cache volumes and a number of the one or more agents, wherein each of the cache allocations is associated with one or more tokens that each of the cache allocations represents a reserved portion of free space in the one or more cache volumes, and wherein distribution of each of the cache allocations is based on one or more storage jobs that are assigned to each of the one or more agents, and wherein the one or more storage jobs are provided to the one or more agents;
storing each of the data associated with the one or more storage jobs in the one or more cache volumes;
reducing the cache allocation for each of the agents based on the data stored for each agent;
determining one or more depleted cache allocations and one or more non-depleted cache allocations based on one or more allocation metrics, wherein each of the depleted cache allocations has a remaining capacity that is less than a depletion threshold and each of the non-depleted cache allocations has a remaining capacity that is greater than a non-depletion threshold;
in response to determining the one or more depleted cached allocations, disassociating one or more portions of the disassociated one or more tokens associated with the non-depleted cache allocations, wherein the one or more portions of the one or more disassociated tokens are associated with the one or more determined depleted cache allocations;
in response to determining a recall for one or more reserved portions of the free space, recalling the one or more tokens associated with each cache allocation that represents the one or more recalled reserved portions of the free space, wherein the one or more storage jobs are queued at the one or more cache volumes to receive the one or more recalled tokens in turn; and
storing other data associated with one or more other jobs in the one or more depleted cache allocations in the cache volumes, wherein the other data is stored in the reserved portion of the one or more cache volumes previously reserved for the one or more non-depleted cache allocations.