Techniques for storage controller quality of service management

A technique for managing a data network includes monitoring data transfer rates and data transfer thresholds for data transferred between storage and an application. Feedback on the suitability of the data transfer rate is collected from the application. A data transfer threshold for the application is changed based on the monitored data transfer rate and the collected feedback.

This application claims priority to United Kingdom Patent Application 1318218.3, entitled “STORAGE CONTROLLER QUALITY OF SERVICE,” filed on Oct. 15, 2013. The disclosure of United Kingdom Patent Application 1318218.3 is hereby incorporated herein by reference in its entirety for all purposes.

BACKGROUND

This application is generally directed to quality of service management and, more particularly, to techniques for storage controller quality of service management.

In enterprise computing environments, there are often two completely different sets of performance metrics in operation between an external storage controller and application. At the storage controller level, performance can only be automatically measured in terms of input and output (IO) operations per second. However, at the application level users and administrators are concerned with a different but related set of metrics. For example, a database application may be concerned about database reads and writes per second.

These two different views on performance make managing the relationship between storage performance and application performance difficult and often utilize different sets of skills and people to measure performance. This inevitably leads to generalized performance requirements at the storage level. As such, setting a level of storage performance is always a compromise. In addition, some quality of service (QoS) implementations rely on the concept of providing performance to whatever level an object involved requires, at the expense of other objects. In these types of QoS implementations, an application under heavy load may negatively impact performance of other storage subsystem users.

BRIEF SUMMARY

Disclosed are a method, a network controller, and a computer program product (embodied in a computer-readable storage device) for storage controller quality of service management.

A technique for managing a data network includes monitoring data transfer rates and data transfer thresholds for data transferred between storage and an application. Feedback on the suitability of the data transfer rate is collected from the application. A data transfer threshold for the application is changed based on the monitored data transfer rate and the collected feedback.

DETAILED DESCRIPTION

The illustrative embodiments provide a method, network controller, and a computer program product (embodied in a computer-readable storage device) for storage controller quality of service management.

It is understood that the use of specific component, device and/or parameter names are for example only and not meant to imply any limitations on the invention. The invention may thus be implemented with different nomenclature/terminology utilized to describe the components/devices/parameters herein, without limitation. Each term utilized herein is to be given its broadest interpretation given the context in which that term is utilized. As may be utilized herein, the term ‘coupled’ encompasses a direct electrical connection between components or devices and an indirect electrical connection between components or devices achieved using one or more intervening components or devices.

In a first aspect of the present disclosure, a network controller includes: a monitor for monitoring data transfer rates and data transfer thresholds for transferring data between storage and one or more applications; a feedback collector for collecting feedback on the suitability of the transfer data rate from one or more of the applications; and a threshold adjuster for changing data transfer thresholds for at least one application based on the monitored data transfer rate and the collected feedback. In a second aspect of the present disclosure, a method of managing a data network includes: monitoring data transfer rates and data transfer thresholds for transferring data between storage and one or more applications; collecting feedback on the suitability of the transfer data rate from one or more of the applications; and changing the data transfer threshold levels for at least one application based on the monitored data transfer rate and the collected feedback.

The various disclosed embodiments allow applications to request current performance levels, as a quality of service (QoS) requirement. directly from a storage controller. This allows the storage controller to set its quality of service efforts based on incoming data from an application. This facilitates both easier systems management and more accurate setting of performance requirement information for QoS purposes. In addition, in the types of QoS implementations defined above, having a defined metric for a maximum performance level required allows the QoS implementation to cap resource usage for a particular application at the levels identified by the application, which generally prevents resource starvation for other volumes without QOS requirements.

The data transfer thresholds may take the form of data transfer thresholds in a storage controller. Alternatively, data transfer thresholds may take the form of data transfer thresholds in a network switch. A minimum data transfer rate may be set as the monitored data transfer rate for an application, if the application declares that a required performance level has been reached. Feedback may, for example, take the form of an application programming interface (API) message that declares that a required performance level has been reached. In one or more embodiments, an application has an application programming interface (API) that is configured to send data directly to a storage controller declaring that a required performance level has been reached. Based on this data, the storage controller can check the performance levels for the volumes involved and set this as a minimum resource guarantee level for quality of service policy purposes.

