Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
TECHNOLOGIES FOR SYNCHRONIZED SAMPLING OF COUNTERS BASED ON A GLOBAL CLOCK
Document Type and Number:
WIPO Patent Application WO/2016/105444
Kind Code:
A1
Abstract:
Technologies for synchronized sampling of counters include a computing device to determine a global clock to which the computing device and a plurality of other computing devices are to be synchronized. The computing device receives a request to sample a counter of the computing device from an administration server and records a state of the counter based on the global clock in response to receiving the request.

Inventors:
LOVETT THOMAS D (US)
Application Number:
PCT/US2014/072459
Publication Date:
June 30, 2016
Filing Date:
December 27, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
INTEL CORP (US)
International Classes:
G06F1/12
Foreign References:
US6789182B12004-09-07
US6751573B12004-06-15
US7453910B12008-11-18
US7509539B12009-03-24
US20080222382A12008-09-11
Other References:
See also references of EP 3237989A4
Attorney, Agent or Firm:
KELLETT, Glen M. et al. (c/o CPA GlobalP.O. Box 5205, Minneapolis Minnesota, US)
Download PDF:
Claims:
WHAT IS CLAIMED IS:

1. A computing device for synchronized sampling of counters, the computing device comprising:

a counter to record data associated with performance of the computing device; a clock management module to determine a global clock to which the computing device and a plurality of other computing devices are to be synchronized; and

a counter sampling module to (i) receive a request to sample the counter from an administration device and (ii) record a state of the counter based on the global clock in response to receiving the request.

2. The computing device of claim 1, wherein the clock management module is further to adjust a local clock of the computing device to coincide with the global clock.

3. The computing device of claim 2, wherein to adjust the local clock comprises to account for latency associated with receiving a global clock signal that identifies the global clock.

4. The computing device of claim 1, wherein to determine the global clock comprises to receive a global clock signal that identifies the global clock from the administration device.

5. The computing device of claim 1, wherein to determine the global clock comprises to communicate with the other computing devices to select a local clock of one of the other computing devices to serve as the global clock.

6. The computing device of claim 1, further comprising a communication module to transmit the recorded state of the counter to the administration server.

7. The computing device of claim 1, wherein to receive the request comprises to receive a starting global time at which to record the state of the counter.

8. The computing device of claim 7, wherein to receive the request comprises to receive a length of time after the starting global time at which to record the state of the counter.

9. The computing device of claim 1, wherein to receive the request comprises to receive a request to periodically record the state of the counter.

10. The computing device of claim 1, wherein to record the state of the counter comprises to record the state of that counter at a same point in time at which each of the other computing devices is recording a state of corresponding counters.

11. A method for synchronized sampling of counters by a computing device, the method comprising:

determining, by the computing device, a global clock to which the computing device and a plurality of other computing devices are to be synchronized;

receiving, by the computing device and from an administration device, a request to sample a counter of the computing device; and

recording, by the computing device, a state of the counter based on the global clock in response to receiving the request.

12. The method of claim 11, further comprising adjusting, by the computing device, a local clock of the computing device to coincide with the global clock.

13. The method of claim 12, wherein adjusting the local clock comprises accounting for latency associated with receiving a global clock signal identifying the global clock.

14. The method of claim 11, wherein determining the global clock comprises receiving a global clock signal identifying the global clock from the administration device.

15. The method of claim 11, wherein determining the global clock comprises communicating with the other computing devices to select a local clock of one of the other computing devices to serve as the global clock.

16. The method of claim 11, further comprising transmitting, by the computing device, the recorded state of the counter to the administration server.

17. The method of claim 11, wherein receiving the request comprises receiving a request to periodically record the state of the counter.

18. The method of claim 11, wherein recording the state of the counter comprises recording the state of that counter at a same point in time at which each other computing device of the plurality of computing devices is recording a state of corresponding counters.

19. One or more machine -readable storage media comprising a plurality of instructions stored thereon that, in response to execution by a computing device, cause the computing device to perform the method of any of claims 11-18.

20. An administration server for analyzing synchronously collected counter data of a plurality of computing devices, the administration server comprising:

a counter management module to generate a request for a first computing device of the plurality of computing devices to sample a counter of the first computing device based on a global clock to which each computing device of the plurality of computing devices is synchronized, wherein the counter records data associated with performance of the computing device; and

a communication module to (i) transmit the request to the first computing device and (ii) receive, from the first computing device, counter data recorded by the first computing device in response to receipt of the transmitted request.

21. The administration server of claim 20, wherein to generate the request comprises to determine a starting global time at which the first computing device is to sample the counter.

22. The administration server of claim 21, wherein to generate the request comprises to determine a length of time after the starting global time at which the first computing device is to sample the counter.

23. The administration server of claim 20, wherein to generate the request comprises to generate a request for the first computing device to periodically sample the counter.

24. The administration server of claim 20, further comprising an analysis module to analyze the received counter data in conjunction with corresponding counter data received from other computing devices of the plurality of computing devices.

25. The administration server of claim 20, wherein the communication module is further to transmit a local clock signal of the administration server to the first computing device to serve as the global clock.

