Memory and CPU usage (classic)

Applies to platform | Windows |

Measuring the utilization of hardware resources within each device in your organization is key to evaluating both the efficiency of devices and the impact of resource consumption on employee experience. Users that perceive their devices as slow usually suffer from scarcity or misuse of two basic system resources: main memory and CPU processing power.

In this article, learn about the fields and aggregate values that measure the usage of memory and processing power in Nexthink. Based on these figures, assess the amount of resources given to a particular device and find out which applications are most resource-hungry.

Memory usage

Collector takes samples of the amount of memory used by each running process over a period of 30 seconds. Collector calculates the average value of these samples over 5-minute intervals to eventually send to Engine. Note that if a process allocates and frees memory very quickly, Collector may miss some peaks of memory consumption when taking its samples every 30 seconds. Therefore, there is always some uncertainty in the values Collector offers, but it is usually negligible for well-behaved applications. Moreover, memory issues typically arise because of a sustained high consumption of memory and not because of short-lived allocations.

Based on the data collected, Nexthink has made the following fields and aggregates available to measure memory usage:

Name
Type
Applies to
Description

Average memory usage

field

execution

The average memory usage of the execution before being aggregated

Average memory usage per execution

aggregate

  • user

  • device

  • application

  • executable

  • binary

The average memory usage of all the underlying executions divided by their cardinality

Average memory usage (deprecated)

field

binary

The average memory usage of the underlying execution with a sampling rate of 5 minutes

Note that Nexthink calculates the memory usage per process before possibly being aggregated into a single execution. A single binary may spawn several identical processes in memory, resulting in a total memory consumption higher than that of the individual processes.

For instance, we can look at the behavior of two well-known web browsers: Chrome and Firefox. Chrome creates a new process for every tab that the browser opens, while Firefox uses a single process for all tabs. Therefore, Firefox will typically report a higher average memory usage than Chrome for similar use cases when multiple tabs are open. This is because Chrome reports the memory utilization per process before processes are aggregated in Engine.

CPU usage

In the case of CPU usage, Collector takes samples of the CPU load of all running processes every 30 seconds. The system measures the CPU load as a percentage value from 0 to 100 for each logical processor that is present in the device. Therefore, the CPU load can be higher than 100% for devices with multiple logical processors. For instance, a device with 12 logical processors has a maximum CPU load capacity of 1200%.

Contrary to memory usage samples, the system does not average CPU samples before sending them to Engine, which lets Engine know about peaks of CPU utilization. Note that the maximum instantaneous load of CPU may not occur simultaneously with the moment when Collector takes a sample. Collector sends the CPU samples to Engine every 5 minutes. For every sample, Engine calculates the effective CPU utilization of each process during its execution. Retrieve it using the following fields and aggregates:

Name
Type
Applies to
Description

Total CPU time

field

execution

The effective utilization time of the CPU during the aggregated execution. Note that the total CPU time can exceed the total duration of the execution if the average CPU load was over 100%.

Total CPU time

aggregate

  • user

  • device

  • application

  • executable

  • binary

The sum of the total CPU time of all executions within the scope of the selected object.

CPU usage ratio

aggregate

  • user

  • device

  • application

  • executable

  • binary

The sum of the total CPU time of all executions divided by their duration within the scope of the selected object.

Average CPU usage (deprecated)

field

binary

Average CPU load of a binary over all logical processors, taking into account all its executions since the binary was first seen. Note therefore that this value does not depend on the selected time frame.

Note that these figures are based on the samples taken directly from running processes. Collector also takes samples of the total CPU load reported by a device (not broken down by processes), but these are just used to signal high CPU conditions in the device.

Last updated