Systems and methods for scalable network buffer management

The disclosed computer-implemented method for scalable network buffer management may include (1) receiving, via a connection to a client, data to be transmitted to a cloud service, (2) buffering the data in at least one data buffer, (3) determining that the data will not be transmitted to the cloud service within a timeout period for the client connection, (4) delaying reception of additional data from the client connection for a portion of the timeout period, and (5) before the timeout period has elapsed, buffering data from the client connection in at least one secondary data buffer, wherein the secondary data buffer is smaller in size than the data buffer. Various other methods, systems, and computer-readable media are also disclosed.

BACKGROUND

Cloud data storage services have become a popular way to protect valuable data, providing off-site data storage and high levels of availability and security. Cloud storage services, however, may not provide user interface or data communication features needed or desired by end users, and particularly for organizations with large numbers of users. To fulfill these needs, backup management services have been developed to mediate between the cloud storage provider and end users. Backup management services may be managed by businesses or other organizations with many end users, by third parties, or by cloud storage providers themselves.

Some of the problems addressed by a backup management service may include latency, bandwidth, and connection management issues that result in connection timeouts on either the client or cloud service ends, frequent retries, and bandwidth underutilization. Accordingly, the instant disclosure identifies and addresses a need for additional and improved systems and methods for scalable network buffer management.

SUMMARY

As will be described in greater detail below, the instant disclosure describes various systems and methods for scalable network buffer management that manage data communication between clients and a cloud storage service by buffering data in primary and secondary data buffers, maintaining connections between the clients and the buffer management system and between the buffer management system and the cloud service, and by monitoring and controlling bandwidth utilization.

In one example, a computer-implemented method for scalable network buffer management may include (1) receiving, via a connection to a client, data to be transmitted to a cloud service, (2) buffering the data in one or more data buffers, (3) determining that the data will not be transmitted to the cloud service within a timeout period for the client connection, (4) delaying reception of additional data from the client connection for a portion of the timeout period, and (5) before the timeout period has elapsed, buffering data from the client connection in one or more secondary data buffers that are smaller in size than the data buffers.

In some examples, delaying reception of additional data from the client connection may include delaying notification of the client that the data has been received. In some examples, the computer-implemented method may further include determining that no data buffer is available to buffer the data received via the client connection. In some examples, delaying reception of additional data from the client connection may include buffering the data from the client connection in the secondary data buffer and delaying reception of additional data from the client connection for a portion of the timeout period. In one embodiment, the computer-implemented method may further include determining that the data will be transmitted to the cloud service within the timeout period for the client connection and delaying reception of additional data from the client connection until an acknowledgement has been received that the cloud service has received the data.

In one embodiment, the computer-implemented method may further include (1) receiving, via a connection to the cloud service, data to be transmitted to the client, (2) buffering the data in one or more data buffers, (3) determining that the data will not be transmitted to the client within a timeout period for the cloud service connection, (4) delaying reception of additional data from the cloud service connection for a portion of the cloud service connection timeout period, and (5) before the cloud service connection timeout period has elapsed, buffering data from the cloud service connection in one or more secondary data buffers.

In one embodiment, the computer-implemented method may further include (1) maintaining one or more additional connections to the cloud service, (2) determining that the additional data will not be received via the client connection within a timeout period for the cloud connection, and (3) transmitting at least a portion of the data to the cloud service using the additional connection to the cloud service before the timeout period for the cloud connection has elapsed. In some examples, the computer-implemented method may further include determining a number of additional connections to the cloud service to maintain based at least in part by a ratio of the timeout period for the cloud connection to a time to receive data to fill a data buffer from the client.

In one embodiment, the computer-implemented method may further include (1) determining a total bandwidth utilization of a group of connections to the cloud service, (2) determining that the bandwidth utilization is below a threshold, and (3) incrementally increasing a rate at which one or more connections transmit data to the cloud service. In one embodiment, the computer-implemented method may further include determining that the bandwidth utilization is above the threshold and delaying transmission of data on one or more connections to the cloud service for a time interval. In one embodiment, the computer-implemented method may further include reallocating one or more data buffers as one or more smaller, secondary data buffers and delaying reception of additional data from the client connection for a time interval.