Advantageously, the method may further comprise requesting feedback from one or more applications. It is envisioned that applications may send feedback to a storage controller independently of the storage controller for independent operation. However, it may be advantageous for the storage controller to request feedback from all applications at a single point in time in some situations. Communication between an application and a storage controller may be performed using the same channels that are used for data transfer. For example, high-speed Fibre Channel (FC) storage used for high-speed data transfer can be used.

Communication between an application and a storage controller may be out-of-band with storage traffic, e.g., via a separate network. For example, applications can use an Internet protocol network to communicate with a storage controller. The storage may not be directly attached to servers executing the applications. For example, cloud based storage or infrastructure as a service (IAAS) storage may be employed. The various embodiments allow applications to request current performance levels, as a quality of service (QoS) requirement, directly from a storage controller, allowing the storage controller to set quality of service efforts based on the incoming data from an application. This provides both easier systems management and more accurate setting of performance requirement information for QoS purposes.

In addition, in the types of QoS implementation defined above, having a defined metric for maximum performance level required allows the QoS implementation to cap resource usage for a particular application at the levels identified by the application, preventing resource starvation for other volumes without QoS requirements. Communication between an application and storage controller may be in-band over FC, or via Internet protocol (IP) based side channels. If the communication is achieved using in-band FC packets, this can also be communicated to storage area network (SAN) fabric infrastructure, allowing for switches to also use the information to control SAN bandwidth and performance levels.

The various embodiments are particularly appropriate for situations where storage may be provided as a third party offering to an application provider, as in a cloud or IAAS offering, as it provides a method where performance requirements can be communicated automatically to external providers. The embodiments have a performance guaranteeing effect on processes carried on in applications that use storage arrays controlled by a storage controller. The various embodiments may operate at a computer system level and below an overlying application level. The embodiments facilitate implementation of a storage controller that operates in a novel manner leading to an increase in speed and/or reliability of the storage controller and applications that use controlled storage.

According to a third aspect, a computer program product for managing a storage controller is disclosed. The computer program product comprises a computer-readable storage medium having computer-readable program code embodied thereon. The computer-readable program code is configured to perform the above-described method. According to a fourth aspect, a computer program stored on a computer-readable medium and loadable into an internal memory of a digital computer (data processing system), comprising software code portions, when the program is executed on a computer, that performs the above-described method. According to a fifth aspect, a data carrier that comprises functional computer data structures to, when loaded into a computer system and operated upon thereby, enable the computer system to perform the above-described method. A suitable data-carrier includes, for example, a solid-state memory, a magnetic drive, or an optical disk. Channels for the transmission of data may likewise comprise storage media of all descriptions.

Various embodiments of the present disclosure are directed to enabling applications to signal maximum performance to storage controllers, which allows for easier system management and capping of resource requirements for quality of service. Referring toFIG. 1A, a known high-speed FC data network in which the embodiment can be deployed is shown. FC network10comprises: servers12A and12B; switches14A and14B; and FC Input/Output (I/O) Group16.

The FC network10facilitates a high-speed data transfer between servers12A and12B and FC I/O group16, via switches14A and14B. In one embodiment, the high-speed data network is FC but other high-speed data networks are envisioned. Servers12A and12B are computer systems that execute applications18and use high-speed data from FC I/O group16. Servers12A and12B connect to other components of the FC system using FC ports. In the disclosed embodiment there are two servers and each server has dual FC ports. While the disclosed embodiment has dual FC ports (dual node), other embodiments may have a single port. Servers12A and12B further comprise alternative ports for a wide area network (WAN) connection to more generic network devices (not shown).

Switches14A/14B comprise two or more fast data connections and enable high-speed data to move along the fastest data connection. A switch in the context of this disclosure may be a simple switch or a complex structure of switches (also known as a fabric). In an embodiment, each switch has four FC ports. An embodiment is contemplated in which the switch plays a pivotal role in implementing the disclosed techniques. Another embodiment is contemplated in which a switch is not employed. FC I/O group16enables high-speed data to flow into and out of disk storage using four FC ports.

