GPU技术支持-事务篇-问题排查思路

前语

转载请附上原文出处链接

稀土掘金本文链接:/spost/72395…

CSDN本文链接:blog.csdn.net/qq_43252610…

概述

本文为个人在平时排查问题时的思路总结,以下思路仅供参考。

由于本人为软件工程师,经验总结更倾向于软件思想。

思路

思路不复杂,对于很多人来说或许很简略,总结下来就一句话:

规模从大到小,不变中寻觅变化,变化中总结不变

常用办法:比照法

排查问题过程中,用的最多的就是比照法。经过比照的差异性来缩小问题规模,定位到问题点。

例如:

  • 反常、正常状况比照:正常状况和问题状况的各类状况比照。
  • 同类、同类型产品比照:产品替换成同类型、同批次或许其他厂家类似产品,调查问题是否消失。
  • 产品版别比照:不同软件、硬件版别比照,确定问题是否由某一版其他修正引进。

注意:存在设备替换、版别改变等状况改变时,尽量需求保持单一变量改变

呈现机遇:问题何时呈现?

呈现机遇对一些状况下的问题排查有相当大的参考价值。

  • 正常运用一段时间,问题忽然呈现:

    问题呈现前是否存在某些状况变化,主要重视这些变化。

  • 设备第一次运用就存在该问题:

    呈现机遇无参考价值,正常流程排查

影响规模:个例or共性?

看到一个问题,常常需求承认问题的影响规模。不同的影响规模偏重的排查方向和重心也不同:个例问题针对个例状况单独剖析,在类似的环境中找不同;共性问题则需求在不同的复现环境、机遇下总结复现问题时的共同点。

个例问题

个例问题指的是该问题在同批次、同类型设备仅一台(或许极少量设备)呈现的问题。一般软件环境简略存在差异,也就简略存在个例问题。个例问题需求和正常设备比照寻觅差异,在差异中定位问题。

如果需求找到根因,问题环境需求保存,则需求正向排查、运用其他环境测验复现问题、设备中部分组件替换验证等等办法。

如果只需求解决问题,可以先对软件环境进行统一,如果软件环境统一后问题仍然存在,可以考虑需求硬件介入排查。

共性问题

共性问题指的是问题在同类型、同批次设备中很多或许全部呈现的问题。共性问题一般需求正向排查,首先承认问题大约规模,一步步缩小规模去定位问题。

共性问题也可以运用同类产品比照、产品版别比照来从旁边面去缩小问题规模。

例如:

  • 显现相关问题在硬件上可以替换显现器、线缆、显卡等设备验证。软件上可以替换显卡驱动版别验证。
  • 图形运用运转问题在硬件上可以替换显卡设备验证。软件上可以运转同类运用比照、晋级(降级)显卡驱动、替换窗口管理器等等办法验证。

问题概率:偶发or必现?

问题的呈现概率,一般也代表着问题的排查难度。一般来说,偶发问题排查难度相对大,必现问题排查难度相对小。

偶发问题

偶发问题软件上需求保存问题复现时的状况信息(日志),跟未复现问题时的状况信息做比照(日志),找到其中的不同点,锁定大约的问题规模。

依据问题规模,测验去做相关改动增大复现问题的概率,如果改动点可以增大复现概率,阐明改动方向是正确的。后续理清原理之后,理论上也能经过相关修正把偶发问题变为必现问题。

如果日志比照无法发现反常点,也没办法去增大问题复现概率,经过上述的办法找不到问题的大约规模,可以考虑直接先做大规模的变化:例如替换硬件、替换系统等等办法,先从大的规模承认怀疑点。

必现问题

必现问题一般是正向排查,依据问题现有的报错、日志等等信息,承认问题规模,之后进一步承认问题点。

比照法相同适用于必现问题的排查,经过同类替换,测验将必现问题变为不复现。从大的规模上锁定相关的或许问题点。

问题阻隔:找到有用的变量组合

问题阻隔简略来说就是想办法削减影响的变量。一步步除掉无关变量,将问题规模不断缩小,可以将问题约束在某一规模内。

比方某问题有变量A、B、C、D、E、F、G,其中变量E、G、F同时存在时,问题会发生。那么变量E、G、F就是有用的变量组合。

GPU技术支持-业务篇-问题排查思路

其实影响规模、问题概率的章节中已经在运用问题阻隔的办法。下面举一个简略的例子来作阐明:

  • 问题现象:一台主机,运转某个游戏溃散了

  • 硬件变量:显卡、CPU、内存、硬盘

  • 软件变量:游戏、操作系统、显卡驱动

  • 缩小规模:

    1. 运转其他游戏,是否也会溃散?(显卡驱动、操作系统不变)
    2. 运用其他操作系统运转游戏,是否也会溃散?(游戏、显卡驱动版别不变)
    3. 运用其他版其他显卡驱动运转游戏,是否也会溃散?(游戏、操作系统不变)
    4. ……