Description:
TECHNOLOGIES FOR SYNCHRONIZED SAMPLING OF COUNTERS

BASED ON A GLOBAL CLOCK

BACKGROUND

[0001] Performance counters are often used in computing systems in order to provide insight into system behavior. For example, system performance engineers may monitor and analyze data collected by performance counters in order to tune system performance. In computing systems that span networks, it is difficult to correlate performance counters from different devices. In particular, although the computing devices of the system may be periodically requested to sample their corresponding performance counters, those samples generally represent behavior that occurred during different time periods. As such, performance counter analysis has been traditionally limited to the analysis of counters that are tracked over many samples, over a relatively large period (e.g., 100 seconds), and/or averaged. Although doing so may reduce the errors associated with the skewed start and sampling times of the various computing devices, fleeting events are often entirely lost or suppressed in the data and the corresponding analysis.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] The concepts described herein are illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. Where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements.

[0003] FIG. 1 is a simplified block diagram of at least one embodiment of a system for synchronized sampling of counters based on a global clock;

[0004] FIG. 2 is a simplified block diagram of at least one embodiment of an environment of the computing device of FIG. 1;

[0005] FIG. 3 is a simplified block diagram of at least one embodiment of an environment of the administration device of FIG. 1;

[0006] FIG. 4 is a simplified flow diagram of at least one embodiment of a method for synchronized sampling of counters that may be executed by the computing device of FIG. 1; and

[0007] FIG. 5 is a simplified flow diagram of at least one embodiment of a method for analyzing synchronously collected counter data that may be executed by the administration device of FIG. 1. DETAILED DESCRIPTION OF THE DRAWINGS

[0008] While the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the drawings and will be described herein in detail. It should be understood, however, that there is no intent to limit the concepts of the present disclosure to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives consistent with the present disclosure and the appended claims.

[0009] References in the specification to "one embodiment," "an embodiment," "an illustrative embodiment," etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may or may not necessarily include that particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described. Additionally, it should be appreciated that items included in a list in the form of "at least one A, B, and C" can mean (A); (B); (C): (A and B); (B and C); (A and C); or (A, B, and C). Similarly, items listed in the form of "at least one of A, B, or C" can mean (A); (B); (C): (A and B); (B and C); (A and C); or (A, B, and C).

[0010] The disclosed embodiments may be implemented, in some cases, in hardware, firmware, software, or any combination thereof. The disclosed embodiments may also be implemented as instructions carried by or stored on one or more transitory or non-transitory machine-readable (e.g., computer-readable) storage medium, which may be read and executed by one or more processors. A machine-readable storage medium may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a form readable by a machine (e.g., a volatile or non-volatile memory, a media disc, or other media device).

[0011] In the drawings, some structural or method features may be shown in specific arrangements and/or ordering s. However, it should be appreciated that such specific arrangements and/or orderings may not be required. Rather, in some embodiments, such features may be arranged in a different manner and/or order than shown in the illustrative figures. Additionally, the inclusion of a structural or method feature in a particular figure is not meant to imply that such feature is required in all embodiments and, in some embodiments, may not be included or may be combined with other features. [0012] Referring now to FIG. 1, a system 100 for synchronized sampling of counters

(e.g., performance counters) based on a global clock illustratively includes one or more computing devices 102, a network 104, and an administration device 106. As described herein, the system 100 may include any number of computing devices 102. Although only one network 104 and one administration device 106 are illustratively shown in FIG. 1, the system 100 may include any number of networks 104 and/or administration devices 106 in other embodiments. Further, in some embodiments, the administration device 106 may be embodied as one of the computing devices 102.

[0013] As described in detail below, in the illustrative embodiment, each of the computing devices 102 and, in some embodiments, the administration device 106 include a local clock against which various events are tracked, sampled, and/or planned. The computing devices 102 and/or the administration device 106 may communicate with one another and determine which of the local clocks to utilize as a global clock. In the illustrative embodiment, each of the computing devices 102 adjusts its local clock to coincide with the determined/selected global clock and/or otherwise ensures that counters of the corresponding computing device 102 are sampled based on the global clock. The administration device 106 may instruct the computing devices 102 when to sample the corresponding counters (e.g., performance counters) based on the global clock. For example, the computing devices 102 may synchronously sample their counters based on a starting global time and length or end time (e.g., determine the change in the state of the counters between the starting global time and end time). In other embodiments, the computing devices 102 may synchronously sample the counters periodically based on a starting global time and an interval.

[0014] Each of the illustrative computing devices 102 may be embodied as any type of computing device capable of performing the functions described herein. For example, each of the computing devices 102 may be embodied as a desktop computer, server, router, switch, laptop computer, tablet computer, notebook, netbook, Ultrabook™, cellular phone, smartphone, wearable computing device, personal digital assistant, mobile Internet device, Hybrid device, and/or any other computing/communication device. As shown in FIG. 1, the illustrative computing device 102 includes a processor 110, an input/output ("I/O") subsystem 112, a memory 114, a data storage 116, a communication circuitry 118, and one or more peripheral devices 120. Additionally, in some embodiments, the computing device 102 may also include a clock circuitry 122. Of course, the computing device 102 may include other or additional components, such as those commonly found in a typical computing device (e.g., various input/output devices and/or other components), in other embodiments. Additionally, in some embodiments, one or more of the illustrative components may be incorporated in, or otherwise form a portion of, another component. For example, the memory 114, or portions thereof, may be incorporated in the processor 110 in some embodiments. Although components are illustrative shown and described in reference to only one of the computing devices 102, it should be appreciated that each of the computing devices 102 may include similar components.