In one embodiment, the computer-implemented method may further include (1) receiving a retry notification from the cloud service for a data transmission indicating that the rate of data transmission to the cloud service should be decreased, (2) determining that the number of secondary data buffers in use is above a threshold, and (3) delaying retrying the data transmission for a time interval.

In one embodiment, a system for implementing the above-described method may include several modules stored in memory, such as (1) a communication module that receives, via a connection to a client, data to be transmitted to a cloud service, (2) a buffering module that buffers the data in one or more data buffers, (3) a traffic module that determines that the data will not be transmitted to the cloud service within a timeout period for the client connection, (4) a metering module that delays reception of additional data from the client connection for a portion of the timeout period, (5) a secondary buffering module that, before the timeout period has elapsed, buffers data from the client connection in one or more secondary data buffers that are smaller in size than the data buffers. The system may also include at least one physical processor configured to execute the communication module, the buffering module, the traffic module, the metering module, and the secondary buffering module.

In some examples, the above-described method may be encoded as computer-readable instructions on a non-transitory computer-readable medium. For example, a computer-readable medium may include one or more computer-executable instructions that, when executed by at least one processor of a computing device, may cause the computing device to (1) receive, via a connection to a client, data to be transmitted to a cloud service, (2) buffer the data in one or more data buffers, (3) determine that the data will not be transmitted to the cloud service within a timeout period for the client connection, (4) delay reception of additional data from the client connection for a portion of the timeout period, and (5) before the timeout period has elapsed, buffer data from the client connection in one or more secondary data buffers that are smaller in size than the data buffers.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

The present disclosure is generally directed to systems and methods for scalable network buffer management. As will be explained in greater detail below, by managing buffers, connections, and bandwidth, the systems and methods described herein may manage data communication between many backup clients and a cloud storage service with efficient bandwidth utilization and a reduced number of connection timeouts and/or retry requests.

The following will provide, with reference toFIGS. 1-2, detailed descriptions of exemplary systems for scalable network buffer management. Detailed descriptions of corresponding computer-implemented methods will also be provided in connection withFIG. 3. In addition, detailed descriptions of an exemplary computing system and network architecture capable of implementing one or more of the embodiments described herein will be provided in connection withFIGS. 4 and 5, respectively.

FIG. 1is a block diagram of an exemplary system100for scalable network buffer management. As illustrated in this figure, exemplary system100may include one or more modules102for performing one or more tasks. For example, and as will be explained in greater detail below, exemplary system100may include a communication module104that receives, via a connection to a client, data to be transmitted to a cloud service. Exemplary system100may additionally include a buffering module106that buffers the data in one or more data buffers. Exemplary system100may also include a traffic module108that determines that the data will not be transmitted to the cloud service within a timeout period for the client connection. Exemplary system100may additionally include a metering module110that delays reception of additional data from the client connection for a portion of the timeout period. Exemplary system100may also include a secondary buffering module112that, before the timeout period has elapsed, buffers data from the client connection in one or more secondary data buffers, where the secondary data buffers are smaller in size than the data buffers. Although illustrated as separate elements, one or more of modules102inFIG. 1may represent portions of a single module or application.

As illustrated inFIG. 1, exemplary system100may also include one or more databases, such as cloud data store120. In one example, cloud data store120may be configured to store data from computing devices, such as desktop computers, laptop or notebook computers, tablet computers, and/or mobile devices such as smartphones.

Cloud data store120may represent portions of a single database or computing device or a plurality of databases or computing devices. For example, cloud data store120may represent a portion of computing device202or cloud service206inFIG. 2, computing system410inFIG. 4, and/or portions of exemplary network architecture500inFIG. 5. Alternatively, cloud data store120inFIG. 1may represent one or more physically separate devices capable of being accessed by a computing device, such as computing device202or cloud service206inFIG. 2, computing system410inFIG. 4, and/or portions of exemplary network architecture500inFIG. 5.

Exemplary system100inFIG. 1may be implemented in a variety of ways. For example, all or a portion of exemplary system100may represent portions of exemplary system200inFIG. 2. As shown inFIG. 2, system200may include a computing device202in communication with cloud service206via a network204. In one example, computing device202may be programmed with one or more of modules102and/or may store all or a portion of the data in cloud data store120. Additionally or alternatively, cloud service206may be programmed with one or more of modules102and/or may store all or a portion of the data in cloud data store120.

