IP Library Granted Patent US 10,528,512
Granted Patent B1
US 10,528,512 · App. 15/921,091 · Granted Jan 7, 2020

Improving efficiency of asynchronous input/output operations based on observed performance

Inventors: Sergey Pachkov (Moscow, RU); Nikolay Dobrovolskiy (Moscow, RU); Serguei M. Beloussov (Singapore, SG)
Assignee: Parallels International GmbH
G06F13/4068G06F11/3027G06F11/349
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 10,528,512
App. No.
15/921,091
Granted
Jan 7, 2020
Kind
B1
Abstract

Systems and methods for performing asynchronous input/output (I/O) operations. An example method comprises: initializing a list of sockets that are ready for performing I/O operations; traversing the list of sockets, wherein a traversal operation of the list includes, for each socket referenced by the list: performing I/O operations using the socket, updating a state flag associated with the socket to reflect a state of the socket, updating one or more observed I/O performance statistics of the socket; and responsive to detecting less than a threshold number of I/O operation errors during the traversal operation, updating the list of sockets based on updated endpoint state flags and observed I/O performance statistics.

Claims (45)

1. A method, comprising:

initializing a list of sockets that are ready for performing input/output (I/O) operations;

traversing the list of sockets, wherein a traversal operation of the list includes, for each socket referenced by the list:

performing I/O operations using the socket,

updating a state flag associated with the socket to reflect a state of the socket,

updating one or more observed I/O performance statistics of the socket; and

responsive to detecting less than a threshold number of I/O operation errors during the traversal operation, updating the list of sockets based on updated state flags and observed I/O performance statistics.

2. The method of claim 1 , further comprising:

responsive to updating the list of sockets, performing a next traversal operation.

3. The method of claim 1 , wherein the I/O operations include at least one of: a read operation or a write operation.

4. The method of claim 1 , wherein the observed I/O performance statistics include an I/O data rate exhibited by the socket.

5. The method of claim 1 , wherein the observed I/O performance statistics include at least one of: an amount of data received via the socket or an amount of data transmitted via the socket.

6. The method of claim 1 , wherein updating the list of sockets further comprises: removing, from the list, at least one socket having a state flag indicating a “not ready” state.

7. The method of claim 1 , wherein updating the list of sockets further comprises: adding, to the list, at least one socket based on a predicted I/O performance of the socket.

8. The method of claim 1 , wherein updating the list of sockets further comprises: adding, to the list, at least one socket based on extrapolating an observed I/O data rate exhibited by the socket.

9. The method of claim 1 , further comprising:

utilizing data produced by performing I/O operations for implementing at least an application server or a virtualized execution environment.

10. A system, comprising:

a memory; and

a processor, coupled to the memory, the processor configured to:

initialize a list of sockets that are ready for performing input/output (I/O) operations;

traverse the list of sockets, wherein a traversal operation of the list includes, for each socket referenced by the list:

performing I/O operations using the socket,

updating a state flag associated with the socket to reflect a state of the socket,

updating one or more observed I/O performance statistics of the socket; and

responsive to detecting less than a threshold number of I/O operation errors during the traversal operation, update the list of sockets based on updated state flags and observed I/O performance statistics.

11. The system of claim 10 , wherein the processor is further configured to:

responsive to updating the list of sockets, perform a next traversal operation.

12. The system of claim 10 , wherein updating the list of sockets further comprises: removing, from the list, at least one socket having a state flag indicating a “not ready” state.

13. The system of claim 10 , wherein updating the list of sockets further comprises: adding, to the list, at least one socket based on a predicted I/O performance of the socket.

14. The system of claim 10 , wherein updating the list of sockets further comprises: adding, to the list, at least one socket based on extrapolating an observed I/O data rate exhibited by the socket.

15. The system of claim 10 , wherein the processor is further configured to:

utilize data produced by performing I/O operations for implementing at least an application server or a virtualized execution environment.

16. A non-transitory computer-readable storage medium comprising executable instructions that, when executed by a processor, cause the processor to:

initialize a list of file descriptors that are ready for performing input/output (I/O) operations;

traverse the list of file descriptors, wherein a traversal operation of the list includes, for each file descriptor referenced by the list:

performing I/O operations using the file descriptor, and

updating a state flag associated with the file descriptor to reflect a state of the file descriptor,

updating one or more observed I/O performance statistics of the file descriptor; and

responsive to detecting less than a threshold number of I/O operation errors during the traversal operation, update the list of file descriptors based on updated state flags and observed I/O performance statistics.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the file descriptor represents a socket.

18. The non-transitory computer-readable storage medium of claim 16 , further comprising executable instructions that, when executed by the processor, cause the processor to:

responsive to updating the list of file descriptors, perform a next traversal operation.

19. The non-transitory computer-readable storage medium of claim 16 , wherein the observed I/O performance statistics include at least one of: an I/O data rate exhibited by the file descriptor, an amount of data received via the file descriptor or an amount of data transmitted via the file descriptor.

20. The non-transitory computer-readable storage medium of claim 16 , wherein updating the list of file descriptors further comprises: removing, from the list, at least one file descriptor having a state flag indicating a “not ready” state.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Jul 18, 2019
From: UBS AG, STAMFORD BRANCH, AS ADMINISTRATIVE AND COLLATERAL AGENT
To: COREL CORPORATION; CLEARSLIDE, INC.; PARALLELS INTERNATIONAL GMBH
Reel/Frame 049787/0073 →
RELEASE OF SECURITY INTEREST RECORDED AT : REEL 047973 FRAME 0797 Recorded Jul 17, 2019
From: UBS AG, STAMFORD BRANCH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 049773/0590 →
SECURITY INTEREST Recorded Dec 21, 2018
From: PARALLELS INTERNATIONAL GMBH
To: UBS AG, STAMFORD BRANCH
Reel/Frame 047973/0797 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2018
From: PACHKOV, SERGEY; DOBROVOLSKIY, NIKOLAY; BELOUSSOV, SERGUEI M.
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 045208/0680 →