# Patent

## Title
Scalable performance management system

## Abstract

A performance management system, having a peer-to-peer architecture, enables performance transparency in computer information systems, providing granular performance data and scalability. Peer appliances in a computer information system collect performance data. When a user requests a performance report, an originating peer appliance may determine which peer appliances contain the data required for the report and what data processing, if any, is required. The originating peer appliance may send requests indicating what data and what data manipulation processing is required. Each of the receiving peer appliances (including the originating peer appliance) may perform its own portion of the data processing. The originating peer appliance may receive resultant data from the peer appliances (including itself) and combine the resultant data into the requested report for the user. The performance management system distributes significant data processing across the peer appliances, avoids bottlenecks, and increases system scalability.

## Background
CROSS REFERENCE TO RELATED APPLICATIONS
This application is a divisional of U.S. application Ser. No. 12/260,757, filed Oct. 29, 2008 entitled “SCALABLE PERFORMANCE MANAGEMENT SYSTEM”, the entirety of which is incorporated herein by reference.


BACKGROUND
Computer information systems typically include multiple computing devices. The computing devices may include workstation computers, network equipment, server computers, and the like. The computing devices may generate performance data. For example, a computing device may generate a series of time-stamped data points indicative of Central Processing Unit (CPU) usage.
Performance management systems collect and process performance data. The performance data may be used to troubleshoot past incidents, to report on present performance, and to plan for future growth. For example, granular past performance data may be used to identify a root cause of a network outage. Performance data indicative of present performance may be used to demonstrate compliance with service-level agreements (SLAs).
As the computer information system grows, the amount of performance data becomes significant, and the effectiveness of legacy performance management systems degrades. For example, where a single, central reporting computer receives data from many collectors, the central reporting computer is often responsible for the storage and processing of the performance data for the entire computer information system. The reporting computer becomes overloaded with information.
The cost-benefit of scaling such legacy systems is limited. The central reporting computer's processing and storage hardware capability may be increased, so that it can process more performance data. The granularity of the performance data may be reduced, so that there is less performance data to process. The former makes the legacy system more expensive, and the latter makes the legacy system less useful. For example, a network traffic spike lasting five seconds is all but impossible to diagnose if the performance data granularity is set at 60-second samples; however, such a spike can disrupt many applications, including Voice over Internet Protocol, financial trading transactions, and other latency-sensitive communications. As the demand for performance transparency in computer information systems increases, the cost-effective delivery of performance data takes on a strategic importance.
SUMMARY
Described is a performance management system. The performance management system's peer-to-peer architecture enables performance transparency in computer information systems, providing granular performance data and scalability.
Peer appliances may be deployed in a computer information system. Each peer appliance may receive performance data from a subset of computing devices. Each peer device stores its respective performance data in a corresponding datastore. Storing a subset of the overall performance data at each peer appliance increases the overall amount, and thus, the granularity of historic performance data available to the performance management system.
A user may log on at any peer appliance (i.e., the “originating” or “local” peer appliance) and request a performance report. For example, the performance report may include a listing of detailed historic performance data, a processed network-view chart, a time-series graph, or the like. In response, the local peer appliance may determine which peer appliances in the performance management system contain the data required for the report and what data processing, if any, is required. The local peer appliance may send one or more requests to itself and other peer appliances (i.e., ‘remote’ peer appliances). The requests may indicate what data and what data processing is required for the report.
Each of the peer appliances that receives a request may perform a respective data query to its datastore. Each may perform its own portion of the data processing required for the report. The local peer appliance may receive resultant data from itself and the other peer appliances. The local peer appliance may combine the resultant data into the requested report for the user. Distributing the significant data storage and processing across multiple peer appliances in the performance management system reduces bottlenecks and increases scalability.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of an example performance management system.
FIG. 2 is a block diagram of an example performance management system.
FIG. 3 is an example message flow for processing a report request.
FIG. 4 is a block diagram of an example peer appliance.
FIG. 5 is a flow chart of an example process for managing mapping data.
FIG. 6 is a flow chart of an example process for fulfilling a performance report request.