In one embodiment, one or more of modules102fromFIG. 1may, when executed by at least one processor of computing device202and/or cloud service206, enable computing device202and/or cloud service206to manage data communication between one or more clients208and cloud service206. For example, and as will be described in greater detail below, communication module104may receive, via a connection to a client208, data210to be transmitted to cloud service206. Buffering module106may then buffer data210in at least one data buffer212. Traffic module108may then determine that data210will not be transmitted to cloud service206within a timeout period214for the client connection. In response, metering module110may delay reception of additional data216from the client connection for a portion of timeout period214. Secondary buffering module112may, before timeout period214has elapsed, buffer data210from the client connection in at least one secondary data buffer218that is smaller in size than data buffers212.

Computing device202and clients208generally represent any type or form of computing device capable of reading computer-executable instructions. Examples of computing device202and clients208include, without limitation, laptops, tablets, desktops, servers, cellular phones, Personal Digital Assistants (PDAs), multimedia players, embedded systems, wearable devices (e.g., smart watches, smart glasses, etc.), gaming consoles, combinations of one or more of the same, exemplary computing system410inFIG. 4, or any other suitable computing device.

Cloud service206generally represents any type or form of computing device that is capable of receiving, storing, and transmitting data. Examples of cloud service206include, without limitation, application servers and database servers configured to provide various database services and/or run certain software applications.

FIG. 3is a flow diagram of an exemplary computer-implemented method300for scalable network buffer management. The steps shown inFIG. 3may be performed by any suitable computer-executable code and/or computing system. In some embodiments, the steps shown inFIG. 3may be performed by one or more of the components of system100inFIG. 1, system200inFIG. 2, computing system410inFIG. 4, and/or portions of exemplary network architecture500inFIG. 5.

As illustrated inFIG. 3, at step302, one or more of the systems described herein may receive, via a connection to a client, data to be transmitted to a cloud service. For example, communication module104may, as part of computing device202inFIG. 2, receive, via a connection to client208, data210to be transmitted to a cloud service.

As used herein, the terms “cloud service” or “cloud storage service” generally refer to any service, platform, and/or infrastructure that is capable of providing online and/or third-party hosting for data storage to individual or organizational clients (e.g., providing storage as a service). In some examples, a cloud computing service may provide one or more clients with a view of data without providing the client complete access to all underlying systems. For example, a cloud computing service may allow a consumer to specify service requirements and/or resource requirements without requiring and/or allowing the consumer to control the underlying hardware resources. Examples of cloud computing services may include, without limitation, AMAZON SIMPLE STORAGE SERVICE, GOOGLE CLOUD SERVICE, MICROSOFT ONEDRIVE FOR BUSINESS, and AT&T CLOUD STORAGE.

Communication module104may receive data from a client to be transmitted to a cloud service in a variety of ways. For example, communication module104may establish a transport layer security/secure sockets layer (TSL/SSL) connection to the client so that both the client and server may authenticate the other's identity and the data may be encrypted during transmission. Communication module104may alternatively use any suitable protocols for establishing a connection and receiving data from the client.

At step304, one or more of the systems described herein may buffer the data in at least one data buffer. For example, buffering module106may, as part of computing device202inFIG. 2, buffer data210in at least one data210buffer. As used herein, the term “data buffer” may refer to any storage buffer, cache, and/or other data structure or mechanism for gathering and/or temporarily storing data.

Buffering module106may buffer the data in a variety of ways. For example, rather than allocating a single, large buffer to a client connection to synchronously transmit data from the client to the cloud service, buffering module106may allocate several smaller buffers to each client connection. As each buffer is filled, and as long as there are additional buffers available for the connection, buffering module106may return control to the client to send additional data.

At step306, one or more of the systems described herein may determine that the data will not be transmitted to the cloud service within a timeout period for the client connection. For example, traffic module108may, as part of computing device202inFIG. 2, determine that data210will not be transmitted to the cloud service within a timeout period214for the connection to client208.

