When I start my application for the first time after a reboot, I get poor performance and the Nvidia driver reports 250+ MB of evicted memory. However, if I kill my app and restart, then the performance is much better and the driver doesn't report any memory eviction. But, there is only 1.5 MB free on the GPU. Both runs are identical.

I tried removing the on-disk shader cache, but subsequent runs were still ok.

Obviously, I have to fix the memory eviction, but I wonder why the first run is different from subsequent runs. Is the driver caching a file that gives it memory information about my app? Is there anything else that could explain this?