[0015] The processor 110 may be embodied as any type of processor capable of performing the functions described herein. For example, the processor 110 may be embodied as a single or multi-core processor(s), digital signal processor, microcontroller, or other processor or processing/controlling circuit. Similarly, the memory 114 may be embodied as any type of volatile or non- volatile memory or data storage capable of performing the functions described herein. In operation, the memory 114 may store various data and software used during operation of the computing device 102 such as operating systems, applications, programs, libraries, and drivers. The memory 114 is communicatively coupled to the processor 110 via the I/O subsystem 112, which may be embodied as circuitry and/or components to facilitate input/output operations with the processor 110, the memory 114, and other components of the computing device 102. For example, the I/O subsystem 112 may be embodied as, or otherwise include, memory controller hubs, input/output control hubs, firmware devices, communication links (i.e., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.) and/or other components and subsystems to facilitate the input/output operations. In some embodiments, the I O subsystem 112 may form a portion of a system-on-a-chip (SoC) and be incorporated, along with the processor 110, the memory 114, and other components of the computing device 102, on a single integrated circuit chip.

[0016] As shown in FIG. 1, the processor 110 includes one or more counters 124. In the illustrative embodiment, the counters 124 are embodied as performance counters configured to record data associated with the performance of the computing device 102; however, in other embodiments, the counters 124 may be embodied as any other counters suitable for performing the functions described herein. As described herein, each of the counters 124 may change its state (e.g., the data associated therewith) over time based on, for example, the occurrence of events corresponding with the particular counter 124. As such, in some embodiments, the computing device 102 may determine the state of a particular counter 124 at a starting point and the state of that counter 124 after some period of time (e.g., at an end point) and utilize that information to determine a change in the state of the counter 124 that occurred over that period of time. Further, it should be appreciated that the counters 124 may be sampled once (e.g., with a "one-shot" sample) or periodically depending on the particular implementation or purpose of the sampling (e.g., debugging, event logging, etc.). In some embodiments, the counters 124 include a common control register that controls when the counters 124 are reset and when they start/stop, which may be modified by the computing device 102 (e.g., in response to a request from the administration device 106). In other embodiments, the counters 124 continuously "run free" (e.g., for periodic event logging). Depending on the particular embodiment, the counters 124 may be sampled or recorded to a register (e.g., a shadow register), the memory 114, and/or the data storage 116. Further, although the counters 124 are illustratively shown as forming a portion of or otherwise being associated with the processor 110, it should be appreciated that, additionally or alternatively, the counters 124 may form a portion of and/or be associated with another component of the computing device 102 (e.g., the communication circuitry 118).

[0017] The data storage 116 may be embodied as any type of device or devices configured for short-term or long-term storage of data such as, for example, memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices. The data storage 116 and/or the memory 114 may store various data during operation of the computing device 102 useful for performing the functions described herein. For example, the computing device 102 may record the sampled state/data of the counters 124 as described herein.

[0018] The communication circuitry 118 may be embodied as any communication circuit, device, or collection thereof, capable of enabling communications between the computing device 102 and other remote devices over a network. The communication circuitry 118 may be configured to use any one or more communication technologies (e.g., wireless or wired communications) and associated protocols (e.g., Ethernet, Bluetooth ® , Wi-Fi ® , WiMAX, etc.) to effect such communication.

[0019] The peripheral devices 120 may include any number of additional peripheral or interface devices, such as speakers, microphones, additional storage devices, and so forth. The particular devices included in the peripheral devices 120 may depend on, for example, the type and/or intended use of the computing device 102.

[0020] The clock circuitry 122 may be embodied as any hardware component(s) or circuitry capable of maintaining a local clock of the computing device 102. As described herein, in the illustrative embodiment, the clock circuitry 122 adjusts the local clock of the computing device 102 to coincide with the global clock selected, negotiated, and/or otherwise determined by the computing device(s) 102. In other embodiments, the clock circuitry 122 may otherwise ensure that the counters 124 are sampled based on the global clock. For example, in some embodiments, the clock circuitry 122 may maintain a clock separate from the local clock, which may be adjusted to coincide with the global clock. Although the clock circuitry 122 is illustratively shown as an independent component, it should be appreciated that, in some embodiments, the clock circuitry 122 may form a portion of another component of the computing device 102 (e.g., the processor 110).

[0021] The network 104 may be embodied as any type of communication network capable of facilitating communication between the computing device 102 and remote devices (e.g., the administration device 106 and/or other computing devices 102). As such, the network 104 may include one or more networks, routers, switches, computers, and/or other intervening devices. For example, the network 104 may be embodied as or otherwise include one or more cellular networks, telephone networks, local or wide area networks, publicly available global networks (e.g., the Internet), an ad hoc network, or any combination thereof.

