在自己没有管理多台高负荷的ubuntu显卡服务器之前,我是万万想不到linux服务器居然也是如此容易死机的。

什么每个版本的TensorFlow调用显卡驱动时和内核不兼容,什么系统自动升级导致的显卡驱动和内核不兼容,什么显卡驱动没有设置为persistent模式造成驱动进程启动超时,总之,管的时间长了这个GPU服务器啥样原因造成死机的都有,真是要人不得不感慨。

今天要记录的一次服务器死机的原因是显卡高负荷所引起的。

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

具体排查过程:

服务器死机后显示屏上的报错信息:

根据这个信息,我们知道服务器死机的同时报出大量的INFO:nmi handler took too long

NMI不可屏蔽中断的信息频频报出,说明此时存在某个CPU进程在调用内核函数时已经超时,由此造成系统内核soft locked,此时整个服务器已经进入slow down的状态了,这也是服务器死机的一种表现。

在服务器死机,NMI信息频发的同时,我们可以看到kernel记录了Call Trace信息,也就是死机时报错的内核函数的函数调用信息,该信息可以作为调试信息和检查死机原因之用。

根据Call Trace信息,我们可以知道造成服务器系统死机的具体进程的报错信息,因此可以知道native_queued_spin_lock_slowpath是造成这次死机最初的那个点的入口。

这个Call Trace信息需要从下往上看:

entry_SYSCALL_64_after_hwfram  :准备进入系统调用阶段

exc_page_fault  :访问缺页

do_syscall_64   :   进入系统调用阶段

