Skip to main content
Version: 10.3

GPU Monitoring Issues

GPU Usage Shows 0

Problem

GPU usage is consistently reported as 0.

Verification

Step 1: Verify Operating System Support

  • GPU Monitoring is only implemented on Windows systems. Ensure the system is running Windows 10 or later.

    note

    For Unix systems, GPU Engine Activity is always reported as 0. On macOS, FreezeMonitor is not used.

Step 2: Check GPU Driver Version

  • Older drivers may not expose required metrics. Update the GPU driver directly from the vendor if needed.

    note

    FreezeMonitor reads GPU Engine Activity using Windows Performance Counters.

Step 3: Confirm the Machine Has a GPU

  1. Open Task Manager.

  2. Go to PerformanceGPU.

  3. Verify that a GPU section exists.

  4. Run a GPU-based application and check if utilization changes.

Step 4: Verify the PID is using GPU

  1. Open Task Manager.

  2. Go to Details.

  3. Locate the application by PID or name.

  4. Check the GPU column for activity.

Step 5: Verify Performance Counters

  1. Press Win + R.

  2. Enter perfmon and press Enter.

  3. Open Performance Monitor under Monitoring Tools.

  4. Check if GPU Engine is available in the list of counters.

  5. If missing, update the GPU driver.

GPU Not Used in Idle Detection

Problem

GPU activity is not considered in idle detection.

Explanation

FreezeMonitor calculates application activity using the following metrics:

  • Keyboard
  • Mouse
  • CPU
  • I/O
  • GPU

Each metric is configured using two parameters:

  • Threshold
  • Weight

Verification

Check the following conditions:

  • GPU weight is set to 0.

    • A weight of 0 means FreezeMonitor ignores GPU activity in idle detection.
  • GPU metric is not included in the application handle.

    • Verify that the application handle configuration includes GPU (e.g., gpu = 30 3).

FreezeMonitor Takes Too Long to Stop

Problem

FreezeMonitor takes longer than expected to stop.

Explanation

This is expected behavior if any handle uses GPU.

FreezeMonitor collects GPU Engine Activity using a background task. It evaluates a deadline to determine when the background sampling task should stop before the next cycle begins.

If GPU activity is involved, this process may take longer. If shorter execution time is needed (e.g., for testing), reduce the cycle interval in the scheduler configuration by following the instructions in the Action section.

Action (Optional)

If shorter execution time is needed (e.g., for testing), reduce the cycle interval in the scheduler configuration. Follow the steps below:

Step 1: Open Command Prompt

  1. Open a command prompt with Administrator level privileges.

Step 2: Navigate to the bin Directory

  1. Go to the bin directory, which is by default in C:\Program Files\OpeniT\Core\bin, run the command:

    Command Syntax
    cd <bin_dir>
    Example
    cd C:\Program Files\OpeniT\Core\bin

Step 3: Modify the Cycle Interval

  1. Once in the directory, modify the Freezemonitor argument, run the command:

    Command Syntax
    openit_oconfinit -u "optimize_freezemonitor.root.scheduler.jobs.optimize_freeze_windows.operations.arguments=${OpeniT.directories.conf}/freezemonitor.conf -i 300"
  2. Modify the trigger period, run the command:

    Command Syntax
    openit_oconfinit -u "optimize_freezemonitor.root.scheduler.jobs.optimize_freeze_windows.scheduling.start-triggers.trigger#2.period=PT5M"

    Both values must match.

    Example for a 5-minute interval:

    Command Argument
    ${OpeniT.directories.conf}/freezemonitor.conf -i 300
    Period Trriger
    PT5M

GPU Temp File Has One Sample Only

Problem

GPU Temp file contains only one sample.

Explanation

By default, FreezeMonitor collects four GPU samples within the standard 10-minute cycle.

Sampling begins a few seconds after the cycle starts and continues at 2-minute intervals. For example:

SampleTime
13:00
23:02
33:04
43:06
GPU Samples

If the GPU Temp file contains fewer samples, it usually means the configured poll interval for FreezeMonitor is shorter than the default 10 minutes. Make sure the interval is long enough to accommodate the 2-minute sampling frequency. You may follow the instructions in this section to update the interval.

Frequently Asked Questions (FAQs)

Why does GPU usage differ between FreezeMonitor and other tools?

GPU Engine Activity reported by FreezeMonitor may not exactly match values shown in tools such as:

  • Task Manager
  • Performance Monitor
  • nvidia-smi

GPU usage can change very quickly, sometimes within milliseconds. Because monitoring tools sample at different times, they may capture different moments of activity.

FreezeMonitor collects multiple samples during its cycle and computes results from those samples, while other tools may display only the most recent reading.

In addition, some tools report overall GPU usage, while FreezeMonitor focuses on per-process GPU usage.

What to expect: Exact values may differ across tools. However, the overall trend should be similar. If GPU activity increases or decreases, both FreezeMonitor and other tools should reflect the same general pattern.

How is GPU Engine Activity collected?

FreezeMonitor uses the application PID to locate its corresponding GPU performance counters. It then evaluates all related GPU engines and records the maximum utilization value.

Why is multi-GPU not supported?

Although PDH provides per-GPU performance counters when an application uses multiple GPUs, there are limitations in how this data can be processed within Filtrator.

Why is only the maximum GPU Engine utilization used?

Different aggregation methods were evaluated. Using the maximum utilization provides the most reliable representation of GPU activity, as other methods may produce misleading results or overstate usage.

Why does FreezeMonitor sample GPU Engine utilization multiple times?

GPU tasks can be very quick or happen in short bursts. A single sample may miss periods of activity, so multiple samples are collected to provide a more accurate representation.

Why is GPU monitoring included only in FreezeMonitor?

GPU monitoring is primarily used for idle detection (e.g., data types (64) License Optimizer Events and (92) License Optimizer Action. Since this functionality is not required in Recorder, GPU monitoring is not included there.