[发明专利]一种数据并发竞争冲突检测分析方法及系统有效
申请号: | 202210023261.X | 申请日: | 2022-01-10 |
公开(公告)号: | CN114035970B | 公开(公告)日: | 2022-04-22 |
发明(设计)人: | 赵熙 | 申请(专利权)人: | 南京云信达科技有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210000 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据 并发 竞争 冲突 检测 分析 方法 系统 | ||
本发明公开了一种数据并发竞争冲突检测分析方法及系统,涉及数据竞争分析技术领域。该方法包括:发送mutex互斥资源接口的监控指令;对监控指令进行处理,创建对应mmap内存存储区,并对对应的mutex互斥资源接口进行hook;当线程访问mutex互斥资源接口时,判断内存存储区中是否存在当前的mutex互斥资源接口地址,如果否,则对mmap内存存储区中的数据进行更新,当mmap内存存储区中持有count为负时,获取并根据当前锁持有者的线程情况信息采用对应的死锁检测方法进行死锁判定,进行异常输出。本发明可有效解决生产实际中大量隐秘的内存操作并发竞争问题。
技术领域
本发明涉及数据竞争分析技术领域,具体而言,涉及一种数据并发竞争冲突检测分析方法及系统。
背景技术
基于多处理的系统中汇集多个CPU,但是共享内存子系统,无法避免的带来数据竞争。竞争同步不当的时候,会带来各种数据异常,这类问题一直很难调试和定位。传统方式一般是对存在竞争的临界资源进行互斥锁的操作等,锁的冲突加剧,从而导致多CPU处理的优势明显下降。死锁检测的方式方法充满多样性,单一的方式检测已经难以满足复杂系统的死锁冲突检测。小规模的程序检测死锁相对生产而言是相对容易发现的,大型复杂的系统、分布式的复杂系统中如何发现死锁变得极其困难,以及嵌套递归等等复杂场景造成的死锁更是在静态扫描过程难以检测。其中大型系统或者分布式应用中对于一个持有某个资源的线程,等待另一个或者多个持有自己等待自己持有资源的状态,这种死锁的判定异常困难。往往生产出现这类问题又无法定位触发条件。大量的生产业务系统往往需要既满足性能需求又能对异常的竞争进行追踪定位,因此,亟需提供一种新的分析检测手段,解决生产实际中大量隐秘的内存操作并发竞争问题。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明实施例提供一种数据并发竞争冲突检测分析方法及系统,可有效解决生产实际中大量隐秘的内存操作并发竞争问题。
本发明的实施例是这样实现的:
第一方面,本发明实施例提供一种数据并发竞争冲突检测分析方法,包括以下步骤:
S1、基于系统临界资源保护接口情况信息生成并发送mutex互斥资源接口的监控指令;
S2、对监控指令进行处理,创建对应mmap内存存储区,并对对应的mutex互斥资源接口进行hook;
S3、当线程访问mutex互斥资源接口时,判断内存存储区中是否存在当前的mutex互斥资源接口地址,如果是,则结束;如果否,则对mmap内存存储区中的数据进行更新,并进入步骤S4;
S4、当mmap内存存储区中持有count为负时,获取并根据当前锁持有者的线程情况信息采用对应的死锁检测方法进行死锁判定,生成死锁检测结果,并进行异常输出。
为了解决现有技术中的无法对数据并发竞争进行精准分析的技术问题,通过对系统的线程创建接口、互斥锁进行钩子回调,不同于传统的复写方式,本发明极大的减少了开销。通过在系统层hook需要死锁检测的临界资源保护接口,通过mmap映射动态检测存储区,依据一个持有某个资源的线程,等待其它线程持有资源或者多个等待已被持有资源的不可获取状态的这种死锁的判定,采用基于多位图逻辑辅助判定的方式,能够在极低的开销内判定死锁,并且能够捕获死锁过程的资源情况,方便系统诊断。
基于第一方面,在本发明的一些实施例中,上述存储区包括锁地址链表、资源持有者位图和等待资源位图。
基于第一方面,在本发明的一些实施例中,上述锁地址链表包括计数器count、时间戳、线程id和线程位图。
基于第一方面,在本发明的一些实施例中,上述步骤S3包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京云信达科技有限公司,未经南京云信达科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210023261.X/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置