记录实验室深度学习服务器显卡硬件故障的排查——RmInitAdapter failed! rm_init_adapter failed

实验室突然通知我说是深度学习的服务器无法查看GPU,并且在GPU上运行的程序也halt on,需要解决。于是查询服务器的运行日志得到下面的信息:

 

Nov 10 01:33:23 dell kernel: [3238114.018736] NVRM: Xid (PCI:0000:b1:00): 43, pid=45948, Ch 00000008
Nov 10 01:38:12 dell kernel: [3238403.448442] NVRM: Xid (PCI:0000:b1:00): 43, pid=51064, Ch 00000008
Nov 10 01:39:11 dell kernel: [3238462.127610] NVRM: Xid (PCI:0000:b1:00): 62, pid=51064, 21b3(31c4) 00000000 00000000
Nov 10 01:43:32 dell kernel: [3238722.985986] NVRM: Xid (PCI:0000:b1:00): 45, pid=3300, Ch 00000000
Nov 10 01:43:32 dell kernel: [3238722.988964] NVRM: Xid (PCI:0000:b1:00): 45, pid=3300, Ch 00000001
Nov 10 01:43:32 dell kernel: [3238722.991786] NVRM: Xid (PCI:0000:b1:00): 45, pid=1544, Ch 00000002
Nov 10 01:43:32 dell kernel: [3238722.993928] NVRM: Xid (PCI:0000:b1:00): 45, pid=1544, Ch 00000003
Nov 10 01:43:32 dell kernel: [3238722.995701] NVRM: Xid (PCI:0000:b1:00): 45, pid=1544, Ch 00000004
Nov 10 01:43:32 dell kernel: [3238722.997629] NVRM: Xid (PCI:0000:b1:00): 45, pid=1544, Ch 00000005
Nov 10 01:43:32 dell kernel: [3238722.999373] NVRM: Xid (PCI:0000:b1:00): 45, pid=1544, Ch 00000006
Nov 10 01:43:32 dell kernel: [3238723.001108] NVRM: Xid (PCI:0000:b1:00): 45, pid=1544, Ch 00000007
Nov 10 01:43:32 dell kernel: [3238723.002705] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 00000008
Nov 10 01:43:32 dell kernel: [3238723.504007] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 00000009
Nov 10 01:43:32 dell kernel: [3238723.505675] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 0000000a
Nov 10 01:43:32 dell kernel: [3238723.507158] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 0000000b
Nov 10 01:43:32 dell kernel: [3238723.508527] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 0000000c
Nov 10 01:43:32 dell kernel: [3238723.509823] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 0000000d
Nov 10 01:43:32 dell kernel: [3238723.511155] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 0000000e
Nov 10 01:43:32 dell kernel: [3238723.512501] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 0000000f
Nov 10 01:43:32 dell kernel: [3238723.513788] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 00000010
Nov 10 01:43:32 dell kernel: [3238723.515211] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 00000011
Nov 10 01:43:32 dell kernel: [3238723.516537] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 00000012
Nov 10 01:43:32 dell kernel: [3238723.517836] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 00000013
Nov 10 01:43:32 dell kernel: [3238723.519163] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 00000014
Nov 10 01:43:32 dell kernel: [3238723.520567] NVRM: Xid (PCI:0000:b1:00): 45, pid=55094, Ch 00000015

 

查看nvidia官方的文档:

https://docs.nvidia.com/deploy/xid-errors/index.html

 

 可以看到这个错误大概率是应用程序的问题。

 

顺着日志往前查看,发现了相似的日志信息:

Oct 25 11:46:44 dell kernel: [1892628.496902] NVRM: Xid (PCI:0000:d9:00): 43, pid=34973, Ch 00000008
Oct 28 08:02:50 dell kernel: [2138374.168198] NVRM: Xid (PCI:0000:d9:00): 43, pid=79247, Ch 00000008

很明显相似的报错信息以前也都出现过,此时的判断依然是应用程序造成的错误。

 

 

 

此时的故障表现就是4块显卡中有一块是丢失的,无法识别的,其他三块显卡可识别都是不工作。