DETAILED DESCRIPTION
FIG. 1 is a block diagram of an example performance management system 100 for a computer information system 102. The performance management system 100 may enable performance transparency for the computer information system 102, providing granular performance data and scalability.
The performance management system 100 may include one or more peer appliances 104. The peer appliances 104 may be interconnected in a peer-to-peer architecture. For example, the peer appliances 104 may be networked such that each peer appliance 104 is in communication with each other peer appliance 104. The peer-to-peer architecture may present a logically flat topology of peer appliances 104.
Each peer appliance 104 may correspond to one or more computing devices 106 in the computer information system 102. The computing devices 106 may include workstation computers, networking equipment, server computers, and the like. Workstation computers may include desktop computers, laptop computers, personal digital assistants, smart phones, tablet PCs, and the like. Networking equipment may include hubs; bridges; switches; routers; network appliances such as firewalls, VPN appliances, Web proxies, etc.; Voice over Internet Protocol (VoIP) devices such as VOIP clients, VoIP gateways, VoIP proxies, etc.; and the like. Server computers may include business information servers, database servers, customer relationship management servers, web servers, document management servers, storage area networks systems, and the like. The computing devices 104 may be organized in a network such as a Local Area Network (LAN), Wide Area Network (WAN), Metropolitan Area Network (MAN), extranet, intranet, and internet network. For example, the computer information system 102 may be managed, owned, and/or operated by a commercial organization, a government organization, an educational organization, or the like.
Each of the computing devices 104 may provide performance data. Performance data may include any information indicative of a present and/or past observable aspect of operation. For example, the performance data may include CPU utilization, memory utilization, disk input-output utilization, disk storage capacity information, interface input-output utilization information, CPU process thread count, active/standby device status, jitter, latency, average round-trip time, bandwidth utilization, late and/or lost packet information, and packet out of sequence information, and the like.
The performance data may be received by a corresponding peer appliance 104. The peer appliances 104 may receive periodic performance data messages from the computing devices 104. The peer appliances 104 may periodically poll the computing devices 104 for performance data. The performance data may be formatted and transmitted/received via a network management protocol. For example, performance data may be formatted and transmitted/received via Simple Network Management Protocol (SNMP), proxy pinging, portshaker protocol, CISCOTM IOS IP Service Level Agreement protocol, and the like.
The performance data may be formatted and transmitted/received via a custom protocol. For example, a script may be authored to enable the peer appliance 104 to communicate via a custom protocol specific to one or more computing devices 106. The script may include computer executable code that when executed, properly formats, processes, and parses the specific performance data.
A peer appliance 104 may present a user interface via a Hypertext Transport Protocol (HTTP) session with a web browser software of a client computer 108. The user may log into any of the peer appliances 104. The user may interact with the user interface. The user may view, add, edit, or remove configuration data. For example, the user may add new computing devices 104 to the performance management system 100, assigning them to a peer appliance 104. For example, the user may move a computing device from one peer appliance 104 to another. The user may add or remove a peer appliance 104 from the performance management system 100.
The user may request a performance report. The performance report may be any presentation of performance data. The performance report may include a chart, graph, and/or table based on the performance data. The performance report may include aggregated data, such as an overall network utilization report. The performance report may include detailed troubleshooting data, such as a time series plot of CPU utilization for a specific group of computing devices 106. The report may include data that has been mathematically processed, such as averages, minimums, maximums, trend data, extrapolated data, polynomial fit data, sorted data, filtered data, and the like. For example, the performance reporting may be an application report, Internet Protocol report, network report, Quality of Service (QoS) report, or the like.
When the user requests a performance report, the peer appliances 104 may coordinate with each other to retrieve data identified by the subject matter of the performance report and to distribute the processing required for generation of the performance report.
FIG. 2 is a block diagram of an example performance management system 100. As illustrated, a first peer appliance 202 may correspond to a first group 204 of computing devices 106 in a computing information system 102. A second peer appliance 206 may correspond to a second group 208 of computing devices 106 in the computer information system 102. The first peer appliance 202 may receive performance data from each of the computing devices 106 in the first group 204. The second peer appliance 206 may receive performance data from each of the computing devices 106 in the second group 208. The first peer appliance 202 may maintain first performance data 210 corresponding to the computing devices 106 in the first group 204. The second peer appliance 206 may maintain second performance data 212 for computing devices 106 that correspond to the second group 208. FIG. 2 illustrates a system with two peer appliances 202, 206; however, the performance management system 100 may be implemented with any number of peer appliances 202, 206.
The first peer appliance 202 may maintain first mapping data 214. The first mapping data 214 may include information that describes the relationship between peer appliances 202, 206 and computing devices 106. As illustrated, the first peer appliance 202 may correspond to Devices A, B, and C (i.e., the computing devices 106 of the first group 204). The second peer appliance 206 may correspond to Devices D, E, and F (i.e., the computing devices 106 of the second group 208). The first mapping data 214 may represent a logical topology of the performance management system 100. The first mapping data 214 may include data indiciatie of each computing device from which performance data is received and that computing device's corresponding peer appliance 202, 206.
The first mapping data 214 may be stored in a database. The first mapping data 214 may be stored in the same database as the first performance data 210. The first mapping data 214 may be stored in a database separate from the first performance data 210.
The second peer appliance 206 may maintain second mapping data 216. The second mapping data 216 may be a replicated copy of the first mapping data 214. The first mapping data 214 and the second mapping data 216 may be kept in synchrony according to a database replication process. For example, updates to the first mapping data 214 may be propagated to the second mapping data 216 via the database replication process. The first peer appliance 202 may be designated as a primary source of mapping data. The database replication may maintain synchronized copies of the mapping data at each peer appliance 202, 206 in the performance management system 100. Thus, each peer appliance 202, 206, via the mapping data, may have a current topology of the relationships between computing devices 106 and peer appliances 202, 206.
The user may log in to any peer appliance 202, 206. When a user logs in to the peer appliance 202, 206, it may be considered the originating (i.e., “local”) peer appliance 202 for that session (for illustration purposes consider the first peer appliance 202 as shown in FIG. 2 to be the local peer appliance 202). The local peer appliance 202 presents the user with a user interface. The user interface may include a collection of dynamic webpages.
The user may request a performance report that implicates one or more computing devices 106. The local peer appliance 202 may determine from the mapping data which peer appliances 202, 206 (including itself) may be queried to obtain the data required for the report. For example, a user, logged in at the first peer appliance 202, may request that the daily average memory utilization for the past week for Device A and Device D be displayed. The first peer appliance 202 may determine from the mapping data that Device A corresponds to the first peer appliance 202 and the Device B corresponds to the second peer appliance 206. The local peer appliance 202 may consider the nature of the report and determine what, if any, data manipulation process may be performed. The first peer appliance 202 may determine a data manipulation process of daily average and a filter set to include the past week of memory utilization data is required for the report.
FIG. 3 is an example message flow for processing report request. At 302, the user may make a request for a performance report. The request may be sent to the first peer appliance 202. To illustrate, the user may request a “top ten most-utilized network interfaces” report. This report would present a listing of the top most-utilized network interfaces of computing devices throughout the network.
Upon receipt of the request for the report, the first peer appliance 202 may consult its replicated copy of the mapping data (i.e., the first mapping data 214) to determine which peer appliances 202, 206 maintain the performance data required to complete the request for the report. For purposes of this illustration, both the first peer appliance 202 and the second peer appliance 206 have performance data associated with the report. In this illustration, the performance data required may include interface utilization data.
The first peer appliance 202 may determine what data manipulation process is required, if any. The data manipulation process may include a sorting and filtering operation that selects the top ten most utilized interfaces from the group of computing devices.
At 304, the first peer appliance 202 sends a remote request for performance data to the second peer appliance 206. The remote request may indicate the data related to the report and any data manipulation process required for the report. For example, the second peer appliance 206 may select the top ten most-utilized interfaces from among those represented in the second performance data 212.
At 306, the first peer appliance 202 queries itself. This local request also specifies the data related to the report and any data manipulation process required for the report. Similarly, the first peer appliance 202 may select the top ten most-utilized interfaces from those represented in the first performance data 210. Thus, both the first peer appliance 202 and the second peer appliance 206, in this example, share the processing required for the report.
At 308, upon completion of the processing of the performance data, the second peer appliance 206 may return some intermediate data to the first peer appliance 202. Intermediate data may represent an output of the data manipulation process indicated in the request (e.g., the top ten most-utilized interfaces from among those represented in the second performance data 212).
Similarly, at 310, the first peer appliance 202 may return to itself intermediate data (e.g., the top ten most-utilized interfaces from among those represented in the first performance data 210) that corresponds to a characteristic of the report.
The local and remote requests at 306 and 304 may occur in series or in parallel. For example, the local request at 306 may be sent after having received the intermediate data associated with the remote request at 304. The local request at 306 may be sent at the same time as the remote request at 306. Generally, parallel requests may reduce the overall delay in providing a report to the user.
Upon receipt of the intermediate data from the second peer appliance 206 and from itself, the first peer appliance 202 may generate a performance report and present a performance report to the user, at 312. In total, the first peer appliance 202 may receive the top 20 most-utilized interfaces (i.e., ten interfaces from each of the first peer appliance 202 and the second peer appliance 206). The first peer appliance 202 then selects the overall top ten from this received top 20. Thus, the processing and storage requirements for the performance management system is distributed among the peer appliances 202, 206.
FIG. 4 is a block diagram of an example peer appliance 400. The peer appliance 400 may include a processor 402, a network interface 404, and/or a computer readable storage medium 406. The peer appliance 400 may be a low-profile, rack-mountable server computer, a blade server, or the like. The processor 402 may be any device, system, or subsystem suitable for processing information such as a microprocessor, parallel processor, microcontroller, or the like. The network interface 404 may be any device, system, or subsystem to provide network communication. The network interface 404 may provide communication from the peer appliance 400 to other devices such as computing devices and other peer appliances. The network interface 404 may include an Ethernet interface, Gigabit Ethernet interface, fiber channel interface, token-ring interface, FDDI interface, wireless Ethernet, and the like.
The network interface 404 may enable communication between the peer appliance 400 and the corresponding computing devices that the peer appliance monitors. The peer appliance 400 may use the network interface 404 to send polling messages to the computing devices and to receive performance data from the computing devices. The network interface 404 may be configured with an open-port to receive periodic performance data from the computing devices. network interface 404 may be used to send and receive data to and from other peer appliances in the performance management system.
The computer readable storage medium 406 may include any device, system or subsystem suitable for storing and retrieving information. For example, the computer readable storage medium 406 may include random access memory, read-only memory, flash memory, magnetic storage memory, optical storage memory, a storage area network (SAN), or the like. The computer readable storage medium 406 may be a combination of random access memory and magnetic storage hard disk memory.
The computer readable storage medium 406 may have stored therein a mapping database 408 and a performance database 410. The computer readable storage medium 406 may have stored therein computer executable code for a Hypertext Transport Protocol (HTTP) server 412, a peer-to-peer application 414, a database replication application 416, and a collection application 418.
The mapping database 416 and the performance database 410 may be in separate databases. The mapping database 416 and the performance database may be in the same database. The database or databases may include an ORACLETM database, a MYSQLTM database, a D-BASETM database, or the like.
The mapping database 408 may maintain information describing the topology relationship between peer appliances and computing devices in the performance management system. The mapping database 408 may be updated whenever computing devices are added to, removed from, or moved within the performance management system. The mapping database 408 may maintain the data required for a peer device to determine which peer device to contact for data related to any computing device in the performance management system.
The mapping database 408 may interface with the database replication application 416. The database replication application 416 may maintain the mapping database 408 in synchrony with one or more copies of the mapping database 408 at other peer appliances. The database replication application 416 may provide active and/or passive database replication. The database replication application 416 may be a component of a database management system or a standalone application.
In an example performance management system, one peer appliance 400 may be designated as a “primary.” Every other peer appliance 400 in the example performance management system may be designated as a “replicated copy.” In this example, the peer appliances 400 may be programmed such that new changes to the mapping data are transacted at the primary database, and that read-only transactions are conducted locally. To illustrate, when a new computing device is added to the computer information system, information about the new computing device and the peer appliance 400 to which it is assigned may be entered and/or transferred to the primary peer appliance 400. This data is entered at the mapping database 408 of the primary peer appliance 400. Detecting the change at the mapping database 408, the replication application may propagate the change to every other peer appliance 400 in the performance management system. Thus, subsequent requests for reports that consult the mapping database, at any peer appliance 400, will have the most up-to-date topological view of the mapping between computing devices and peer appliances 400. A similar process may be employed for moving computing devices from one peer appliance 400 to another, for removing computing devices, and/or for adding and removing peer appliances 400.
The performance database 410 may maintain a collection of performance data received from computing devices. Each peer appliance 400 may be associated with a subset of computing devices, and each performance database 410 may maintain the performance data that corresponds to the computing devices to which the peer appliance 400 is associated. The performance data may be stored at any level of granularity that is provided by the computing devices. Storage capacity in the performance management system may be added by increasing the number of peer appliances 400 in the performance management system. Since each peer appliance 400 provides the processing for its own data, processing bottlenecks may be avoided.
The performance database 410 may interface with the collection application 418. The collection application 418 may provide management of the various polling and network management protocols required to collect performance data from the computing devices. The collection application 418 may maintain a session with the performance database 410. The collection application 418 may receive performance data from the computing devices and store the performance data at the performance database 410. The collection application 418 may include timing data, data formatting, and metadata, such as a device identifier when storing the received performance data in the performance database 410.
The collection application 418 may be configured to correspond with the various network management protocols supported by the individual computing devices. The collection application 418 may include a script processing module that enables it to interface with nonstandard network management protocols. For example, a script may be authored to correspond to a nonstandard network management protocol. The collection application 418 may consult the script to establish communication via the nonstandard network management protocol. The performance data collected from the individual computing devices may be stored in the performance database 410.
The peer-to-peer application 414 may be executed in connection with the processor 402 causing the processor to perform the instructions indentified by the peer-to-peer application 414. The peer-to-peer application 414 may include computer executable instructions that generate user interface screens, handle configuration tasks, manage report generation and processing, and interact with other components of the performance management system. The peer-to-peer application 414 may include a series of user interface screens that may be presented to the user via a text based terminal, via a local monitor and keyboard, and/or via the Hypertext Transport Protocol (HTTP) server to a web browser software at a user's client computer. For example, the peer-to-peer application 414 may include interactive user interface screens such as a device browser interface (e.g., for adding/removing computing devices), a system summary interface, a performance data policy editor interface (e.g., for configuration of what performance data is to be requested/received), a threshold alarm editor interface, and/or other interface screens to implement user control of the various features of the performance management system.
The peer-to-peer application 414 may maintain rules associated with the operational aspects of the performance management system. The peer-to-peer application 414 may maintain rules associated with various report formulations. The peer-to-peer application 414 may maintain rules associated with various configuration information changes. For example, the peer-to-peer application 414 may require either a “removal” or a “move” of every computing device associated with a peer appliance 400 when that peer appliance 400 is removed from the performance management system. The peer-to-peer application 414 may ensure that configuration changes are made at the primary peer appliance 400 consistent with the mapping data replication process.
The peer-to-peer application 414 may process requests for reports. The reports may include summary information, graphs, charts, tables, and the like. The peer-to-peer application 414 may enable reports to be grouped any category of data within the performance management system, such as grouping by device type (e.g., all routers), by type of performance data (e.g., all CPU utilization data), by date/time range, by device location (i.e., all U.S.-based equipment), and the like.
The peer-to-peer application 414 may provide one or more standard reports, such as application reports, Internet Protocol reports, network utilization reports, specific protocol reports (i.e., HTTP performance), Quality of Service (QoS) reports, and the like. The peer-to-peer application 414 may provide functionality for the user to create custom reports. The peer-to-peer application 414 may enable graphical representation of custom reports such as, line graphs stacked line graphs, pie graphs, and the like. The peer-to-peer application 414 may enable reports to be exported to a local file, such as a portable document file (PDF), a comma separated value (CSV) file, and the like.
The peer-to-peer application 414 may provide analysis tools associated with the performance reports. For example, the peer-to-peer application 414 may present reports that include trending, such regression analysis, polynomial fit analysis, and the like. The peer-to-peer application 414 may provide average, maximum, minimum, and differential (e.g., week-over-week difference) data points. The peer-to-peer application 414 may provide busy-hour analysis for capacity planning.
Enabled by very granular performance data, drill-down report functions are available to the user. For example, a report that shows daily values of CPU utilization across a given computing device may be drilled down on a given day to show an hour by hour and/or minute-by-minute CPU utilization of that computing device. The user may select a portion of data in a given report and request that more detailed information about the selection be provided. Drilling-down into a report may include generating a new report at the drilled-down level. In response to a drill-down request, the peer-to-peer application 414 may generate a request for a new report that corresponds to the level of detailed indicated in the user's drill-down request.
The peer-to-peer application 414 may enable an alerts/alarms interface that displays current active messages in the system. These messages may include threshold violations, trap notifications, errors, and the like. The alerts/alarms interface may be automatically updated. The alerts/alarms interface may display a table of individual messages. For example, each row may include a message identifier, an identifier of the computing device with which the message is associated, the criticality of the message (e.g., emergency, alert, critical, error, warning, debug, etc.), and the message itself Each row may be color-coded in accordance with the criticality. The alerts/alarms interface may enable filtering and sorting.
The message information associated with the alerts/alarms interface may be stored in the mapping database 408 and replicated throughout the performance management system. Because alerts tend to be critical, time-sensitive items, including them in the mapping database 408 helps ensure that the alert messages are always replicated at any peer appliance 400 and that a local query to the mapping database at any peer appliance 400 is sufficient to present the alerts/alarms interface to the user for messages across the entire performance management system.
The HTTP server 412 may include computer executable instructions that when executed send and/or receive data. The HTTP server 412 may communicate with a web browser software at a client computer. The HTTP server 412 may be a web server. The HTTP server 412 may enable user interfaces generated by the peer-to-peer application 414 to be presented via client computer's web browser software. The HTTP server 412 may receive interactive requests from the user. The HTTP server 412 may present data from the user to the peer-to-peer application 414 for processing.
FIG. 5 is a flow chart of an example process for managing mapping data. At 502, mapping data may be stored. The mapping data may be stored in a mapping database in individual peer appliances. The mapping data may be stored from input by a user. The mapping data may be stored from input from a replication process. For example, when a performance management system is first deployed, a user may enter mapping data into the mapping database. The user may assign computing devices to corresponding peer appliances, storing that information in the mapping database.
The mapping data may be automatically populated as pat of an automatic discovery process. For example, the peer appliances may scan a network to identify peer appliances and computing devices. A listing of the identified peer appliances and computing devices may be presented to the user. The user may edit the list, add additional information, and store the resulting mapping data. The scan may include an IP address range scan, a port scan, an Address Resolution Protocol (ARP) scan, or the like.
At 504, the mapping data may be updated. The mapping data may be updated over time, for example, when new peer appliances are added and/or removed, when computing devices are added and/or removed, and/or when the relationship between computing devices and peer appliances changes. To illustrate, a computing device may be moved from one location to another location in the computer information system. A technician may update the mapping data to reflect the new location, including reassigning the computing device to a different peer appliance.
In an embodiment, updating the mapping data may include sending the updated mapping data to a peer appliance that has been designated as a primary peer appliance. When a user makes a change to mapping data at a non-primary peer appliance, the mapping data change may be sent to the primary peer appliance to facilitate replication.
At 506, the updated change to the mapping data may be replicated across the performance management system. A database replication process may detect a change in mapping data at any peer appliance. The database replication process may send that change to every other peer appliance such that the mapping data database at each peer appliance may be kept in synchrony.
For example, a peer appliance designated as a primary such that each other peer appliance maintains a copy of the mapping data at the primary. Changes may be funneled to the primary appliance and consistently replicated across the performance management system. Thus, the performance management system may maintain current mapping information in the respective mapping database in each peer appliance. This process of storing updating and replicating may loop during normal operation of the performance management system.
FIG. 6 is a flow chart of an example process for fulfilling a performance report request. At 602, a user interface may be presented to a user. A peer appliance in the performance management system may present the user interface to the user. For example, the user may login to any peer appliance via a web connection.
The user may, via the user interface, request a performance report. At 604, the peer appliance may receive the request for the performance report. The performance report may implicate the performance data corresponding to one or more computing devices across one or more peer appliances, which may or may not include the peer appliance providing the user interface to the user. The performance report may require one or more data manipulation processes to be performed, such as filtering, sorting, mathematical processing (e.g., average, maximum, minimum, trending, etc.), and the like.
At 606, the peer appliance may analyze the characteristics of the requested report and may determine which other appliance or appliances are required to generate the report. The peer appliance may determine what data is required for the report and what data manipulation processes may be required for the report. The peer appliance may consult the mapping database to determine which peer appliances host the computing devices implicated by the performance report. For example, the performance report may implicate all wireless routers. The peer appliance may determine from the mapping data which peer appliances are associated with wireless routers. The peer appliance may identify what data manipulation processes are required of each of these peer appliances. The peer appliance may formulate requests for data to each identified peer appliance. The request may identify the required data and data manipulation processes.
To illustrate, the requested performance report may implicate performance data resident at the peer appliance serving the user interface and other peer appliances. At 608, a local request for performance data may be processed. At 610, a remote request for performance data may be sent. The local request at 608 and the remote requests 610 may occur parallel, as illustrated in FIG. 6. The local request at 608 and the remote requests 610 may occur in series.
The local and remote requests may be processed by the respective peer appliances. Each peer appliance may query its performance database in accordance with the request. Each peer appliance may perform any data manipulation process identified by the request. The result of the data query and the data manipulation process may include intermediate data that is returned to be formatted into a report for the user.
At 612, the responses from the peer appliances may be received and formatted into a report. The report may be generated at the user interface for the user to view. The report may include interactive elements such as drill-down features, enabling the user to request additional data.
In processing the request for the performance report, the performance data storage function, performance data query processing, and data manipulation processing may be spread across peer appliances in the performance management system. This distributed, peer-to-peer architecture enables granular performance data to be stored, processed, and presented to the user.

