Skip to content

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:37

State Machine ​

Configured via GFN.xaml (XAML-based state machine file):

json
{
  "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
  ▼
IDLE

GSG (Game Seat Gateway) Connection ​

NGS communicates with the cloud orchestration layer via gRPC over the GSG:

json
{
  "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:

TimeoutValueDescription
clientConnectTimeoutSec180sWait for client to connect
clientReconnectTimeoutSec180sAllow client to reconnect
launchAppTimeoutSec180sWait for app to launch
readyToStreamTimeoutSec30sWait for stream ready
setupAppTimeoutSec30sApp setup timeout
resumeReadyTimeoutSec30sSession resume timeout
appShutdownTimeoutSec360sWait for app shutdown
gamestreamShutdownTimeoutSec60sGameStream shutdown
sessionCreatedTimeoutSec180sSession creation timeout
prewarmAppTimeoutSec15sPrewarm timeout per app

App Manager Timeouts ​

TimeoutValue
contentControllerJoinTimeoutSec15s
appPrewarmReadyTimeoutSec360s
contentControllerPrewarmTimeoutSec900s
contentControllerShutdownTimeoutSec1800s
contentControllerLaunchTimeoutSec900s

GCIS Plugin Loading ​

NGS initializes the GCIS plugin stack in this order:

json
"gcisPluginList": [
  "ElmPlugin",
  "GciPluginSysmon",
  "GcpPlugin",
  "LkmPlugin",
  "UadMLPlugin",
  "UadPlugin"
]

Initialization config:

json
{
  "GcisConnector": {
    "gcisJoinBusTimeoutMs": 5000,
    "gcisInitTimeoutMs": 5000,
    "gameStreamCreatingTimeoutMs": 5000,
    "lofnDataSendTimeoutMs": 3000,
    "enableGcis": true
  }
}

Volume Management ​

Disk space monitoring:

json
{
  "VolumeSetup": {
    "minDiskSpaceMB": 1024,
    "lowDiskSpaceMB": 32
  }
}

Crash Dump Management ​

NGS tracks crash dumps and reports them as telemetry events:

ComponentFile PatternEventError
NvStreamernvstreamer.exe.*.dmpNGS_NvStreamerCrashNGSE_GameStreamCrashDetected
NvStreamer (process)nvstreamer.exe-*.dmpNGS_NvStreamerProcessDumpNGSE_NvStreamerProcessDumpDetected
NvContainernvcontainer.exe.*.dmpNGS_NvContainerCrashNGSE_GameStreamCrashDetected
CTMTcrashdump-*.mdmpNGS_CTMTCrashNGSE_CTMTDumpdetected
System/BSODMEMORY.DMPNGS_KernelCrashNGSE_SystemCrashDetected
TAS*.dmpNGS_TasCrashNGSE_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.evtx

Log upload timeout: 600 seconds Compression: zlib_deflate (level -1 = default)

HTTP Client Settings ​

json
{
  "HttpClient": {
    "requestTimeoutMs": 60001,
    "connectTimeoutMs": 7000,
    "uploadTimeLimitSec": 500,
    "downloadTimeLimitSec": 120,
    "minBackoffMs": 150,
    "maxBackoffMs": 5000
  }
}

GameSeat2 Mode ​

NGS supports a new GameSeat2 architecture (Linux backend):

json
{
  "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: [REDACTED_OTEL_HOST]:8282 (SSL)
  • OpenTracing (LightStep): ls.dtrace.nvidia.com:443

admindesk.top — Reversed & documented from Asgard rig backups and GCIS plugin binaries.