A self-hosted NVIDIA Nsight Tools GUI, running within a Docker container, enables remote access through a web browser. This configuration is highly beneficial for analyzing data on remote servers or clusters.
Currently, NVIDIA Nsight Systems, NVIDIA Nsight Compute, NVIDIA Nsight Graphics, and NVIDIA Nsight Deep Learning Designer are supported for running inside a container.
Handling Large Data: The reports generated by NVIDIA Nsight Tools on servers/clusters can be extremely large, making it impractical to transfer them to a local machine. By hosting the GUI on the remote server, you can analyze the data in place without the need for excessive data transfers.
Enhanced Performance: Remote servers or clusters often have significantly more computational power and memory compared to local machines. Analyzing the reports directly on the remote server leverages these resources, ensuring faster and more efficient data processing and analysis.
Security Compliance: Many organizations have strict security protocols that prevent copying sensitive data from servers or clusters to local environments. This self-hosted solution ensures that the data remains within the secure confines of the server while still providing the necessary tools for thorough analysis.
Nsight Streamer for Nsight Graphics supports remote profiling, so it is essential to ensure that the server is secure and that the necessary security measures are in place to prevent unauthorized access to your data.
The Nsight Streamer can be started using the run_nsight_streamer.py
script provided by Nsight Streamer Resources.
python3 run_nsight_streamer.py -v /home/user/reports nsys
python run_nsight_streamer.py -v d:\reports ncu
None of the arguments are required, but it is highly recommended to include at least one -v
/--volume
argument to mount a volume with profiling reports inside the container.
Parameter | Description | Default Value |
---|---|---|
tool | The Nsight Tool tool to run inside the container. | |
--http-port | Set the HTTP port. Set to 'dynamic' to find the first available port. | 8080 |
--turn-port | Set the TURN port. Set to 'dynamic' to find the first available port. | 3478 |
--host-ip | The host IP address to bind the server to. | 0.0.0.0 |
--enable-resize | Should resizing be enabled to fit the remote resolution to the client window? | true |
--max-resolution | Maximum resolution of the remote screen used for streaming Nsight Tool. | 1920x1080 |
-v, --volume | Mount a volume from the host to the container. This option can be repeated multiple times. The volume will be mount to /mnt/host/volumes/[volume] inside the container | |
--no-preserve-config | Do not preserve a Nsight Tool configuration file in the container between runs. | |
-y, --yes | Automatically answer 'yes' to prompts. Use with caution. | |
--web-username | The username for accessing the NVIDIA Nsight Streamer from a browser. If set to an empty string, no authentication is required. | |
--web-password | The password for accessing the NVIDIA Nsight Streamer from a browser. | |
-- | Additional docker run arguments that will be passed directly to the docker run command. | |
-h, --help | Display this help and exit. |
docker run
docker run -it --rm -p 8080:8080 -p 3478:3478 -v /host_path/reports:/container_path/reports nvcr.io/nvidia/devtools/nsight-streamer-nsys:2025.1.1
This example sets the HTTP port for publishing on the host to 8080, the TURN port for publishing on the host to 3478, and mounts /host_path/reports
to /container_path/reports
inside the container.
Can be used to configure runtime parameters.
Variable | Description | Default value |
---|---|---|
TURN_PORT | TCP port that will be used for WebRTC data transmission. The port should match the port published from the container on the host. | 3478 |
ENABLE_RESIZE | Should resizing be enabled to fit the remote resolution to the client window? | true |
MAX_RESOLUTION | Maximum resolution of the remote screen used for streaming the Nsight Tool. | 1920x1080 |
WEB_USERNAME | The username for accessing the NVIDIA Nsight Streamer from a browser. If set to an empty string, no authentication is required. | nvidia |
WEB_PASSWORD | The password for accessing the NVIDIA Nsight Streamer from a browser. | nvidia |
Install the Nsight Streamer with the default configuration:
helm install --wait --set tool=nsys nsight-streamer \
https://helm.ngc.nvidia.com/nvidia/devtools/charts/nsight-streamer-1.1.0.tgz
Install the Nsight Streamer and specify configuration options (in this example configuration options were saved in custom_values.yaml
)::
helm install --wait -f custom_values.yaml nsight-streamer \
https://helm.ngc.nvidia.com/nvidia/devtools/charts/nsight-streamer-1.1.0.tgz
Install the Nsight Streamer in a non-default namespace:
helm install --wait --set tool=ndld nsight-streamer \
https://helm.ngc.nvidia.com/nvidia/devtools/charts/nsight-streamer-1.1.0.tgz --namespace example-ns
Install multiple copies of the Nsight Streamer:
helm install --wait --generate-name --set tool=nsys \
https://helm.ngc.nvidia.com/nvidia/devtools/charts/nsight-streamer-1.1.0.tgz
The Nsight Streamer can be customized to suit particular needs. A values file or the --set
argument can be used for setting these values.
Parameter | Description | Default Value |
---|---|---|
service.type | The type of Kubernetes service to create (ClusterIP, NodePort). | NodePort |
service.httpPort | The port on which the HTTP service will be exposed within the cluster. | 30080 |
service.turnPort | The port on which the TURN service will be exposed within the cluster. | 30478 |
service.nodeHttpPort | The NodePort value for exposing HTTP traffic outside the cluster. Applicable when service.type is NodePort. | 30080 |
service.nodeTurnPort | The NodePort value for exposing TURN traffic outside the cluster. Applicable when service.type is NodePort. Should be equal to service.turnPort. | 30478 |
nodeSelector | Node selector for Nsight Streamer pod scheduling. | {} |
tolerations | Tolerations for Nsight Streamer pod scheduling. | [] |
affinity | Affinity rules for Nsight Streamer pod scheduling. | {} |
volumeMounts | List of volumes to mount into the container. | [] |
volumes | List of volumes to be used by the container. | [] |
env | List of environment variables to be injected into the Docker container. | [] |
enableResize | Should resizing be enabled to fit the remote resolution to the client window? | true |
maxResolution | Maximum resolution of the remote screen used for streaming the Nsight Tool. | 1920x1080 |
preserveConfig | Preserve the Nsight Tool configuration file in the container between runs. | true |
webUsername | The username for accessing the NVIDIA Nsight Streamer from a browser. Can be provided as a direct string value or as a secret reference. If using a secret, set webUsername as a map with secretName and secretKey. If set to an empty string, no authentication is required. | nvidia |
webPassword | The password for accessing the NVIDIA Nsight Streamer from a browser. Can be provided as a direct string value or as a secret reference. If using a secret, set webPassword as a map with secretName and secretKey. | nvidia |
After installing the Nsight Streamer using Helm, you can access it in different ways depending on the service type configuration:
When using ClusterIP
(set via service.type=ClusterIP
), the service is only accessible from within the cluster. You can access it using port forwarding to your local machine:
kubectl port-forward service/nsight-streamer-service 8080:30080
Then access the service at http://localhost:8080
When using NodePort
(default, or set via service.type=NodePort
), the service is exposed on each node's IP at a static port. The default port is 30080, but this can be configured during installation using the service.nodeHttpPort
parameter.
After installation, the connection information will be automatically displayed by the print-connection-info job. You can retrieve this information by checking the job logs:
kubectl logs job/nsight-streamer-print-connection-info
Access the service by opening your web browser and navigating to:
http://<node-ip>:<node-port>
Note: Ensure your network security settings allow access to the configured NodePort.
The Nsight Streamer scans all mounted volumes at startup and selects the first one containing report files with supported extensions. The "Open..." dialog will be opened with the detected directory.
Enable chrome://flags/#unsafely-treat-insecure-origin-as-secure
and add the Nsight Streamer URL to the list.
Connection failed
on FirefoxIf you encounter a "Connection failed." error on Firefox, you can resolve it by changing a configuration setting:
about:config
.media.peerconnection.ice.loopback
.Restart the remote Nsight Tool:
File
in the menu bar of Nsight Tool.Exit
.By pulling and using the container, you accept the terms and conditions of this End User License Agreement.