## Claims

1. A device comprising non-transitory computer readable memory having computer executable instructions stored therein that when executed by a computing system cause the computing system to perform operations comprising:
receiving at a first performance management appliance a request for a performance report associated with a first computing device and a second computing device;
at the first performance management appliance, querying mapping data identifying the first performance management appliance has data stored therein relating to the operation of the first computing device and a second performance management appliance has data stored thereon relating to the operation of a second computing device;
wherein the first performance management appliance and the second performance management appliance comprise peer appliances;
processing a local request for first performance data that corresponds to the first computing device;
sending to the second performance management appliance a remote request for second performance data that corresponds to the second computing device; and
generating the report based on the first performance data and the second performance data.

2. The device of claim 1, wherein the operations further comprise setting a destination of the remote request to correspond to the second performance management appliance that receives performance data from the second computing device.

3. The device of claim 1, wherein the operations further comprise replicating the mapping data with the second performance management appliance associated with the second computing device.

4. The device of claim 1, wherein the operations further comprise propagating to the second performance management appliance associated with the second computing device an update to mapping data stored on the first performance management appliance associated with the first computing device.

5. The device of claim 1, wherein the operations further comprise transmitting an instruction that directs the second performance management appliance to retrieve historic performance data.

6. The device of claim 5, wherein the instruction directs the second performance management appliance to perform a data manipulation process against the historic performance data.

7. A computer, comprising:
a computer readable storage medium having stored therein first performance data received from a first peer computing device and mapping data indicating a remote location for second performance data corresponding to a second peer computing device; and
a processor that, in response to a request, received from one of the first peer computing device and the second peer computing device, for a performance report related to the first peer computing device and the second peer computing device, queries the mapping data to identify the remote location as having stored thereon the second performance data, generates a local request for the first performance data, and generates a remote request to the remote location for the second performance data.

8. The computer of claim 7, wherein the remote request directs that a data manipulation process be performed against the second performance data.

9. The computer of claim 7, wherein the processor generates the report based on a first response from the local request and based on a second response from the remote request.

10. The computer of claim 7, wherein the processor replicates the mapping data with the remote location.

11. The computer of claim 7, further comprising a network interface that receives the first performance data from the first peer computing device.

12. The computer of claim 11, wherein network interface receives the first performance data from the first peer computing device via a network management protocol.