IP Library Granted Patent US 8,275,902
Granted Patent B2
US 8,275,902 · App. 12/235,106 · Granted Sep 25, 2012

Method and system for heuristic throttling for distributed file systems

Assignee: Oracle America, Inc.
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,275,902
App. No.
12/235,106
Granted
Sep 25, 2012
Kind
B2
Abstract

A method for throttling in a file system. The method includes receiving a request by a client from an application to write data to a server, wherein the application is associated with an application bandwidth and wherein the server is associated with a server bandwidth, queuing a first job to write the data to the server on an I/O queue using an application-to-client throttling mechanism using at least one selected from the group of the application bandwidth and the server bandwidth, and issuing the first job from the I/O queue to the server using a client-to-server throttling mechanism and at least one selected from the group of the application bandwidth and the server bandwidth.

Claims (114)

1. A method for throttling in a file system, comprising:

receiving a first request by a client from an application to write first data to a server across a network, wherein the application is associated with an application bandwidth comprising a rate at which the application writes data to a client storage device;

storing the first data in the client storage device using the application bandwidth;

queuing a first I/O request to write the first data to the server on an I/O queue;

issuing the first I/O request from the I/O queue to the server using a server bandwidth comprising a rate at which I/O requests to write data to the server are issued;

receiving an acknowledgment that the first I/O request has been completed by the server;

determining a first server acknowledgement rate using the acknowledgment that the first I/O request has been completed by the server;

determining a first perceived bandwidth using the application bandwidth, the first server acknowledgement rate, and an amount of available space on the client storage device;

resetting the server bandwidth to the perceived bandwidth to obtain a reset server bandwidth;

receiving a second request by the client from the application to write second data to the server;

storing the second data in the client storage device using the application bandwidth;

queuing a second I/O request to write the second data to the server on the I/O queue; and

issuing the second I/O request from the I/O queue to the server using the reset server bandwidth.

2. The method of claim 1 , further comprising:

receiving an acknowledgment that the second I/O request has been completed by the server;

determining a second server acknowledgement rate using the acknowledgment that the second I/O request has been completed by the server;

determining a second perceived bandwidth using the application bandwidth, the second server acknowledgement rate, and the amount of available space on the client storage device; and

resetting the application bandwidth to the second perceived bandwidth.

3. A non-transitory computer readable storage medium for throttling in a file system, comprising computer readable code, wherein the code is configured to:

receive a request, by a client from an application, to write first data to a server across a network, wherein the application is associated with an application bandwidth comprising a rate at which the application writes data to a client storage device;

store the first data in the client storage device using the application bandwidth;

queue a first I/O request to write the first data to the server on an I/O queue;

issue the first I/O request from the I/O queue to the server using a server bandwidth comprising a rate at which I/O requests to write data to the server are issued;

receive an acknowledgment that the first I/O request has been completed by the server;

determine a first server acknowledgement rate using the acknowledgment that the first I/O request has been completed by the server,

determine a first perceived bandwidth using the application bandwidth, the first server acknowledgement rate, and an amount of available space on the client storage device;

reset the server bandwidth to the perceived bandwidth to obtain a reset server bandwidth;

receive a second request by the client from the application to write second data to the server;

store the second data in the client storage device using the application bandwidth;

queue a second I/O request to write the second data to the server on the I/O queue; and

issue the second I/O request from the I/O queue to the server using the reset server bandwidth.

4. The non-transitory computer readable storage medium of claim 3 , wherein the code is further configured to:

receive an acknowledgment that the second I/O request has been completed by the server;

determine a second server acknowledgement rate using the acknowledgment that the second I/O request has been completed by the server;

determine a second perceived bandwidth using the application bandwidth, the second server acknowledgement rate, and the amount of available space on the client storage device; and

reset the application bandwidth to the second perceived bandwidth to obtain a reset application bandwidth.

5. The non-transitory computer readable storage medium of claim 4 , wherein the code is further configured to, upon resetting the application bandwidth:

receiving a request by the client from the application to write data to the server;

storing the third data in the client storage device;

queuing a third I/O request to write the third data to the server on the I/O queue using the reset application bandwidth; and

issuing the third I/O request from the I/O queue to the server using the reset server bandwidth.

6. The non-transitory computer readable storage medium of claim 3 , wherein the code is further configured to:

make a first determination that a size of the first data is greater than the application bandwidth;

make a second determination that the amount of available space on the client storage device is sufficient;

make a third determination that the application bandwidth is greater than zero;

allocate space in the client storage device to store the first data based on the first determination, the second determination, and the third determination; and

write the first data to the allocated space in the client storage device.

7. The non-transitory computer readable storage medium of claim 3 , wherein the code is further configured to:

determine that a size of the first data is greater than the application bandwidth;

determine that the amount of available space on the client storage device is insufficient; and

write the first data to the client storage device when the application bandwidth is available.

8. The non-transitory computer readable storage medium of claim 3 , wherein the code is further configured to:

determine that a size of the first data is not greater than the application bandwidth;

allocate space in the client storage device to store the first data; and

write the first data to the allocated space in the client storage device when the application bandwidth is available.

9. The non-transitory computer readable storage medium of claim 3 , wherein the code is further configured to:

determine that a size of the first data is not greater than the server bandwidth; and

decrement the server bandwidth.

10. The non-transitory computer readable storage medium of claim 3 , wherein the code is further configured to:

make a first determination that a size of the first data is greater than the server bandwidth;

make a second determination that the amount of available space on the client storage device is insufficient;

modify the first I/O request to write the first data synchronously based on the first determination and the second determination; and

decrement the server bandwidth.

11. The non-transitory computer readable storage medium of claim 3 , wherein the client is part of a client cluster.

12. A client, comprising:

a processor;

an application, executing on the processor, configured to send a request to the client to write first data to a server, wherein the application is associated with an application bandwidth and wherein the server is associated with a server bandwidth;

a client storage device configured to store the first data using the application bandwidth comprising a rate at which the application writes data to a client storage device;

an I/O queue configured to:

queue a first I/O request to write the first data to the server; and

issue the first I/O request to the server using a server bandwidth comprising a rate at which I/O requests to write data to the server are issued;

an acknowledgement engine configured to receive an acknowledgment that the first I/O request has been completed by the server;

a bandwidth engine configured to:

determine a first server acknowledgement rate using the acknowledgment that the first I/O request has been completed by the servers;

determine a first perceived bandwidth using the application bandwidth, the first server acknowledgement rate, and an amount of available space on the client storage device; and

reset the server bandwidth to the perceived bandwidth to obtain a reset server bandwidth;

wherein the application is further configured to send a second request to the client to write second data to the server;

wherein the client storage device is further configured to store the second data using the application bandwidth; and

wherein the I/O queue is further configured to:

queue a second I/O request to write the second data to the server; and

issue the second I/O request to the server using the reset server bandwidth.

13. The client of claim 12 , wherein the bandwidth engine is further configured to:

receive an acknowledgment that the second I/O request has been completed by the server;

determine a second server acknowledgement rate using the acknowledgment that the second I/O request has been completed by the server;

determine a second perceived bandwidth using the application bandwidth, the second server acknowledgement rate, and the amount of available space on the client storage device; and

resetting the application bandwidth to the second perceived bandwidth to obtain a reset application bandwidth.

14. The client of claim 13 ,

wherein the bandwidth engine is further configured to, upon resetting the application bandwidth:

receive a request from the application to write third data to the server;

store the third data in the client storage device; and

queue a third I/O request to write the third data to the server on the I/O queue using the reset application bandwidth; and

wherein the I/O queue is further configured to issue the third I/O request to the server using the reset server bandwidth.

15. The client of claim 12 , wherein the bandwidth engine comprises an application-to-client throttling mechanism configured to:

determine that the amount of available space on the client storage device is sufficient;

determine that the application bandwidth is greater than zero;

allocate space in the client storage device to store the first data; and

write the first data to the allocated space in the client storage device.

16. The client of claim 12 , wherein the bandwidth engine comprises an application-to-client throttling mechanism configured to:

determine that a size of the first data is greater than the application bandwidth;

determine that the amount of available space on the client storage device is insufficient; and

write the first data to the client storage device when the application bandwidth is available.

17. The client of claim 12 , wherein the bandwidth engine comprises an application-to-client throttling mechanism configured to:

determine that a size of the first data is not greater than the application bandwidth;

allocate space in the client storage device to store the first data; and

write the first data to the allocated space in the client storage device when the application bandwidth is available.

18. The client of claim 12 , wherein the bandwidth engine comprises a client-to-server throttling mechanism configured to:

determine that a size of the first data is not greater than the server bandwidth; and

decrement the server bandwidth.

19. The client of claim 12 , wherein the bandwidth engine comprises a client-to-server throttling mechanism configured to:

determine that a size of the first data is greater than the server bandwidth;

determine that the amount of available space on the client storage device is insufficient;

modify the first I/O request to write the first data synchronously; and

decrement the server bandwidth.

20. The client of claim 12 , wherein the client is part of a client cluster.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037311/0182 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 9, 2011
From: PHILIP, BINU J.; SALAM, SUDHEER ABDUL
To: SUN MICROSYSTEMS, INC.
Reel/Frame 025785/0353 →
Continuity (1)
Related Publication 20100077096A1 · Mar 25, 2010