首先从软件层面上考虑解决这个问题,于是升级系统版本,从ubuntu18.04升级到22.04,然后升级内核版本,等等,然后重启电脑。进系统发现还是有块显卡无法识别,其他三块显卡虽然可以被识别但是依旧无法使用,再次查看系统日志,得到信息:

Nov 10 07:11:03 dell kernel: [ 240.936646] NVRM: GPU 0000:b1:00.0: RmInitAdapter failed! (0x26:0xffff:1266)
Nov 10 07:11:03 dell kernel: [ 240.936680] NVRM: GPU 0000:b1:00.0: rm_init_adapter failed, device minor number 2
Nov 10 07:11:14 dell kernel: [ 252.387589] NVRM: GPU 0000:b1:00.0: RmInitAdapter failed! (0x26:0xffff:1266)
Nov 10 07:11:14 dell kernel: [ 252.387651] NVRM: GPU 0000:b1:00.0: rm_init_adapter failed, device minor number 2

 

 

 

通过日志信息可以知道,此时的0000:b1:00.0槽位上的显卡是不能初始化的,按照这个错误信息再结合一些网上的信息初步判断是该块显卡已经出现了物理故障(因为已经在软件层面上解决无效)。

 

 

--------------------------------------------------------

 

联系经销商,发过来一个示意图,要我们自行测试故障点:

 

 

 

 

打开机箱,拔掉一张显卡,重启,查看显卡信息:

 正常情况应该是4张显卡,由于一张显卡故障,一张显卡被拔掉,于是显示出只有两个显卡,这说明拔下的这个显卡并不是故障显卡。

 

 

接着把这个拔下的显卡插回去,拔另一个显卡:

 

 

 说明此时拔下的显卡依然不是故障显卡。

 

接着把这个拔下的显卡插回去,拔另一个显卡:

说明此时拔下的显卡依然不是故障显卡,那么可以确定没有拔下来过的显卡就是故障显卡。

 

 

 

刚才的拔卡的顺序:(一共四张卡,1,2,3,4号)

按机箱从上到下的顺序:321

第一张卡是1

因此可以得出结论:

00000000:5E:00.0 槽位是1号卡;

00000000:3B:00.0 槽位是2号卡;

00000000:D9:00.0 槽位是3号卡;

00000000:B1:00.0 槽位是4号卡。

 

 

根据刚才3次的拔卡重启后的信息,我们可以知道故障出在四号槽或四号卡上。

 

 

 

----------------------------------------------------------------------------

 

 

 

 

此时有一个问题,那就是我们无法判断出故障的是这个槽位的显卡还是这个槽位,于是我们把四号卡插到一号槽,此时1号卡被拔下来,四号槽空着,开机查询信息:

 

 此时一号槽查询不到信息,一号槽现在插着4号卡,这说明四号卡出现硬件故障。

 

 

 

 

现在虽然得到了四号卡故障的结论,但是四号槽有没有问题还是需要再确认下的,于是1、2号卡复位(1号卡插一号槽,2号卡插二号槽),3号卡和4号卡对调(3号卡插4号槽,4号卡插3号槽),查询显卡信息:

可以看到,3号卡和4号卡对调后,4号槽(00000000:B1:00.0)可以被识别,这说明四号槽没有损坏;3号槽插着4号卡没有被识别,更加说明了4号卡硬件故障。

 

 

 

=============================================

 

 

得到最终结论,4号卡损坏,联系经销商发给售后,走保修流程。把1,2,3号卡复位,4号卡拆出,空出4号槽,再次启动查询显卡信息:

 

运行TensorFlow和pytorch的代码,GPU端正常运行,1,2,3号显卡可以被调用,服务器恢复正常运行。(有坏卡在PCIE槽上插着,导致其他三个正常显卡也不能正常工作,拆出坏卡后其他卡便恢复正常运行)

 

 

 

====================================

 

posted on 2022-11-11 13:31  Angry_Panda  阅读(2217)  评论(0编辑  收藏  举报

导航