IP Library › Granted Patent US 7,080,375
Granted Patent B2
US 7,080,375 · App. 09/751,659 · Granted Jul 18, 2006

Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products

Assignee: EMC Corporation/Data General
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 7,080,375
App. No.
09/751,659
Granted
Jul 18, 2006
Kind
B2
Abstract

Featured is a method for reducing the contention of the highly contended global lock(s) of an operating system, hereinafter dispatcher lock(s) that protects all dispatching structures. Such a method reduces the need for acquiring the global lock for many event notification tasks by introducing local locks for event notifications that occur frequently among well defined, or consistent dispatcher objects. For these frequently occurring event notifications a subset of the dispatching structure is locked thereby providing mutual exclusivity for the subset and allowing concurrent dispatching for one or more of other data structure subsets. The method also includes acquiring one or more local locks where the level of protection of the data structure requires locking of a plurality or more of data structures to provide mutual exclusivity. The method further includes acquiring all local locks and/or acquiring a global lock of the system wide dispatcher data structures wherever a system wide lock is required to provide mutual exclusivity.

Claims (126)

1. A method for reducing contention of a highly contended dispatcher lock protecting data items of a dispatcher database of an operating system for a multi-processor computer system, said method comprising the steps of:

forming one or more dispatch groups including any of threads, resources, and events that frequently interact with each other;

creating N local locks, one for each dispatch group, where N≧2;

relating each dispatchable object to its dispatch group;

modifying the locking requirements of all code paths of the one or more code paths of the operating system so that the local locks being acquired and released in each of said all code paths are those associated with dispatchable objects touching the code paths;

evaluating the operating system after said modifying the locking requirements so as to determine if the overall performance of the operating system is acceptable based upon user-selected criteria;

when overall performance of the operating system is unacceptable, counting usage of all the code paths to determine a heaviest path, wherein the heaviest path has a highest usage; and

remodifying the heaviest code path.

2. The method according to claim 1 , wherein said relating includes:

separately identifying each dispatch group with a unique identifier; and

identifying each dispatchable object of each group with said unique identifier.

3. A method for reducing contention of a highly contended dispatcher lock protecting data items of a dispatcher database of an operating system for a multi-processor computer system, said method comprising the steps of:

forming one or more dispatch groups including dispatchable objects that include any of threads, resources and events, wherein the one or more dispatch groups are formed based upon a natural usage pattern;

creating N local locks, one for each dispatch group, where N≧1;

relating each dispatchable object to its dispatch group;

modifying the locking requirements of each of one or more code paths of the operating system so as to acquire all N local locks and a global lock where the dispatcher lock would have been acquired and so as to release all N local locks and the global lock where the dispatcher lock would have been released;

identifying one code path from the one or more code paths of the operating system; and

optimizing the locking requirements of the identified code path so one or more local locks are acquired and released in the identified code path, the one or more code paths being those associated with the dispatchable objects of the one or more dispatch groups touched by the identified code path.

4. The method according to claim 3 , wherein the identified code path includes a plurality of branches, and wherein said optimizing includes optimizing the locking requirements of the identified code path so the one or more locks being acquired and released in the code path are those associated with the dispatchable objects being touched by each branch of the identified code path.

5. The method according to claim 4 , wherein said optimizing includes optimizing the locking requirements of each branch of the identified code path so the one or more locks being acquired and released in each branch are those associated with the dispatchable objects being touched by said each branch.

6. The method according to claim 3 , further comprising the step of evaluating the modified operating system after said optimizing the locking requirements so as to determine if the overall performance of dispatching and wait signaling of the operating system is acceptable.

7. The method according to claim 6 , wherein in the case where said evaluating determines that the overall performance is not acceptable, then said method includes identifying another code path of the one or more code paths and repeating said steps of optimizing and evaluating for the another identified code path.

8. The method according to claim 7 , wherein the code path first identified is the heaviest used code path and wherein the another code path and subsequent code paths are identified sequentially in the direction from the heaviest used code path to a lesser used path.

9. The method according to claim 3 , wherein there is one of a plurality or a multiplicity of code paths that access one or more dispatchable objects.

10. A parallel dispatch waiting signaling method for updating a dispatcher database of an operating system for a multiprocessor computing system, the method comprising the steps of:

defining one or more dispatch groups, each dispatch group including dispatchable objects, made up of any of threads, resources or events that are temporally and spatially related;

