[发明专利]锁竞争的分析方法及设备在审
申请号: | 201610423735.4 | 申请日: | 2016-06-15 |
公开(公告)号: | CN107515789A | 公开(公告)日: | 2017-12-26 |
发明(设计)人: | 吴均平 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 上海百一领御专利代理事务所(普通合伙)31243 | 代理人: | 陈贞健,周建华 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 竞争 分析 方法 设备 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种锁竞争的分析方法及设备。
背景技术
大型C/C++后台系统中,通常对外提供了多个接口,内部使用了大量锁。在进行压力测试时会发现,锁竞争频繁,严重影响性能,如何确定哪些锁竞争最激烈,以及主要是哪些接口调用导致这些锁竞争激烈的,这是性能优化工作开展的前提和目标,但这也是个很困难的问题,通常解决方式是开发人员阅读代码来细致的分析,推测可能竞争激烈的锁,要求开发人员非常熟悉业务逻辑,深入了解代码执行耗时等细节,整个过程费时费力,难以把控。
为了更高效的解决这个问题,现有技术中可以使用linux自带的vmstat,top等工具来确认系统在大压力环境下是否有严重的锁竞争问题,具体可以通过vmstat的context switch,top的sys开销来做初步的判断。虽然,Linux自带工具vmstat的context switch值可以用于判断系统是否存在激烈的锁竞争,但无法给出具体是哪个锁紧张激烈,更无法给出到底是哪个接口调用导致的锁竞争激烈。
另外,Google的gperftools可以反映出哪个函数调用占用的总CPU时间比例大,结合其给出的CPU占用排名,可以大致推测是哪个锁竞争最激烈,但在存在多个锁竞争都比较激烈的场景下,有可能误判,而且无法给出哪个接口调用导致了这些锁竞争,因为多个接口调用很可能使用了底层的同一个锁。
发明内容
本发明的一个目的是提供一种锁竞争的分析方法及设备,能够解决如何确定哪些锁竞争最激烈,以及主要是哪些接口调用导致这些锁竞争激烈的问题。
根据本发明的一个方面,提供了一种锁竞争的分析方法,该方法包括:
获取接口的锁操作记录;
根据所述接口的锁操作记录,确定各个锁的接口竞争状况
进一步的,上述方法中,获取接口的锁操作记录,包括:
工作线程从接口调用请求中获取接口名称,将对应于该接口名称的唯一编号写入所述工作线程的私有数据中;
根据所述接口的唯一编号,从所述工作线程的私有数据获取接口的锁操作记录。
进一步的,上述方法中,工作线程从接口调用请求中获取接口名称,包括:
工作线程从远程调用接口请求中获取接口名称。
进一步的,上述方法中,根据所述接口的唯一编号从所述工作线程的私有数据获取接口的锁操作记录,包括:
在锁构造函数中定义每个锁的唯一标识;
根据所述接口的唯一编号和每个锁的唯一标识,从所述工作线程的私有数据获取接口的锁操作记录。
进一步的,上述方法中,根据所述接口的锁操作记录,确定各个锁的接口竞争状况,包括:
根据所述接口的锁操作记录,在各个锁的内部维护对应的接口竞争状况。
进一步的,上述方法中,在各个锁的内部维护对应的接口竞争状况的步骤之后,还包括:
将各个锁的内部维护的接口竞争状况导出至分析文件中。
进一步的,上述方法中,接口竞争状况包括接口的拿锁的次数、等锁的总时间和持有锁的总时间中的一种或任意组合。
进一步的,上述方法中,确定各个锁的接口竞争状况,包括:
通过gettimeofday()函数确定接口的等锁的总时间和持有锁的总时间。
进一步的,上述方法中,确定各个锁的接口竞争状况,包括:
通过RDTSC指令确定接口的等锁的总时间和持有锁的总时间。
根据本发明的另一方面,还提供了一种锁竞争的分析设备,该设备包括:
获取装置,用于获取接口的锁操作记录;
分析装置,用于根据所述接口的锁操作记录,确定各个锁的接口竞争状况。
进一步的,上述设备中,所述获取装置,用于供工作线程从接口调用请求中获取接口名称,将对应于该接口名称的唯一编号写入所述工作线程的私有数据中;根据所述接口的唯一编号,从所述工作线程的私有数据获取接口的锁操作记录。
进一步的,上述设备中,工所述获取装置,用于工作线程从远程调用接口请求中获取接口名称。
进一步的,上述设备中,所述获取装置,用于在锁构造函数中定义每个锁的唯一标识;根据所述接口的唯一编号和每个锁的唯一标识,从所述工作线程的私有数据获取接口的锁操作记录。
进一步的,上述设备中,所述获取装置,用于根据所述接口的锁操作记录,在各个锁的内部维护对应的接口竞争状况。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610423735.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种内存管理方法及装置
- 下一篇:电子设备的系统