当经过缩小规模去掉其他无关变量,找到有用的变量组合后,整个问题的排查规模就已经缩小了,有利于接下来的问题排查。

变量拆分:进一步定位问题点

经过问题阻隔的办法能找到有用的变量组合,那么如何深入下去进一步排查呢?

这个时候就需求对变量进行拆分,将变量拆分成不同的子变量,对子变量进行验证或许剖析,进一步深入去缩小规模。

GPU技术支持-业务篇-问题排查思路

下面举一个例子来阐明:

在某个视频解码运用的排查过程中,呈现窗口中无图画显现问题,开始定位问题只和运用相关。

运用可以简略分成解码、上屏两个部分,相当于运用这个变量拆分出了解码、上屏两个子变量。接下来就需求对两个子变量进行验证。

运用-变量拆分:

  • 子变量1:解码
  • 子变量2:上屏

运用-变量验证:

  • 解码验证:解码数据给到上屏时是否正常?将解码数据转存下来验证
  • 上屏验证:上屏逻辑是否正常?运用简略图片上屏验证

转存的解码数据正常,运用简略图片上屏仍然无显现,承认问题在上屏逻辑中,持续对上屏的变量进行拆分,拆分为窗口创立、纹路绑定、上屏制作几个子变量。

上屏-变量拆分:

  • 子变量1:窗口创立
  • 子变量2:纹路绑定
  • 子变量3:上屏制作

上屏-变量验证:

  • 窗口创立验证:窗口创立是否正常?窗口是否正常显现
  • 纹路绑定验证:纹路绑定是否有正确的回来值?回来值符合标准
  • 上屏制作验证:制作部分是否正常改写?制作时的矩阵是否

最后定位问题在上屏制作部分,制作部分改写逻辑有误,未能正常改写。

实际问题举例

显现黑屏问题排查

客户反应遇到开机后遇到屏幕黑屏无显现问题。依照文中的思路进行排查。

排查思路:

  • 影响规模:共性问题

    据客户反应运用同批次的主板、显卡,问题仍旧存在

  • 问题概率:必现问题

    每次开机均呈现该问题

  • 问题阻隔:

    显现问题一般跟以下几个变量有关:显卡(强关联显卡驱动)、显现器、线缆

    验证1:其他变量不变,替换其他品牌显卡,问题仍旧存在

    验证2:其他变量不变,替换其他品牌显现器,问题仍旧存在

    验证3:其他变量不变,替换其他线缆,问题解决

该问题可以定位为线缆问题

运用闪退问题排查

客户反应遇到运用闪退问题。依照文中的思路进行排查。

排查思路:

  • 影响规模:共性问题

    据客户反应运用同批次的主板、显卡,问题仍旧存在

  • 问题概率:必现问题

    每次运用发动均呈现该问题

  • 问题阻隔:

    运用闪退问题一般跟以下几个变量有关:显卡(强关联显卡驱动)、运用、CPU、操作系统

    验证1:其他变量不变,替换其他品牌显卡,问题不存在

    验证2:其他变量不变,替换其他类似运用,问题不存在

    不需求进行下一步了,直接把变量控制在显卡、运用上面了

  • 变量拆分:

    由于是软件报错问题,暂时不考虑显卡硬件上的问题,只对显卡驱动进行变量拆分

    显卡驱动:核内、3D

    同时运用层闪退可以运用GDB调试定位大约的问题点,运用GDB后定位问题在极点数据相关部分,省去了运用中子变量的问题阻隔过程。

    运用:极点数据读取、极点缓冲区请求、极点数据传输到显存

  • 验证:

    显卡驱动部分比较繁杂,暂时不进行验证,先从运用层面入手

    极点数据读取验证:极点数据正常读取,和文件中存储的数据一致

    极点缓冲区请求验证:运用请求的极点缓冲区较多。对一切请求后回来的极点缓冲区ID进行打印,发现后边一部分ID回来不符合规范。

    问题根本定位,极点缓冲区请求失利导致运转运用后呈现闪退。估测是显卡驱动存在一个最大的极点缓冲区请求约束。

    回溯验证-运用:削减程序的极点缓冲区请求,程序正常运转

    回溯验证-驱动:走读驱动代码,发现确实存在最大极点缓冲区请求上限。超过上限时ID回来0。

  • 解决方案

    运用对极点数据进行合批,削减需求请求的极点缓冲区数量

该问题可以定位为运用问题,运用需求对反常回来值进行判断,而不是直接运用

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。