IP Library › Granted Patent US 12,613,751
Granted Patent B2
US 12,613,751 · App. 18/093,273 · Granted Apr 28, 2026

Job scheduler for multi-tenant fairness

Inventors: Ming Fang (Sammamish, WA); Xinyue Yu (Seattle, WA); Michal Piotr Prussak (Kirkland, WA); Vladislavs Dovgalecs (Bellevue, WA); Wei Gao (Bellevue, WA)
Assignee: Oracle International Corporation
G06F9/505G06F2209/503
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,613,751
App. No.
18/093,273
Granted
Apr 28, 2026
Kind
B2
Abstract

Techniques are described for determining whether to process a job request. An example, method can include a device receiving a first message from a first stream, the first message comprising a job request from a tenant and a tenant identifier. The device can detect a base number of units permissible to be processed for the tenant over a unit of time. The device can detect a processing speed of a downstream processor of an asynchronous pipeline. The device can detect a number of messages in a second stream, the downstream processor configured to receive messages from the second stream. The device can determine a target throughput and a historical throughput for the tenant. The device can compare the target throughput with the historical throughput to determine whether to process the job request. The device can schedule the job request for processing based at least in part on the comparison.

Claims (79)

1 . A method, comprising:

receiving, by a computing device, a first message from a first message stream, the first message comprising a job request from a tenant and a tenant identifier;

detecting, by the computing device, a base number of units permissible to be processed for the tenant over a unit of time;

detecting, by the computing device, a processing speed of a downstream processor of an asynchronous pipeline;

detecting, by the computing device, a number of messages in a second message stream, the downstream processor configured to receive messages from the second message stream;

determining, by the computing device, a target throughput for the tenant based at least in part on a mathematical operation using the base number, the number of messages in the second message stream, and the processing speed on the downstream processor;

determining, by the computing device, a historical throughput for the tenant based at least in part on an average number of units processed over the unit of time;

comparing, by the computing device, the target throughput with the historical throughput to determine whether to process the job request; and

scheduling, by the computing device, the job request for processing based at least in part on the comparison, wherein scheduling the job request comprises:

creating a second message comprising a job identifier, a job identifier index value, and an address of data to be used to process the job request; and

transmitting the second message to a preprocessing processor using a third message stream.

2 . The method of claim 1 , wherein the mathematical operation comprises:

determining a quotient of the number of messages in the second message stream over the processing speed of the downstream processor; and

determining a product of the quotient and the base number, wherein the target throughput is the product.

3 . The method of claim 1 , wherein the method further comprises:

detecting a weight associated with the tenant;

determining a quotient of the number of messages in the second message stream over the processing speed of the downstream processor; and

determining a product of the quotient, the base number, and the weight, wherein the target throughput is the product.

4 . The method of claim 1 , wherein scheduling the job request from the tenant based at least in part on the comparison comprises determining that the target throughput is greater than the historical throughput.

5 . The method of claim 1 , wherein the first message is received at first point in time, and wherein scheduling the job request from the tenant based at least in part on the comparison comprises:

determining that the historical throughput is greater than the target throughput;

transmitting the first message back into the first message stream based on the determination;

receiving the first message at a second point in time;

determining that the target throughput is greater than the historical throughput; and

scheduling the job request based on the determination that the target throughput is greater than the historical throughput.

6 . The method of claim 1 , wherein the method further comprises determining the historical output comprises matching the tenant identifier of the first message with tenants identifiers associated with the units of the average number of units.

7 . A computing device, comprising:

a processor; and

a computer-readable medium including instructions that, when executed by the processor, cause the processor to perform operations comprising:

receiving a first message from a first message stream, the first message comprising a job request from a tenant and a tenant identifier;

detecting a base number of units permissible to be processed for the tenant over a unit of time;

detecting a processing speed of a downstream processor of an asynchronous pipeline;

detecting a number of messages in a second message stream, the downstream processor configured to receive messages from the second message stream;

determining a target throughput for the tenant based at least in part on a mathematical operation using the base number, the number of messages in the second message stream, and the processing speed on the downstream processor;

determining a historical throughput for the tenant based at least in part on an average number of units processed over the unit of time;

comparing the target throughput with the historical throughput to determine whether to process the job request; and

scheduling the job request for processing based at least in part on the comparison, wherein scheduling the job request comprises:

creating a second message comprising a job identifier, a job identifier index value, and an address of data to be used to process the job request; and

transmitting the second message to a preprocessing processor using a third message stream.

8 . The device of claim 7 , wherein the mathematical operation comprises:

determining a quotient of the number of messages in the second message stream over the processing speed of the downstream processor; and

determining a product of the quotient and the base number, wherein the target throughput is the product.

9 . The device of claim 7 , wherein the instructions that, when executed by the processor, further cause the processor to perform operations comprising:

detecting a weight associated with the tenant;

determining a quotient of the number of messages in the second message stream over the processing speed of the downstream processor; and

determining a product of the quotient, the base number, and the weight, wherein the target throughput is the product.

10 . The device of claim 7 , wherein scheduling the job request from the tenant based at least in part on the comparison comprises determining that the target throughput is greater than the historical throughput.

