IP Library Granted Patent US 12,657,062
Granted Patent B2
US 12,657,062 · App. 18/319,937 · Granted Jun 16, 2026

Resource balancing for workload management in networked systems

Inventors: Asheley Shawn Lee (Collegeville, PA); Ryan Linn (Raleigh, NC); Patrick Kelly O'Donnell (Denver, NC)
Assignee: Wells Fargo Bank, N.A.
G06F9/5038G06F9/5016G06F9/505
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,657,062
App. No.
18/319,937
Granted
Jun 16, 2026
Kind
B2
Abstract

An application management system using Remote Procedure Call (RPC) frameworks can easily consume excessive amounts of memory or other resources. As described herein, tasks are allocated and balanced amongst engines using a small or fixed size of volatile memory. The memory used in such systems can balance tasks or jobs between different engines by allocating tasks between engine task lists. The complete details of those tasks are stored in queues in non-volatile memory. Tasks are allocated among the lists using a set of rules for new work, pinned work, work from disconnected engines, and reallocated work. The quantity of volatile memory and other resources necessary to manage the RPC framework is thereby reduced, or can even be handled within a size of volatile memory fixed by the user.

Claims (47)

1 . An application management device for indexing remote data stores, the application management device comprising:

a cache comprising volatile memory and configured to store a plurality of tasks, wherein the cache is formed as a self-balancing tree construct having a predefined size that is adjustable to balance speed of processing against use of the volatile memory for computational efficiency;

a non-volatile memory configured to store a plurality of queues, each of the plurality of tasks corresponding to one of the plurality of queues; and

a processor communicatively coupled to a plurality of engines, the processor configured to:

assign the plurality of tasks to a set of engine task lists, wherein each of the set of engine task lists corresponds to one of the plurality of engines;

assign each of a plurality of new tasks to one of the set of engine task lists, wherein each of the plurality of new tasks is assigned based upon which of the set of engine task lists has fewest assigned tasks;

assign each of a plurality of tasks from disconnected engines to one of the set of engine task lists, wherein each of the plurality of tasks from the disconnected engines is assigned based upon which of the set of engine task lists has fewest assigned tasks;

access the plurality of queues from the non-volatile memory when one of the plurality of new tasks reaches a top of the set of engine task lists for delegation to corresponding engines; and

rebalance the plurality of tasks, the plurality of new tasks, and the plurality of tasks from the disconnected engines amongst the set of engine task lists using the self-balancing tree construct.

2 . The application management device of claim 1 , wherein the cache has a fixed size.

3 . The application management device of claim 1 , wherein the cache has a size that can be adjusted by a user.

4 . The application management device of claim 1 , wherein the processor is configured to:

assign the plurality of new tasks before assigning the plurality of tasks from the disconnected engines; and

assign the plurality of tasks from the disconnected engines before rebalancing.

5 . The application management device of claim 1 , wherein the processor is further configured to assign pinned tasks amongst the set of engine task lists based separately from the plurality of tasks, the plurality of new tasks, and the plurality of tasks from the disconnected engines, and wherein the pinned tasks are assigned based on pinning criteria.

6 . The application management device of claim 1 , wherein the processor is further communicatively coupled to a plurality of spaces, the plurality of spaces including data for processing according to the plurality of queues.

7 . A method comprising:

assigning a plurality of tasks to a set of engine task lists, wherein each of the set of engine task lists corresponds to one of a plurality of engines;

assigning each of a plurality of new tasks to one of the set of engine task lists, wherein each of the plurality of new tasks is assigned based upon which of the set of engine task lists has fewest assigned tasks;

assigning each of a plurality of tasks from disconnected engines to one of the set of engine task lists, wherein each of the plurality of tasks from the disconnected engines is assigned based upon which of the set of engine task lists has fewest assigned tasks;

accessing a plurality of queues from a non-volatile memory when one of the plurality of new tasks reaches a top of the set of engine task lists for delegation to corresponding engines; and

rebalancing the plurality of tasks, the plurality of new tasks, and the plurality of tasks from the disconnected engines amongst the set of engine task lists using a self-balancing tree construct,

wherein each of the plurality of tasks corresponds to a queue stored in the non-volatile memory, and wherein the plurality of tasks is stored in a cache comprising volatile memory; and

wherein the cache is formed as the self-balancing tree construct having a predefined size that is adjustable to balance speed of processing against use of the volatile memory for computational efficiency.