[0022] The administration device 106 may be embodied as any computing device capable of performing the functions described herein. For example, the administration device 106 may be embodied as a cellular phone, smartphone, wearable computing device, personal digital assistant, mobile Internet device, laptop computer, tablet computer, notebook, netbook, Ultrabook™, desktop computer, server, router, switch, Hybrid device, and/or any other computing/communication device.

[0023] As shown in FIG. 1, the illustrative administration device 106 includes a processor 150, an input/output ("I/O") subsystem 152, a memory 154, a data storage 156, a communication circuitry 158, and one or more peripheral devices 160. Additionally, in some embodiments, the administration device 106 may also include a clock circuitry 162. Of course, the administration device 106 may include other or additional components, such as counters and/or components commonly found in a typical computing device (e.g., various input/output devices and/or other components), in other embodiments. Additionally, in some embodiments, one or more of the illustrative components may be incorporated in, or otherwise form a portion of, another component. In some embodiments, the components of the administration device 106 are similar to the corresponding components of the computing device 102 described above. As such, the description of those components is not repeated herein for clarity of the description.

[0024] Referring now to FIG. 2, in use, the computing device 102 establishes an environment 200 for synchronized sampling of counters. The illustrative environment 200 of the computing device 102 includes a clock management module 202, a counter sampling module 204, and a communication module 206 and, in some embodiments, also includes an analysis module 208. Additionally, the clock management module 202 includes a global clock determination module 210. The various modules of the environment 200 may be embodied as hardware, software, firmware, or a combination thereof. For example, the various modules, logic, and other components of the environment 200 may form a portion of, or otherwise be established by, the processor 110 or other hardware components of the computing device 102. As such, in some embodiments, one or more of the modules of the environment 200 may be embodied as a circuit or collection of electrical devices (e.g., a clock management circuit, a counter sampling circuit, a communication circuit, an analysis circuit, and/or a global clock determination circuit). Additionally, in some embodiments, one or more of the illustrative modules may form a portion of another module and/or one or more of the illustrative modules may be embodied as a standalone or independent module.

[0025] The clock management module 202 is configured to handle the management of the local clock and/or other clocks of the computing device 102. For example, in the illustrative embodiment, the clock management module 202 determines the global clock to which the computing devices 102 are to be synchronized and ensures that the counters 124 are sampled based on the global clock. To do so, the clock management module 202 may adjust the local clock of the computing device 102 to coincide with the global clock and/or account for latency associated with receiving the global clock signal that identifies the global clock.

[0026] As indicated above, the clock management module 202 includes a global clock determination module 210, which determines the global clock of the system 100. It should be appreciated that the global clock determination module 210 may determine the global clock to which to synchronize sampling of the counters 124 using any suitable techniques, algorithms, and/or mechanisms. In some embodiments, the global clock determination module 210 of the computing device 102 communicates with the other computing devices 102 and/or the administration device 106 (e.g., by virtue of the communication module 206) to select, negotiate, and/or otherwise determine the global clock (e.g., selecting a local clock of one of the computing devices 102 to serve as the global clock). For example, in some embodiments, the global clock determination module 210 determines the global clock according to IEEE Standard 1588 ("IEEE Standard for a Precision Clock Synchronization Protocol for Network Measurement and Control Systems"). In other embodiments, the computing device 102 receives a clock signal from the administration device 106 (e.g., the local clock of the administration device 106) in which to utilize as the global clock. It should be appreciated that, in some embodiments, the global clock determination module 210 may periodically update the global clock signal, for example, to account for and/or remedy clock drift. [0027] The counter sampling module 204 is configured to receive requests from the administration device 106 to sample the counters 124 and to record the states of the counters 124 based on the global clock in response to receiving those requests. For example, the administration device 106 may request the computing device 102 (and other computing devices 102) to synchronously sample the counters 124 based on a starting global time, a length or ending global time (e.g., for one-time sampling), an interval (e.g., for periodic sampling), and/or other parameters. As such, the counter sampling module 204 records the state/data of the counters 124 based on the corresponding criteria. In the illustrative embodiment, the counter sampling module 204 records the state of the counters 124 at the same point in time at which each of the other computing devices 102 is recording the state of the counters of those computing devices 102 (i.e., synchronously).

[0028] The communication module 206 handles the communication between the computing device 102 and remote devices (e.g., the administration device 106 and/or the other computing devices 102) through the network 104. For example, as described herein, the communication module 206 transmits the recorded state of the counters 124 to the administration device 106 (e.g., for analysis).

[0029] As indicated above, in some embodiments, the computing device 102 includes an analysis module 208. In such embodiments, the analysis module 208 may analyze the recorded counter data to determine, for example, various characteristics associated with the performance of the computing device 102 (e.g., corresponding with the particular purpose of a counter 124). In other words, the analysis module 208 may determine various intra-device characteristics of the computing device 102.

