【技术实现步骤摘要】
死锁检测方法、装置以及相关设备
[0001]本申请涉及操作系统领域,尤其涉及死锁检测方法、装置以及相关设备。
技术介绍
[0002]在操作系统中,当多个线程并发执行时,会有一定几率导致两个或两个以上的线程之间出现互相等待而停滞不前的现象,这就是死锁。发生死锁会导致系统效率低下,甚至造成操作系统故障。
[0003]通过锁等待链检查,可以确定操作系统中是否存在死锁。具体地,当锁的持有者为锁的等待者,锁的持有者和锁的等待者之间成环时,则可以确定存在死锁。例如,线程A拥有锁A。线程A在等锁B。线程B拥有锁B。线程B在等锁A。此时,锁A的持有者线程A为锁B的等待者(简写为A
‑
B),锁B的持有者线程B为锁A的等待者(简写为B
‑
A)。并且,线程A和线程B之间成环(A
‑
B
‑
A)。
[0004]为了减小进程间通信(Inter
‑
Process Communication,IPC)所带来的性能损失,可以采用执行和调度分离的机制。在执行和调度分离的场景中,线程被分为执行实体和调度实体两部分。执行实体位于服务端进程。调度实体通过向服务端进程发起远程过程调用(Remote Procedure Call,RPC)来运行执行实体。
[0005]在执行和调度分离的机制中,锁等待链检查的准确性不高。具体地,当锁的持有者不为锁的等待者,锁的持有者和锁的等待者之间不成环时,操作系统中仍可能存在死锁。
技术实现思路
[0
【技术保护点】
【技术特征摘要】
1.一种死锁检测方法,其特征在于,包括:获取第一调度实体的第一RPC调用链,所述第一RPC调用链包括体现执行实体A1调用执行实体B1的调用关系的信息;获取第一服务端进程的第一锁等待链,所述第一锁等待链包括体现执行实体A2等待执行实体A1的等待关系的信息,其中,所述执行实体A2为锁A的等待者,所述执行实体A1为所述锁A的持有者;若所述执行实体B1为所述执行实体A2,或所述执行实体B1和所述执行实体A2存在关联关系,则确定存在死锁;其中,所述关联关系包括调用关系、等待关系、或调用关系和等待关系的集合。2.根据权利要求1所述的方法,其特征在于,所述获取第一调度实体的第一RPC调用链包括:在所述第一调度实体中的内核态空间中获取所述第一RPC调用链;所述获取第一服务端进程的第一锁等待链包括:在所述第一服务端进程中的用户态空间中获取所述第一锁等待链。3.根据权利要求1或2所述的方法,其特征在于,在获取第一调度实体的第一RPC调用链之前,所述方法还包括:获取所述第一调度实体的等锁时长;若所述第一调度实体的等锁时长大于第一阈值,则获取所述第一调度实体的所述第一RPC调用链。4.根据权利要求1至3中任意一项所述的方法,其特征在于,所述执行实体B1是所述第一调度实体调用的最后一个执行实体,在获取第一调度实体的第一RPC调用链之后,所述方法还包括:若所述第一RPC调用链表征所述第一调度实体中不存在死锁,则获取第二服务端进程的第二锁等待链,所述第二锁等待链包括体现所述执行实体B1等待执行实体B2的等待关系的信息,其中,所述执行实体B1为锁B的等待者,所述执行实体B2为所述锁B的持有者。5.根据权利要求4中所述的方法,其特征在于,所述获取第二服务端进程的第二锁等待链包括:根据所述执行实体B1对应的寄存器获取所述执行实体B1的基地址;根据所述执行实体B1的基地址和第一偏移量确定所述执行实体B1的lock
‑
wait字段;获取所述执行实体B1的lock
‑
wait字段中的锁B的基地址,其中,所述锁B的基地址表征所述执行实体B1为锁B的等待者;根据所述锁B的基地址和第二偏移量确定lock
‑
owner字段;获取所述lock
‑
owner字段中所述执行实体B2的标识,其中,所述执行实体B2的标识表征所述执行实体B2为锁B的持有者。6.根据权利要求5中所述的方法,其特征在于,所述执行实体B2的标识为所述执行实体B2的基地址。7.根据权利要求4至6中任意一项所述的方法,其特征在于,在获取第二服务端进程的第二锁等待链之后,所述方法还包括:确定正在运行所述执行实体B2的第二调度实体;
获取所述第二调度实体的第二RPC调用链,所述第二RPC调用链包括体现所述执行实体B2调用所述执行实体A2的调用关系的信息;若所述执行实体B1和所述执行实体A2存在关联关系,则确定存在死锁包括:若存在所述执行实体B1等待所述执行实体B2的等待关系,以及所述执行实体B2调用所述执行实体A2的调用关系,则确定存在死锁。8.根据权利要求1至7中任意一项所述的方法,其特征在于,在确定存在死锁后,所述方法还包括:生成死锁告警,所述死锁告警包括所述第一RPC调用链,所述关联关系和所述第一锁等待链;其中,所述关联关系包括所述第二锁等待链和所述第二RPC调用链。9.根据权利要求1至3中任意一项所述的方法,其特征在于,所述执行实体B1是所述第一调度实体调用的最后一个执行实体,在获取第一调度实体的第一RPC调用链之后,所述方法还包括:若所述第一RPC调用链表征不存在死锁,则获取第二服务端进程的第二锁等待链;若所述第二锁等待链表征所述执行实体B1不是锁B的等待者,则开始第三调度实体的死锁检测。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:生成告警,所述告警包括所述第一RPC调用链,所述告警表征所述第一调度实体处于死循环或阻塞状态。11.一种死锁检测装置,其特征在于,包括:第一获取模块,用于获取第一调度实体的第一RPC调用链,所述第一RPC调用链包括体现执行实体A1调用执行实体B1的调用关系的信息;第二获取模块,用于获取第一服务端进程的第一锁等待链,所述第一锁等待链包括体现执行实体A2等待执行实体A1的等待关系的信息,其中,所述执行实体A...
【专利技术属性】
技术研发人员:王楠,陈立福,何绍亮,张建华,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。