For a variety of reasons, there may be a desire to analyze datasets. For example, datasets describing operation of a computing device may be useful for analyzing operation of the computing device, such as to detect improper operation, by way of non-limiting example. For instance, measures of usage of resources of the computing device may be collected and analyzed. Datasets describing human tendencies and behaviors may also be analyzed, such as to provide targeted advertising, for example. As datasets increase in size, they may be referred to as “big data.” In the context of big data, companies, governments, and even individuals, may spend time and resources collecting data and analyzing the collected data. Collection and analysis of large datasets may be challenging, however, such as due to costs and computing resources that may be expended in collection and analysis processes. Additionally, at times, identifying portions of “big data” datasets that may merit analysis may not be readily evident.
Various examples will be described below by referring to the following figures.
In a number of fields, there may be a desire to track resource usage. For example, in the context of a system of networked devices, the networked devices may use their own respective resources (e.g., CPU, memory, battery, etc.) and network resources (e.g., bandwidth, servers, memory, etc.), and there may be a desire to track resource usage in the system. In the context of a computing device or a network, as used herein, a resource refers to a part of the computing device or network that can be used by a program or process while running. For instance, resources of a computing device or network may include a disk drive, a printer, a router, a switch, an access point, a memory, a central processing unit (CPU), a bus, a transceiver, a power source (e.g., a battery), etc. Elevated or unexpected resource usage may indicate an issue at a network node or networked device, by way of illustration. By way of further illustration, in the context of the Internet of Things (IoT), a number of connected devices (e.g., sensors, cameras, HVAC elements, lighting elements, thin devices, etc.) may be arranged at different locations in a home or a workplace and may be in wired or wireless communication with each other and/or a computing device. In this example, there may be a desire to track resource usage of a particular device, such as a sensor, in order to monitor, manage, and maintain the health of the network of connected devices. For ease, a process, application, or device that uses a resource is referred to herein as a component. Thus, a computer application running on a computing device that uses a processor and memory of the computing device is a “component” of the computing device (and of a larger system to which the computing device might belong, such as a network).
In fact, resource usage collection may be relevant in settings outside of the context of a typical computing system or network. For example, collecting indications of resource usage may be desirable for a restaurant where, for example, collecting information as to ingredient usage by food orders may enable analysis of inventory, order trends, etc. Such analysis may help to avoid food spoilage, for example, where too much of a particular ingredient may be ordered compared with actual demand for food orders that use the particular ingredient. As such, in the context of a system, such as a restaurant food inventory system, a resource refers to an asset of the system that may be used or accessed as part of the operation of the system. Thus, for instance, food inventory of a restaurant may be used or accessed in the preparation of dishes for customers of the restaurant. By way of further example, in the context of a system of human resources, such as within a business, it may be desirable to collect a measure of resource usage in terms of access to the human resources in the operation of the business (e.g., such as to determine how well the business balances work among employees, etc.). Thus, in the context of the collection of resource usage data, components can include those elements that might use resources of a system. As such, for example, a component in a system comprising a restaurant may comprise a dish or a plate on the restaurant's menu; in the context of a system of human resources, a component may comprise a department, a manager, a project, or other elements of the business that can occupy an employee's time. Collecting resource usage data, as used herein, refers to collection by a computing device, in which indications of resource usage data are represented in the form of signals or states.
With the foregoing in mind, there is an ever increasing amount of available data as to resource usage, such as to analyze, and it can be challenging to determine which factors may be relevant and/or worth evaluating. For example, on a single computing device it may not be uncommon for hundreds of processes to run in parallel, accessing dozens of resources of the single computing device. In the context of this example, it may be challenging to determine which usage data to analyze or to use in data analytics. There may be a desire, therefore, for a process or device for collecting resource usage data in an efficient manner.
In one example case, a method of collecting resource usage data may comprise normalizing a set of resource usage data, and collecting an n-component subset of the set of resource usage data. As used herein, to normalize data refers processing the data to enable comparison. For instance, in one example, normalizing data values may comprise scaling values to fit in a range from 0 to 1, by way of non-limiting example. To illustrate, if an example device has five resources and 100 components accessing those resources (e.g., programs or processes), it may be possible to normalize the resource usage for each of the 100 components. For instance, a first component may occupy 5% of a CPU consumption and 100 MB of memory, while a second component may occupy 10% of a CPU consumption and 25 MB of memory. In one example case, the usage values for each of the 100 components may be normalized (e.g., scaled to fit in a range from 0 to 1). The normalization of resource usage data may be used, in turn, to rank the components. In one case, a ranking may weight CPU consumption more highly than memory usage, and thus, the second component (10% CPU consumption) may be ranked higher than the first component. In another case, a ranking may weight memory usage more highly than CPU consumption, and thus, the first component (100 MB of memory) may be ranked higher than the second component. A subset of resource usage data may be collected based on the normalized usage values and/or ranking of components. The subset may comprise usage data for n components and may be referred to as an n-component subset. The n-component subset may be determined based on a top-n selection of components that make up a set of resource usage data, where n may be determined as part of a resource usage data collection process, such as by a user. For instance, a user may interact with a user interface (UI) of a computing device and select a number n of components to return.
Computer-readable medium 104, instructions 106, and processor 102 may be part of a single computing device or may be spread out across multiple computing devices, such as part of a distributed computing network (e.g., Hadoop).
Table 1 includes sample values, such as may be included in resource usage data (e.g., resource usage data 110a-110n), for five example components, components 1-5. Thus, in one example, usage of a CPU resource may be measured in terms to a time during which a component accesses the CPU resource (e.g., CPU time) or in terms of a percentage of the CPU that a component is using (e.g., CPU %), by way of non-limiting example. Usage of a memory resource may be measured in terms of memory used by a component, a maximum amount of physical memory that a component has used (e.g., peak memory), by way of non-limiting example. And time refers to an amount of time that a component has been running and may be indicative of use of CPU and memory usage, by way of example. Of course, these are but examples of resources that may be used and possible measures of resource usage, and are not to be taken in a limiting sense. Several sample resources are listed below in Table 3 by way of non-limiting illustration. These components may comprise processes running on a computing device, by way of non-limiting example.
In one example, the values in Table 1 may be normalized using an expression, such as the following:
where:
Thus, for example, a normalized value for CPU time of component 1 in Table 1 may be determined as follows:
A normalized value for CPU % of component 1 may be determined as follows:
A normalized value for memory used by a method may be determined as follows:
And a normalized value for a time that a component has been running may be determined as follows:
Continuing with this example normalization method, the remaining values of Table 1 may be normalized to yield the approximated values in Table 2. As should be apparent, this normalization method may yield values from 0 to 1, inclusive. It is to be understood that this discussion is presented merely to illustrate one possible normalization method and is not to be taken in a limiting sense. Indeed, a number of possible normalization methods may exist and may be used to yield a normalized set of resource usage data using a number of possible measures of resource usage.
As resource usage data is normalized, a number of components may be used to select an n-component subset of resource usage data to collect, such as by writing the n-component subset to a memory. For instance, in one case, a subset of component resource usage values may be written to a memory responsive to a determination that a threshold (e.g., CPU % usage, memory usage, etc.) has been exceeded. For instance, in one case, thresholds may be set, such as to CPU % or Memory usage, using, for instance, normalized values of 0.75 and higher, by way of non-limiting example. And component resource usage values may be collected for components with normalized values exceeding the thresholds. Using such an approach, and looking at CPU time, CPU %, and Memory, component resource usage data may be collected (e.g., written to a memory) for components 1, 2, and 5.
Another example method for collecting an n-component subset of resource usage data may include scoring components, such as based on resource usage by components. For instance, in one sample case, a usage score may be determined based, for instance, on a usage expression, such as illustrated at block 210 of example method 200. A usage score may be based on normalized resource usage values in one example case. Normalized resource usage values may be weighted to provide more weight to certain factors, by way of example. Usage expressions may be changed to suit a particular context. For instance, in the context of the resource usage data provided in Tables 1 and 2, a sample usage expression may comprise:
(3×CPU timenorm)+(2×CPU %norm)+(2×Memorynorm)+(0.5×Timenorm)
where ‘3,’ ‘2,’ ‘2,’ and ‘0.5’ are example weighting values. Using this usage expression on the resource usage values from Table 2 yields usage scores of 3.38, 5.43, 1.32, 0.50, and 6.39, respectively, for components 1-5. Other resource usage expressions may be based on portions (e.g., classes of usage data) of resource usage data, without limitation. For instance, another example usage expression may include one or more of the following example measures of resource usage in Table 3, by way of example.
In cases in which a usage score is used to collect an n-component subset of resource usage values, collection of the n-component subset may include ranking components based on normalized resource usage values, resource usage scores, or a combination thereof. For instance, resource usage values for components of a device or system may be ranked, using the determined usage scores, such as illustrated at block 215 of example method 200. Using the example usage scores determined above (3.38, 5.43, 1.32, 0.50, and 6.39), components 1-5 of Tables 1 and 2 may be ranked in the following order: 5, 2, 1, 3, and 4. In one case, and as illustrated at block 220 of example method 200, resource usage values for an n-component subset of resource usage data may be determined and collected, such as based on usage ranking values. For instance, in one example case, using the example ranking and usage above, the top-3 components (e.g., components 5, 2, and 1) may be collected, such as by being written to a memory. A value for n may be based on user parameters (e.g., a user may specify returning top-3 component values, such as via a user interaction with a UI) or physical constraints (e.g., limitations as to memory, processing, bandwidth, etc.), among other things. By way of further example, a threshold usage score value may be set (e.g., 4) and component resource usage values may be returned for components with usage scores greater than (or equal to, in some cases) the usage score. In the case of a threshold usage score of 4, the collected n-component resource usage data may comprise components 2 and 5 as they are the components with usage scores greater than 4, in this non-limiting example.
To illustrate how example method 200 might work in one example context, an example use case for collection of resource usage on a private network may be considered. In this case, hundreds of devices may be present on the private network and it may be desirable to collect a subset of resource usage data for network and computing device resources. For example, it may be desirable to determine whether computing devices on the private network are potentially using unusual or unexpected amounts of resources (e.g., using unexpected and/or prolonged amounts of CPU or memory). It may also be desirable to determine whether some computing components are using unusual or unexpected levels of network resources (e.g., using unexpected amounts of bandwidth).
Thus, for example, values indicative of resource usage for different components of the private network may be normalized, such as using expression (1), above. The values may be in the form of signals and states transmitted between devices in the form of digital or analog data, for instance. And the data may be processed, such as based on expression (1). A usage score may be determined for the components of the private network. For example, a weighted sum of normalized resource usage data may be used to yield resource usage scores for the components of the private network. Components of the private network may be ranked based on the determined usage scores. The ranking of components may be used to yield an n-component subset of resource usage data for collection.
In one case, an n value representing a number n of component resource usage data to collect may be specified, and an n-component subset of resource usage data (e.g., a top-10 subset) for the private network may be collected, such as by being written to a memory. The n value may vary to yield larger or smaller n-component subsets to collect, for example. In another sample case, a usage score threshold may be set and an n-component subset of resource usage data may be collected (e.g., written to a memory) corresponding to those components having a usage score exceeding the threshold.
Another example use case for using example method 200 to collect an n-component subset of resource usage data may comprise a system of devices used for web hosting. For example, it may be desirable to track memory, CPU, and bandwidth usage for a system of device that hosts websites using shared resources (e.g., shared servers, shared hard drives, etc.). Values indicative of memory, CPU, and bandwidth usage may be normalized, such as using expression (1), consistent with block 205. The normalized usage values may be used to yield usage scores, such as consistent with block 210. For example, in a case in which the usage values may be of equal concern, an unweighted usage score expression may be used, such as:
where Memorynorm refers to a normalized memory usage value, CPUnorm refers to a normalized CPU % usage value, BandwidthUpnorm refers to bandwidth in terms of signal packets sent by a component, and BandwidthDnnorm refers to bandwidth in terms of signal packets received by the component. In another example, normalized usage values may be weighted in determining a usage score.
Component resource usage data may be ranked using determined usage scores, such as consistent with block 215. A top-n component subset of resource usage values may be collected and written to a memory using determined usage scores, such as consistent with block 220 of
In view of the foregoing, it should be understood that collection of resource usage data may be relevant to a number of possible contexts and claimed subject matter should be not limited by the examples provided herein.
As illustrated, device 320 may be communicably coupled, via a network 308, to a plurality of devices, devices 312a-312n. Devices 312a-312n comprise a sensor 314. Sensor 314 may comprise a mechanism capable of detecting events or changes in an environment surrounding sensor 314 (e.g., detecting sound, electromagnetic radiation, current and changes in current, etc.). For instance, sensor 314 may comprise a light sensor, an IR sensor, a sound sensor, or an analyte sensor, by way of non-limiting example. Device 320 may also be communicably coupled to a storage element 330, which may comprise a database or other suitable mechanism for storing resource usage data. Example system 300 may comprise, for example, a home or office alarm and automation system having a number of devices with sensors communicably coupled over a network. Device 320 may comprise a computing device capable of monitoring devices of system 300. For instance, device 320 may comprise a control panel for managing an IoT system, and may be capable of transmitting signal packets to and receiving signal packets from a remote device or system (e.g., computing devices at a service provider). In one such case, it may be desirable to send a subset of resource usage data, rather than transmitting an entire set of resource usage data, for example. Consequently, using a resource usage data collection method, such as example method 200, for collecting a subset of resource usage data may be desirable.
Devices 312a-312n may comprise devices capable of receiving and transmitting signal packets to and from device 320. Sample signal packets may contain data based on readings at a sensor, such as sensor 314, of devices 312a-312n. For example, devices 312a-312n may comprise motion detection sensors, glass break sensors, light sensors, temperature sensors, or leak sensors, among other things, and may have the capacity to interact with other devices in a home or office, such as HVAC monitor/control components or light controllers, among other things.
In one example, devices 312a-312n may have a power source resource (e.g., a battery) that may lose charge over time. In such cases, devices 312a-312n may be capable of transmitting signals indicative of power source charge level to device 320. Thus, resource usage data indicative of power source charge level, rate of discharge, etc. may be transmitted to device 320 for collection, such as consistent with example method 200. By way of further example, indications of network usage (e.g., bandwidth, transmission packet size, frequency, etc.) may also be collected by device 320.
In operation of example system 300, device 320 may receive signals and/or states from devices 312a-312n indicative of resource usage by components of devices 312a-312n. In one example, device 320 may be referred to as a collection device due to its capability to receive signals indicative of resource usage data. Received resource usage data may be normalized, such as consistent with the above discussion of block 205 of
Consistent with block 215 of
As should be apparent, normalizing a set of resource usage data and collecting an n-component subset of resource usage data may be desirable, such as to provide a more efficient way to collect resource usage data and provide analysts a more manageable data set, by way of example.
In the preceding description, various aspects of claimed subject matter have been described. For purposes of explanation, specifics, such as amounts, systems and/or configurations, as examples, were set forth. In other instances, well-known features were omitted and/or simplified so as not to obscure claimed subject matter. While certain features have been illustrated and/or described herein, many modifications, substitutions, changes and/or equivalents will now occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all modifications and/or changes as fall within claimed subject matter.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2017/022798 | 3/16/2017 | WO | 00 |