一种获取线程读写阻塞信息的方法及装置制造方法及图纸

技术编号:36182002 阅读:61 留言:0更新日期:2022-12-31 20:39
本申请公开了一种获取线程读写阻塞信息的方法及装置,涉及计算设备领域,在高效、准确的获取线程阻塞信息的前提下,降低对使用人员的专业技术要求。具体方案为:通过在读写锁的申请接口注册的探测点,获取调用读写锁的线程成功获取读写锁的时间点;确定当前持用该读写锁的线程的持锁时间;若第一线程的持锁时间大于或等于第一阈值,输出第一线程的阻塞信息。输出第一线程的阻塞信息。输出第一线程的阻塞信息。

【技术实现步骤摘要】
一种获取线程读写阻塞信息的方法及装置


[0001]本申请涉及计算设备领域,尤其涉及一种获取线程读写阻塞信息的方法及装置。

技术介绍

[0002]读写锁是对共享资源的读、写操作分别加锁控制的一种锁,以提高读操作的并发性。因此被广泛应用于读多写少的场景。在应用读写锁的场景中,只允许读操作与读操作并发(即同时访问共享资源)。
[0003]当一个操作持锁访问共享资源时,不能与其并发的操作的锁请求将被阻塞。异常的长时间持有锁,会导致锁请求被阻塞的线程对应的业务受到影响,因此,需要输出线程的阻塞信息,以指示线程占用锁期间的行为,用于观测读写锁、定位确定阻塞原因,便于从业务角度处理异常,提高用户的业务体验。

技术实现思路