defining one or more local locks, one for each dispatch group;

relating each dispatchable object to its corresponding dispatch group;

determining if the dispatchable object of an updating operation belongs to a dispatch group;

acquiring one of the one or more local locks, thereby locking a portion of the dispatcher database corresponding to the dispatch group;

updating the dispatcher database portion; and

releasing the local lock following updating,

wherein in the case where said determining determines that the dispatchable object of the updating operation does not belong to a dispatch group, then further comprising the steps of:

acquiring all locks thereby locking the dispatcher database;

updating the dispatcher database; and

releasing all locks following updating.

11. The method according to claim 10 , wherein:

said relating includes:

separately identifying each dispatch group with a unique identifier; and

identifying each dispatchable object of each group with said unique identifier; and

said acquiring includes acquiring the one of the local locks for the dispatch group corresponding to the unique identifier.

12. The method according, to claim 10 , wherein all locks being acquired includes all local locks and a global lock.

13. The method according to claim 10 , wherein while acquiring the one of the one or more local locks, other portions of the dispatcher database are unlocked.

14. A parallel dispatch waiting signaling method for updating data items of a dispatcher database of an operating system for a multiprocessor computing system, the method comprising the steps of:

forming one or more dispatch groups including dispatchable objects that include any of threads, resources and events from a spatial locality;

creating N local locks, one for each dispatch group, where N≧2;

relating each dispatchable object to its dispatch group;

identifying one code path from the one or more code paths of the operating system;

optimizing the locking requirements of the identified code path so one or more local locks are acquired and released in the identified code path, the one or more code paths being those associated with the dispatchable objects of the one or more dispatch groups touched by the identified code path; and

determining if the dispatchable object of an updating operation belongs to a dispatch group;

acquiring one of the N local locks, thereby locking a portion of the dispatcher database corresponding to the dispatch group;

updating the dispatcher database portion; and

releasing the local lock following updating.

15. The method according to claim 14 , wherein:

said relating includes:

separately identifying each dispatch group with a unique identifier; and

identifying each dispatchable object of each group with said unique identifier; and

the one of the N local locks being acquired corresponds to the lock for the dispatch group corresponding to the unique identifier.

16. The method according to claim 14 further comprising the step of modifying the locking requirements of each of one or more code paths of the operating system that are not optimized so as to acquire all N local locks and a global lock where a dispatcher lock of the operating system would have been acquired and so as to release all N local locks and the global lock where the dispatcher lock would have been released.

17. The method according to claim 14 , wherein in the case where said determining determines that the dispatchable object of the updating operation does not belong to a dispatch group, then said method further comprises the steps of:

acquiring all N locks and a global lock thereby locking the dispatcher database;

updating the dispatcher database; and

releasing all N local locks and the global lock following updating.

18. The method according to claim 14 , wherein locking requirements for a plurality of code paths are optimized, and wherein said acquiring, updating and releasing are selectively effected in any one of the plurality of code paths provided that the dispatchable objects to be locked in said any one code path are not locked in any other of the plurality of code paths.

19. The method according to claim 14 , wherein while the one of the N local locks is acquired, other portions of the dispatcher database are unlocked.

20. An operating system for execution in computer system including a plurality of processors, the operating system including program code, the program code including a sequence of instructions and criteria for protecting and updating data items of a dispatcher database, said sequence of instructions and criteria including

defining one or more dispatch groups, each dispatch group including dispatchable object, made up of any of threads, resources or events that are in a temporal locality;

defining one or more local locks, one for each dispatch group;

relating each dispatchable object to its corresponding dispatch group;

determining if the dispatchable object of an updating operation belongs to a dispatch group;

acquiring one of the one or more local locks to thereby lock a portion of the dispatcher database corresponding to the dispatch group;

updating one or more data items of the locked dispatcher database portion; and releasing the local lock following updating,

wherein said sequence of instructions and criteria concerning relating each dispatchable object to its corresponding dispatch group includes separately identifying each dispatch group with a unique identifier; and identifying each dispatchable object of each group with said unique identifier; and wherein said sequence of instructions and criteria concerning acquiring one of the one or more local locks includes acquiring the one of the one or more local locks for the dispatch group corresponding to the unique identifier.

21. The operating system of claim 20 , wherein in the case where said sequence of instructions and criteria for determining determines that the dispatchable object of the updating operation does not belong to a dispatch group, said program code further includes sequence of instructions and criteria for:

acquiring all locks thereby locking the dispatcher database;

updating the dispatcher database; and

releasing all locks following updating.

22. The operating system of claim 21 , wherein all locks being acquired includes all local locks and a global lock.

23. The operating system of claim 20 , wherein while acquiring the one of the one or more local locks, other portions of the dispatcher database are unlocked.

24. A computer program product comprising:

program code, stored on computer storage media, for protecting and updating data items of a dispatcher database of an operating system of a multi-processor computer system, the program code including:

a first computer-readable program code segment for causing the computer system to:

(a) define one or more dispatch groups, each dispatch group including dispatchable objects, made up of any of threads, resources or events that are in a temporal locality and a spatial locality;

(b) define one or more local locks, one for each dispatch group;

(c) relate each dispatchable object to its corresponding dispatch group;

(d) separately identify each dispatch group with a unique identifier; and

(e) identify each dispatchable object of each group with said unique identifier;

a second computer-readable program code segment for causing the computer system to:

(f) determine if the dispatchable object of an updating operation belongs to a dispatch group; and

a third computer-readable code segment for causing the computer system to:

(g) acquire one of the one or more local locks to thereby lock a portion of the dispatcher database corresponding to the dispatch group; and

(h) acquire the one of the one or more local locks for the dispatch group corresponding to the unique identifier.

25. The computer program product of claim 24 wherein the first code segment includes instructions and criteria to:

separately identify each dispatch group with a unique identifier, and

identify each dispatchable object of each group with said unique identifier.

26. The computer program product of claim 24 wherein:

the first code segment includes instructions and criteria to:

separately identify each dispatch group with a unique identifier, and

identify each dispatchable object of each group with said unique identifier; and

the second code segment includes instructions and criteria to determine if the disapatchable object belongs to the dispatch group using the unique identifier.

27. The computer program product of claim 24 , wherein the third code segment includes instructions and criteria that, while acquiring the one of the one or more local locks, other portions of the dispatcher database are to be unlocked.

28. The computer program product of claim 24 further including a fourth computer-readable code segment for causing the computer system to:

(f) update one or more data items of the locked dispatcher database portion; and

(g) release the acquired local lock following updating.

29. The computer program product of claim 28 , wherein when it is determined by the second code segment that the dispatchable object of the updating operation does not belong to a dispatch group, said third and fourth code segments further includes instructions and criteria for:

acquiring all locks thereby locking the dispatcher database;

updating the dispatcher database; and

releasing all locks following updating.

30. The method according to claim 29 , wherein the all locks being acquired includes all local locks and a global lock.

31. A multiprocessor computer system comprising:

a plurality of processors;

a physical memory accessed and used by the plurality of processors;

program code for execution within the plurality of processors; and

wherein the program code comprises criteria and a sequence of instructions to protect and update data items of a dispatcher database, said instructions and criteria including:

defining one or more dispatch groups, each dispatch group including dispatchable object, made up of any of threads, resources or events that are in a temporal locality and a spatial locality;

defining one or more local locks, one for each dispatch group;

relating each dispatchable object to its corresponding dispatch group;

determining if the dispatchable object of an updating operation belongs to a dispatch group;

acquiring one of the one or more local locks to thereby lock a portion of the dispatcher database corresponding to the dispatch group;

updating one or more data items of the locked dispatcher database portion; and

releasing the local lock following updating

wherein in the case where the program code criteria and sequence of instructions for determining determines that the dispatchable object of the updating operation does not belong to a dispatch group, the program code criteria and sequence of instructions includes:

acquiring all locks thereby locking the dispatcher database;

updating the dispatcher database; and

releasing all locks following updating.

32. The multiprocessor computer system of claim 31 , wherein the program code criteria and sequence of instructions concerning relating each dispatchable object to its corresponding dispatch group includes separately identifying each dispatch group with a unique identifier; and identifying each dispatchable object of each group with said unique identifier; and wherein the instructions and criteria concerning acquiring one of the one or more local locks includes acquiring the one of the one or more local locks for the dispatch group corresponding to the unique identifier.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2001
From: MARTIN, BRIAN JAMES
To: EMC CORPORATION
Reel/Frame 011624/0756 →
Continuity (1)
Related Publication 20020087736A1 · Jul 4, 2002