[0030] Referring now to FIG. 3, in use, the administration device 106 establishes an environment 300 for analyzing synchronously collected counter data of a plurality of computing devices 102. The illustrative environment 300 of the administration device 106 includes a counter management module 302, an analysis module 304, and a communication module 306. Additionally, in some embodiments, the counter management module 302 includes a counter sampling request module 308. The various modules of the environment 300 may be embodied as hardware, software, firmware, or a combination thereof. For example, the various modules, logic, and other components of the environment 300 may form a portion of, or otherwise be established by, the processor 150 or other hardware components of the administration device 106. As such, in some embodiments, one or more of the modules of the environment 300 may be embodied as a circuit or collection of electrical devices (e.g., counter management circuit, an analysis circuit, a communication circuit, and/or a counter sampling request circuit). Additionally, in some embodiments, one or more of the illustrative modules may form a portion of another module and/or one or more of the illustrative modules may be embodied as a standalone or independent module.

[0031] The counter management module 302 is configured to handle requests for counter state/data from the computing devices 102. In particular, the counter sampling request module 308 of the counter management module 302 generates requests for the computing devices 102 to sample the corresponding counters of those computing devices 102 based on the global clock. In doing so, the counter sampling request module 308 may determine a starting global time and/or an ending global time (or duration after the starting global time) at which the computing devices 102 are to record the counters 124. Further, in some embodiments, the counter sampling request module 308 may request the computing devices 102 to periodically sample the counters 124.

[0032] The analysis module 304 analyzes the counter state data received from the computing devices 102. It should be appreciated that because the counters are synchronously sampled across the various computing devices 102 in the computing system, the administration device 106 may analyze and/or determine the occurrence of even short-lived events. As such, short duration events are not lost in the analysis. In other words, the analysis module 304 may determine various characteristics of the system 100 based on an analysis of the counter state data received from the computing devices 102 at even a fine granularity.

[0033] The communication module 306 handles the communication between the administration device 106 and remote devices (e.g., the computing devices 102) through the network 104. For example, as described herein, the communication module 306 transmits the sampling requests to the computing devices 102 and receives the counter data recorded by the computing devices 102.

[0034] Referring now to FIG. 4, in use, each of the computing devices 102 may execute a method 400 for synchronized sampling of counters. The illustrative method 400 begins with block 402 in which the computing device 102 determines the global clock to which to synchronize counter sampling. In block 404, the computing device 102 may receive a global clock signal from the administration device 106 to use as the global clock. For example, the local clock of the administration device 106 may be selected as the global clock. In other embodiments, in block 406, the computing device 102 may communicate with the other computing devices 102 to select a global clock. For example, the computing devices 102 may communicate with one another to select the most accurate, most reliable, or otherwise "best" local clock of the computing devices 102 to serve as the global clock. In particular, in some embodiments, the computing device 102 may determine/select the global clock by virtue of IEEE Standard 1588 or another suitable clock selection protocol.

[0035] In block 408, the computing device 102 adjusts the local clock of the computing device 102 (e.g., via the clock circuitry 122) to coincide with the determined global clock to which the computing device 102 and other computing devices 102 are to be synchronized. In doing so, in block 410, the computing device 102 may account for latency between the computing device 102 and other computing devices 102 and/or the administration device 106 that may affect the accuracy of the global clock signal. For example, the global clock signal may have some delay between transmission and receipt by the computing device 102; such delay may be remedied upon receipt to ensure that the global clock used by the computing device 102 is that same as that used by the other computing devices 102. As described above, in some embodiments, the computing device 102 may not adjust the local clock to the global clock but instead use a separate, independent clock to track the global clock for sampling purposes.

[0036] As discussed herein, the administration device 106 may transmit a request to the computing devices 102 to sample one or more of the counters 124 of those computing devices 102. As such, in block 412, the computing device 102 determines whether a new sampling request has been received from the administration device 106. If so, in block 414, the computing device 102 receives the counter sampling request from the administration device 106. As discussed above, depending on the particular embodiment, the computing device 102 may receive a request for continuous sampling in block 416 or a request for a one-time sampling in block 418. For example, the administration device 106 may request a one-time sampling of the counters 124 for debug purposes and/or other suitable circumstances and/or continuous or periodic sampling of the counters 124 to create a data log of the states/data of the counters 124 for subsequent analysis by the administration device 106. As indicated above, the particular sampling request may include a starting/ending global time, a length, an interval, and/or other parameters associated with the sampling.

[0037] In block 420, the computing device 102 determines whether to sample the counters 124 of the computing device 102 based on the global clock. For example, as indicated above, the sampling request may indicate a particular starting global time at which the sampling should begin. As such, the computing device 102 may wait until that time to begin sampling (e.g., for either continuous/periodic sampling or one-time sampling). If the computing device 102 determines the corresponding sampling conditions have been met to end the sampling period, the computing device 102 records the state of the counters 124 in block 422. For example, the computing device 102 may record the state of the counters 124 at the point in time at which the corresponding periodic sampling interval or one-time sampling period has expired. Depending on the particular request, the computing device 102 may record the state of each of the counters 124 or only a subset of the counters 124. Further, as described above, in embodiments in which the computing device 102 is to determine the change in the counter data over a period of time, the computing device 102 may sample a particular counter 124 at the designated global start time and again at the corresponding global end time and determine the difference.