Traffic module108may determine that the data will not be transmitted to the cloud service within a timeout period for the client connection in a variety of ways. For example, traffic module108may use the configured timeout value for the computing system as an initial value for the timeout period. If traffic module108observes clients dropping connections before the configured timeout period, traffic module108may reduce the timeout value to the timeout value used by the client. In some examples, traffic module108may maintain transmission time statistics to determine the likelihood that the client timeout period will expire before the data is transmitted to the cloud service. Transmission time statistics may include average transmission time, transmission time range, and transmission time standard deviation.

At step308, one or more of the systems described herein may delay reception of additional data from the client connection for a portion of the timeout period. For example, metering module110may, as part of computing device202inFIG. 2, delay reception of additional data216from the connection to client208for a portion of timeout period214.

Metering module110may delay reception of additional data from the client in a variety of ways. For example, after data has been received from the client and stored in a data buffer, metering module110may delay reception of additional data from the client connection by delaying notification of the client that the data has been received. In this way, data reception from the client may be slowed while data is transmitted to the cloud service, with data reception continuing before the end of the timeout period for the client. Re-establishing a connection and having the client attempt to resend apparently lost data can be very time-consuming. Metering module110may avert the associated impact on data throughput by controlling the rate of data reception from the client.

In one embodiment, the systems described herein may include (1) determining that the data will be transmitted to the cloud service within the timeout period for the client connection and (2) delaying reception of additional data from the client connection until an acknowledgement has been received that the cloud service has received the data. For example, as part of computing device202inFIG. 2, traffic module108may determine, even when data is expected to be transmitted to the cloud service within the client's timeout period, that the likelihood that the expected acknowledgement from the cloud service may not be received before the client's timeout period expires is above a threshold. To decrease the probability of a lost connection to the client, traffic module108may direct metering module110to delay reception of additional data so that data buffers will continue to be available for receiving data from the client, and throughput may be maintained at close to a constant rate.

At step310, one or more of the systems described herein may buffer data from the client connection in at least one secondary data buffer that is smaller in size than the data buffer before the timeout period has elapsed. For example, secondary buffering module112may, as part of computing device202inFIG. 2, buffer data210from the connection to client208in at least one secondary data buffer218, before timeout period214has elapsed, that is smaller in size than data210buffer.

The term “secondary data buffer,” as used herein, generally refers to any storage buffer, cache, and/or other data structure or mechanism for gathering and/or temporarily storing data. Secondary data buffers may be much smaller than primary data buffers, and may be sized to be a small multiple of a client data transmission. Since secondary data buffers are kept in reserve and intended to be used only when needed to control the rate of data transmission from clients, secondary data buffers may represent only a small percentage (5-10 percent) of total buffer memory.

Secondary buffering module112may buffer client data in secondary buffers in a variety of ways. For example, secondary buffering module112may determine that no data buffer is available to buffer the data received via the client connection, buffer data from the client connection in a secondary data buffer, and delay reception of additional data from the client connection for a portion of the timeout period.

In one embodiment, secondary buffering module112may determine that transmission of data to the cloud service has slowed and that additional secondary data buffers may be required. Secondary buffering module112may then reallocate one or more data buffers as smaller secondary data buffers and delaying reception of additional data from the client connection for a time interval. By doing so, secondary buffering module112may continue to receive and buffer data from the client before the client's timeout period has expired.

In addition to managing data transmission from clients, the systems and methods described herein may use data buffers and additional connections to manage data transmission to the cloud service. As with clients, connections to cloud services may be dropped when data is not transmitted on the connection within a timeout period. In some examples, the systems described herein may determine that a number of additional connections to the cloud service should be maintained based at least in part by a ratio of the timeout period for the cloud connection to a time to receive data to fill a data buffer from the client.

In one embodiment, systems described herein may include (1) maintaining one or more additional connections to the cloud service, (2) determining that additional data will not be received via the client connection within a timeout period for the cloud connection, and (3) transmitting at least a portion of the data to the cloud service using the additional connection to the cloud service before the timeout period for the cloud connection has elapsed. For example, as part of computing device202inFIG. 2, traffic module108may determine that client208is transmitting data at a much slower rate than the rate cloud service206can receive it. To prevent the connection to cloud service206from timing out, traffic module108may determine that a number of additional connections to cloud service206should be dedicated to client208. A portion of the data received and buffered from the client may be transmitted on each of the connections, in turn, such that the connection to the cloud service does not time out.

