IP Library Granted Patent US 8,869,171
Granted Patent B2
US 8,869,171 · App. 13/329,342 · Granted Oct 21, 2014

Low-latency communications

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 8,869,171
App. No.
13/329,342
Granted
Oct 21, 2014
Kind
B2
Abstract

A method of handling communications by a computer. A system-call communication routine receives a request of an application to perform a socket-related task on a given socket in a blocking mode. The routine repeatedly performs in alternation polling of one or more input/output (I/O) devices servicing the computer and performing the socket-related task.

Claims (38)

1. A method of handling communications by a computer, comprising:

receiving by a system-call communication routine running on the computer, a request of an application to perform a socket-related task on a given socket in a blocking mode;

selecting a timing scheme for polling of a plurality of devices, in which different devices are assigned a different polling rate, the polling rate assigned to a specific device being assigned according to one or more parameters of data expected to be received from the specific device or a chances that the specific device will fulfill the received request; and

responsively to the request, repeatedly performing in alternation, by the communication routine, the following:

polling a plurality of input/output (I/O) devices, in accordance with the selected timing scheme, at least one of the I/O devices being polled more frequently than other polled devices; and

performing the socket-related task.

2. The method of claim 1 , wherein receiving the request comprises receiving a request to read data from the given socket.

3. The method of claim 1 , wherein receiving the request comprises receiving a request to determine a state of the given socket.

4. The method of claim 1 , comprising generating a list of I/O devices which are suspected as providing data to the given socket and wherein polling one or more I/O devices comprises polling the I/O devices on the list.

5. The method of claim 1 , wherein polling one or more I/O devices comprises polling at least one I/O device not determined as being a possible source of data to the given socket.

6. The method of claim 5 , wherein polling one or more I/O devices comprises polling all I/O devices providing data to the computer.

7. The method of claim 1 , wherein if, during polling, a device is determined to have received data, the communication routine initiates operation of a driver which handles transferring received data of the device to intended sockets.

8. The method of claim 7 , wherein the computer comprises a plurality of cores and wherein the communication routine initiates the driver on a core of the computer on which the system call was invoked.

9. The method of claim 1 , wherein the socket-related task comprises determining a status of the given socket.

10. The method of claim 1 , wherein the socket-related task comprises retrieving data from the given socket.

11. The method of claim 1 , comprising adjusting a scheduling scheme of a scheduler of the computer, responsive to the repeated alternate polling of the communication routine.

12. The method of claim 11 , wherein the scheduler allocates a shorter processing session to processes running the communication routine than to other processes.

13. The method of claim 1 , comprising determining by the communication routine whether the socket-related task is to be performed in a blocking mode, and if not, performing the task in a non-blocking manner and returning control from the routine to the application that called the communication routine.

14. The method of claim 1 , comprising selecting a rate at which each device is polled responsive to an estimate of a probability that data expected by the socket will be received from the device.

15. The method of claim 1 , comprising selecting a rate at which each device is polled responsive to a quality of service rating or type of data expected to be received through the device.

16. The method of claim 1 , comprising adjusting a moderation time that one or more of the devices waits before generating an interrupt, responsive to the polling.

17. A computer system, comprising:

at least one I/O device;

at least one processor configured to run a system-call communication routine which receives requests from applications to perform a socket-related task on an indicated socket, and if the socket-related task is to be performed in a blocking mode, the communication routine repeatedly in alternation performs the following:

polls the at least one I/O device; and

performs the socket-related task,

wherein the processor is further configured with a scheduler which schedules processing sessions to processes running on the processor, the scheduler being configured to adjust its scheduling scheme of processing sessions to processes responsive to the communication routine of one of the processes repeatedly polling in alternation.

18. The computer system of claim 17 , wherein the communication routine is configured to receive requests from a plurality of different processes.

19. The computer system of claim 17 , wherein the at least one processor is configured to poll at least one I/O device not determined as being a possible source of data to the given socket.

20. The computer system of claim 17 , wherein the scheduler is configured to allocate a shorter processing session to processes running the communication routine repeatedly polling in alternation than to other processes.

21. The computer system of claim 17 , wherein the scheduler is configured to allocate processing sessions to processes running the communication routine more often than to other processes.

22. A computer software product, comprising a non-transitory computer-readable medium in which program instructions are stored, which instructions, when read by a computer, cause the computer to run a system-call communication routine which:

receives requests of processes to perform a socket-related task on an indicated socket in a blocking mode; and

responsively to receiving a request to perform a socket-related task, repeatedly performs in alternation:

polling one or more I/O devices servicing the computer, including at least one I/O device not determined as being a possible source of data to the indicated socket; and

performing the socket-related task.

23. The product of claim 22 , wherein the communication routine is configured to receive requests from a plurality of different processes.

24. The product of claim 22 , wherein the system-call communication routine polls all I/O devices providing data to the computer.

Assignments (3)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046542/0792 →
PATENT SECURITY AGREEMENT Recorded Feb 24, 2016
From: MELLANOX TECHNOLOGIES, LTD.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037900/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2011
From: LISS, LIRAN; EMANTAYEV, EUGENIA; PETRILIN, YEVGENY
To: MELLANOX TECHNOLOGIES LTD.
Reel/Frame 027405/0378 →