这篇文档跟【如何更新GPU云服务器的NVIDIA驱动】这篇文档一脉相承。
系统里有2套驱动nvlddmkm.sys甚至3套nvidia-smi.exe会混乱不堪
安装了新版驱动后,C:Program FilesNVIDIA CorporationNVSMI目录过了一段时间消失了,未解之谜解开了
nvidia-smi.exe位置变化的逻辑在NVIDIA官网没找到直接文档,但通过测试纯净版系统单独安装旧版、单独安装新版驱动是能看到两版驱动差异的,旧版的nvidia-smi.exe在这个目录C:Program FilesNVIDIA CorporationNVSMI,而新版的在C:WindowsSystem32目录并且C:Program FilesNVIDIA CorporationNVSMI目录不存在了。这不是windows操作系统决定的,而是nvidia驱动版本决定的。
对于存在多套驱动的情况,我请微软的朋友帮忙看了下,这种情况做的镜像买新机器,会自动安装新版驱动,在机器闲时会被系统自带的diskclean的计划任务清理掉C:WindowsSystem32DriverStoreFileRepository 目录下nv_打头的旧版驱动目录(1.5G左右,因为没用了还占空间,就被系统智能干掉了旧版,只留一个新版目录)
以其中一个版本举例,在更新过程中,会将c:program filesnvidia corporation拷贝到临时目录C:UsersADMINI~1AppDataLocalTemp下,然后再拷贝到C:WindowsSystem32DriverStoreTemp,最终拷贝到C:WindowsSystem32DriverStoreFileRepository目录。C:Program FilesNVIDIA CorporationNVSMI目录的一些文件会被强制删除,甚至NVSMI整个子目录被删除。
发现旧的版本突然消失,是由于系统触发了Device and Driver Disk Cleanup,会检测到系统中不需要的设备或驱动,oem7.inf(这个case中是oem7.inf,如C:WindowsINFsetupapi.dev.log截图)为旧版本的驱动文件nv_dispsi.inf_amd64_db8d3f1ff9f89487nv_dispsi.inf,被自动删除。
如果希望不执行disk cleanup的话,可以尝试将此任务禁用。
关于这个问题,“针对镜像里包含了3版nvidia-smi.exe和2版显卡驱动的情况,购买新机器后,显卡驱动和nvidia-smi.exe会如何去匹配,会不会存在重启下机器就变个状态的情况?”由于每个驱动都有自己的底层逻辑,Windows只能从C:WindowsINFsetupapi.dev.log日志看到驱动的安装和卸载过程,关于显卡驱动和nvidia-smi.exe会如何去匹配,这种情况还是建议咨询下nvidia厂商,他们能提供更多的信息。
实际上咨询,nvidia回答得笼统,他们认为新版nvidia-smi.exe被他们安排在system32目录,连环境变量都无需用户配置了,岂不是很方便用户,他们不觉得这需要什么解释。在我看来,他们可能没考虑到客户业务在版本变化中的影响,应该前后保持路径的兼容性,你可以往system32目录放一份提升便利性,但原位置应该也保留一份呀,可nvidia目前没这个打算,未来说不定。因此,只能委屈有此需求的用户自己从system32目录拷贝一份到C:Program FilesNVIDIA CorporationNVSMI目录了,主要是这4个文件凑成NVSMI文件夹
关于更新nvidia驱动,从Windows层面,微软常规更新驱动的方式是在设备管理器中右击设备以更新驱动,或者直接双击运行驱动包。从系统稳定性角度来看,如果能将旧的版本完全删除,再安装新的版本,这样更保险些。