Last Updated: Mar 13, 2026
Introduction
By default, NVIDIA drivers restrict access to GPU performance counters to administrator users. This restriction prevents non-admin users from using profiling tools such as NVIDIA Nsight Compute.
When this restriction is enabled, users may see the following error when running profiling commands:
==ERROR== ERR_NVGPUCTRPERM - The user does not have permission to access NVIDIA GPU Performance Counters on the target device
This guide explains how to enable access to NVIDIA GPU performance counters for non-admin users by modifying the NVIDIA driver configuration and updating the system initramfs.
Prerequisites
Before proceeding, ensure the following:
A Linux system with NVIDIA GPU drivers installed
Administrative (sudo) access
A supported NVIDIA GPU installed (for example, NVIDIA H100 80GB HBM3)
NVIDIA Nsight Compute installed (
ncucommand available in the system PATH)Access to the system terminal
Step-by-Step Instructions
1. Verify the Error
-
Run the following command to query available GPU metrics using NVIDIA Nsight Compute:
$ ncu --query-metrics -
Example output:
Device NVIDIA H100 80GB HBM3 (GH100) ==ERROR== ERR_NVGPUCTRPERM - The user does not have permission to access NVIDIA GPU Performance Counters on the target device 0 This indicates that GPU performance counters are restricted.
2. Check Current Profiling Configuration
-
Verify whether profiling access is restricted to administrators:
$ cat /proc/driver/nvidia/params | grep -i RmProfilingAdminOnly -
Example output:
RmProfilingAdminOnly: 1 A value of 1 indicates that only administrators can access GPU performance counters.
3. Enable GPU Profiling for Non-Admin Users
-
Create a new NVIDIA modprobe configuration file:
$ sudo nano /etc/modprobe.d/ncu-permissions.conf -
Add the following line to the file:
options nvidia NVreg_RestrictProfilingToAdminUsers=0 This configuration allows non-admin users to access GPU performance counters.
4. Update initramfs
If the NVIDIA kernel module loads before this configuration file is read, the change will not apply. Updating initramfs ensures the configuration is loaded during system boot.
-
Run:
$ sudo update-initramfs -u -
Example output:
update-initramfs: Generating /boot/initrd.img-5.15.0-140-generic
5. Reboot the System
-
Restart the system so the updated configuration takes effect.
$ sudo reboot
6. Verify Profiling Permissions
-
After the system reboots, verify the profiling configuration:
cat /proc/driver/nvidia/params | grep -i RmProfilingAdminOnly -
Example Output: If the configuration was applied successfully, the restriction should no longer prevent profiling tools from accessing GPU counters.
RmProfilingAdminOnly: 0
Example
After enabling GPU profiling access, querying metrics should return a list of available counters.
Run:
ncu --query-metrics
Example output:
Device NVIDIA H100 80GB HBM3 (GH100)
------------------------------------------------------------------------------------- --------------- --------------- ----------------------------------------------------------------------
Metric Name Metric Type Metric Unit Metric Description
------------------------------------------------------------------------------------- --------------- --------------- ----------------------------------------------------------------------
FBSP.TriageCompute.dramc__cycles_elapsed Counter cycle DEPRECATED: use dram__cycles_elapsed instead
FBSP.TriageCompute.dramc__cycles_in_frame Counter cycle # of cycles in user-defined frame
FBSP.TriageCompute.dramc__cycles_in_region Counter cycle # of cycles in user-defined region
FBSP.TriageCompute.dramc__read_throughput Throughput % DRAMC Read Throughput (TriageCompute Configuration)
FBSP.TriageCompute.dramc__read_throughput_internal_activity Throughput % DRAMC Read Throughput (TriageCompute Configuration), internal activity
...
...This confirms that GPU performance counters are accessible to non-admin users.
Common Issues
-
Issue: ERR_NVGPUCTRPERM still appears after configuration
Resolution
Ensure the initramfs was updated and the system was rebooted:
$ sudo update-initramfs -u $ sudo rebootAlso verify that the configuration file exists:
cat /etc/modprobe.d/ncu-permissions.conf