In one embodiment, the systems described herein may include (1) determining the total bandwidth utilization of a plurality of connections to the cloud service, (2) determining that the bandwidth utilization is below a threshold, and (3) incrementally increasing a rate at which one or more connections transmit data to the cloud service. For example, as part of computing device202inFIG. 2, traffic module108may measure bandwidth utilization for each connection to the cloud service and calculate a percentage of total bandwidth utilization for all connections. If traffic module108determines that bandwidth utilization is below a threshold value (such as the maximum bandwidth allocated for connections to the cloud service), traffic module108may signal metering module110to incrementally increase the data transmission rate for one or more cloud service connections. By doing so, the systems described herein may utilize as much available bandwidth as possible and avoid violating client throttling guarantees.

In one embodiment, the systems described herein may include (1) determining that the bandwidth utilization is above the threshold and (2) delaying transmission of data on one or more connections to the cloud service for a time interval. For example, as part of computing device202inFIG. 2, traffic module108may determine that total bandwidth utilization is above a threshold value and direct metering module110to delay data transmission on one or more connections to the cloud service. By doing so, the systems described herein may prevent denial of service for processes running on computing device202other than data transmissions to the cloud service. By combining incremental increases in data transmission rate with transmission delays with bandwidth utilization has reached a threshold, a percentage of available bandwidth may be reserved for connections utilizing that bandwidth, while preventing denial of service to other processes.

In one embodiment, the systems described herein may include (1) receiving, via a connection to the cloud service, data to be transmitted to the client, (2) buffering the data in at least one data buffer, (3) determining that the data will not be transmitted to the client within a timeout period for the cloud service connection, (4) delaying reception of additional data from the cloud service connection for a portion of the cloud service connection timeout period, and (5) before the cloud service connection timeout period has elapsed, buffering data from the cloud service connection in one or more secondary data buffers. For example, as part of computing device202inFIG. 2, (1) communication module104may receive, via a connection to the cloud service, data to be transmitted to the client, (2) buffering module106may buffer the data in at least one data buffer, (3) traffic module108may determine that the data will not be transmitted to the client within a timeout period for the cloud service connection, (4) metering module110may delay reception of additional data from the cloud service connection for a portion of the cloud service connection timeout period, and (5) secondary buffering module112may, before the cloud service connection timeout period has elapsed, buffer data from the cloud service connection in at least one secondary data buffer

The systems described herein may restore data from the cloud service to a client using methods that, in many ways, mirror the backup process, but with some differences in the use of data buffers and secondary data buffers. When restoring data from the cloud, buffering module106may allocate a larger percentage of buffer memory to secondary data buffers. For example, 70-80 percent of buffer memory may be allocated for data buffers, with the remaining memory allocated for secondary data buffers. When the available data buffers have been filled, secondary buffering module112begins filling secondary data buffers with data received from the cloud service, with delays of 20-30 percent of the cloud timeout between data read requests to the cloud service. By doing so, the systems described herein may prevent connections to the cloud service from timing out, with a resulting loss of data throughput.

As described above, the systems and methods described herein may manage data communication between a large number of backup clients and a cloud storage service. The systems and methods described herein may optimize bandwidth utilization and provide greater overall data throughput by managing data buffers to prevent connection loss with either the backup clients or the cloud service. By managing available bandwidth as a pool of bandwidth available to all connections, the systems and methods described herein may incrementally increase bandwidth utilization while preventing denial of service to other processes running on the buffer management computing device.

FIG. 4is a block diagram of an exemplary computing system410capable of implementing one or more of the embodiments described and/or illustrated herein. For example, all or a portion of computing system410may perform and/or be a means for performing, either alone or in combination with other elements, one or more of the steps described herein (such as one or more of the steps illustrated inFIG. 3). All or a portion of computing system410may also perform and/or be a means for performing any other steps, methods, or processes described and/or illustrated herein.

Computing system410broadly represents any single or multi-processor computing device or system capable of executing computer-readable instructions. Examples of computing system410include, without limitation, workstations, laptops, client-side terminals, servers, distributed computing systems, handheld devices, or any other computing system or device. In its most basic configuration, computing system410may include at least one processor414and a system memory416.

Processor414generally represents any type or form of physical processing unit (e.g., a hardware-implemented central processing unit) capable of processing data or interpreting and executing instructions. In certain embodiments, processor414may receive instructions from a software application or module. These instructions may cause processor414to perform the functions of one or more of the exemplary embodiments described and/or illustrated herein.

