IP Library › Granted Patent US 12,265,848
Granted Patent B2
US 12,265,848 · App. 18/531,989 · Granted Apr 1, 2025

Determining a job group status based on a relationship between a generation counter value and a ticket value for scheduling the job group for execution

Inventor: Benoit Sevigny (Montréal, CA)
Assignee: Unity IPR ApS
G06F9/4881G06F9/5044G06F2209/483G06F2209/484
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,265,848
App. No.
18/531,989
Granted
Apr 1, 2025
Kind
B2
Abstract

A job scheduler system includes one or more hardware processors, a memory including a job group queue stored in the memory, and a job scheduler engine configured to create a first job group in the job group queue, the first job group includes a generation counter having an initial value, receive a first request to steal the first job group, determine a state of the first job group based at least in part on the generation counter, the state indicating that the first job group is available to steal, based on the determining the state of the first job group, atomically increment the generation counter, thereby making the first job group unavailable for stealing, and alter an execution order of the first job group ahead of at least one other job group in the job group queue.

Claims (67)

1. A system comprising:

one or more computer processors;

one or more computer memories;

a set of instructions stored in the one or more computer memories, the set of instructions configuring the one or more computer processors to perform operations, the operations comprising:

adding one or more jobs to a queue, the one or more jobs associated with a generation counter;

receiving a request to steal the one or more jobs, wherein the request to steal the one or more jobs is received by a first thread and a causing of the one or more jobs to be unavailable for stealing relates to a second thread;

modifying a value of the generation counter, the modifying signifying that the one or more jobs are unavailable for stealing; and

altering an execution order of the one or more jobs in the queue.

2. The system of claim 1 , wherein the value of the generation counter represents a state of the one or more jobs, wherein the state includes a queued state, a pushed state, or a finished state.

3. The system of claim 1 , wherein the modifying of the generation counter is performed atomically.

4. The system of claim 1 , the operations further comprising, based on a determining of one or more dependencies of one or more additional jobs on the one or more jobs, stealing the one or more additional jobs.

5. A system comprising:

one or more computer processors;

one or more computer memories;

a set of instructions stored in the one or more computer memories, the set of instructions configuring the one or more computer processors to perform operations, the operations comprising:

adding one or more jobs to a queue, the one or more jobs associated with a generation counter, wherein only one thread has access to the queue at a given time;

receiving a request to steal the one or more jobs;

modifying a value of the generation counter, the modifying signifying that the one or more jobs are unavailable for stealing; and

altering an execution order of the one or more jobs in the queue.

6. A system comprising:

one or more computer processors;

one or more computer memories;

a set of instructions stored in the one or more computer memories, the set of instructions configuring the one or more computer processors to perform operations, the operations comprising:

adding one or more jobs to a queue, the one or more jobs associated with a generation counter;

receiving a request to steal the one or more jobs;

modifying a value of the generation counter, the modifying signifying that the one or more jobs are unavailable for stealing, wherein the modifying of the value of the generation counter includes changing the generation counter with respect to a finished generation count; and

altering an execution order of the one or more jobs in the queue.

7. A method comprising:

adding one or more jobs to a queue, the one or more jobs associated with a generation counter;

receiving a request to steal the one or more jobs, wherein the request to steal the one or more jobs is received by a first thread and a causing of the one or more jobs to be unavailable for stealing relates to a second thread;

modifying a value of the generation counter, the modifying signifying that the one or more jobs are unavailable for stealing; and

altering an execution order of the one or more jobs in the queue.

8. The method of claim 7 , wherein the value of the generation counter represents a state of the one or more jobs, wherein the state includes a queued state, a pushed state, or a finished state.

9. The method of claim 7 , wherein the modifying of the generation counter is performed atomically.

10. The method of claim 7 , further comprising, based on a determining of one or more dependencies of one or more additional jobs on the one or more jobs, stealing the one or more additional jobs.

11. A method comprising:

adding one or more jobs to a queue, the one or more jobs associated with a generation counter, wherein only one thread has access to the queue at a given time;

receiving a request to steal the one or more jobs;

modifying a value of the generation counter, the modifying signifying that the one or more jobs are unavailable for stealing; and

altering an execution order of the one or more jobs in the queue.

12. A method comprising:

adding one or more jobs to a queue, the one or more jobs associated with a generation counter;

receiving a request to steal the one or more jobs;

modifying a value of the generation counter, the modifying signifying that the one or more jobs are unavailable for stealing, wherein the modifying of the value of the generation counter includes changing the generation counter with respect to a finished generation count; and

altering an execution order of the one or more jobs in the queue.

13. A non-transitory computer-readable storage medium including a set of instructions that, when executed by one or more computer processors, cause the one or more computer processors to perform operations, the operations comprising:

adding one or more jobs to a queue, the one or more jobs associated with a generation counter;

receiving a request to steal the one or more jobs, wherein the request to steal the one or more jobs is received by a first thread and a causing of the one or more jobs to be unavailable for stealing relates to a second thread;

modifying a value of the generation counter, the modifying signifying that the one or more jobs are unavailable for stealing; and

altering an execution order of the one or more jobs in the queue.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the value of the generation counter represents a state of the one or more jobs, wherein the state includes a queued state, a pushed state, or a finished state.

15. The non-transitory computer-readable storage medium of claim 13 , wherein the modifying of the generation counter is performed atomically.

16. The non-transitory computer-readable storage medium of claim 13 , the operations further comprising, based on a determining of one or more dependencies of one or more additional jobs on the one or more jobs, stealing the one or more additional jobs.

17. A non-transitory computer-readable storage medium including a set of instructions that, when executed by one or more computer processors, cause the one or more computer processors to perform operations, the operations comprising:

