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: prod.otel.kaizen.nvidia.com:8282 (SSL)
  • OpenTracing (LightStep): ls.dtrace.nvidia.com:443

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