System memory416generally represents any type or form of volatile or non-volatile storage device or medium capable of storing data and/or other computer-readable instructions. Examples of system memory416include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, or any other suitable memory device. Although not required, in certain embodiments computing system410may include both a volatile memory unit (such as, for example, system memory416) and a non-volatile storage device (such as, for example, primary storage device432, as described in detail below). In one example, one or more of modules102fromFIG. 1may be loaded into system memory416.

In certain embodiments, exemplary computing system410may also include one or more components or elements in addition to processor414and system memory416. For example, as illustrated inFIG. 4, computing system410may include a memory controller418, an Input/Output (I/O) controller420, and a communication interface422, each of which may be interconnected via a communication infrastructure412. Communication infrastructure412generally represents any type or form of infrastructure capable of facilitating communication between one or more components of a computing device. Examples of communication infrastructure412include, without limitation, a communication bus (such as an Industry Standard Architecture (ISA), Peripheral Component Interconnect (PCI), PCI Express (PCIe), or similar bus) and a network.

Memory controller418generally represents any type or form of device capable of handling memory or data or controlling communication between one or more components of computing system410. For example, in certain embodiments memory controller418may control communication between processor414, system memory416, and I/O controller420via communication infrastructure412.

I/O controller420generally represents any type or form of module capable of coordinating and/or controlling the input and output functions of a computing device. For example, in certain embodiments I/O controller420may control or facilitate transfer of data between one or more elements of computing system410, such as processor414, system memory416, communication interface422, display adapter426, input interface430, and storage interface434.

Communication interface422broadly represents any type or form of communication device or adapter capable of facilitating communication between exemplary computing system410and one or more additional devices. For example, in certain embodiments communication interface422may facilitate communication between computing system410and a private or public network including additional computing systems. Examples of communication interface422include, without limitation, a wired network interface (such as a network interface card), a wireless network interface (such as a wireless network interface card), a modem, and any other suitable interface. In at least one embodiment, communication interface422may provide a direct connection to a remote server via a direct link to a network, such as the Internet. Communication interface422may also indirectly provide such a connection through, for example, a local area network (such as an Ethernet network), a personal area network, a telephone or cable network, a cellular telephone connection, a satellite data connection, or any other suitable connection.

In certain embodiments, communication interface422may also represent a host adapter configured to facilitate communication between computing system410and one or more additional network or storage devices via an external bus or communications channel. Examples of host adapters include, without limitation, Small Computer System Interface (SCSI) host adapters, Universal Serial Bus (USB) host adapters, Institute of Electrical and Electronics Engineers (IEEE) 1394 host adapters, Advanced Technology Attachment (ATA), Parallel ATA (PATA), Serial ATA (SATA), and External SATA (eSATA) host adapters, Fibre Channel interface adapters, Ethernet adapters, or the like. Communication interface422may also allow computing system410to engage in distributed or remote computing. For example, communication interface422may receive instructions from a remote device or send instructions to a remote device for execution.

As illustrated inFIG. 4, computing system410may also include at least one display device424coupled to communication infrastructure412via a display adapter426. Display device424generally represents any type or form of device capable of visually displaying information forwarded by display adapter426. Similarly, display adapter426generally represents any type or form of device configured to forward graphics, text, and other data from communication infrastructure412(or from a frame buffer, as known in the art) for display on display device424.

As illustrated inFIG. 4, exemplary computing system410may also include at least one input device428coupled to communication infrastructure412via an input interface430. Input device428generally represents any type or form of input device capable of providing input, either computer or human generated, to exemplary computing system410. Examples of input device428include, without limitation, a keyboard, a pointing device, a speech recognition device, or any other input device.

As illustrated inFIG. 4, exemplary computing system410may also include a primary storage device432and a backup storage device433coupled to communication infrastructure412via a storage interface434. Storage devices432and433generally represent any type or form of storage device or medium capable of storing data and/or other computer-readable instructions. For example, storage devices432and433may be a magnetic disk drive (e.g., a so-called hard drive), a solid state drive, a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash drive, or the like. Storage interface434generally represents any type or form of interface or device for transferring data between storage devices432and433and other components of computing system410. In one example, cloud data store120fromFIG. 1may be stored in primary storage device432.

