1. Technical Field
The present invention is generally directed to an improved data processing system. More specifically, the present invention is directed to a system and method for sharing polled data amongst a plurality of requesters, such as computer system performance data being monitored by multiple requesting data processing systems.
2. Description of Related Art
Performance monitoring tools are implemented to monitor the performance of various aspects of computer systems. These performance monitoring tools may monitor the performance of particular applications running on computer systems, the performance of particular resources of a computer system, or the like. Moreover, such performance monitoring tools may be used to monitor the performance of applications/resources of a plurality of computer systems, such as computer systems that are part of a local area network (LAN), wide area network (WAN), a virtual private network (VPN), the Internet, or the like. There are many different uses and implementations of performance monitoring tools in currently existing computing environments.
One example of a performance monitoring tool that is available through the Microsoft Windows™ operating system is the Windows Task Manager Performance tool. By selecting “Task Manager” and then selecting the “Performance” tab that appears in the “Task Manager” window, a graphical representation of CPU usage and memory usage over a period of time may be obtained. This graphical representation is updated periodically with new performance data obtained from the CPU and memory usage monitoring agents.
When a user monitors performance data via a performance monitoring tool, the user usually views the performance data in the form of a table, chart, or other organization of data. The user will set a refresh interval so that the table or chart will be updated with a new data point periodically based on the designated refresh rate. For example, in the Windows Task Manager Performance tool described above, a drop-down menu is provided for a user to select a refresh speed, e.g., high, normal, low, or paused.
Based on the designated refresh interval, the performance monitoring tool must obtain a new data point and display it in the table, chart, graph, etc. In addition, the performance monitoring tool must buffer a number of data points so that the user can view a short performance history in the table, chart, graph, etc.
If multiple users are using the performance monitoring tool at the same time, such as in a network computing environment in which the performance of the network resources are being monitored by the performance monitoring tool, each user may set a different refresh rate. Since the performance monitoring tool must retrieve the performance data from the monitored resources for each individual user, significant overhead may occur due to multiple remote data accesses. In addition, storing historical data points for each user may require large amounts of memory depending on the number of users and the number of data points maintained in the history buffer.
Thus, it would be beneficial to have an improved system and method for sharing polled data, such as performance data obtained from resources via a performance monitoring tool, amongst a plurality of users.
The present invention is directed to a system and method for sharing data polling and buffering for multiple requesters, i.e. users or computing devices. With the present invention, a user/computing device may register with a data polling system, such as a performance monitoring tool, whose purpose is to periodically poll computer system resources for data and then provide that data to the user/computing device at a designated time interval. The terms “poll” and “polling” as they are used in this description refer to periodic requests or interrogations of computer system resources for data. In one exemplary embodiment of the present invention, the polling is used to obtain performance data related to the operation of a resource within the computing system or computing system environment.
When the user/computing device registers with the data polling system, the user/computing device may provide a start time and a refresh value. The start time indicates the time at which a first polling of data is performed with the refresh value identifying the time interval between subsequent pollings of data. The start time may be any time at which the user wishes to start polling of data from computer system resources, and, in a preferred embodiment, may be the time at which the user/computing device completes registration with the data polling system. The refresh value is preferably a multiple of a predetermined minimum unit of refresh interval, i.e. minimum refresh value, set by the data polling system.
Upon registering with the data polling system, a user/computing device data structure is created that identifies the start time and refresh value associated with the user/computing device. In addition, a counter and a data index table may be associated with the user/computing device data structure. In a preferred embodiment, the counter is originally set at a value equal to the refresh value associated with the user/computing device. However, this counter value may be modified as needed in order to line up users/computing devices so that polled data may be shared among users/computing devices, as discussed hereafter.
Each time the process of the present invention checks to see if a new polling of data from computer system resources is necessary, the counters of the registered users/computing devices are modified by an amount equal to the predetermined minimum refresh value. In a preferred embodiment, if a counter reaches a value of zero, data is polled from the system resources for the particular user/computing device associated with the counter that reached a value of zero.
In operation, a process is awaken periodically, i.e. at a wake-up time, based on the predetermined minimum unit of refresh interval, or minimum refresh value, set by the data polling system. When the process awakens, counters for the various users/computing devices are updated and a determination is made as to whether any of the users/computing devices require a polling of data from the computer system resources. If at least one user/computing device requires a polling of data from the computer system resources, the process initiates the polling, gathers the data from the computer system resources and stores this data.
The data is stored in a common data storage that is common to all of the registered users/computing devices. That is, there is one data storage for all of the users/computing devices and each user/computing device obtains access to the polled data that is in this common data storage. The particular data accessed by each user/computing device is governed by the user's/computing device's data index table.
When data is polled from the computer system resources and stored in the common data storage, the users/computing devices whose counter value has reached zero have their corresponding data index tables updated to include a pointer to the new data stored in the common data storage. Users/computing devices whose counters are not zero do not include a pointer to this new data in the common data storage. In this way, the users/computing devices share the data in the common data storage but each user/computing device has its own set of data based on the start time and refresh value set by the user/computing device.
In order to reduce the amount of space necessary to store the data polled from the computer system resources, a further aspect of the present invention involves “lining-up” the users/computing devices so that they may share a larger majority of the data in the common data storage. With the present invention, after an initial data polling of the computer system resources at the start time for the user/computing device, subsequent pollings of the computer system resources are aligned with at least one other user's/computing device's periodic pollings of the computer system resources so that more users/computing devices share the same data in the common data storage and a lower number of pollings of the computer system resources are necessary. In essence, for subsequent pollings of the computer system resources, the present invention shifts the start time such that it appears as if the start time were such that the subsequent pollings are in line with the other user's/computing device's pollings.
These and other features and advantages of the present invention will be described in, or will become apparent to those of ordinary skill in the art in view of, the following detailed description of the preferred embodiments.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
The present invention is directed to a system and method for sharing data polling and buffering for multiple users. The present invention may be implemented in a stand alone computing system or in a distributed data processing environment having a plurality of computer system resources interconnected by one or more data networks. As such,
With reference now to the figures,
In the depicted example, server 104 is connected to network 102 along with storage unit 106. In addition, clients 108, 110, and 112 are connected to network 102. These clients 108, 110, and 112 may be, for example, personal computers or network computers. In the depicted example, server 104 provides data, such as boot files, operating system images, and applications to clients 108-112. Clients 108, 110, and 112 are clients to server 104. Network data processing system 100 may include additional servers, clients, and other devices not shown. In the depicted example, network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages. Of course, network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).
In the exemplary distributed data processing environment illustrated in
The users of the client devices 108-112 may register with the data polling system of server 104 and provide refresh values to the server 104 to inform the server 104 of how often the users of the client devices 108-112 wish to receive new data points. The present invention may be implemented, for example, in a data polling system of server 104 so as to permit sharing of a common polled data storage structure and reduce the size of this common polled data storage structure when compared to conventional systems.
Referring now to
Peripheral component interconnect (PCI) bus bridge 214 connected to I/O bus 212 provides an interface to PCI local bus 216. A number of modems may be connected to PCI local bus 216. Typical PCI bus implementations will support four PCI expansion slots or add-in connectors. Communications links to clients 108-112 in
Additional PCI bus bridges 222 and 224 provide interfaces for additional PCI local buses 226 and 228, from which additional modems or network adapters may be supported. In this manner, data processing system 200 allows connections to multiple network computers. A memory-mapped graphics adapter 230 and hard disk 232 may also be connected to I/O bus 212 as depicted, either directly or indirectly.
Those of ordinary skill in the art will appreciate that the hardware depicted in
The data processing system depicted in
The exemplary server computing device illustrated in
With reference now to
An operating system runs on processor 302 and is used to coordinate and provide control of various components within data processing system 300 in
Those of ordinary skill in the art will appreciate that the hardware in
As another example, data processing system 300 may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces As a further example, data processing system 300 may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.
The depicted example in
The exemplary client computing device 300 illustrated in
As mentioned above, the present invention provides a mechanism by which multiple requesters, e.g., users, client computing devices, or the like, may share polled data from computer system resources and the number of pollings performed with regard to the computer system resources may be reduced when compared to current mechanisms for performing such operations. The present invention may be utilized, for example, to monitor the state of a distributed data processing system both as a whole and with regard to individual computing system resources within the data processing system. The present invention may be implemented in conjunction with existing or later developed performance monitoring tools or any other type of computing system that periodically requests data from computer system resources and compiles this data for use.
With the present invention, a user may make use of their client computing device to register with a data polling system, such as a performance monitoring tool, whose purpose is to periodically poll computer system resources for data and then provide that data to the user at a designated time interval. In one exemplary embodiment of the present invention, the polling is used to obtain performance data, i.e. resource usage and state information, related to the operation of a resource within the computing system or computing system environment.
When the user registers with the data polling system, the user may provide a start time and a refresh value. Alternatively, the start time may be automatically determined based on a time at which the user completes registration with the data polling system, or the like. A graphical user interface may be provided for the user of the client device to enter necessary information in order to register with the data polling system. Alternatively, rather than requiring a human user to manually register with the data polling system, the present invention may be implemented with an automated system in which a client computing device, or other type of computing device, automatically requests polling of data from computer system resources.
The start time indicates the time at which a first polling of data is performed with the refresh value identifying the time interval between subsequent pollings of data. The start time may be any time at which the user wishes to start polling of data from computer system resources, and, in a preferred embodiment, may be the time at which the user completes registration with the data polling system. The refresh value is preferably a multiple of a predetermined minimum unit of refresh interval set by the data polling system. For example, if the minimum unit of refresh interval is set to be 5 seconds, the refresh values for users may be 5, 10, 15, 20, etc. seconds.
Upon registering with the data polling system, a user data structure is created that identifies contact information for the user, e.g., client device network address, the start time, and the refresh value associated with the client device. In addition, a counter and a data index table may be associated with the user data structure. The counter is provided in this exemplary embodiment as a mechanism by which to determine when the particular user requires a new polled data to be provided. Other mechanisms may be used without departing from the spirit and scope of the present invention. For example, timestamp information may be stored identifying the last time that data was polled from computer system resources and this timestamp information may be used along with current clock information to determine whether a new set of polled data is required for a particular user.
In a preferred embodiment, the counter is originally set at a value equal to the refresh value associated with the user. Thus, for example, if the refresh value is 20 seconds, then the counter is originally set at a value of 20 seconds. In such a case, the counter is decremented, as discussed hereafter, until it reaches zero at which time a new polling of data from computer system resources is performed for this user/client device and the counter is then reset. Alternatively, the counter may be set at an initial value, such as zero, and the counter value may be increased until it reaches the same value as the refresh value at which time a new polling of data from the computer system resources is performed.
Each time the process of the present invention checks to see if any registered user/client device requires a new polling of data from the computer system resources, the counters of the registered users/client devices are modified by an amount equal to the predetermined minimum refresh value. For example, if the counter value for a user/client device is currently set at 20 seconds and the minimum refresh value is 5 seconds, then the counter is decremented by 5 seconds so that the counter is now set at 15 seconds. If a counter reaches a value of zero, data is polled from the system resources for the particular user/client device associated with the counter that reached a value of zero. The counter may then be reset to its original value, e.g., 20 seconds in the example discussed above.
In operation, a process of the present invention is awaken periodically, i.e. at a wake-up time, based on the predetermined minimum unit of refresh interval, i.e. the minimum refresh value, set by the data polling system. Thus, for example, if the minimum unit of refresh interval is 5 seconds, the process is awaken every 5 seconds to evaluate whether a new polling of data from computer system resources is necessary.
When the process awakens, counters for the various registered users/client devices are updated and a determination is made as to whether any of the users/client devices require a polling of data from the computer system resources, e.g., a determination is made as to whether any of the counters are equal to zero. If at least one user/client device requires a polling of data from the computer system resources, the process initiates the polling, gathers the data from the computer system resources and stores this data. If none of the registered users/client devices require a polling of data from the computer system resources, the process simply goes back to sleep until the next wake-up time.
The data is stored in a common data storage that is common to all of the registered users/client devices. That is, there is one data storage for all of the users/client devices and each user/client device obtains access to the polled data that is in this common data storage. The particular data accessed by each user/client device is governed by the user/client device's data index table.
When data is polled from the computer system resources and stored in the common data storage, the users/client devices whose counter value has reached zero have their corresponding data index tables updated to include a pointer to the new data stored in the common data storage. Users/client devices whose counters are not zero do not include a pointer to this new data in the common data storage. In this way, the users/client devices share the data in the common data storage but each user/client device has its own set of data based on the start time and refresh value set by the user/client device.
In order to reduce the amount of space necessary to store the data polled from the computer system resources, a further aspect of the present invention involves “lining-up” the users/client devices so that they may share a larger majority of the data in the common data storage. With the present invention, after an initial data polling of the computer system resources at the start time for the user/client device, subsequent pollings of the computer system resources are aligned with at least one other user's/client device's periodic pollings of the computer system resources so that more users/client devices share the same data in the common data storage and a lower number of pollings of the computer system resources are necessary. In essence, for subsequent pollings of the computer system resources, the present invention shifts the start time such that it appears as if the start time were such that the subsequent pollings are in line with the other user's/client device's pollings.
In one exemplary embodiment of the present invention, this shifting of the pollings is performed by modifying the current value of the counter associated with a user's data structure so that the counter value is set to a value that causes the counter to reach zero at the same time as the counter of another user/client device. In one exemplary embodiment, this modification is performed by calculating a value for the counter as a function of the refresh value associated with the user/client device.
The particular function of the refresh value is based on a function of the wake up time and the start time of the other user's/client device's polling of data from the computer system resources, i.e. the user/client device with which the present user's/client device's data polling times are being aligned. Once aligned, for subsequent data pollings, both users'/client devices' data index tables will include pointers to the same data in the common data storage thereby reducing the amount of data stored in the common data storage and reducing the required size of the common data storage.
Thus, the present invention provides a mechanism for polling computer system resources for data, combining data obtained from polling computer system resources into a single common data structure, and a mechanism for reducing the size of this common data structure by lining up pollings for a plurality of users/client devices. In this way, the number of pollings necessary to obtain data for each user is reduced and the size of the memory or other storage necessary to store this polled data is reduced.
In addition, the example shown in
As shown in
The performance data storage device 430 stores data obtained from polling the performance data sources 450-454. The performance data storage device 430 may be any type of storage device including a hard drive, a memory, an optical drive, etc. In a preferred embodiment, the performance data storage device 430 is a data buffer stored in memory.
As shown in
In a preferred embodiment, the counter for each user is initially set to a value equal to that of the refresh rate stipulated by the user. Thus, the initial counter values for users of client devices 440-444 are r, 2r and 3r, respectively. A process of the polling system 420 is awakened based on the minimum refresh rate. That is, if the minimum refresh rate is r seconds, the process is awaken every r seconds. This process decrements the counter values for all of the user data structures 425 by a value equal to the minimum refresh rate and then checks to see if any of the counter values has reached zero. Any user data structures 425 that have a counter value that is equal to zero are identified as requiring a new polling of data from the performance data sources 450-454. As mentioned above, other mechanisms may be used to determine when to poll data from the performance data sources 450-454, such as using timestamps, without departing from the spirit and scope of the present invention.
Thus, for example, when the process of the polling system 420 awakens, the counters for the users of client devices 440-444 are decremented by the refresh rate r. As a result, the counter value for the user of client computing device 440 is 0, the counter value for the user of client computing device 442 is r, and the counter value for the user of client computing device 444 is 2r. Thus, only the user of client computing device 440 requires an updated polling of data from performance data sources 450-454.
The performance data sources 450-454 are polled for new performance data which is received by the performance monitoring tool 410, such as by using performance monitoring agents on the performance data sources 450-454 for example, and stored in the performance data storage device 430. A pointer to this newly stored data in the data location in performance data storage device 430 is stored in the data index tables of the user data structures that have a counter whose value is zero. Thereafter, the counters for these user data structures are reinitialized to be equal to the refresh rate stored in the user data structure. The process is then placed back in a sleep state until the next wake-up time, e.g., r seconds from the last wake-up time, when the above operations are repeated.
In addition to storing the data in the performance data storage device 430, this data may be sent to the client computing devices 440-444 for processing. This processing may involve graphically rendering the data, generating one or more reports based on the data, or the like. In a preferred embodiment, the data corresponding to the pointers stored in the user data structure associated with the client device 440-444 is used to provide a graphical representation of the performance data for the window of time represented by the set of pointers.
This window of time may be dynamically shifted as new performance data is obtained and stored in the performance data storage device 430. That is, the data index table and the performance data storage device 430 may wrap such that a dynamically moving window of time of performance data is represented by these structures.
It can be seen that if each user of each client device 440-444 starts performance monitoring at a different start time and has either the same or a different refresh rate, many times the points in time where the performance data sources 450-454 are polled to obtain performance data will not coincide. This results in many interrogations of the performance data sources 450-454 as well as a larger amount of performance data having to be stored in the performance data storage device 430. As a result, the performance monitoring performed by the performance monitoring tool 410 may be intrusive to the operation of the performance data sources 450-454 and may require large amounts of memory or storage space to store the performance data.
With a further aspect of the present invention, the number of interrogations of the performance data sources 450-454 is significantly reduced. In addition, the size of the storage footprint of the performance data in the performance data storage device 430 is also significantly reduced.
This further aspect of the present invention aligns data pollings for users such that more than one user requires a polling of the performance data sources 450-454 at the same time. As a result, a single polling of data from the performance data sources 450-454 satisfies the request for performance data from a plurality of users. This significantly reduces the number of pollings or interrogations that are necessary.
Moreover, since there are less pollings or interrogations of the performance data sources 450-454, there is less performance data that needs to be maintained in the performance data storage device 430. As a result, more than one user makes use of the same performance data stored in the performance data storage device 430 and the storage footprint for the performance data is reduced in size. The mechanisms of exemplary embodiments of the present invention for aligning data pollings for a plurality of users will be described in greater detail hereafter with reference to
As stated above, the size of the data index table 550 may be specified by a user or by a computing device. The size of the data index table 550 dictates the size of the time window of polled data that may be represented to a user or computing device. That is, when the data index table 550 becomes full, the data index table 550 wraps to the first entry in the data index table 550 and overwrites existing entries. The data storage device referenced by pointers in the data index table 550 may also wrap in this fashion, however this is optional and the data storage device may not wrap in order to provide a complete history of polled data.
The pointers that are stored in the data index table 550 are used to access corresponding data in a data storage device. When a user or computing device requests data from the data storage device, the pointers in the data index table 550 for that user/computing device are used to retrieve the data and provide it to the user/computing device for processing.
As shown in
Since users may not start polling data at the same time, and may designated different refresh rates, it is possible that none of the data entries, or at least very few data entries, in the data storage device 610 may be shared among the users. Thus, there is a need for a mechanism to enforce greater sharing of polled data amongst users. The present invention provides such a mechanism by shifting the time at which polling of data is performed so that more than one user makes use of the same polling of data from the computer system resources.
To illustrate this mechanism, assume that there are two users, both of which have a refresh rate of 20 seconds but user A starts polling data at time 100 while user B starts polling data at time 105. The time series for retrieving data for these two users would be as follows:
User A: 100, 120, 140, . . .
User B: 105, 125, 145, . . .
It is clear from these time series that the two users can never share the polled data because they always poll the computer system resources at different times. However, if the two users are aligned or lined up, these two users may be able to share a majority of the polled data and may poll the computer system resources at the same time allowing a single polling of the computer system resources to satisfy both user's requirements. That is, it would be beneficial to align user B so that his time series of data pollings is as follows:
User B: 105, 120, 140 . . .
In order to provide such alignment, the present invention, in one exemplary embodiment, modifies the counter value for user B, following user B's initial data polling, to be a function of user B's refresh rate and a counter value of user A if the counter value for user B is greater than zero. If the counter for user B is equal to zero, then the counter value for user B is set to be equal to the refresh rate of user B. One exemplary embodiment of this function may be provided as follows:
CB=CA mod RB
if (CB==0)CB=RB
where CB is the counter value for user B, RB is the refresh rate for user B, and CA is the counter value for user A. This insures that user B and user A will share the next polling in which they both are due.
In the case where refresh rates are different it may not be possible to share all the polling intervals. The present invention schedules the pollings for all the users in such a way that whenever possible they poll at the same time. If two users share a single polling, thereafter they will share any pollings that they have in common.
Accordingly, blocks of the flowchart illustration support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the flowchart illustration, and combinations of blocks in the flowchart illustration, can be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or by combinations of special purpose hardware and computer instructions.
As shown in
If a wake-up event has not occurred (step 740), the operation returns to step 720 and continues to monitor for new users and a wake-up event. If a wake-up event has occurred, the users that require new performance data are identified (step 750). As discussed above, in a preferred embodiment, this may involve decrementing counters associated with user data structures and identifying those counters that have reached zero, for example.
A determination is made as to whether at least one user requires new performance data (step 760). If not, the operation continues to step 810 where the operation is placed back into a sleep state. If at least one user requires new performance data, the performance data is obtained from one or more performance data sources (step 770). This may involve polling or interrogating performance monitor agents associated with the performance data sources for the new performance data, for example.
The obtained performance data is stored in a common data storage buffer/device (step 780) and pointers to the new performance data are added to the user data index table(s) of users requiring the new performance data (step 790). Thereafter, if a new user was registered in steps 720-730, the new user is lined up with at least one existing user based on the start times and refresh rate values (step 800). The operation then goes to sleep (step 810) until the next wake-up event. A determination may be made as to whether a termination event, e.g., a stopping of the performance monitoring tool or the polling system, has occurred (step 820) and if so, the operation will terminate. Otherwise the operation returns to step 720 and continues to monitor for new user registrations and wake-up events.
Thus, the present invention provides a mechanism for sharing polled data amongst a plurality of requesters, e.g., users or computing devices. In addition, the present invention provides a mechanism for reducing the size of the storage needed to maintain polled data for a plurality of users. Thus, the present invention improves upon known systems by reducing the number of transactions between a data polling system and data sources as well as reduces the amount of memory necessary to maintain polled data for a plurality of users, thereby reducing costs with regard to polling data sources for data that is to be shared with a plurality of users.
It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.