adding one or more jobs to a queue, the one or more jobs associated with a generation counter, wherein only one thread has access to the queue at a given time;

receiving a request to steal the one or more jobs;

modifying a value of the generation counter, the modifying signifying that the one or more jobs are unavailable for stealing; and

altering an execution order of the one or more jobs in the queue.

18. The system of claim 5 , wherein the value of the generation counter represents a state of the one or more jobs, wherein the state includes a queued state, a pushed state, or a finished state.

19. The system of claim 5 , wherein the modifying of the generation counter is performed atomically.

20. The system of claim 5 , the operations further comprising, based on a determining of one or more dependencies of one or more additional jobs on the one or more jobs, stealing the one or more additional jobs.

21. The method of claim 11 , wherein the value of the generation counter represents a state of the one or more jobs, wherein the state includes a queued state, a pushed state, or a finished state.

22. The method of claim 11 , wherein the modifying of the generation counter is performed atomically.

23. The method of claim 11 , further comprising, based on a determining of one or more dependencies of one or more additional jobs on the one or more jobs, stealing the one or more additional jobs.

24. The non-transitory computer-readable storage medium of claim 17 , wherein the value of the generation counter represents a state of the one or more jobs, wherein the state includes a queued state, a pushed state, or a finished state.

25. The non-transitory computer-readable storage medium of claim 17 , wherein the modifying of the generation counter is performed atomically.

26. The non-transitory computer-readable storage medium of claim 17 , wherein the value of the generation counter represents a state of the one or more jobs, wherein the state includes a queued state, a pushed state, or a finished state.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2025
From: UNITY IPR APS
To: UNITY TECHNOLOGIES APS
Reel/Frame 072926/0322 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2024
From: SEVIGNY, BENOIT
To: UNITY IPR APS
Reel/Frame 069554/0253 →
Continuity (6)
Continuation 17702705 · Mar 23, 2022
Continuation 16745215 · Jan 16, 2020
Continuation 15691651 · Aug 30, 2017
Continuation 15192309 · Jun 24, 2016
Provisional Application 62252897 · Nov 9, 2015
Related Publication 20240184627A1 · Jun 6, 2024
References Cited (33)
US 9772878B2 · Sevigny · 2017 [cited by applicant]
US 10565011B2 · Sevigny · 2020 [cited by applicant]
US 11301293B2 · Sevigny · 2022 [cited by applicant]
US 11893416B2 · Sevigny · 2024 [cited by applicant]
US 20080271042A1 · Musuvathi · 2008 [cited by applicant]
US 20100318995A1 · Messmer et al. · 2010 [cited by applicant]
US 20110137952A1 · Black · 2011 [cited by applicant]
US 20120079490A1 · Bond · 2012 [cited by examiner]
US 20120304178A1 · Grove · 2012 [cited by examiner]
US 20150135183A1 · Kipp · 2015 [cited by examiner]
US 20160154677A1 · Barik et al. · 2016 [cited by applicant]
US 20170132037A1 · Sevigny · 2017 [cited by applicant]
US 20170364388A1 · Sevigny · 2017 [cited by applicant]
US 20200225987A1 · Sevigny · 2020 [cited by applicant]
US 20220283854A1 · Sevigny · 2022 [cited by applicant]
“U.S. Appl. No. 16/745,215, Preliminary Amendment filed Apr. 6, 2020”, 7 pgs. [cited by applicant]
“U.S. Appl. No. 15/192,309, Applicant Interview Summary mailed Apr. 21, 2017”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 15/192,309, Examiner Interview Summary mailed Mar. 30, 2017”, 3 pgs. [cited by applicant]
“U.S. Appl. No. 15/192,309, Non Final Office Action mailed Nov. 18, 2016”, 21 pgs. [cited by applicant]
“U.S. Appl. No. 15/192,309, Notice of Allowance mailed May 31, 2017”, 21 pgs. [cited by applicant]
“U.S. Appl. No. 15/192,309, Response filed Feb. 20, 2017 to Non Final Office Action mailed Nov. 18, 2016”, 17 pgs. [cited by applicant]
“U.S. Appl. No. 15/691,651, Corrected Notice of Allowability mailed Oct. 21, 2019”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 15/691,651, Non Final Office Action mailed Jun. 25, 2019”, 6 pgs. [cited by applicant]
“U.S. Appl. No. 15/691,651, Notice of Allowance mailed Oct. 10, 2019”, 5 pgs. [cited by applicant]
“U.S. Appl. No. 15/691,651, Preliminary Amendment filed Nov. 6, 2017”, 9 pgs. [cited by applicant]
“U.S. Appl. No. 15/691,651, Response filed Sep. 25, 2019 to Non Final Office Action mailed Jun. 25, 2019”, 3 pgs. [cited by applicant]
“U.S. Appl. No. 16/745,215, Non Final Office Action mailed Sep. 1, 2021”, 9 pgs. [cited by applicant]
“U.S. Appl. No. 16/745,215, Notice of Allowance mailed Dec. 13, 2021”, 5 pgs. [cited by applicant]
“U.S. Appl. No. 16/745,215, Response filed Nov. 12, 2021 to Non Final Office Action mailed Sep. 1, 2021”, 9 pgs. [cited by applicant]
“U.S. Appl. No. 17/702,705, Non Final Office Action mailed May 11, 2023”, 8 pgs. [cited by applicant]
“U.S. Appl. No. 17/702,705, Notice of Allowance mailed Sep. 6, 2023”, 5 pgs. [cited by applicant]
“U.S. Appl. No. 17/702,705, Preliminary Amendment filed May 31, 2022”, 6 pgs. [cited by applicant]
“U.S. Appl. No. 17/702,705, Response filed Aug. 11, 2023 to Non Final Office Action mailed May 11, 2023”, 8 pgs. [cited by applicant]