US 12,216,904 B2
Memory buffer management on hardware devices utilizing distributed decentralized memory buffer monitoring
Yi Yuan, Redmond, WA (US); Narayanan Ravichandran, Bellevue, WA (US); Robert Groza, Jr., Redmond, WA (US); Yevgeny Yankilevich, Tirat Carmel (IL); and Hari Daas Angepat, Redmond, WA (US)
Assigned to Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed by Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed on Mar. 8, 2024, as Appl. No. 18/600,150.
Application 18/600,150 is a continuation of application No. 17/943,669, filed on Sep. 13, 2022, granted, now 11,947,802.
Prior Publication US 2024/0211139 A1, Jun. 27, 2024
Int. Cl. G06F 3/06 (2006.01)
CPC G06F 3/0611 (2013.01) [G06F 3/0656 (2013.01); G06F 3/0673 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A computer hardware device comprising:
a memory buffer within a memory buffer pool, the memory buffer having input data to be processed;
a buffer pointer that references the memory buffer having the input data; and
a plurality of processing roles for processing data;
wherein the computer hardware device causes the memory buffer to be deallocated by:
determining, by an organizer processing role of the plurality of processing roles, an initial number of processing roles needed to process the input data;
generating, by the organizer processing role, a first augmented buffer pointer that comprises the buffer pointer, a buffer pointer cloning indicator, and a null role number value indicating that a total number of processing roles needed to process the input data is initially unknown;
providing cloned versions of the first augmented buffer pointer to a plurality of consumer processing roles of the plurality of processing roles including a sub-organizer processing role;
determining, by the sub-organizer processing role, an additional number of processing roles needed to process the input data;
generating, by the sub-organizer processing role, an updated role number value indicating the total number of processing roles by combining the initial number of processing roles with the additional number of processing roles;
providing, by a consumer processing role of the plurality of consumer processing roles, a deallocation request to deallocate the memory buffer after the consumer processing role utilizes the first augmented buffer pointer; and
deallocating the memory buffer based on determining that a number of received deallocation requests received from processing roles match the updated role number value indicating the total number of processing roles.