[0038] In block 424, the computing device 102 determines whether the sampling is complete. For example, for a one-time sampling, the computing device 102 may determine whether the global end time has been reached and the end time sample has been taken (i.e., in block 422). As discussed above, in some embodiments, the computing device 102 may be configured to continuously or periodically sample the counters 124 in which case the computing device 102 again records the state of the counters 124 in block 422 (e.g., after the corresponding sample interval has passed). If the computing device 102 is done sampling (e.g., for a particular request), the computing device 102 may analyze the recorded counter data and/or transmit the recorded counter data to the administration device 106 in block 426. As described above, the administration device 106 may analyze the recorded counter data of the computing device 102 in conjunction with the recorded counter data of the other computing devices 102. Further, in some embodiments, the computing device 102 may periodically transmit the recorded counter data to the administration device 106 for analysis. As such, it should be appreciated that, in some embodiments, the computing device 102 may periodically transmit the recorded counter data in response to receiving a request for the counter data from the administration device 106. The method 400 may return to block 412 in which the computing device 102 waits to receive another sampling request from the administration server 106.

[0039] As described herein, in some embodiments, the computing device 102 may determine whether to update the global clock at various points in the execution of the method 400 and/or in parallel to the execution of the method 400. That is, in some embodiments, the signals used by each of the computing devices 102 as the global clock may drift from one another and/or the "true" global clocks such that the global clock utilized by the computing device 102 is no longer accurate. It should be appreciated that such clock drift may occur due to hardware, rounding during clock and/or other estimation, and/or various other factors. Accordingly, in some embodiments, the computing device 102 is configured to periodically update the clock signal utilized as the global clock. That is, the computing device 102 may periodically re-determine the global clock and adjust the local clock of the computing device 102 accordingly. It should be appreciated that, in some embodiments, the computing device 102 may receive an updated clock signal from the computing device 102 and/or administration device 106 previously selected to provide the global clock, whereas in other embodiments the computing device 102 may communicate with other computing device 102 again to determine the "best" clock signal.

[0040] Referring now to FIG. 5, in use, the administration device 106 may execute a method 500 for analyzing synchronously collected counter data of the computing devices 102. The illustrative method 500 begins with block 502 in which the administration device 106 may transmit a local clock signal to the computing devices 102 to serve as a global clock. Of course, in other embodiments, the computing devices 102 may communicate with one another to determine the appropriate clock to serve as the global clock as described above. In block 504, the administration device 106 may generate a counter sampling request. In doing so, the administration device 106 may generate a request for continuous/periodic sampling in block 506 or a request for a one-time sampling in block 508. As described above, the administration device 106 may determine a starting/ending time at which the computing devices 102 are to record the counters 124.

[0041] In block 510, the administration device 106 transmits the counter sampling request to the computing devices 102. As discussed above, in some embodiments, the administration device 106 may transmit the request to each of the computing devices 102 of the system 100; however, in other embodiments, the administration device 106 may transmit the request to only a subset of the computing devices 102. After the computing devices 102 have sampled the counters 124 corresponding with the sampling request, the administration device 106 receives the counter data from the computing devices 102 in block 512. In embodiments in which the computing devices 102 periodically sample the counters 124, it should be appreciated that the administration device 106 may receive the counter data periodically (e.g., over the same period or a different period). Further, depending on the particular embodiment, the counter data received by the administration device 106 may be the "raw" sampled counter data or a derived/analyzed version thereof. For example, in some embodiments, the computing devices 102 may generate two samples and generate counter data associated with the change in the counters 124 over a period of time elapsed between the two samples.

[0042] In block 514, the administration device 106 analyzes the counter data received from the computing devices 102. It should be appreciated that the administration device 106 may analyze the counter data based on any suitable technique, algorithm, and/or mechanism. For example, the administration device 106 may be interested in a fine-grained analysis of the bandwidth (e.g., NIC) utilization across a particular network fabric. Further, depending on the particular embodiment, the counter data received from the computing devices 102 may be analyzed "offline" (e.g., after the counters have stopped) or in real-time as the counter data is received from the computing devices 102. In the illustrative embodiment, by synchronizing the sampling of the counters 124 of the computing devices 102 of the system 100 to a single global clock, the administration device 106 may identify even fleeting network congestion events and the effects of those events on other components/devices of the system 100, which may not be readily apparent without synchronous counter data collection.

EXAMPLES

[0043] Illustrative examples of the technologies disclosed herein are provided below.

An embodiment of the technologies may include any one or more, and any combination of, the examples described below.

[0044] Example 1 includes a computing device for synchronized sampling of counters, the computing device comprising a counter to record data associated with performance of the computing device; a clock management module to determine a global clock to which the computing device and a plurality of other computing devices are to be synchronized; and a counter sampling module to (i) receive a request to sample the counter from an administration device and (ii) record a state of the counter based on the global clock in response to receiving the request.