The computer-readable medium containing the computer program may be loaded into computing system410. All or a portion of the computer program stored on the computer-readable medium may then be stored in system memory416and/or various portions of storage devices432and433. When executed by processor414, a computer program loaded into computing system410may cause processor414to perform and/or be a means for performing the functions of one or more of the exemplary embodiments described and/or illustrated herein. Additionally or alternatively, one or more of the exemplary embodiments described and/or illustrated herein may be implemented in firmware and/or hardware. For example, computing system410may be configured as an Application Specific Integrated Circuit (ASIC) adapted to implement one or more of the exemplary embodiments disclosed herein.

FIG. 5is a block diagram of an exemplary network architecture500in which client systems510,520, and530and servers540and545may be coupled to a network550. As detailed above, all or a portion of network architecture500may perform and/or be a means for performing, either alone or in combination with other elements, one or more of the steps disclosed herein (such as one or more of the steps illustrated inFIG. 3). All or a portion of network architecture500may also be used to perform and/or be a means for performing other steps and features set forth in the instant disclosure.

Client systems510,520, and530generally represent any type or form of computing device or system, such as exemplary computing system410inFIG. 4. Similarly, servers540and545generally represent computing devices or systems, such as application servers or database servers, configured to provide various database services and/or run certain software applications. Network550generally represents any telecommunication or computer network including, for example, an intranet, a WAN, a LAN, a PAN, or the Internet. In one example, client systems510,520, and/or530and/or servers540and/or545may include all or a portion of system100fromFIG. 1.

As illustrated inFIG. 5, one or more storage devices560(1)-(N) may be directly attached to server540. Similarly, one or more storage devices570(1)-(N) may be directly attached to server545. Storage devices560(1)-(N) and storage devices570(1)-(N) generally represent any type or form of storage device or medium capable of storing data and/or other computer-readable instructions. In certain embodiments, storage devices560(1)-(N) and storage devices570(1)-(N) may represent Network-Attached Storage (NAS) devices configured to communicate with servers540and545using various protocols, such as Network File System (NFS), Server Message Block (SMB), or Common Internet File System (CIFS).

Servers540and545may also be connected to a Storage Area Network (SAN) fabric580. SAN fabric580generally represents any type or form of computer network or architecture capable of facilitating communication between a plurality of storage devices. SAN fabric580may facilitate communication between servers540and545and a plurality of storage devices590(1)-(N) and/or an intelligent storage array595. SAN fabric580may also facilitate, via network550and servers540and545, communication between client systems510,520, and530and storage devices590(1)-(N) and/or intelligent storage array595in such a manner that devices590(1)-(N) and array595appear as locally attached devices to client systems510,520, and530. As with storage devices560(1)-(N) and storage devices570(1)-(N), storage devices590(1)-(N) and intelligent storage array595generally represent any type or form of storage device or medium capable of storing data and/or other computer-readable instructions.

In certain embodiments, and with reference to exemplary computing system410ofFIG. 4, a communication interface, such as communication interface422inFIG. 4, may be used to provide connectivity between each client system510,520, and530and network550. Client systems510,520, and530may be able to access information on server540or545using, for example, a web browser or other client software. Such software may allow client systems510,520, and530to access data hosted by server540, server545, storage devices560(1)-(N), storage devices570(1)-(N), storage devices590(1)-(N), or intelligent storage array595. AlthoughFIG. 5depicts the use of a network (such as the Internet) for exchanging data, the embodiments described and/or illustrated herein are not limited to the Internet or any particular network-based environment.

In at least one embodiment, all or a portion of one or more of the exemplary embodiments disclosed herein may be encoded as a computer program and loaded onto and executed by server540, server545, storage devices560(1)-(N), storage devices570(1)-(N), storage devices590(1)-(N), intelligent storage array595, or any combination thereof. All or a portion of one or more of the exemplary embodiments disclosed herein may also be encoded as a computer program, stored in server540, run by server545, and distributed to client systems510,520, and530over network550.

As detailed above, computing system410and/or one or more components of network architecture500may perform and/or be a means for performing, either alone or in combination with other elements, one or more steps of an exemplary method for scalable network buffer management.