[发明专利]进程持锁检测方法及其电子设备和可读介质在审
申请号: | 202011457088.1 | 申请日: | 2020-12-10 |
公开(公告)号: | CN114625545A | 公开(公告)日: | 2022-06-14 |
发明(设计)人: | 龚晨 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F11/34;G06F9/50 |
代理公司: | 上海音科专利商标代理有限公司 31267 | 代理人: | 夏峰 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 进程 检测 方法 及其 电子设备 可读 介质 | ||
本申请涉及计算机领域,公开了一种进程持锁检测方法及其电子设备和可读介质。本申请的进程持锁检测方法包括:确定电子设备的第一进程所处进程状态满足系统保护触发条件,并且第一进程在等待使用电子设备的共享内存的读写锁;从第一进程所处的线程组中选择出多个第二进程,其中第二进程不在等待读写锁并且处于持锁进程状态;保存多个第二进程的进程信息。因此,采用本申请的进程持锁检测方法,最终内核打印的进程栈的数量大大减少,极大降低了开发人员的排查工作量,也利于精准定位持锁进程。
技术领域
本申请涉及计算机领域,尤其涉及一种进程持锁检测方法及其电子设备和可读介质。
背景技术
内核用于管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。例如,多个进程共享内存会存在竞争问题,内核为了保护共享内存,提供了一种读写锁机制,即只有持有读写锁的进程才能访问共享内存进行读写操作,在Linux内核中线程组内所有进程共享内存空间,用于保护线程组的内存空间的读写锁叫做mmap_sem锁(memory map_semaphore,内存映射_信号量),
如图1所示,一个线程组的多个进程在等待mmap_sem锁(下文称为等锁进程),等锁进程都处于不可中断睡眠状态(即D状态),而持有mmap_sem锁的进程(下文称为持锁进程)处于可执行状态(即R状态),处于R状态的持锁进程占用共享内存执行读写操作。
但是当线程组中持锁进程长时间持有mmap_sem锁时,可能导致线程组内其他等锁进程长时间等待mmap_sem锁,即长时间处于D状态。如果等锁进程处于D状态时间超过时间阈值(例如,90秒),内核会打印系统中所有处于D状态或R状态进程的进程栈,再触发系统的保护机制(例如,关机重启)。
开发人员需要分析系统日志中内核打印的所有处于D状态或R状态进程的进程栈,找到唯一持有mmap_sem锁的进程,然后优化该持锁进程的程序代码以降低宕机几率。但是系统中处于D状态或R状态的进程成百上千个,而系统日志的容量有限,这些都给开发人员的排查工作带来极大困难。
发明内容
本申请实施例提供了一种进程持锁检测方法及其电子设备和可读介质,采用本申请的进程持锁检测方法,最终内核打印的进程栈的数量大大减少,极大降低了开发人员的排查工作量,也利于精准定位持锁进程。
第一方面,一种电子设备的进程持锁检测方法,包括:
确定所述电子设备的第一进程所处进程状态满足系统保护触发条件,并且所述第一进程在等待使用所述电子设备的共享内存的读写锁;
从所述第一进程所处的线程组中选择出多个第二进程,其中所述第二进程不在等待所述读写锁并且处于持锁进程状态;
保存所述多个第二进程的进程信息。
在本申请的一些实施例中,内核创建守护进程khungtaskd,用于遍历系统中是否存在处于不可中断睡眠状态的第一进程。
在上述第一方面的一种实现中,所述电子设备的系统使用的内核为Linux内核。
在本申请的一些实施例中,Linux内核至少包含进程管理模块、内存管理模块、虚拟文件系统和网络子系统。
在上述第一方面的一种实现中,所述系统保护触发条件包括:
进程处于不可中断睡眠状态的持续时间超过预定时间阈值。
在本申请的一些实施例中,预定时间阈值可以由用户或系统设置,例如,预定时间阈值设置为90秒。
在上述第一方面的一种实现中,所述并且所述第一进程在等待使用所述电子设备的共享内存的读写锁通过以下方式得出:
遍历等锁链表中是否存在所述第一进程的结构体指针;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011457088.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:投影系统以及用于影像拼接的取像数量选择方法
- 下一篇:一种节水止逆阀