FC I/O group16comprises: FC storage controller20A/20B and physical disk storage22A,22B,22C and22D. FC storage controllers20A and20B enable the data to be written and read from physical disk storage22A,22B,22C and22D. FC storage controller20A is described in more detail with respect toFIG. 1B. The purpose of the storage controllers is to take physical disks and make them available to applications as ‘virtual disks’. The data on those virtual disks may actually be striped across a number of different physical disks or mirrored without the application being aware of those aspects. Physical storage disks22A,22B,22C and22D may be standard disks. FC storage controller20A and20B can configure any number of virtual storage partitions on the physical disks.

Referring toFIG. 1B, the deployment of an exemplary FC storage controller12A is described. A similar deployment in FC storage controller12B is contemplated in another embodiment with modifications to enable operation of storage controller12A with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing processing systems, environments, and/or configurations that may be suitable for use with storage system10include, but are not limited to, dedicated controller systems, server computer systems, thin clients, thick clients, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices.

Storage controller12may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer processor. Generally, program modules may include routines, programs, objects, components, logic, and data structures that perform particular tasks or implement particular abstract data types. Storage controller12comprises: central processing unit (CPU)24; FC ports26A and26B; bus28; memory30; and wide area network adapters (not shown). CPU24loads machine instructions from memory30and performs machine operations in response to the instructions. Such machine operations include: incrementing or decrementing a value in register (not shown); transferring a value from memory30to a register or vice versa; branching to a different location in memory if a condition is true or false (also known as a conditional branch instruction); and adding or subtracting the values in two different registers and loading the result in another register.

A typical CPU can perform many different machine operations. A set of machine instructions is called a machine code program. The machine instructions are written in a machine code language which is referred to a low level language. A computer program written in a high level language needs to be compiled to a machine code program before it can be run. Alternatively a machine code program, such as a virtual machine or an interpreter, can interpret a high level language in terms of machine operations. High-speed FC ports26A and26B are connected to bus28for enabling communication between storage disks22A to22D and applications18. Bus28couples the main system components together including memory30to CPU22. Bus28represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus.

Memory30includes computer system readable media in the form of volatile memory32and non-volatile or persistent memory34. In an embodiment, application data is not stored in the controller memory30and controller executable code is not stored in the storage22A to22D. However, other embodiments could handle the distinction differently. Examples of volatile memory32are random access memory (RAM)36and cache memory38. Generally volatile memory is used because it is faster and generally non-volatile memory is used because it will hold the data for longer. Storage system10may further include other removable and/or non-removable, volatile and/or non-volatile computer system storage media. By way of example only, persistent memory34can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically a magnetic hard disk or solid-state drive).

Although not shown, further storage media may be provided including: an external port for removable, non-volatile solid-state memory; and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a compact disk (CD), digital video disk (DVD) or Blu-ray. In such instances, each can be connected to bus28by one or more data media interfaces. As will be further depicted and described below, memory30may include at least one program product having a set (for example, at least one) of program modules that are configured to carry out the functions of the various disclosed embodiments. A set of program modules configured to carry out the functions of one or more embodiments comprises: controller module36and quality of service module200. Further program modules that support one or more embodiments, but are not shown, include firmware, boot strap program, operating system, and support applications. Each of the operating system, support applications, other program modules, and program data or some combination thereof, may include an implementation of a networking environment.

Referring toFIG. 2, quality of service module200comprises the following components: data transfer monitor202; feedback interface204; data transfer metrics206; monitor208; feedback controller210; threshold adjuster212, and quality of service method300. Data transfer monitor202is configured to monitor the application data that transfers between applications and controlled storage arrays. Feedback interface204is configured to receive and transmit control data between the applications and the quality of service module200. Data transfer metrics206is a repository configured to store data transfer metrics. Monitor208is configured to monitor data transfer rates for transferring data between storage and one or more applications. Feedback collector210is configured to collect feedback on the suitability of the transfer data rate from one or more of said applications. Threshold adjuster212is configured to change data network control threshold levels for at least one application based on monitored data transfer rate and the collected feedback. Quality of service method300is configured to control the quality of service within the storage controller.

