Patent ID: 7349958

Claim:
A storage area network, comprising: a storage system for providing storage of system data; at least one application host running an application thereon and accessing data on the storage system; at least one I/O performance gateway, disposed between the at least one application host and the storage subsystem, for intercepting I/O operations; a Service Level Agreement (SLA) server, coupled in parallel with the at least one I/O performance gateway and the storage system, for controlling the at least one I/O performance gateways based on service level agreements; and a database, coupled to the SLA server, for storing service level agreements; wherein the at least one I/O performance gateway sends statistics data to the SLA server and receives I/O control requests from the SLA server to control I/O operations of the performance gateway; wherein the SLA server further comprises: a database manager, coupled to the database, for maintaining connections to the database and for maintaining service level agreements and performance data in the database; an SLA services module for analyzing data and controlling actions based on the service level agreements and policy; an application server for communicating with clients to provide monitoring information for presentation at an SLA client and to provide communication between the database manager and the SLA client; and a performance monitor, coupled to the SLA services module, for communicating with the at least one I/O performance gateway to collect data and send throttling requests based upon signals from the SLA services module, wherein the performance monitor is configured to provide at least one thread pair for processing inbound signals from the at least one I/O performance gateway being sent to the SLA services module via an inbound thread and for processing outbound signals to the at least one I/O performance gateway received from the SLA services module via an outbound thread, the inbound thread and the outbound thread operating asynchronously to provide non-blocking messaging.