8 . The method of claim 7 , wherein the cache comprises a fixed size of volatile memory.

9 . The method of claim 7 , wherein assigning the plurality of new tasks is performed before assigning the plurality of tasks from the disconnected engines, and assigning the plurality of tasks from the disconnected engines is performed before rebalancing.

10 . The method of claim 7 , wherein pinned tasks are assigned amongst the set of engine task lists separately from the plurality of tasks, the plurality of new tasks, the plurality of tasks from the disconnected engines, and the tasks being rebalanced.

11 . The method of claim 10 , wherein the pinned tasks are assigned based upon at least one pinning criterion that is not based upon a number of tasks assigned to each of the set of engine task lists.

12 . The method of claim 7 , further comprising accessing, by a processor, the plurality of queues corresponding to the plurality of tasks in an order based upon a number of tasks assigned to each of the set of engine task lists.

13 . A system for indexing remote data stores, the system comprising:

a plurality of engines; and

an application management device including:

a cache comprising volatile memory and configured to store a plurality of tasks, wherein the cache is formed as a self-balancing tree construct having a predefined size that is adjustable to balance speed of processing against use of the volatile memory for computational efficiency;

a non-volatile memory configured to store a plurality of queues, each of the plurality of tasks corresponding to one of the plurality of queues; and

a processor communicatively coupled to the plurality of engines, the processor configured to:

assign the plurality of tasks to a set of engine task lists, wherein each of the set of engine task lists corresponds to one of the plurality of engines;

assign each of a plurality of new tasks to one of the set of engine task lists, wherein each of the plurality of new tasks is assigned based upon which of the set of engine task lists has fewest assigned tasks;

assign each of a plurality of tasks from disconnected engines to one of the set of engine task lists, wherein each of the plurality of tasks from the disconnected engines is assigned based upon which of the set of engine task lists has fewest assigned tasks;

access the plurality of queues from the non-volatile memory when one of the plurality of new tasks reaches a top of the set of engine task lists for delegation to corresponding engines; and

rebalance the plurality of tasks, the plurality of new tasks, and the plurality of tasks from the disconnected engines amongst the set of engine task lists using the self-balancing tree construct.

14 . The system of claim 13 , further comprising a plurality of spaces communicatively coupled to the processor, each of the plurality of spaces configured to hold data corresponding to at least one of the plurality of queues.

15 . The system of claim 13 , wherein the cache has a fixed size.

16 . The system of claim 13 , wherein the cache has a size that can be adjusted by a user.

17 . The system of claim 13 , wherein the processor is configured to:

assign the plurality of new tasks before assigning the plurality of tasks from the disconnected engines; and

assign the plurality of tasks from the disconnected engines before rebalancing.

18 . The system of claim 13 , wherein the processor is further configured to assign pinned tasks amongst the set of engine task lists based separately from the plurality of tasks, the plurality of new tasks, and the plurality of tasks from the disconnected engines, and wherein the pinned tasks are assigned based on pinning criteria.

Assignments (2)
STATEMENT OF CHANGE OF ADDRESS OF ASSIGNEE Recorded Jun 17, 2025
From: WELLS FARGO BANK, N.A.
To: WELLS FARGO BANK, N.A.
Reel/Frame 071644/0971 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2023
From: LEE, ASHELEY SHAWN; LINN, RYAN; O'DONNELL, PATRICK KELLY
To: WELLS FARGO BANK, N.A.
Reel/Frame 065440/0704 →
Continuity (1)
Related Publication 20240385888A1 · Nov 21, 2024
References Cited (10)
US 6976053B1 · Tripp et al. · 2005 [cited by applicant]
US 9379933B1 · Bishop · 2016 [cited by examiner]
US 20080046895A1 · Dillenberger · 2008 [cited by examiner]
US 20100005072A1 · Pitts · 2010 [cited by applicant]
US 20150074259A1 · Ansari et al. · 2015 [cited by applicant]
US 20150288655A1 · Narasimhamurthy · 2015 [cited by examiner]
US 20180300174A1 · Karanasos · 2018 [cited by examiner]
US 20240248788A1 · Soumpholphakdy · 2024 [cited by examiner]
WO 9944123A1 · 1999 [cited by applicant]
WO 2017127850A1 · 2017 [cited by applicant]