Prosecution Insights
Last updated: September 17, 2026
Application No. 18/605,585

Distributed Memory Pooling

Non-Final OA §103
Filed
Mar 14, 2024
Priority
Oct 30, 2023 — provisional 63/594,335
Examiner
HEADLY, MELISSA A
Art Unit
Tech Center
Assignee
Kove Ip LLP
OA Round
1 (Non-Final)
75%
Grant Probability
Favorable
1-2
OA Rounds
11m
Est. Remaining
99%
With Interview

Examiner Intelligence

Grants 75% — above average
75%
Career Allowance Rate
312 granted / 416 resolved
+15.0% vs TC avg
Strong +41% interview lift
Without
With
+41.0%
Interview Lift
resolved cases with interview
Typical timeline
3y 5m
Avg Prosecution
24 currently pending
Career history
443
Total Applications
across all art units

Statute-Specific Performance

§101
11.9%
-28.1% vs TC avg
§103
61.0%
+21.0% vs TC avg
§102
5.1%
-34.9% vs TC avg
§112
14.0%
-26.0% vs TC avg
Black line = Tech Center average estimate • Based on career data from 416 resolved cases

Office Action

§103
DETAILED ACTION The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . Examiner Notes Examiner cites particular columns and line numbers in the references as applied to the claims below for the convenience of the applicant. Although the specified citations are representative of the teachings in the art and are applied to the specific limitations within the individual claim, other passages and figures may apply as well. It is respectfully requested that, in preparing responses, the applicant fully consider the references in entirety as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art or disclosed by the examiner. The examiner encourages Applicant to submit an authorization to communicate with the examiner via the Internet by making the following statement (from MPEP 502.03): “Recognizing that Internet communications are not secure, I hereby authorize the USPTO to communicate with the undersigned and practitioners in accordance with 37 CFR 1.33 and 37 CFR 1.34 concerning any subject matter of this application by video conferencing, instant messaging, or electronic mail. I understand that a copy of these communications will be made of record in the application file.” Please note that the above statement can only be submitted via Central Fax, Regular postal mail, or EFS Web (PTO/SB/439). Claim Rejections - 35 USC § 103 In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status. The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made. Claims 1-17 and 19-20 rejected under 35 U.S.C. 103 as being unpatentable over Haywood et al. (US 2021/0132999 ) in view of Stabrawa et al. (US 2021/0240616). As per claim 1, Haywood teaches the invention substantially as claimed including a system ([0014], data center 100 having a set of ‘n’ memory-pooling servers 101 (“MP server” or “server”) coupled to one another via a memory-semantic interconnect fabric 103) comprising: a first memory associated with a first computing device ([0014], each MP server includes … a memory subsystem 115); a second memory associated with a second computing device ([0014], each MP server … a memory subsystem 115); and one or more processors configured to execute a scheduling logic ([0014], each MP server includes one or more CPUs (central processing units) 111…memory virtualizer additionally includes a public/private memory allocator (133) and a fabric interface (135), the former serving as a centralized memory allocation coordinator for all local memory allocated to processes executed by the local CPU core and remote (other server) CPU cores, and the latter enabling transmission and reception of inter-server memory allocation requests and memory load/store instructions via the memory-semantic interconnect fabric 103 (e.g., implemented by Gen-Z or other load/store memory interconnect)) to: cause a first application logic to operate in the first computing device ([0015], the CPU directs data load and store operations on behalf of code-execution-instantiated entities (operating system (OS) or kernel, and processes hosted by the kernel and underlying CPU)); and allocate a second portion of the first memory to hold second data of a second application logic operating in a computing device other than the first computing device ([0011], a memory-pooling server computer dynamically allocates pages of local memory to one or more other server computers; [0028], If allocable local memory is insufficient to meet the allocation request (negative determination at 191), allocation engine 133 coordinates with one or more allocation engines within remote memory-pooling servers to fulfill the allocation request in whole or part out of the collective memory pool), the second portion of the first memory being linked to a second cache memory of the second application logic ([0016], each memory-pooling server 101 partitions the physical address space of the local CPU socket(s) by assigning a subset of that address space (a set of LPAs) to local memory 115 and associating the remaining LPAs with memory virtualizer 117; and [0038], If the LPA maps to memory virtualizer 117L, the LPA is conveyed via counterpart cache coherent interfaces 131L/327L to bidirectional translation circuitry 329L for outbound translation (lookup) into a fabric address (FA). Fabric interface 331L then transmits the fabric address and load/store instruction to remote server 303 via memory-semantic interconnect fabric 103), wherein the first computing device and the second computing device operate independently ([0013], Physical location and/or other features of allocated/accessed memory (on the “local” server hosting/executing the process requesting the memory allocation/access or on a remote server) may be hidden from the allocation-requesting process—abstracted in that the process perceives local and remote memory identically during allocation and subsequent load/store access), and the first application logic and second application logic operate independently ([0013], Physical location and/or other features of allocated/accessed memory (on the “local” server hosting/executing the process requesting the memory allocation/access or on a remote server) may be hidden from the allocation-requesting process—abstracted in that the process perceives local and remote memory identically during allocation and subsequent load/store access). Haywood fails to specifically teach, cause a first application logic to operate in the first computing and to utilize a first portion of the first memory of the first computing device as a first cache memory for first data of the first application logic maintained in a first portion of the second memory of the second computing device. However, Stabrawa teaches, cause a first application logic to operate in the first computing device ([0069], client 130 may include a client logic 312) and to utilize a first portion of the first memory of the first computing device as a first cache memory for first data of the first application logic maintained in a first portion of the second memory of the second computing device ([0026], the client 130 may operate the locally available primary memory as a cache memory when accessing the externally allocated memory from the memory appliance 110). Haywood and Stabrawa are analogous because they are each related to memory allocation. Haywood teaches a method of local and remote memory allocation using memory pooling among various servers: [0011], a memory-pooling server computer dynamically allocates pages of local memory to one or more other server computers, executing memory write and read operations with respect to each memory page allocated to another server computer in response to load and store commands issued by that other server computer… the memory-pooling server computer (“memory-pooling server”) publishes/exposes a “free queue” of addresses and related information that enables allocation of local memory pages to the other server computers, and each of the other server computers likewise implements a free-queue publishing memory-pooling server such that the complete set of published free queues defines a collective memory pool backed by physical memory pages distributed among the memory-pooling servers… allowing allocation of any memory in a data center to a given server and thus avoiding the memory stranding (memory siloed within individual servers/operating-systems) that plagues conventional data center installations). [0014], enabling transmission and reception of inter-server memory allocation requests and memory load/store instructions via the memory-semantic interconnect fabric 103; [0016], enabling memory mapped to the public LPA range (“public memory” 149) to be allocated to other memory-pooling servers via memory virtualizer 117, effectively contributing or donating the public memory to a collective memory pool 150 from which physical memory pages may be allocated to a requesting process executing on any memory-pooling server; and [0018], Each memory virtualizer, shown for example in detail view 160, also maintains a set of free queues 161 (shown in further detail view 163) that include the four free queues discussed above—that is, a published free queue 155 (list of fabric addresses (FAs)), a private local-memory free queue 165 (list of LPAs that resolve to local private memory), a public local-memory free queue 167 (list of LPAs corresponding to local public memory), and a virtualizer-associated LPA free queue 169, the latter containing LPAs to be mapped on demand (and via fabric addresses shared between MP servers) to LPAs for public local memory within other servers Stabrawa teaches a method of local and remote memory allocation using a shared memory pool including utilizing local cache memory mapped to remotely allocated memory: [0023], the technical solution may enable multiple clients to share a single region and/or external memory allocation when using a memory allocation interface; [0024], memory pool may be external to the local machine. The memory pool may involve multiple memory appliances, and the memory pool may scale to an infinite or arbitrarily large number of memory appliances without performance irregularities due to the scaling; [0026], the client 130 may operate the locally available primary memory as a cache memory when accessing the externally allocated memory from the memory appliance 110; [0028], An external memory allocation may reference one or more regions in the memory appliance 110. The management server 120 may allocate and/or manipulate the regions in the memory appliance 110 using region access logic requests. The client 130 may allocate and/or manipulate external memory allocations and/or regions using allocation logic requests; and [0029], Multiple memory appliances may be “pooled” to create a dynamically allocatable, or allocable, external memory pool. For example, new memory appliances may be discovered, or as they become available, memory of, or within, the new memory appliances may be made part of the memory pool. The memory pool may be a logical construct…client 130 may be able to request dynamically allocatable external memory from the memory pool which may be available for use, even though the external memory exists on other machines, unknown to the client 130; and [0040], the dynamically allocatable external memory provides a high level of determinacy and consistent performance scaling even as more memory appliances and external memory clients are deployed and/or used for dynamic load balancing, aggregation, and/or re-aggregation). It would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention that based on the combination, the teachings of Haywood would be modified with cache-mapping mechanism of Stabrawa’s memory pooling system resulting in a system that efficiently allocates memory of one server to another server. Therefore, it would have been obvious to combine the teachings of Haywood and Stabrawa. As per claim 2, Haywood teaches, wherein the first memory is local to the first computing device and the second memory is local to the second computing device ([0014], each MP server includes … a memory subsystem 115). As per claim 3, Haywood teaches, wherein the one or more processors are configured to execute the scheduling logic to determine a size of the first portion of the first memory used as the first cache memory of the first application logic according to one or more operational parameters of the first application logic ([0013], the process-hosting operating system (or the process itself) may apply policy-based rules or algorithms to determine whether local memory, remote memory, or a blend of local and remote memory is to be allocated to a given process, considering such factors as allocation size request, number of data-center switch-levels traversed to access remote memory (and hence degree of latency), and so forth; and [0041], The public/private memory split may be dynamically updated (i.e., changed during server runtime) based on policies implemented within the host server of the memory-virtualizer and physical memory installation or in response to instructions from a centralized memory-control entity (e.g., process executing on another server) within a data center or wider collection of memory-pooling servers). As per claim 4, Stabrawa teaches, wherein the one or more operational parameters comprise a total memory use indicator ([0244]] Conditions, parameters, configurations, and/or other properties of the client 130 may include: … the amount of available local primary memory; the amount of available external primary memory… configured constraints, such as constraints configured by a user and/or administrator; and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory), a working set size indicator ([0244], ] Conditions, parameters, configurations, and/or other properties of the client 130 may include: … the amount of memory requested by the request to allocate memory; configurable thresholds, margins, and/or hysteresis settings; … configured constraints, such as constraints configured by a user and/or administrator; and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory), a desired external primary memory indicator ([0244], Conditions, parameters, configurations, and/or other properties of the client 130 may include: … the amount of available external primary memory; … configurable thresholds, margins, and/or hysteresis settings; performance characteristics of local primary memory… and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory), a desired local primary memory indicator ([0244] Conditions, parameters, configurations, and/or other properties of the client 130 may include:… the amount of available local primary memory,…the amount of memory requested by the request to allocate memory; configurable thresholds, margins, and/or hysteresis settings; performance characteristics of local primary memory; … configured constraints, such as constraints configured by a user and/or administrator; and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory), or a desired cache indicator associated with the first application logic ([0244] Conditions, parameters, configurations, and/or other properties of the client 130 may include: … the amount of local primary memory configured for use as a cache of data in external primary memory; the amount of memory requested by the request to allocate memory; configurable thresholds, margins, and/or hysteresis settings; performance characteristics of local primary memory; performance characteristics of one or more memory appliances 110; configured constraints, such as constraints configured by a user and/or administrator; and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory). As per claim 5, Stabrawa teaches, wherein: the second application logic operates in the second computing device ([0026], client 130 may be a machine or a device…client 130 may contain local memory that operates as the primary memory of the client 130; and [0069], memory 310 of the client 130 may include an application logic 314); and the second cache memory resides in the second memory ([0025], the external memory system may include multiple clients; and [0026], client 130 may contain local memory that operates as the primary memory of the client 130). As per claim 6, Haywood teaches, wherein the one or more processors are configured to execute the scheduling logic to determine a size of the first portion of the first memory used as the first cache memory for the first application logic according to one or more operational parameters of the first application logic or the second application logic ([0013], the process-hosting operating system (or the process itself) may apply policy-based rules or algorithms to determine whether local memory, remote memory, or a blend of local and remote memory is to be allocated to a given process, considering such factors as allocation size request, number of data-center switch-levels traversed to access remote memory (and hence degree of latency), and so forth; and [0041], The public/private memory split may be dynamically updated (i.e., changed during server runtime) based on policies implemented within the host server of the memory-virtualizer and physical memory installation or in response to instructions from a centralized memory-control entity (e.g., process executing on another server) within a data center or wider collection of memory-pooling servers).. As per claim 7, Stabrawa teaches, wherein the one or more operational parameters comprise a total memory use indicator ([0244]] Conditions, parameters, configurations, and/or other properties of the client 130 may include: … the amount of available local primary memory; the amount of available external primary memory… configured constraints, such as constraints configured by a user and/or administrator; and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory), a working set size indicator ([0244], Conditions, parameters, configurations, and/or other properties of the client 130 may include: … the amount of memory requested by the request to allocate memory; configurable thresholds, margins, and/or hysteresis settings; … configured constraints, such as constraints configured by a user and/or administrator; and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory), a desired external primary memory indicator ([0244], Conditions, parameters, configurations, and/or other properties of the client 130 may include: … the amount of available external primary memory; … configurable thresholds, margins, and/or hysteresis settings; performance characteristics of local primary memory… and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory), a desired local primary memory indicator ([0244] Conditions, parameters, configurations, and/or other properties of the client 130 may include:… the amount of available local primary memory,…the amount of memory requested by the request to allocate memory; configurable thresholds, margins, and/or hysteresis settings; performance characteristics of local primary memory; … configured constraints, such as constraints configured by a user and/or administrator; and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory), or a desired cache indicator associated with the first application logic or the second application logic ([0244] Conditions, parameters, configurations, and/or other properties of the client 130 may include: … the amount of local primary memory configured for use as a cache of data in external primary memory; the amount of memory requested by the request to allocate memory; configurable thresholds, margins, and/or hysteresis settings; performance characteristics of local primary memory; performance characteristics of one or more memory appliances 110; configured constraints, such as constraints configured by a user and/or administrator; and/or any other information, configuration(s), policy/policies, assignment(s), and/or other one or more criteria that may be useful for determining one or more types of memory to select in response to the request to allocate memory). As per claim 8, Stabrawa teaches, wherein the one or more processors are configured to execute the scheduling logic to cause the first application logic to operate in the first computing device ([0069], memory 310 of the client 130 may include an application logic 314) and the second application logic to operate in the computing device other than the first computing device ([0025], the external memory system may include multiple clients, multiple memory appliances, and/or multiple management servers; and [0069], memory 310 of the client 130 may include an application logic 314) according to an application logic placement indicator ([0157], creating the indication of the allocation strategy may include identifying one or more policies, passed functions, steps, and/or rules that indicate the allocation logic is to prefer to allocate memory on the memory appliances that have a network locality near to the clients). As per claim 9, Stabrawa teaches, wherein the one or more processors are configured to execute the scheduling logic to cause the first application logic to operate in the first computing device ([0069], memory 310 of the client 130 may include an application logic 314) and the second application logic to operate in the computing device other than the first computing device ([0025], the external memory system may include multiple clients, multiple memory appliances, and/or multiple management servers; and [0069], memory 310 of the client 130 may include an application logic 314) based on a determination of optimal performance, power usage, or operational cost associated with the first computing device ([0157], client profile, for example, may indicate that the client is a low network bandwidth client. In a fifth example, creating the indication of the allocation strategy may include identifying one or more policies, passed functions, steps, and/or rules that indicate the allocation logic is to prefer to allocate memory on the memory appliances that have a network locality near to the clients. In other words, external memory may be provisioned to the clients with a network locality within a threshold distance of the memory appliances that contain the provisioned memory). As per claim 10, Stabrawa teaches, wherein the one or more processors are configured to execute the scheduling logic to adjust an amount of the first portion of the second memory allocated for maintaining the first data of the first application logic in response to a resource availability indication associated with the first memory or the second memory ([0248], if the amount of available external primary memory is decreasing rapidly (in other words, decreasing at a rate greater than a threshold rate), the client logic 312 and/or another logic may determine (1004) to use anonymous memory and/or local primary memory in examples where the currently-available external primary memory may otherwise be adequate to accommodate the request to allocate memory…Other examples may include any one or more combinations of parameters increasing and/or decreasing rapidly (e.g. greater than a threshold) and/or slowly (e.g. less than a threshold), such as: the amount of available local primary memory; amount of external primary memory; amount of used anonymous memory; amount of used local primary memory; amount of used file-backed memory; amount of used external primary memory; amount of remaining margin(s) for any one or more parameters; percent and/or ratio of remaining margin(s) for any one or more parameters; any characteristic(s) and/or configuration(s) of one or more clients 130, memory appliances 120, and/or management servers 120; etc.). As per claim 11, Haywood teaches, wherein the second memory is local to the second computing device ([0014], each MP server includes … a memory subsystem 115) and the one or more processors are configured to execute the scheduling logic to select the second memory to store the first data of the first application logic based on a processing capability of the second computing device ([0012], memory access requests are routed alternately to local or remote memory (the latter referring to either a local memory installation on a memory-pooling server other than the server that sourced the memory-access request). As per claim 12, Haywood teaches, wherein the one or more processors are configured to execute the scheduling logic to select the second memory to store the first data of the first application logic based on a physical or network distance between the second memory and the first computing device ([0028], If allocable local memory is insufficient to meet the allocation request (negative determination at 191), allocation engine 133 coordinates with one or more allocation engines within remote memory-pooling servers to fulfill the allocation request in whole or part out of the collective memory pool; [0041], at least the following features are enabled by the fabric-interconnected memory-pooling servers:…[0052], Inter-virtualizer messaging that renders each virtualizer component aware of memory available on other memory-pooling servers (and thus the total available memory pool with respect to the host server of a given virtualizer component) as well as performance metrics with respect to that memory (e.g., … physical distance). As per claim 13, Haywood teaches, wherein the one or more processors are configured to execute the scheduling logic to select the second memory to hold the first data of the first application logic by minimizing a physical or network distance between the second memory and the first computing device ([0041], the split between public and private memory within a given memory-pooling server may be strategically selected in accordance with physical memory implementation (e.g., splitting at memory rank level, memory module level, memory channel level, etc.) so as to optimize opportunities for access concurrency (and conversely minimize congestion between locally and remotely requested accesses)). As per claim 14, Haywood teaches, wherein the one or more processors are configured to execute the scheduling logic to transfer the first data of the first application logic in the second memory to the first memory in response to a memory resource availability indication associated with the first memory or the second memory ([0028], If allocable local memory is insufficient to meet the allocation request (negative determination at 191), allocation engine 133 coordinates with one or more allocation engines within remote memory-pooling servers to fulfill the allocation request in whole or part out of the collective memory pool; [0041], at least the following features are enabled by the fabric-interconnected memory-pooling servers:…[0052], Inter-virtualizer messaging that renders each virtualizer component aware of memory available on other memory-pooling servers (and thus the total available memory pool with respect to the host server of a given virtualizer component)). As per claim 15, Stabrawa teaches, wherein the one or more processors are configured to execute the scheduling logic to move the first application logic to operate in the second computing device ([0127], A request to migrate a region may indicate a request 502a to migrate data from a first region 214a included in a memory of a first memory appliance, 110a to a second region 214b included in a memory of a second memory appliance 110b, as illustrated in FIG. 5A) in response to a computing resource availability indication for the first computing device or the second computing device ([0128], the request 502a to migrate the first region 214a may indicate creating the second region 214b at the second memory appliance 110b, in case the second region 214b does not exist (530). If creation of the second region 214b fails, the migration request 502a may fail (530, 550). Alternatively, if the second region 214b is successfully created, the contents of the first region 214a may be transferred to the second region 214b as part of a successful migration (540, 545); and [0130], the reconfiguration is successful, the first memory appliance 110a may confirm that the second region 214b is now compatible for the migration (522). Once compatibility is confirmed, the region access logic 212a may attempt to perform a first client-side memory access to write data from the first region 214a to the second region 214b (540) and on successful completion, mark the migration as successful (545)). As per claim 16, Stabrawa teaches, wherein the one or more processors are configured to execute the scheduling logic to adjust an amount of the first portion of the first memory allocated as the first cache memory in response to: a performance metrics monitored for the first application logic ([0032], memory pool manager may provision external memory to different clients at different times according to … service level agreements (SLAs), performance loads, temporary or permanent needs, or any other factors; and [0259], a background process may monitor memory usage and change previous allocations from anonymous memory to file-backed memory and/or from file-backed memory to anonymous memory); a request to operate a third application logic ([0031], extend their memory capacity, on demand, by using dynamically allocatable external memory; and [0032], management server 120, using various components, may provision external primary memory to the client 130 or multiple clients that request external memory allocation); or the second application logic releasing its memory allocation or ceasing to operate. As per claim 17, Stabrawa teaches, wherein the one or more processors are configured to execute the scheduling logic to adjust the first portion of the second memory for storing the first data of the first application logic in response to an increase in memory usage by another application logic utilizing the second memory ([0040], by using the client-side memory access, the dynamically allocatable external memory provides a high level of determinacy and consistent performance scaling even as more memory appliances and external memory clients are deployed and/or used for dynamic load balancing, aggregation, and/or re-aggregation; [0244], the determination of available memory (1004) may be based on an evaluation of one or more of: …frequency of use, periodicity, load, load balancing; and [0302], In allocating the one or more portion(s), the portion(s) of external primary memory may be selected at the client 130, by the client logic 312, by another logic, in coordination with other client logics 31). As per claim 19, Stabrawa teaches, wherein: the system further comprises a third memory associated with a third computing device and a fourth memory associated with a fourth computing device ([0025], the external memory system may include multiple clients; [0026], client 130 may contain local memory that operates as the primary memory of the client 130; and [0039], A group of one or more clients may be considered a client group. Accordingly, actions described throughout this disclosure as being performed upon and/or by one or more clients may alternatively or in addition be performed upon and/or by one or more client groups); and the one or more processors are configured to execute the scheduling logic to cause the first application logic to be migrated to or restarted in the third computing device ([0023], the technical solution may enable applications that use a memory allocation interface to be migrated from one physical machine to another, without losing metadata related to allocated portions) utilizing a first portion of the third memory as a third cache memory for third data of the first application logic in a first portion in the fourth memory ([0026], client 130 may operate the locally available primary memory as a cache memory when accessing the externally allocated memory from the memory appliance 110… locally available primary memory may be faster than the externally allocated memory and may be used to store copies of data from frequently used memory locations of the externally allocated memory)). As per claim 20, Stabrawa teaches, wherein the second memory is not accessible via a memory fabric from the third computing device ([0060], Access parameters may include a list of zero or more communication interfaces 230 included in the memory appliance 110 which may be used to access the region 214, a list of zero or more clients, memory appliances, and/or management servers which are allowed to access the region 214, a list of zero or more communication interfaces of clients, memory appliances, and/or management servers which are allowed to access the region 214, a password which may be used to authenticate access to the region 214, an encryption key which may be used to authenticate access to the region 214, access permissions, and/or any other parameters used to specify how the region may be accessed). Claim 18 is rejected under 35 U.S.C. 103 as being unpatentable over the combination of Haywood-Stabrawa as applied to independent claim 1 and in further view of Wong et al. (US 7702743). As per claim 18, Haywood teaches, wherein the one or more processors are configured to cause the first computing device to send an indication to the second computing device via a memory fabric ([0014], memory virtualizer additionally includes a public/private memory allocator (133) and a fabric interface (135), the former serving as a centralized memory allocation coordinator for all local memory allocated to processes executed by the local CPU core and remote (other server) CPU cores, and the latter enabling transmission and reception of inter-server memory allocation requests and memory load/store instructions via the memory-semantic interconnect fabric 103 (e.g., implemented by Gen-Z or other load/store memory interconnect); and [0028], If allocable local memory is insufficient to meet the allocation request (negative determination at 191), allocation engine 133 coordinates with one or more allocation engines within remote memory-pooling servers to fulfill the allocation request in whole or part out of the collective memory pool), The combination of Haywood-Stabrawa fails to specifically teach, the indication causing the second computing device to execute an inter-processor interrupt handler logic. However, Wong teaches, the indication causing the second computing device to execute an inter-processor interrupt handler logic (Column 8, Lines 55-60, BSP may then "awaken" the APs, including processors on other computers 10A-10M (block 84). For example, the BSP may signal an interrupt to each AP to cause it to awaken and begin executing code. As another example, the BSP may write a memory location being polled by the APs with a value that indicates that the APs may awaken). The combination of Haywood-Stabrawa and Wong are analogous because they are each related to memory management. Haywood teaches a method of local and remote memory allocation using memory pooling among various servers. Stabrawa teaches a method of local and remote memory allocation using a shared memory pool including utilizing local cache memory mapped to remotely allocated memory. Wong teaches method of memory sharing across local memories of distributed computers using interrupts: Column 6, Lines 3-8, The DSM 38 may generally be responsible for emulating the distributed shared memory system of the VM 22 over the local memories 16 of the computers 10A-10M. The DSM 38 may move data between computers 10A-10M, over the network 12, as needed according to the execution of the guest operating system 32 and/or the applications 30; and Column 1, Lines 1-6, BSP may then "awaken" the APs, including processors on other computers 10A-10M (block 84). For example, the BSP may signal an interrupt to each AP to cause it to awaken and begin executing code. As another example, the BSP may write a memory location being polled by the APs with a value that indicates that the APs may awaken. It would have been obvious to one having ordinary skill in the art before the effective filing date of the claimed invention that based on the combination, the memory allocation system of the combination of Haywood-Stabrawa would be modified with interrupt mechanism of Wong resulting in a system that efficiently allocates memory of one server to another server utilizing interrupts. Therefore, it would have been obvious to combine the teachings of the combination of Haywood-Stabrawa and Wong. Conclusion The prior art made of record and not relied upon is considered pertinent to applicant's disclosure and is as follows: Webb et al. (US 2024/0045713)- Teaches distributed memory allocation: [0016], scheduling platform 102 may communicate with the computing resource management device 104 (e.g., an orchestrator of a cloud computing network) to receive computing resource information regarding the set of computing resources 106. In some implementations, the computing resource information may include information regarding a set of parameters or characteristics of the set of computing resources 106. For example, the computing resource information may include information identifying an availability of each computing resource 106 for task assignment, a type of each computing resource 106 (e.g., whether a computing resource 106 is associated with a central processing unit (CPU), a graphical processing unit (GPU), a network card (e.g., network interface card (NIC)), an audio processing unit (APU), a field programmable gate array (FPGA), or a system-on-chip (SoC)), or a capacity of each computing resource 106 (e.g., a quantity of cores, a processor frequency, or a memory), among other examples. NIU et al. (CN 116339968 A)- Teaches efficient distributed memory allocation: Abstract, the scheduling unit obtains a task set comprising a plurality of tasks; determining the task topology relationship, the task topology relationship is used for representing the association relation of the plurality of tasks; determining the data related to each task; according to the task topology relationship, data and distribution strategy, distributing calculation node for each task, distributing cache node for each data, the distribution strategy comprises: distributing the calculation node for the first task and priority selecting the same node when distributing the cache node for the input data of the first task, the first task is any one task of the plurality of tasks. The scheduling method is helpful to reduce the cross-node cache data read-write operation condition, so as to improve the calculation efficiency Jain et al. (US 11494297). Teaches distributed memory allocation: Abstract, allocating a local memory pool for the processor from a global memory pool for the plurality of processors in response to the first memory allocation request; and allocating memory from the local memory pool for the processor in response to the first memory allocation request without locking the local memory pool Any inquiry concerning this communication or earlier communications from the examiner should be directed to MELISSA A HEADLY whose telephone number is (571)272-1972. The examiner can normally be reached Monday- Friday 9-5:30pm. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Bradley Teets can be reached at 571-272-3338. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /MELISSA A HEADLY/Examiner, Art Unit 2197
Read full office action

Prosecution Timeline

Mar 14, 2024
Application Filed
Sep 04, 2026
Non-Final Rejection mailed — §103 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12730674
POWER-PERFORMANCE BASED SYSTEM MANAGEMENT
6y 2m to grant Granted Sep 08, 2026
Patent 12717600
METHODS AND APPARATUS TO PROCESS DATA PACKETS FOR LOGICAL AND VIRTUAL SWITCH ACCELERATION IN MEMORY
5y 8m to grant Granted Aug 25, 2026
Patent 12664011
Hybrid Cloud Based Protection for Applications and Virtual Machines
3y 9m to grant Granted Jun 23, 2026
Patent 12650862
Sharing Virtual Environment Data
4y 9m to grant Granted Jun 09, 2026
Patent 12639091
PROBE DEPLOYMENT
4y 4m to grant Granted May 26, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

1-2
Expected OA Rounds
75%
Grant Probability
99%
With Interview (+41.0%)
3y 5m (~11m remaining)
Median Time to Grant
Low
PTA Risk
Based on 416 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month