Streamline icon indicating copy to clipboard operation
Streamline copied to clipboard

Streamline takes long to initialize

Open simco50 opened this issue 8 months ago • 7 comments

Hi,

I've noticed that Streamline can easily take up to 2.5 seconds to initialize. This seems quite excessive considering this can contribute to over half of the time spent loading some of our content. Looking at it in Superluminal doesn't provide much insight as it's all inside NvAPI.

Below is a snapshot of slInit() which takes ~1.5 seconds on a quite powerful CPU. slSetD3DDevice() takes about the same amount of time. So that adds up quite a bit.

Image

It would be great to see if there's any room for improvement here.

Thanks in advance, Simon

simco50 avatar Aug 04 '25 10:08 simco50

Are you using a driver r575 (or newer)? nvbug: 5447170

jake-nv avatar Aug 15 '25 22:08 jake-nv

The capture above was taken on 580.63. I've updated to latest (580.97) and it makes no difference. Here is the full picture of what I see of both slInit and slSetD3DDevice.

Image

simco50 avatar Aug 18 '25 07:08 simco50

@jake-nv is there anything we can provide to help move this issue along? It's quite sad that about 40% of our startup time is being dominated by this

Stardidi avatar Oct 17 '25 09:10 Stardidi

For older driver indeed its even slower at 573 it takes more like 5 seconds. So yes it was worse, now it still bad.

santagada avatar Oct 17 '25 10:10 santagada

I tried making it a blocker for 2.10, but management didn’t agree on the seriousness of the issue. If you have a point of contact in NV devrel reach out to them to stress the priority and ensure it gets into 2.11.

jake-nv avatar Oct 17 '25 14:10 jake-nv

I tried making it a blocker for 2.10, but management didn’t agree on the seriousness of the issue. If you have a point of contact in NV devrel reach out to them to stress the priority and ensure it gets into 2.11.

Thanks. I will follow up

simco50 avatar Oct 17 '25 15:10 simco50

In case anybody else would like mitigations for development purposes only:

  1. Explicitly disable eAllowOTA when calling slInit(). This prevents Streamline itself from launching a number of synchronous external update processes.
  2. Use the registry key workaround for "NVIDIA vGPU software graphics driver for Windows sends a remote call ...". This prevents the driver (NGX) from launching a number of synchronous external update processes.

This will prevent over-the-air updates from working on all games. That includes overrides provided by the NVIDIA App.


Profiler graph

OTA Enabled: slInit (759ms) + slSetD3DDevice (957ms) = 1716ms. OTA Disabled: slInit (410ms) + slSetD3DDevice (636ms) = 1046ms.

As measured on my machine, Streamline startup time is nearly twice as fast. There's another 150ms being left on the table because of WinVerifyTrust performance - I haven't bothered thoroughly checking.

Nukem9 avatar Nov 18 '25 01:11 Nukem9