[0004]本申请提供一种获取线程读写阻塞信息的方法及装置,提高获取线程阻塞信息效率。
[0005]为达到上述目的,本申请实施例采用如下技术方案:
[0006]第一方面,提供一种获取线程读写阻塞信息的方法,该方法可以包括:通过在读写锁的申请接口注册的探测点,获取调用读写锁的线程成功获取读写锁的时间点;确定当前持用该读写锁的线程的持锁时间;若第一线程的持锁时间大于或等于第一阈值,输出第一线程的阻塞信息;第一线程为当前持用读写锁的任一线程。
[0007]通过本申请提供的方案,在读写锁的申请接口注册了探测点,通过该探测点就可以自动获取线程成功获取读写锁的时间点,然后准确获取线程的持锁时间,在持锁过久时自动输出线程的阻塞信息。整个过程自动实现,可以无需对日志进行二次处理,减少了输出的日志量,大大提高了获取线程阻塞信息的效率。
[0008]进一步的,本申请实施例提供的方案中,整个过程自动实现,用户无需感知大量的接口文件,也无需了解系统的实现机制,大大降低了对使用人员的专业技术要求。
[0009]在一种可能的实现方式中,通过读写锁的申请接口注册的探测点,获取调用读写锁的线程成功获取读写锁的时间点,具体可以实现为:通过该探测点探测申请接口的指令信息;当在第一时间点,探测点探测到第一指令信息,将第一时间点作为第二线程成功获取该读写锁的时间点。其中,第一指令信息用于向第二线程分配该读写锁。
[0010]在一种可能的实现方式中,确定当前持用读写锁的线程的持锁时间,具体可以实现为:在检测时刻,确定在检测时刻当前持用读写锁的线程的持锁时间,一个线程的持锁时间为检测时刻减该线程成功获取读写锁的时间点。根据实际场景配置检测时刻,以实现按照需求获取线程的阻塞信息。
[0011]在一种可能的实现方式中,周期性的设置有多个检测时刻。通过周期性的进行检测,以及时获取线程的阻塞信息,解决系统阻塞问题。
[0012]在一种可能的实现方式中,本申请提供的方法还可以包括:若连续N次检测时刻均检测到同一线程持用读写锁,则减小相邻两个检测时刻的间隔时间。N大于或等于2。通过减小相邻两个检测时刻的间隔时间,可以更加及时的获取线程的阻塞信息,以解决系统阻塞问题,提高了解决阻塞问题的效率,也将更好的提高用户体验。
[0013]在一种可能的实现方式中,本申请提供的方法还可以包括:将持有读写锁的线程的标识,添加至持锁列表中。确定当前持用读写锁的线程的持锁时间,包括:确定持锁列表中的每个标识指示的线程的持锁时间。通过配置持锁列表,以记录持用读写锁的线程的标识,可以快速确定持锁的线程,提高了方案的效率。
[0014]在一种可能的实现方式中,本申请提供的方法还可以包括:若线程成功释放该读写锁,将释放该读写锁的线程的标识从持锁列表中删除。
[0015]在一种可能的实现方式中,本申请提供的方法还可以包括:通过探测点,获取调用读写锁的线程申请读写锁的时间点。在第三线程成功获取读写锁后,若第三线程等待锁的时间大于或等于第二阈值,输出第四线程的阻塞信息。该等待锁的时间为第三线程成功获取读写锁的时间点减去第三线程申请读写锁的时间点。第三线程等待读写锁的过程中第四线程持用该读写锁。通过线程等锁时间来确定其他线程持锁状况,进而获取其他线程的阻塞信息,可以更加高效、准确的获取线程阻塞信息。
[0016]在一种可能的实现方式中,输出第一线程的阻塞信息,具体可以实现为:根据第一线程的阻塞信息,确定阻塞原因,该阻塞原因包括第一线程持锁期间执行的流程使用的资源和/或这些流程使用的硬件;输出阻塞原因。以便于用户快速定位并解决阻塞。
[0017]在一种可能的实现方式中,上述输出阻塞原因,具体可以实现为:通过操作系统(operating system,OS)、基板管理控制器(baseboard management controller,BMC)、基本输入输出系统(basic input output system,BIOS)中一个或多个,输出该阻塞原因。
[0018]第二方面,提供一种获取线程读写阻塞信息的装置,该装置可以包括:获取单元、确定单元以及输出单元。其中:
[0019]获取单元,用于通过在读写锁的申请接口注册的探测点,获取调用读写锁的线程成功获取读写锁的时间点。
[0020]确定单元,用于确定当前持用该读写锁的线程的持锁时间。
[0021]输出单元,用于若第一线程的持锁时间大于或等于第一阈值,输出第一线程的阻塞信息;第一线程为当前持用读写锁的任一线程。
[0022]通过本申请提供的方案,在读写锁的申请接口注册了探测点,通过该探测点就可以自动获取线程成功获取读写锁的时间点,然后准确获取线程的持锁时间,在持锁过久时自动输出线程的阻塞信息。整个过程自动实现,基本上无需对日志进行二次处理,减少了输出的日志量,大大提高了获取线程阻塞信息的效率。
[0023]进一步的,本申请实施例提供的方案中,整个过程自动实现,用户无需感知大量的接口文件,也无需了解系统的实现机制,大大降低了对使用人员的专业技术要求。
[0024]在一种可能的实现方式中,上述获取单元具体用于:通过该探测点探测申请接口的指令信息;当在第一时间点,探测点探测到第一指令信息,将第一时间点作为第二线程成功获取该读写锁的时间点。其中,第一指令信息用于向第二线程分配该读写锁。
[0025]在一种可能的实现方式中,上述确定单元具体用于:在检测时刻,确定在检测时刻
当前持用读写锁的线程的持锁时间,一个线程的持锁时间为检测时刻减该线程成功获取读写锁的时间点。根据实际场景配置检测时刻,以实现按照需求获取线程的阻塞信息。
[0026]在一种可能的实现方式中,周期性的设置有多个检测时刻。通过周期性的进行检测,以及时获取线程的阻塞信息,解决系统阻塞问题。
[0027]在一种可能的实现方式中,该装置还可以包括控制单元,用于若连续N次检测时刻均检测到同一线程持用读写锁,则减小相邻两个检测时刻的间隔时间。N大于或等于2。通过减小相邻两个检测时刻的间隔时间,可以更加及时的获取线程的阻塞信息,以解决系统阻塞问题,提高了解决阻塞问题的效率,也将更好的提高用户体验。
[0028]在一种可能的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种获取线程读写阻塞信息的方法,其特征在于,所述方法包括:通过在读写锁的申请接口注册的探测点,获取调用所述读写锁的线程成功获取读写锁的时间点;确定当前持用所述读写锁的线程的持锁时间;若第一线程的持锁时间大于或等于第一阈值,输出所述第一线程的阻塞信息;所述第一线程为当前持用所述读写锁的任一线程。2.根据权利要求1所述的方法,其特征在于,所述通过读写锁的申请接口注册的探测点,获取调用读写锁的线程成功获取读写锁的时间点,包括:通过所述探测点探测所述申请接口的指令信息;当在第一时间点,所述探测点探测到第一指令信息,将所述第一时间点作为所述第二线程成功获取所述读写锁的时间点;其中,所述第一指令信息用于向所述第二线程分配所述读写锁。3.根据权利要求1或2所述的方法,其特征在于,所述确定当前持用所述读写锁的线程的持锁时间,包括:在检测时刻,确定在所述检测时刻当前持用所述读写锁的线程的持锁时间,一个线程的所述持锁时间为所述检测时刻减该线程成功获取读写锁的时间点。4.根据权利要求1

3任一项所述的方法,其特征在于,周期性的设置有多个检测时刻。5.根据权利要求1

3任一项所述的方法,其特征在于,所述方法还包括:若连续N次检测时刻均检测到同一线程持用所述读写锁,则减小相邻两个检测时刻的间隔时间;所述N大于或等于2。6.根据权利要求1

5任一项所述的方法,其特征在于,所述方法还包括:将持有所述读写锁的线程的标识,添加至持锁列表中;所述确定当...

【专利技术属性】
技术研发人员:陈玮
申请(专利权)人:超聚变数字技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1