11 . The device of claim 7 , wherein the first message is received at first point in time, and wherein scheduling the job request from the tenant based at least in part on the comparison comprises:

determining that the historical throughput is greater than the target throughput;

transmitting the first message back into the first message stream based on the determination;

receiving the first message at a second point in time;

determining that the target throughput is greater than the historical throughput; and

scheduling the job request based on the determination that the target throughput is greater than the historical throughput.

12 . The device of claim 7 , wherein the instructions that, when executed by the processor, further cause the processor to perform operations comprising matching the tenant identifier of the first message with tenants identifiers associated with the units of the average number of units.

13 . A non-transitory computer-readable medium having stored thereon a sequence of instructions that, when executed by a processor, causes the processor to perform operations comprising:

receiving a first message from a first message stream, the first message comprising a job request from a tenant and a tenant identifier;

detecting a base number of units permissible to be processed for the tenant over a unit of time;

detecting a processing speed of a downstream processor of an asynchronous pipeline;

detecting a number of messages in a second message stream, the downstream processor configured to receive messages from the second message stream;

determining a target throughput for the tenant based at least in part on a mathematical operation using the base number, the number of messages in the second message stream, and the processing speed on the downstream processor;

determining a historical throughput for the tenant based at least in part on an average number of units processed over the unit of time;

comparing the target throughput with the historical throughput to determine whether to process the job request; and

scheduling the job request for processing based at least in part on the comparison, wherein scheduling the job request comprises:

creating a second message comprising a job identifier, a job identifier index value, and an address of data to be used to process the job request; and

transmitting the second message to a preprocessing processor using a third message stream.

14 . The non-transitory computer-readable medium of claim 13 , wherein the mathematical operation comprises:

determining a quotient of the number of messages in the second message stream over the processing speed of the downstream processor; and

determining a product of the quotient and the base number, wherein the target throughput is the product.

15 . The non-transitory computer-readable medium of claim 13 , wherein the instructions that, when executed by the processor, further cause the processor to perform operations comprising:

detecting a weight associated with the tenant;

determining a quotient of the number of messages in the second message stream over the processing speed of the downstream processor; and

determining a product of the quotient, the base number, and the weight, wherein the target throughput is the product.

16 . The non-transitory computer-readable medium of claim 13 , wherein scheduling the job request from the tenant based at least in part on the comparison comprises determining that the target throughput is greater than the historical throughput.

17 . The non-transitory computer-readable medium of claim 13 , wherein the first message is received at first point in time, and wherein scheduling the job request from the tenant based at least in part on the comparison comprises:

determining that the historical throughput is greater than the target throughput;

transmitting the first message back into the first message stream based on the determination;

receiving the first message at a second point in time;

determining that the target throughput is greater than the historical throughput; and

scheduling the job request based on the determination that the target throughput is greater than the historical throughput.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2023
From: FANG, MING; YU, XINYUE; PRUSSAK, MICHAL PIOTR; DOVGALECS, VLADISLAVS; GAO, WEI
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 062276/0603 →
Continuity (1)
Related Publication 20240220328A1 · Jul 4, 2024
References Cited (15)
US 8468251B1 · Pijewski et al. · 2013 [cited by applicant]
US 10360086B2 · Langouev et al. · 2019 [cited by applicant]
US 10990402B1 · Ibryam · 2021 [cited by examiner]
US 11175950B1 · Yang · 2021 [cited by examiner]
US 20150058484A1 · Mehta et al. · 2015 [cited by applicant]
US 20170063989A1 · Langouev · 2017 [cited by examiner]
US 20180336067A1 · Lee · 2018 [cited by examiner]
US 20230108560A1 · Wang · 2023 [cited by examiner]
US 20240028392A1 · Wei · 2024 [cited by examiner]
Krebs et al., “Comparison of Request Admission Based Performance Isolation Approaches in Multi-Tenant SaaS Applications”, Available online at: https://sdqweb.ipd.kit.edu/publications/pdfs/KrLo2014_Closer_IsolationTypes.… [cited by applicant]
Ru et al., “Providing Fairer Resource Allocation for Multi-Tenant Cloud-Based Systems”, Conference: 2015 IEEE 7th International Conference on Cloud Computing Technology and Science, Nov. 2015. [cited by applicant]
Shue et al., “Performance Isolation and Fairness for Multi-Tenant Cloud Storage”, 10th USENIX Symposium on Operating Systems Design and Implementation (OSDI '12), Available Online at: https://www.usenix.org/system/files… [cited by applicant]
Walraven et al., “Adaptive Performance Isolation Middleware for Multi-Tenant SaaS”, Proceedings of the 8th International Conference on Utility and Cloud Computing, Dec. 2015, pp. 112-121. [cited by applicant]
Wang et al., “Container-Based Performance Isolation for Multi-Tenant SaaS Applications in Micro-Service Architecture”, Journal of Physics: Conference Series, Available online at: https://iopscience.iop.org/article/10.10… [cited by applicant]
Yanacek , “Fairness in Multi-Tenant Systems”, Available Online at https://aws.amazon.com/builders-library/fairness-in-multi-tenant-systems/, 2020, 18 pages. [cited by applicant]