IP Library Granted Patent US 9,223,627
Granted Patent B2
US 9,223,627 · App. 13/944,881 · Granted Dec 29, 2015

Management of task allocation in a multi-core processing system

Inventors: Eli Zakashansky (Ganey Tikva, IL); Roni Krivoshey (Ramat Hasharon, IL); Efim Kolodizner (Ashdod, IL); Uzi Baruch (Maale Adumim, IL); Karawan Shorosh (Nazareth, IL); Shlomi Haba (Petah Tiqva, IL)
Assignee: NICE-SYSTEMS LTD.
G06F9/5033
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 9,223,627
App. No.
13/944,881
Granted
Dec 29, 2015
Kind
B2
Abstract

A system and method for management of task allocation in a multi-core processing system. A controller of the processing unit may, at an initialization stage determine a number of worker threads to be a prime number not smaller than a multiplication of the number of the processing cores and a predetermined factor, assign a worker identification number (ID) to each worker thread, wherein the worker IDs are consecutive positive integers ranging from zero to the number of workers minus one. At a processing state the controller may receive from a dispatcher of the processing system a task associated with a numeric context ID and designate the task to one of the worker threads, wherein the worker ID of the designated worker thread equals the numeric context ID of the task, modulo the number of worker threads.

Claims (42)

1. A method for allocating tasks to be executed in a processing unit by a predetermined number of one or more processing cores, the method comprising:

at an initialization stage:

determining a first number by multiplying the number of processing cores and a predetermined factor;

determining a second number by selecting a prime number that is not smaller than the first number;

setting a number of worker threads to the second number;

assigning a worker identification number (ID) to each worker thread, wherein the worker IDs are consecutive positive integers ranging from zero to the number of worker threads minus one; and

at a processing stage:

receiving from a dispatcher of the processing system a task having a numeric context ID; and

designating the task to one of the worker threads, wherein the worker ID of the designated worker thread equals the numeric context ID of the task, modulo the number of worker threads.

2. The method of claim 1 , wherein the numeric context ID is unique for each context of a plurality of contexts.

3. The method of claim 1 , wherein the numeric context ID is constant for each context of a plurality of contexts.

4. The method of claim 1 , wherein the tasks are writing buffers of files to a file system, wherein a plurality of buffers holds context of a single file.

5. The method of claim 4 , wherein the numeric context ID is a Hash code of a file name.

6. The method of claim 1 , wherein the tasks are computer telephony integration (CTI) events.

7. The method of claim 6 , wherein the numeric context ID equals Call ID.

8. The method of claim 1 , wherein the number of worker threads is a smallest prime number not smaller than the number of processing cores multiplied by the predetermined factor.

9. The method of claim 1 , wherein the predetermined factor equals one.

10. A processing unit comprising:

one or more processing cores;

a controller configured to

at an initialization stage:

determine a first number by multiplying the number of processing cores and a predetermined factor;

determine a second number by selecting a prime number that is not smaller than the first number;

set a number of worker threads to the second number;

assign a worker identification number (ID) to each worker thread, wherein the worker IDs are consecutive positive integers ranging from zero to the number of workers minus one; and

at a processing state:

receive from a dispatcher of the processing system a task having a numeric context ID; and

designate the task to one of the worker threads, wherein the worker ID of the designated worker thread equals the numeric context ID of the task, modulo the number of worker threads.

11. The processing unit of claim 10 , wherein the numeric context ID is unique for each context of a plurality of contexts.

12. The processing unit of claim 10 , wherein the numeric context ID is constant for each context of a plurality of contexts.

13. The processing unit of claim 10 , wherein the tasks are writing buffers of files to a file system, wherein a plurality of buffers holds context of a single file.

14. The processing unit of claim 13 , wherein the numeric context ID is a Hash code of a file name.

15. The processing unit of claim 10 , wherein the tasks are computer telephony integration (CTI) events.

16. The processing unit of claim 15 , wherein the numeric context ID equals Call ID.

17. The processing unit of claim 10 , wherein the number of worker threads is a smallest prime number not smaller than the number of processing cores multiplied by the predetermined factor.

18. The processing unit of claim 10 , wherein the predetermined factor equals one.

19. A method for allocating tasks to be executed in a processing unit by a predetermined number of one or more processing cores, the method comprising:

determining a first number by multiplying the number of processing cores and a predetermined factor;

determining a second number by selecting a prime number that is not smaller than the first number;

setting a number of worker threads to the second number;

assigning a numeric context identification number (ID) to tasks, wherein related tasks are given a common numeric context ID; and

assigning a task to a worker thread number that equals the remainder of a division of a numeric context ID of the task by the number of worker threads.

Assignments (4)
SECURITY INTEREST Recorded Feb 26, 2026
From: NICE LTD; NICE SYSTEMS INC.; NICE SYSTEMS TECHNOLOGIES INC.; INCONTACT, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 074986/0208 →
PATENT SECURITY AGREEMENT Recorded Dec 6, 2016
From: NICE LTD.; NICE SYSTEMS INC.; AC2 SOLUTIONS, INC.; ACTIMIZE LIMITED; INCONTACT, INC.; NEXIDIA, INC.; NICE SYSTEMS TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 040821/0818 →
CHANGE OF NAME Recorded Oct 18, 2016
From: NICE-SYSTEMS LTD.
To: NICE LTD.
Reel/Frame 040387/0527 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 14, 2014
From: ZAKASHANSKY, ELI; KRIVOSHEY, RONI; KOLODIZNER, EFIM; BARUCH, UZI; SHOROSH, KARAWAN; HABA, SHLOMI
To: NICE-SYSTEMS LTD.
Reel/Frame 031956/0835 →
Continuity (2)
Provisional Application 61805541 · Mar 27, 2013
Related Publication 20140298346A1 · Oct 2, 2014