IP Library Granted Patent US 9,128,771
Granted Patent B1
US 9,128,771 · App. 12/633,702 · Granted Sep 8, 2015

System, method, and computer program product to distribute workload

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,128,771
App. No.
12/633,702
Granted
Sep 8, 2015
Kind
B1
Abstract

A system, method, and computer program product are provided for sending a message from a first queue to a second queue associated with a receiver agent in response to a request. In operation, a message is sent from a sender agent to a first queue. Additionally, a request is received at the first queue from a receiver agent. Furthermore, the message is sent from the first queue to a second queue associated with the receiver agent, in response to the request.

Claims (75)

1. A method, comprising:

sending a message from a sender agent to a first queue of an over-utilized processor;

monitoring, by an under-utilized processor associated with a second queue, the first queue;

determining a size of the message based on a number of entries that the message would fill in the second queue if stored;

determining whether sufficient credits have been allocated to the second queue to store the message based on the size of the message;

redirecting the message, by the under-utilized processor, from the first queue to the second queue when it is determined that the sufficient credits have been allocated to the second queue; and

deducting a number of credits corresponding to the size of the message from the sufficient credits.

2. The method of claim 1 , further comprising:

storing the message in the first queue.

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

redirecting the message in response to an event.

4. The method of claim 1 , wherein the redirecting comprises:

redirecting by the under-utilized processor in response to a determination that the under-utilized processor is idle.

5. The method of claim 1 , wherein the redirecting comprises:

redirecting by the under utilized processor the message in response to a determination that the under-utilized processor is under-utilized.

6. The method of claim 1 , wherein the first queue is associated with a second over-utilized processor.

7. The method of claim 6 , wherein the redirecting comprises:

redirecting the message in response to a determination that the second over-utilized processor is over-utilized.

8. The method of claim 1 , wherein the redirecting comprises:

redirecting the message in response to a determination that the second queue is empty.

9. The method of claim 1 , wherein the first queue includes a receiver queue associated with another under-utilized processor.

10. The method of claim 1 , wherein the first queue includes a general purpose queue.

11. The method of claim 1 , wherein the second queue is paired to the under-utilized processor.

12. The method of claim 1 , wherein the sender agent includes a central processing unit (CPU) thread.

13. The method of claim 1 , wherein the sending the message comprises:

sending a plurality of data packets.

14. The method of claim 1 , further comprising:

storing the message in the second queue after it is redirected from the first queue to the second queue.

15. The method of claim 1 , wherein a plurality of queues are associated with the under-utilized processor.

16. A computer program product embodied on a non-transitory computer readable medium, comprising:

computer code for sending a message from a sender agent to a first queue of an over-utilized processor;

computer code for monitoring, by an under-utilized processor associated with a second queue, the first queue;

computer code for determining a size of the message based on a number of entries that the message would fill in the second queue if stored;

computer code for determining whether sufficient credits have been allocated to the second queue to store the message based on the size of the message;

computer code for redirecting the message, by the under-utilized processor, to the second queue when it is determined that the sufficient credits have been allocated to the second queue; and

computer code for deducting a number of credits corresponding to the size of the message from the sufficient credits.

17. The computer program product of claim 16 , further comprising:

computer code for storing the message in the first queue.

18. The computer program product of claim 16 , wherein the computer code for redirecting comprises:

computer code for redirecting the message in response to an event.

19. The computer program product of claim 16 , wherein the computer code for redirecting comprises:

computer code for redirecting the message in response to a determination that the under-utilized processor is idle.

20. The computer program product of claim 16 , wherein the computer code for redirecting comprises:

computer code for redirecting the message in response to a determination that the under-utilized processor is under-utilized.

21. The computer program product of claim 16 , wherein the first queue is associated with a second over-utilized processor.

22. The computer program product of claim 21 , wherein the computer code for redirecting comprises:

computer code for redirecting the message in response to a determination that the second over-utilized processor is over-utilized.

23. The computer program product of claim 19 , wherein the computer code for redirecting comprises:

computer code for redirecting the message in response to a determination that the second queue is empty.

24. The computer program product of claim 16 , wherein the first queue includes a receiver queue associated with a second over-utilized processor.

25. The computer program product of claim 16 , wherein the first queue includes a general purpose queue.

26. The computer program product of claim 16 , wherein the second queue is paired to the under-utilized processor.

27. The computer program product of claim 16 , wherein the computer code for sending the message comprises:

computer code for sending a plurality of data packets.

28. The computer program product of claim 16 , wherein the computer code for sending the message comprises:

computer code for sending the message in response to a push request sent from the sender agent to the first queue.

29. The computer program product of claim 16 , further comprising:

computer code for storing the message in the second queue after it is redirected from the first queue to the second queue.

30. The computer program product of claim 16 , wherein a plurality of queues is associated with the under-utilized processor.

31. An apparatus, comprising:

a sender agent, associated with a first queue of an over-utilized processor, configured to send a message to the first queue; and

an under-utilized processor, associated with a second queue, configured to:

monitor the first queue,

determine a size of the message based on a number of entries that the message would fill in the second queue if stored,

determine whether sufficient credits have been allocated to the second queue to store the message based on the size of the message,

redirect the message from the first queue to the second queue when it is determined that the sufficient credits have been allocated to the second queue, and

deduct a number of credits corresponding to the size of the message from the sufficient credits.

32. The apparatus of claim 31 , wherein the under-utilized processor is configured to redirect the message in response to a determination that the second queue is empty.

33. The apparatus of claim 32 , wherein the message is stored in the first queue.

34. The apparatus of claim 32 , wherein the under-utilized processor is configured to redirect the message in response to an event.

35. The apparatus of claim 32 , wherein the under-utilized processor is configured to redirect the message in response to a determination that the under-utilized processor is idle.

36. The apparatus of claim 32 , wherein the under-utilized processor is configured to redirect the message in response to a determination that the underutilized processor is under-utilized.

37. The apparatus of claim 32 , wherein the first queue includes a receiver queue associated with another under-utilized processor.

38. The apparatus of claim 32 , wherein the second queue is configured to be paired to the under-utilized processor.

39. The apparatus of claim 31 , wherein the message includes a plurality of data packets.

Assignments (10)
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT NUMBER 9,385,856 TO 9,385,756 PREVIOUSLY RECORDED AT REEL: 47349 FRAME: 001. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 22, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 051144/0648 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE PREVIOUSLY RECORDED ON REEL 047229 FRAME 0408. ASSIGNOR(S) HEREBY CONFIRMS THE THE EFFECTIVE DATE IS 09/05/2018. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047349/0001 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047229/0408 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2015
From: NETLOGIC I LLC
To: BROADCOM CORPORATION
Reel/Frame 035443/0763 →
CHANGE OF NAME Recorded Apr 16, 2015
From: NETLOGIC MICROSYSTEMS, INC.
To: NETLOGIC I LLC
Reel/Frame 035443/0824 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2010
From: RMI CORPORATION
To: NETLOGIC MICROSYSTEMS, INC.
Reel/Frame 023926/0338 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2009
From: GARG, GAURAV; HASS, DAVID T.
To: RMI CORPORATION
Reel/Frame 023623/0625 →