[0045] Example 2 includes the subject matter of Example 1, and wherein the clock management module is further to adjust a local clock of the computing device to coincide with the global clock.

[0046] Example 3 includes the subject matter of any of Examples 1 and 2, and wherein to adjust the local clock comprises to account for latency associated with receiving a global clock signal that identifies the global clock.

[0047] Example 4 includes the subject matter of any of Examples 1-3, and wherein to determine the global clock comprises to receive a global clock signal that identifies the global clock from the administration device.

[0048] Example 5 includes the subject matter of any of Examples 1-4, and wherein to determine the global clock comprises to communicate with the other computing devices to select a local clock of one of the other computing devices to serve as the global clock. [0049] Example 6 includes the subject matter of any of Examples 1-5, and further including a communication module to transmit the recorded state of the counter to the administration server.

[0050] Example 7 includes the subject matter of any of Examples 1-6, and wherein to receive the request comprises to receive a starting global time at which to record the state of the counter.

[0051] Example 8 includes the subject matter of any of Examples 1-7, and wherein to receive the request comprises to receive a length of time after the starting global time at which to record the state of the counter.

[0052] Example 9 includes the subject matter of any of Examples 1-8, and wherein to receive the request comprises to receive a request to periodically record the state of the counter.

[0053] Example 10 includes the subject matter of any of Examples 1-9, and wherein to record the state of the counter comprises to record the state of that counter at a same point in time at which each of the other computing devices is recording a state of corresponding counters.

[0054] Example 11 includes the subject matter of any of Examples 1-10, and further including an analysis module to analyze the recorded state of the counter.

[0055] Example 12 includes a method for synchronized sampling of counters by a computing device, the method comprising determining, by the computing device, a global clock to which the computing device and a plurality of other computing devices are to be synchronized; receiving, by the computing device and from an administration device, a request to sample a counter of the computing device; and recording, by the computing device, a state of the counter based on the global clock in response to receiving the request.

[0056] Example 13 includes the subject matter of Example 12, and further including adjusting, by the computing device, a local clock of the computing device to coincide with the global clock.

[0057] Example 14 includes the subject matter of any of Examples 12 and 13, and wherein adjusting the local clock comprises accounting for latency associated with receiving a global clock signal identifying the global clock.

[0058] Example 15 includes the subject matter of any of Examples 12-14, and wherein determining the global clock comprises receiving a global clock signal identifying the global clock from the administration device. [0059] Example 16 includes the subject matter of any of Examples 12-15, and wherein determining the global clock comprises communicating with the other computing devices to select a local clock of one of the other computing devices to serve as the global clock.

[0060] Example 17 includes the subject matter of any of Examples 12-16, and further including transmitting, by the computing device, the recorded state of the counter to the administration server.

[0061] Example 18 includes the subject matter of any of Examples 12-17, and wherein receiving the request comprises receiving a starting global time at which to record the state of the counter.

[0062] Example 19 includes the subject matter of any of Examples 12-18, and wherein receiving the request comprises receiving a length of time after the starting global time at which to record the state of the counter.

[0063] Example 20 includes the subject matter of any of Examples 12-19, and wherein receiving the request comprises receiving a request to periodically record the state of the counter.

[0064] Example 21 includes the subject matter of any of Examples 12-20, and wherein recording the state of the counter comprises recording the state of that counter at a same point in time at which each other computing device of the plurality of computing devices is recording a state of corresponding counters.

[0065] Example 22 includes the subject matter of any of Examples 12-21, and further including analyzing, by the computing device, the recorded state of the counter.

[0066] Example 23 includes a computing device comprising a processor; and a memory having stored therein a plurality of instructions that when executed by the processor cause the computing device to perform the method of any of Examples 12-22.

[0067] Example 24 includes one or more machine -readable storage media comprising a plurality of instructions stored thereon that, in response to execution by a computing device, cause the computing device to perform the method of any of Examples 12-22.

[0068] Example 25 includes a computing device for synchronized sampling of counters, the computing device comprising means for determining a global clock to which the computing device and a plurality of other computing devices are to be synchronized; means for receiving, from an administration device, a request to sample a counter of the computing device; and means for recording a state of the counter based on the global clock in response to receiving the request. [0069] Example 26 includes the subject matter of Example 25, and further including means for adjusting a local clock of the computing device to coincide with the global clock.

[0070] Example 27 includes the subject matter of any of Examples 25 and 26, and wherein the means for adjusting the local clock comprises means for accounting for latency associated with receiving a global clock signal identifying the global clock.

[0071] Example 28 includes the subject matter of any of Examples 25-27, and wherein the means for determining the global clock comprises means for receiving a global clock signal identifying the global clock from the administration device.

[0072] Example 29 includes the subject matter of any of Examples 25-28, and wherein the means for determining the global clock comprises means for communicating with the other computing devices to select a local clock of one of the other computing devices to serve as the global clock.

[0073] Example 30 includes the subject matter of any of Examples 25-29, and further including means for transmitting the recorded state of the counter to the administration server.

