NvGridSvc — NVIDIA Grid Service (NGS)
WARNING
Deprecated for latest service bundles. In the newer C:\Asgard\services layout, there is no NvGridSvc service directory, while a full gs2 stack is present. Treat this page as legacy/compatibility documentation for older seats.
NvGridSvc is the main session management service on each GFN rig. It implements the state machine that drives game sessions from request to teardown.
Version
From the logs:
NvGridSvc version 1.4
Build: Fri, 01 Sep 2023 21:17:37State Machine
Configured via GFN.xaml (XAML-based state machine file):
{
"NvGridSvcStateMachine": {
"stateMachineFile": "GFN.xaml"
}
}The state machine drives the full lifecycle:
IDLE
│ ← PM allocates session
▼
SESSION_CREATED
│ ← Setup app/game, configure display
▼
READY_TO_STREAM
│ ← Client connects
▼
STREAMING
│ ← Active game session
▼
PAUSED ←→ STREAMING
│ ← Session ends / error
▼
TEARDOWN
│ ← Logs uploaded, state wiped
▼
IDLEGSG (Game Seat Gateway) Connection
NGS communicates with the cloud orchestration layer via gRPC over the GSG:
{
"GSGConnector": {
"connectionTimeoutMs": 5000,
"keepAliveIntervalMs": 3000,
"heartbeatPeriodMs": 60000,
"enableSeatHeartbeat": true,
"enableSessionHeartbeat": true,
"apiKeyRefreshPeriodSec": 300,
"frontChannelResponseTimeoutMs": 6000,
"backChannelAckResponseTimeoutMs": 500
}
}Retry logic:
- Initial backoff: 100ms → Max: 1000ms (multiplier 1.6)
- Max 5 retries over 10 seconds
- Retryable:
UNKNOWN,UNAVAILABLE,DEADLINE_EXCEEDED
Timeouts
From the master config:
| Timeout | Value | Description |
|---|---|---|
clientConnectTimeoutSec | 180s | Wait for client to connect |
clientReconnectTimeoutSec | 180s | Allow client to reconnect |
launchAppTimeoutSec | 180s | Wait for app to launch |
readyToStreamTimeoutSec | 30s | Wait for stream ready |
setupAppTimeoutSec | 30s | App setup timeout |
resumeReadyTimeoutSec | 30s | Session resume timeout |
appShutdownTimeoutSec | 360s | Wait for app shutdown |
gamestreamShutdownTimeoutSec | 60s | GameStream shutdown |
sessionCreatedTimeoutSec | 180s | Session creation timeout |
prewarmAppTimeoutSec | 15s | Prewarm timeout per app |
App Manager Timeouts
| Timeout | Value |
|---|---|
contentControllerJoinTimeoutSec | 15s |
appPrewarmReadyTimeoutSec | 360s |
contentControllerPrewarmTimeoutSec | 900s |
contentControllerShutdownTimeoutSec | 1800s |
contentControllerLaunchTimeoutSec | 900s |
GCIS Plugin Loading
NGS initializes the GCIS plugin stack in this order:
"gcisPluginList": [
"ElmPlugin",
"GciPluginSysmon",
"GcpPlugin",
"LkmPlugin",
"UadMLPlugin",
"UadPlugin"
]Initialization config:
{
"GcisConnector": {
"gcisJoinBusTimeoutMs": 5000,
"gcisInitTimeoutMs": 5000,
"gameStreamCreatingTimeoutMs": 5000,
"lofnDataSendTimeoutMs": 3000,
"enableGcis": true
}
}Volume Management
Disk space monitoring:
{
"VolumeSetup": {
"minDiskSpaceMB": 1024,
"lowDiskSpaceMB": 32
}
}Crash Dump Management
NGS tracks crash dumps and reports them as telemetry events:
| Component | File Pattern | Event | Error |
|---|---|---|---|
| NvStreamer | nvstreamer.exe.*.dmp | NGS_NvStreamerCrash | NGSE_GameStreamCrashDetected |
| NvStreamer (process) | nvstreamer.exe-*.dmp | NGS_NvStreamerProcessDump | NGSE_NvStreamerProcessDumpDetected |
| NvContainer | nvcontainer.exe.*.dmp | NGS_NvContainerCrash | NGSE_GameStreamCrashDetected |
| CTMT | crashdump-*.mdmp | NGS_CTMTCrash | NGSE_CTMTDumpdetected |
| System/BSOD | MEMORY.DMP | NGS_KernelCrash | NGSE_SystemCrashDetected |
| TAS | *.dmp | NGS_TasCrash | NGSE_TasDumpDetected |
Log Upload
After each session, logs are uploaded to NVIDIA's backend. The uploader collects from dozens of paths:
%AG_LOGS%\*.txt
%AG_LOGS%\AutoOnboarder\**\*.*
%AG_LOGS%\GCIS\**\*.*
%AG_LOGS%\SessionMngr\*.log
C:\ProgramData\NVIDIA Corporation\NvStream\*.*
C:\ProgramData\NVIDIA Corporation\GCIS\*.*
C:\Windows\System32\winevt\Logs\Application.evtx
C:\Windows\System32\winevt\Logs\Security.evtx
C:\Windows\System32\winevt\Logs\Microsoft-Windows-Sysmon%4Operational.evtxLog upload timeout: 600 seconds Compression: zlib_deflate (level -1 = default)
HTTP Client Settings
{
"HttpClient": {
"requestTimeoutMs": 60001,
"connectTimeoutMs": 7000,
"uploadTimeLimitSec": 500,
"downloadTimeLimitSec": 120,
"minBackoffMs": 150,
"maxBackoffMs": 5000
}
}GameSeat2 Mode
NGS supports a new GameSeat2 architecture (Linux backend):
{
"GameSeat2": {
"isGameSeat2": false,
"handlerDomainSocketPath": "/var/run/gs2/gs2-handler/handler.sock",
"handlerConnectionTimeoutMs": 5000,
"frontEndRebootTimeoutMs": 300000,
"gsbeLogsDestination": "/var/run/gs2/vmlogs"
}
}Currently disabled (isGameSeat2: false) on the captured rig.
Telemetry
NGS sends telemetry to:
- OpenTelemetry:
prod.otel.kaizen.nvidia.com:8282(SSL) - OpenTracing (LightStep):
ls.dtrace.nvidia.com:443