x64_sys_ioctl    :   内核对设备驱动程序中的I/O通道进行调用,(https://blog.csdn.net/weixin_71478434/article/details/126551082

nvidia_frontend_unlocked_ioctl : 内核空间下调用nvidia驱动的I/O通道函数

可以看到报错的信息主要是nvidia驱动在进行I/O操作时候引起的。

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


由于我们的这个Dell服务器是可以通过远端管理的,我们通过远程管理界面看看厂家给的监控信息:

可以看到官方厂家给出的报错信息为:

A bus fatal error was detected on a component at slot 6.

A fatal error was detected on a component at bus 216 device 0 function 0.

根据这个信息,我们查看PCIE上的设备信息(https://www.cnblogs.com/augusite/p/16194546.html

可以看到6号槽的设备信息为:

根据设备的地址信息,我们查看下这个地址下的设备到底是什么设备:

可以看到这个报错的设备就是第四张显卡。

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

查看操作系统的内核日志:

可以看到在服务器死机的时候第四个显卡的电源模式转为最高,再根据最初的死机时报错的信息我们可以估计出问题是第四个显卡在满功率运行并且再进行内存和显存的申请、读取等操作,这时候内核陷入了死锁等待。

造成系统死机的直接导火索是第4个显卡运行满负荷,在进行I/O通道操作时造成了NMI的累计,最后形成了死锁,但是其根本原因则是内核与nvidia显卡驱动的不匹配问题。显卡满负荷只是诱因,直接导致这个发生的则是内核太新,驱动太旧:

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

参考:

https://segmentfault.com/a/1190000038258147?sort=newest

记录一次实验室linux系统的GPU服务器死机排查过程——某显卡满负荷导致内核进程超时导致系统死机的更多相关文章

  1. 【记录一个问题】linux + opencv + gpu视频解码,好不容易编译通过,运行又coredump了

    1.首先编译了opencv + cuda   编译选项中使用了以下关于cuvid库的内容: //"nvcuvid" libraryCUDA_nvcuvid_LIBRARY:FILE ...

  2. 记录从裸机到TensorFlow GPU版运行 的配置过程

    实验室原来有一台装Ubuntu Server系统的服务器,安装有tensorflow,在使用过程中经常出现断网.死机.自动关机等毛病,忍无可忍,决定重装系统 配置如下:Dell工作站,Xeon-E5 ...

  3. 小凡的Linux主机与时间服务器同步记录

    小凡的Linux主机与时间服务器同步记录 导读 我们新安装的Linux主机,如果没有做与互联网服务器时间同步的处理的话,当我们使用date命令的时候,我们就看不到当前的时间,只能看到过去的时间.在我们 ...

  4. Linux系统中的硬件问题如何排查?(2)

    Linux系统中的硬件问题如何排查?(2) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工 ...

  5. 面试问题记录 二 (数据库、Linux、Redis)

    面试问题记录 二 (数据库.Linux.Redis) 前言 接着上次的面试问题记录,在最后还有几道问的数据结构方面的知识点要补充 还是那句话:如果文中解释有明显错误,劳烦请及时指正我,在这不胜感激!! ...

  6. linux系统下svn服务器操作命令

    linux系统下svn服务器操作命令 .输出指定文件或URL的内容.  svncat 目标[@版本]…如果指定了版本,将从指定的版本开始查找. svncat -r PREV filename > ...

  7. 记录linux tty的一次软锁排查2

    在复现tty的死锁问题的时候,文洋兄使用了如下的方式: #include <fcntl.h> #include <unistd.h> #include <stdio.h& ...

  8. Linux(2)---记录一次线上服务 CPU 100%的排查过程

    Linux(2)---记录一次线上服务 CPU 100%的排查过程 当时产生CPU飙升接近100%的原因是因为项目中的websocket时时断开又重连导致CPU飙升接近100% .如何排查的呢 是通过 ...

  9. Linux的虚拟内存管理-如何分配和释放内存,以提高服务器在高并发情况下的性能,从而降低了系统的负载

    Linux的虚拟内存管理有几个关键概念: Linux 虚拟地址空间如何分布?malloc和free是如何分配和释放内存?如何查看堆内内存的碎片情况?既然堆内内存brk和sbrk不能直接释放,为什么不全 ...

  10. win10与Ubantu双系统:Linux下开启FTP服务器与创建无线热点(实现文件共享)

    如何在win系统下使用filelizza这个软件搭建FTP服务器,然后建立一个无线局域网,让平板终端连接以后,访问电脑硬盘的文件. 如果是只在win7环境下,一切都很简单,按照上文提供的教程就可以实现 ...

随机推荐

  1. babel 基础概念 & 从零到一写一个 babel 插件

    babel 基础概念 简单来说,做语法转换兼容的, 复杂一点的说,babel可以将我们写的 ES6+ 的Javascript语法转换为向后兼容的语法,以便能够在旧版本的浏览器或者其他环境运行. bab ...

  2. nordic—RTC+PPI定时驱动某外设做非单次触发(本次测试为驱动GPIO口做电平翻转)

    简介:在nordic的开发中使用到RTC时,对于比较通道0/1/2/3的中断来说,如果不进行相关配置(如SDK中例子,使用的RTC比较通道就只能触发一次,不能多次触发),会导致比较中断只进入一次,如果 ...

  3. @ConfigurationProperties(prefix = “xx.xx.xx“) 从配置文件中取值赋给类的属性

    @ConfigurationProperties(prefix = "xx.xx.xx") 从配置文件中取值赋给类的属性 @ConfigurationProperties(pref ...

  4. CountDownLatch demo演示裁判和选手赛跑

    # CountDownLatch demo演示裁判和选手赛跑 package com.example.core.mydemo; import java.util.concurrent.CountDow ...

  5. MySQL入门到实战详细教程

    MySQL介绍 MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品,它广泛应用于各种Web应用程序和网站,MySQL使用结构化查 ...

  6. 一些常见功能的查询sql

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 一些常见功能的查询sql 日期:2019-4-10 阿珏 ...

  7. WPF/C#:如何实现拖拉元素

    前言 在Canvas中放置了一些元素,需要能够拖拉这些元素,在WPF Samples中的DragDropObjects项目中告诉了我们如何实现这种效果. 效果如下所示: 拖拉过程中的效果如下所示: 具 ...

  8. 分享两个内置Google广告位的Typecho主题

    前言 很多项目的开始都是因为情怀和热爱,"为爱发电"是一件很值得尊敬的事情,然而大量"为爱发电"的项目最后却不得不因"难以为继"而被迫停服. ...

  9. 为什么说这款99元国产ARM工业平台,具有“划时代”意义

    随着近年来进口处理器涨价不断,大家会发现市面上已很少见到99元的ARM工业核心板出售. 为满足客户对低成本.高性能的需求,创龙科技推出基于全志T113-i国产ARM工业处理器的"划时代&qu ...

  10. rust项目中通过log4rs将日志写入文件

    java项目中使用最广泛的日志系统应该是log4j(2)了.如果你也是一个Java程序员,可能在写rust的时候会想怎么能顺手地平移日志编写习惯到rust中来. log4rs就是干这个的.从名字就能看 ...