[0074] Example 31 includes the subject matter of any of Examples 25-30, and wherein the means for receiving the request comprises means for receiving a starting global time at which to record the state of the counter.

[0075] Example 32 includes the subject matter of any of Examples 25-31, and wherein the means for receiving the request comprises means for receiving a length of time after the starting global time at which to record the state of the counter.

[0076] Example 33 includes the subject matter of any of Examples 25-32, and wherein the means for receiving the request comprises means for receiving a request to periodically record the state of the counter.

[0077] Example 34 includes the subject matter of any of Examples 25-33, and wherein the means for recording the state of the counter comprises means for recording the state of that counter at a same point in time at which each other computing device of the plurality of computing devices is recording a state of corresponding counters.

[0078] Example 35 includes the subject matter of any of Examples 25-34, and further including means for analyzing the recorded state of the counter.

[0079] Example 36 includes an administration server for analyzing synchronously collected counter data of a plurality of computing devices, the administration server comprising a counter management module to generate a request for a first computing device of the plurality of computing devices to sample a counter of the first computing device based on a global clock to which each computing device of the plurality of computing devices is synchronized, wherein the counter records data associated with performance of the computing device; and a communication module to (i) transmit the request to the first computing device and (ii) receive, from the first computing device, counter data recorded by the first computing device in response to receipt of the transmitted request.

[0080] Example 37 includes the subject matter of Example 36, and wherein to generate the request comprises to determine a starting global time at which the first computing device is to sample the counter.

[0081] Example 38 includes the subject matter of any of Examples 36 and 37, and wherein to generate the request comprises to determine a length of time after the starting global time at which the first computing device is to sample the counter.

[0082] Example 39 includes the subject matter of any of Examples 36-38, and wherein to generate the request comprises to generate a request for the first computing device to periodically sample the counter.

[0083] Example 40 includes the subject matter of any of Examples 36-39, and further including an analysis module to analyze the received counter data in conjunction with corresponding counter data received from other computing devices of the plurality of computing devices.

[0084] Example 41 includes the subject matter of any of Examples 36-40, and wherein the communication module is further to transmit a local clock signal of the administration server to the first computing device to serve as the global clock.

[0085] Example 42 includes a method for analyzing synchronously collected counter data of a plurality of computing devices, the method comprising generating, by an administration server, a request for a first computing device of the plurality of computing devices to sample a counter of the first computing device based on a global clock to which each computing device of the plurality of computing devices is synchronized, wherein the counter records data associated with performance of the computing device; transmitting, by the administration server, the request to the first computing device; and receiving, by the administration server and from the first computing device, counter data recorded by the first computing device in response to receipt of the transmitted request.

[0086] Example 43 includes the subject matter of Example 42, and wherein generating the request comprises determining a starting global time at which the first computing device is to sample the counter. [0087] Example 44 includes the subject matter of any of Examples 42 and 43, and wherein generating the request comprises determining a length of time after the starting global time at which the first computing device is to sample the counter.

[0088] Example 45 includes the subject matter of any of Examples 42-44, and wherein generating the request comprises generating a request for the first computing device to periodically sample the counter.

[0089] Example 46 includes the subject matter of any of Examples 42-45, and further including analyzing, by the administration device, the received counter data in conjunction with corresponding counter data received from other computing devices of the plurality of computing devices.

[0090] Example 47 includes the subject matter of any of Examples 42-46, and further including transmitting, by the administration server and to the first computing device, a local clock signal of the administration server to serve as the global clock.

[0091] Example 48 includes a computing device comprising a processor; and a memory having stored therein a plurality of instructions that when executed by the processor cause the computing device to perform the method of any of Examples 42-22.

[0092] Example 49 includes one or more machine -readable storage media comprising a plurality of instructions stored thereon that, in response to execution by a computing device, cause the computing device to perform the method of any of Examples 42-22.

[0093] Example 50 includes an administration server for analyzing synchronously collected counter data of a plurality of computing devices, the administration server comprising means for generating a request for a first computing device of the plurality of computing devices to sample a counter of the first computing device based on a global clock to which each computing device of the plurality of computing devices is synchronized, wherein the counter records data associated with performance of the computing device; means for transmitting the request to the first computing device; and means for receiving, from the first computing device, counter data recorded by the first computing device in response to receipt of the transmitted request.

[0094] Example 51 includes the subject matter of Example 50, and wherein the means for generating the request comprises means for determining a starting global time at which the first computing device is to sample the counter.

[0095] Example 52 includes the subject matter of any of Examples 50 and 51, and wherein the means for generating the request comprises means for determining a length of time after the starting global time at which the first computing device is to sample the counter. [0096] Example 53 includes the subject matter of any of Examples 50-52, and wherein the means for generating the request comprises means for generating a request for the first computing device to periodically sample the counter.

[0097] Example 54 includes the subject matter of any of Examples 50-53, and further including means for analyzing the received counter data in conjunction with corresponding counter data received from other computing devices of the plurality of computing devices.

[0098] Example 55 includes the subject matter of any of Examples 50-54, and further including means for transmitting, to the first computing device, a local clock signal of the administration server to serve as the global clock.