Referring toFIG. 3, method300comprises logical blocks302to312. The logical blocks302-312may, for example, correspond to a combination of software and hardware (i.e., code executed by a processor) or correspond strictly to hardware. Block302is the start of the method300, in at least one embodiment the method300is a daemon initiated at startup and run in the background of the storage controller. In block304data transfer rates between applications and storage arrays are monitored. In block306listening for feedback on data received and data received rates of transfer is initiated. In block306requests for feedback may also be initiated. When feedback is received control transfers from block306to block308. Otherwise, control loops back to block304, where additional listening for feedback is initiated. In block308, a maximum data transfer rate is set for an application based on a monitored data transfer rate and the feedback for data received rate. In block310, a decision is made as to whether to continue to listen for feedback by returning to block306or discontinue listening by transferring control to block312. In block312, the quality of service method300is terminated.

FIGS. 4A to 4Dshow a first example set of applications requesting a minimum quality of service and how the technology can protect a workload from future performance degradation as additional workload is moved onto a storage controller.FIG. 4Ashows how performance can be degraded without the embodiments when using the conventional methods of setting QoS independently of real application performance at the storage controller level, and then how application of the embodiments can avoid this situation. Initially a storage controller (capable of a total of 15,000 inputs or outputs per second (IOPS)) is configured with four virtual disks available to applications (Disk1, Disk2, Disk3 and Disk4). Each of the virtual disks is assigned a QoS guarantee of 2,500 IOPS by the storage administrator, meaning that each of the virtual disks is guaranteed to be able to obtain at least 2,500 IOPS if needed, and more if spare capacity is available. Four host applications (App1, App2, App3 and App4) are shown, each utilizing a single virtual disk on the storage controller. Since spare capacity is available, disks are free to use as many IOPS as the application using the disk requires.

FIG. 4Bshows the IOPS demanded and received (the actual QoS) by the four disks when all applications are running in a steady state. Disk1 utilizes fewer IOPS than allocated, and Disk3 and Disk4 are using more, utilizing some of the unallocated capacity and some of the spare IOPS donated back to the unallocated pool by Disk1.FIG. 4Balso shows the state when a storage administrator introduces another two disks (or virtual disks) to the storage controller, which serve out 2500 IOPS as specified in the QoS guarantee. In this case, Disk3 and Disk4 suffer degraded performance, as the only spare IOPS they are able to use are the 500 IOPS allocated to Disk1 (that Disk1 is not using).

FIGS. 4C and 4Dshow the situation if the technology described in this disclosure were utilized to “Lock-in” current IOPS performance once the applications were running in a steady state. The QoS guarantees are updated and, once updated, the applications can run within the new QoS guarantees. As such, the pool of unallocated IOPS is an accurate representation of the “spare” IOPS available for use by other workloads, which enables a storage administrator to add workloads knowing that existing application performance will not be adversely affected.

FIGS. 5A to 5Dshow a further example set of applications requesting a minimum quality of service.FIG. 5Ashows six virtual disks (used by six applications) provisioned on a storage controller that has a total capacity of 15,000 IOPS. To ensure quality of service, a storage controller administrator has set a QoS guarantee of 2,500 IOPS for each disk, and thus for each application. The storage controller therefore appears to be at capacity.FIG. 5Bshows that each of applications only issues 2,000 IOPS because the application does not receive the expected demand or because it is bottlenecked on network or CPU capacity. As a result, there is spare capacity which is not visible to a storage controller administrator.

FIG. 5Cshows applications sending QoS lock-in commands that would reduce the storage controller's QoS guarantees to reflect the actual demand of the application.FIG. 5Dshows, that as a result of these commands, the QoS guarantees for the applications are reduced, and the unallocated capacity is available for the storage controller administrator to allocate for new workloads, confident that these new workloads will not impact the performance of existing workloads.

Accordingly, techniques have been disclosed herein that advantageously manage storage controller quality of service.