CN102301343A - 软件监测方法、装置以及系统 - Google Patents

软件监测方法、装置以及系统 Download PDF

Info

Publication number
CN102301343A
CN102301343A CN201180001455XA CN201180001455A CN102301343A CN 102301343 A CN102301343 A CN 102301343A CN 201180001455X A CN201180001455X A CN 201180001455XA CN 201180001455 A CN201180001455 A CN 201180001455A CN 102301343 A CN102301343 A CN 102301343A
Authority
CN
China
Prior art keywords
address
lock program
program
information
described lock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201180001455XA
Other languages
English (en)
Other versions
CN102301343B (zh
Inventor
王超
余加强
陈明宇
黄永兵
张文力
崔泽汉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yuntu Chongqing Business Information Consulting Service Co ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN102301343A publication Critical patent/CN102301343A/zh
Application granted granted Critical
Publication of CN102301343B publication Critical patent/CN102301343B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种软件监测方法、装置以及系统,在锁程序被调用或释放时记录锁程序地址以及线程标识,所述线程标识用于标识使用所述锁程序的线程;根据所述锁程序地址以及所述线程标识获得内存地址,并通过所述内存地址访问内存;侦听内存总线以识别所述访问内存的信号并根据所述信号获取所述锁程序的追踪信息,所述锁程序的追踪信息包括所述内存地址以及访问时间信息;根据所述追踪信息获得所述锁程序的使用信息,所述使用信息包括所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间,所述占用锁程序的时间根据所述访问时间信息确定。

Description

软件监测方法、装置以及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种软件监测方法、装置以及系统。
背景技术
在使用并行技术的软件系统中,例如应用多线程技术以及多核处理技术等软件系统,软件系统中程序的串行部分成为整个系统性能的瓶颈因素,而串行部分主要体现在各种锁程序所保护的临界区,包括信号量,互斥锁程序(Mutex),自旋锁程序(Spinlock),开关中断,读写锁程序等等。如果能够详细、准确地统计串行部分中各种锁程序的相关信息,则可以为整个软件系统的性能优化提供数据依据。
在现有技术条件下常见的一种软件监测方法是通过软件自身会给锁程序函数进行插桩替换的方式来统计软件的锁程序使用信息。一些软件软件监测工具如Valgrind Mutextrace等,普遍使用这种软件插桩的软件监测技术,其过程一般为先替换或增加被检测目标软件的某段指令(通常为函数的入口和返回)为检测程序的指令;再强制执行检测程序,以获取锁程序的相关信息。
然而,这种软件监测方式需要修改目标程序并强制执行监测程序,这样在运行软件系统的同时增加系统的运行负担。对于较为大型的软件系统来说,软件系统具有数量庞大的临界区和对应管理临界区的锁程序,而利用现有的插桩方式进行软件分析的话,插桩的数量也是非常庞大的,这样致使软件系统通常会在高负荷的环境下进行测试和数据搜集,带来较大的系统开销,并严重干扰应用程序的正常运行,追踪导致难以统计出完整而详细的锁程序使用信息。
发明内容
本发明实施例提供一种软件监测方法、装置以及系统,以解决分析过程中引入过大系统开销而致使难以统计出完整而详细的锁程序使用信息的问题。
本发明实施例提供一种软件监测方法,所述方法在锁程序被调用或释放时记录锁程序地址以及使用所述锁程序的线程标识;将所述锁程序地址以及使用所述锁程序的线程标识进行编码转化为内存地址,并通过所述内存地址访问内存;侦听内存总线以识别所述内存地址的访问内存信号并获取所述锁程序的追踪信息,所述锁程序的追踪信息包括所述内存地址以及时间信息;根据所述追踪信息获得所述锁程序的使用信息,所述使用信息包括所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间。
本发明实施例提供一种软件监测装置,包括动态库模块、通信模块、侦听模块以及数据分析模块,其中所述动态库模块用于记录锁程序地址以及使用所述锁程序的线程标识;所述通信模块用于将所述锁程序地址以及使用所述锁程序的线程标识进行编码转化为内存地址并通过所述内存地址访问内存;所述侦听模块用于侦听内存总线以识别所述内存地址的访问内存信号并获取所述锁程序的追踪信息,所述锁程序的追踪信息包括所述内存地址以及时间信息;所述数据分析模块用于根据所述追踪信息获得所述锁程序的使用信息,所述使用信息包括所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间。
上述软件监测方法、装置以及系统只有锁程序地址以及线程标识的记录和编码转化地址通过软件部分实现,而侦听、存储以及分析方面均可以利用旁路硬件来实现,例如,通过在内存接口或插槽上插卡来实现对内存总线的侦听、存储以及分析,而旁路硬件无需对目标程序做任何修改,不占用系统的处理资源,也不影响应用程序的运行环境,从而通过这样软硬结合的方式可以在不带来额外的系统开销的情况下,实现对应系统性能的分析。
附图说明
图1所示为本发明一实施例中软件监测方法的流程示意图。
图2所示为本发明一实施例中软件监测方法的一部分流程示意图。
图3所示为本发明一实施例中软件监测方法的另一部分流程示意图。
图4所示为本发明另一实施例中软件监测装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明一实施例提供一种软件监测方法,主要对系统串行部分的相关信息进行分析,所述分析方法采用非插桩式分析,不对目标程序做任何修改,也不依赖于具体的软件或硬件平台,在分析运行过程中不引入额外的开销,从而可以充分记录分析所需的信息。
如图1所示,本发明实施例提供一种软件监测方法,包括:
步骤101、记录锁程序地址以及线程标识,所述线程标识用于标识使用所述锁程序的线程;
步骤102、根据所述锁程序地址以及使用所述锁程序线程标识获得内存地址,并通过所述内存地址访问内存;
步骤103、侦听内存总线以识别所述访问内存的信号并根据所述信号获取所述锁程序的追踪信息,所述锁程序的追踪信息包括所述内存地址以及访问时间信息;
步骤104、根据所述追踪信息获得所述锁程序的使用信息,所述使用信息包括所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间,所述占用锁程序的时间根据所述访问时间信息确定。
上述步骤101中,所述记录锁程序地址以及线程标识是在重载与所述锁程序相关的函数的过程中进行。通过动态插桩的方式或在程序运行前通过加载自定义的动态连接库的方式,将与锁程序相关的函数进行重载,在重载函数中获取并记录锁程序地址以及线程标识,所述重载函数可以为mutex的pthread_mutex_init、pthread_mutex_lock、pthread_mutex_unlock、pthread_mutex_trylock以及pthread_mutex_destroy等函数。
上述步骤102中,由于Cache(高速缓冲存储器)的作用,多线程程序中对锁程序的访问可能不需要访问内存而直接被在Cache中命中,而通过对内存总线的侦听而在内存总线上监控访问内存操作,没有办法捕获到不访问内存的锁程序变量,而在本实施例的软硬件协同检测机制中,根据锁程序的地址以及使用所述锁程序的线程标识获得一个内存地址,所述获取的内存地址的方式可以是映射或者根据自定编码规则进行编码转换,而所述内存地址被设置为不可缓存,这样通过所述内存地址的访问内存均都能被总线侦听模块捕获到。
当锁程序被调用或释放时,便触发动态库模块记录锁程序的地址以及占用的线程标识,再由通信模块将所述锁程序地址以及占用锁程序的线程标识转化为内存地址,以在所述锁程序被调用的时候通过所述内存地址进行访问内存,所述内存地址为内存上的物理地址。
其中,将所述锁程序地址以及使用所述锁程序的线程标识通过编码转化为内存地址也是主要映射表来实现的,其中具体的编码如下:
  Reserved   Thread ID   Lock Addr   Lock Flag   Reserved
其中字段表示的含义为:
Thread ID:线程标识在线程映射表中的偏移;
Lock Addr:锁程序地址在锁程序地址映射表中的偏移;
Lock Flag:加锁程序或解锁程序的标志;
Reserved1:保留域,指向预留物理内存区域的首地址;
Reserved2:保留域,内存控制器将物理内存地址的低3位屏蔽。
如图2所述上述步骤103中,侦听内存总线并获取所述内存总线中访问地址为所述内存地址的访问信息的步骤进一步包括:
步骤201、预留物理地址空间,以将对所述锁程序地址以及使用所述锁程序的线程标识编码转化的内存地址的访问内存映射为对所述物理地址空间的访问内存;
步骤202、侦听所述内存总线中的访问地址并判断所述访问地址是否映射在所述物理地址空间内;
步骤203、根据判断结果,将映射在所述物理地址空间内的访问内存地址以及时间信息封装成追踪信息;
步骤204、传输所述追踪信息。
上述步骤201中,由被检测主机预留所述物理地址空间,用于作为在侦听过程中所述内存地址的访问内存信号捕获的映射空间,所述物理地址空间由若干段段物理地址组成,在本实施例中所述物理地址空间为两段段物理地址。
上述步骤202和203中,通过映射表识别出内存总线中访问地址为所述锁程序地址以及使用所述锁程序的线程标识编码转化的内存地址,也就是对所述编码转化的内存地址的访问内存映射为对所述物理地址空间的访问内存,具体过程是,如果所述访问内存地址通过映射表的映射在所述所述物理地址空间内,则所述访问内存地址为所述编码转化的内存地址,则捕获所述访问内存地址并记录时间信息进行封装。所述线程的ID以及锁程序编码转化的内存地址。
上述识别所述锁程序地址以及使用所述锁程序的线程标识编码转化的内存地址的步骤在其它实施例中也可以通过注册表来实现,所述注册表储存有所有所述锁程序地址以及使用所述锁程序的线程标识编码转化的内存地址,通过逐一遍历比对来识别当前访问内存地址是否为由所述锁程序相关信息编码转换的地址。
所述映射在所述物理地址空间内的访问内存地址为锁程序地址以及使用所述锁程序的线程标识的编码结果,因此所述映射在所述物理地址空间内的访问内存地址可以反解码为锁程序地址以及线程标识。所述追踪信息还包括序列号(SN)与读写信息(RW),所述时间信息为时间戳(TS),所述追踪信息可采用如下格式:
  Bit   Description
  95~84   Sequence Number
  83~30   Time Stamp
  29   Read/Write
  28~0   Physical Address
1、序列号(Sequence Number)为12-bit,采用循环计数,用于在分析的时候检测有没有丢失。
2、时间戳(Time Stamp)为54-bit,所述时间戳通过时钟校准来记录锁程序调用或加锁程序以及锁程序释放或解锁程序的时间,从而通过时间戳统计锁程序被线程占用的时间。所述时间的记录是通过侦听并捕获内存总线中加锁程序或解锁程序的信号来触发的,也就是通过侦听内存总线中锁程序状态变化(调用或释放)的信号来启动时钟记录捕获信号的时间,再计算出锁程序调用和释放的时间差便是锁程序被占用的时间。所述时间戳采用板上400MHz时钟计时,可以保证连续计时521天而不溢出,由于这个时钟频率恒定不变,因此统计出来的时间信息更为准确,且可以和系统时钟校准,提高准确性。
3、读写(Read/Write)为1-bit,标识此次访问内存是读或者写。
4、访问内存地址(Physical Address),所述锁程序地址以及线程标识编码转化的内存地址。
上述步骤103中的侦听过程通过在内存接口或插槽上插卡来实现对内存总线的侦听。
针对步骤102编码以及步骤103的追踪信息获取过程,上述步骤104中根据所述追踪信息获得所述锁程序的使用信息,如图3所示,其中所述获得所述锁程序的使用信息包括以下步骤:
步骤301、将所述追踪信息解封装获得所述内存地址以及所述锁程序的时间信息;
步骤302、将所述内存地址反解码为锁程序地址以及使用所述锁程序的线程标识,以获得所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间分布。
所述使用信息包括锁程序的地址、调用锁程序的线程标识以及调用和释放锁程序的时间戳;所述软件监测是对锁程序的使用信息进行统计处理,从而获得各个线程占用锁程序的时间分布,从而为系统的性能改进提供统计数据支持。
本发明一实施例的软件监测方法在将所述地址的访问内存信息反解码为使用所述锁程序的使用信息以根据所述使用信息进行性能分析的步骤104之前还包括储存所述锁程序的追踪信息的步骤。在获得所述锁程序的追踪信息后,将所述追踪信息储存于如硬盘等存储设备上,以便进行离线分析,从而在不占用系统的处理资源和不产生额外开销的情况下完成系统的软件监测。
可见,上述实施例的软件监测方法只有锁程序地址以及线程标识的记录和编码转化地址通过软件部分实现,而侦听、存储以及分析方面均可以利用旁路硬件来实现,例如,通过在内存接口或插槽上插卡来实现对内存总线的侦听、存储以及分析,而旁路硬件无需对目标程序做任何修改,不占用系统的处理资源,也不影响应用程序的运行环境,从而通过这样软硬结合的方式可以在不带来额外的系统开销的情况下,实现对应系统性能的分析。
如图4所示,本发明另一实施例中一种软件监测装置,包括动态库模块、通信模块、侦听模块以及数据分析模块,其中:
所述动态库模块用于记录锁程序地址以及使用所述锁程序的线程标识,通过动态插桩的方式或在程序运行前通过加载自定义的动态连接库的方式,将与锁程序相关的函数进行重载,在重载函数的过程中获取并记录锁程序地址以及线程标识。
所述通信模块用于将所述锁程序地址以及使用所述锁程序的线程标识进行编码转化为一内存地址进行访问内存,当锁程序被调用时,便触发动态库模块记录锁程序的地址以及占用的线程标识,再由通信模块将所述锁程序地址以及占用锁程序的线程标识转化为内存地址,以在所述锁程序被调用或释放时通过所述内存地址进行访问内存。
所述侦听模块用于侦听内存总线并识别所述内存地址的访问内存信号以获取所述锁程序的追踪信息,首先由被监测主机或系统预留两段物理地址空间,以通过映射表建立所述锁程序地址以及使用所述锁程序的线程标识编码转化的内存地址与所述物理地址空间之间的映射关系;然后通过侦听来识别内存总线中映射在所述物理地址空间内的访问地址,并将所述访问地址以及时间信息封装成追踪信息;最后向数据分析模块发送所述追踪信息。所述时间信息为所述侦听模块捕获所述锁程序因被调用或释放而被编码转化为内存地址进行访问内存时产生的信号的时间,也就是所述锁程序被调用或释放的时间戳。所述侦听模块包括时钟,以通过时钟校准来为所述访问地址的捕获标注时间信息。
所述数据分析模块用于将所述追踪信息解码为所述锁程序的使用信息以根据所述使用信息进行性能分析,所述追踪信息包括所述地址信息以及时间信息,其中所述数据分析模块将所述追踪信息中的所述地址信息反解码为所述锁程序地址以及调用锁程序的线程标识,以获得所述锁程序的使用信息,所述使用信息包括锁程序地址、调用锁程序的线程标识以及调用和释放锁程序的时间戳;所述软件监测是对锁程序的使用信息进行统计处理,从而获得各个线程占用锁程序的时间分布,从而为系统的性能改进提供统计数据支持。
本发明另一实施例的软件监测装置还包括一数据存储模块,用于接受并存储所述侦听模块产生的所述追踪信息。所述数据存储模块可以是主机或系统的硬盘等存储设备,通过硬盘存储所述追踪信息,可以实现离线分析,从而将数据的收集与分析分离,从而在不占用系统的处理资源和不产生额外开销的情况下完成系统的软件监测。
本发明实施例的软件监测方法、装置以及系统只有锁程序地址以及线程标识的记录和编码转化地址通过软件部分实现,而侦听、存储以及分析方面均可以利用旁路硬件来实现,例如,通过在内存接口或插槽上插卡来实现对内存总线的侦听、存储以及分析,此外还可以在所述卡上设置时钟校准而有效地避免了多核环境下时钟不同步而造成的事件顺序紊乱的问题。所述专用旁路硬件不占用系统的CPU等资源,而软件部分只利用系统的少量资源,总体上对系统的资源占用率低,所述旁路硬件不影响应用程序的运行环境,对应用程序的干扰小,而且硬件捕获的应用程序的行为信息量仅受硬件配置的限制,与应用程序无关。
可见,上述软件监测方法、装置以及系统,通过软硬件的结合对系统串行部分的相关信息进行非插桩式的分析,不对目标程序做任何修改,也不依赖于具体的软件或硬件平台,在分析运行过程中不引入额外的开销。
如图4所示,本发明又一实施例中一种软件监测系统,包括一软件检测装置以及软件执行主体,其中所述软件监测装置用于监测运行在软件执行主体上的软件程序,所述软件执行主体可以是被监测主机。
所述软件检测装置用于记录所述软件执行主体的锁程序地址以及线程标识,所述线程标识用于标识使用所述锁程序的线程;根据所述锁程序地址以及所述线程标识获得内存地址,并通过所述内存地址访问内存;侦听内存总线以识别所述访问内存的信号并根据所述信号获取所述锁程序的追踪信息,所述锁程序的追踪信息包括所述内存地址以及访问时间信息;根据所述追踪信息获得所述锁程序的使用信息,所述使用信息包括所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间,所述占用锁程序的时间根据所述访问时间信息确定。
以上对本发明实施例提供的通信系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (24)

1.一种软件监测方法,其特征在于,所述方法包括:
记录锁程序地址以及线程标识,所述线程标识用于标识使用所述锁程序的线程;
根据所述锁程序地址以及所述线程标识获得内存地址,并通过所述内存地址访问内存;
侦听内存总线以识别所述访问内存的信号并根据所述信号获取所述锁程序的追踪信息,所述锁程序的追踪信息包括所述内存地址以及访问时间信息;
根据所述追踪信息获得所述锁程序的使用信息,所述使用信息包括所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间,所述占用锁程序的时间根据所述访问时间信息确定。
2.根据权利要求1所述的方法,其特征在于,所述侦听内存总线以识别所述内存地址的访问内存信号并获取所述锁程序的追踪信息的步骤中,通过映射表识别出内存总线中访问地址为所述锁程序地址以及使用所述锁程序的线程标识所转化的内存地址的访问内存信号。
3.根据权利要求2所述的方法,其特征在于,所述侦听内存总线以识别所述内存地址的访问内存信号并获取所述锁程序的追踪信息包括:
预留物理地址空间,通过所述映射表建立所述锁程序地址以及使用所述锁程序的线程标识编码转化的内存地址与所述物理地址空间之间的映射关系;
侦听所述内存总线中的访问地址并判断所述访问地址是否映射在所述物理地址空间内;
根据判断结果,将映射在所述物理地址空间内的访问内存地址以及时间信息封装成追踪信息;
传输所述追踪信息。
4.根据权利要求3项所述的方法,其特征在于,所述物理地址空间为两段段物理地址,所述锁程序以及使用所述锁程序的线程标识编码转化的内存地址通过映射表映射为所述两段段物理地址区间内的物理地址。
5.根据权利要求3所述的方法,其特征在于,在所述根据所述追踪信息获得所述锁程序的使用信息的步骤之前还包括接收并存储所述追踪信息,以供离线分析。
6.根据权利要求1所述的方法,其特征在于,根据所述锁程序地址以及所述线程标识获得内存地址包括将所述锁程序地址以及所述线程标识编码转化或者映射为内存地址。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述追踪信息中的时间信息包括调用和释放锁程序的时间戳。
8.根据权利要求7所述的方法,其特征在于,所述调用和释放锁程序的时间戳是通过时钟记录侦听到所述锁程序因被调用或释放而被编码转化为内存地址并访问内存的时间。
9.根据权利要求7所述的方法,其特征在于,所述追踪信息还包括:
序列号,用于在分析的时候检测有没有丢失;
读写信息,用于标识此次访问内存是读或者写。
10.根据权利要求9所述的方法,其特征在于,所述追踪信息主要由所述锁程序以及使用所述锁程序的线程标识编码转化的内存地址、所述时间信息、序列号以及读写信息封装而成。
11.根据权利要求1至6任一项所述的方法,其特征在于,所述记录锁程序地址以及线程标识包括通过所述锁程序被调用时重载与锁程序相关的函数中记录所述锁程序地址以及使用所述锁程序的线程标识。
12.根据权利要求11所述的方法,其特征在于,所述与所述锁程序相关的函数通过动态插桩的方式或者在程序运行前加载自定义的动态连接库的方式进行重载。
13.根据权利要求1至6任一项所述的方法,其特征在于,所述根据所述追踪信息获得所述锁程序的使用信息包括:
根据所述追踪信息获得所述内存地址以及所述锁程序的时间信息;
将所述内存地址反解码为锁程序地址以及使用所述锁程序的线程标识,获得所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间信息。
14.一种软件监测装置,其特征在于,所述装置包括:
动态库模块,记录锁程序地址以及线程标识,所述线程标识用于标识使用所述锁程序的线程;
通信模块,根据所述锁程序地址以及所述线程标识获得内存地址,并通过所述内存地址访问内存;
侦听模块,侦听内存总线以识别所述访问内存的信号并根据所述信号获取所述锁程序的追踪信息,所述锁程序的追踪信息包括所述内存地址以及访问时间信息;
数据分析模块,根据所述追踪信息获得所述锁程序的使用信息,所述使用信息包括所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间,所述占用锁程序的时间根据所述访问时间信息确定。
15.根据权利要求14所述的装置,其特征在于,所述侦听模块包括一映射表,通过所述映射表识别出内存总线中访问地址为所述锁程序地址以及使用所述锁程序的线程标识所转化的内存地址。
16.根据权利要求15所述的装置,其特征在于,所述侦听模块在侦听内存总线以识别所述内存地址的访问内存信号并获取所述锁程序的追踪信息的过程中包括先由被监测主机预留物理地址空间,以通过所述映射表将所述锁程序地址以及使用所述锁程序的线程标识编码转化的内存地址映射到所述物理地址空间内;再通过侦听来识别内存总线中映射在所述物理地址空间内的访问地址,并将所述访问地址以及时间信息封装成追踪信息;最后向数据分析模块发送所述追踪信息。
17.根据权利要求16所述的装置,其特征在于,所述物理地址空间为两段段物理地址,所述线程的ID以及锁程序编码转化的内存地址通过映射表映射为所述两段段物理地址区间内的物理地址。
18.根据权利要求14所述的装置,其特征在于,还包括一数据存储模块,用于接受并存储所述侦听模块产生的所述追踪信息。
19.根据权利要求14至18任一项所述的装置,其特征在于,所述追踪信息中的时间信息包括调用和释放锁程序的时间戳。
20.根据权利要求19所述的装置,其特征在于,所述侦听模块还包括一时钟,以通过时钟校准记录捕获所述锁程序因被调用或释放时被编码转化为内存地址进行访问内存而产生访问内存信号的时间,从而获得所述锁程序被调用或释放的时间戳。
21.根据权利要求14至18任一项所述的装置,其特征在于,所述动态库模块通过所述锁程序被调用时重载与锁程序相关的函数中记录所述锁程序地址以及使用所述锁程序的线程标识。
22.根据权利要求20所述的装置,其特征在于,所述与所述锁程序相关的函数通过动态插桩的方式或在程序运行前加载自定义的动态连接库的方式进行重载。
23.根据权利要求14至18任一项所述的装置,其特征在于,所述数据分析模块根据所述追踪信息获得所述内存地址以及所述锁程序的时间信息,再将所述内存地址反解码为锁程序地址以及使用所述锁程序的线程标识,从而获得所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间信息。
24.一种软件监测系统,包括一软件检测装置以及软件执行主体,所述软件执行主体用于执行一软件程序,其特征在于,所述软件检测装置用于记录所述软件程序的锁程序地址以及线程标识,所述线程标识用于标识使用所述锁程序的线程;根据所述锁程序地址以及所述线程标识获得内存地址,并通过所述内存地址访问内存;侦听内存总线以识别所述访问内存的信号并根据所述信号获取所述锁程序的追踪信息,所述锁程序的追踪信息包括所述内存地址以及访问时间信息;根据所述追踪信息获得所述锁程序的使用信息,所述使用信息包括所述锁程序地址、使用所述锁程序的线程标识以及所述线程占用锁程序的时间,所述占用锁程序的时间根据所述访问时间信息确定。
CN201180001455.XA 2011-06-14 2011-06-14 软件监测方法、装置以及系统 Active CN102301343B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/075705 WO2012171171A1 (zh) 2011-06-14 2011-06-14 软件监测方法、装置以及系统

Publications (2)

Publication Number Publication Date
CN102301343A true CN102301343A (zh) 2011-12-28
CN102301343B CN102301343B (zh) 2014-02-19

Family

ID=45360523

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180001455.XA Active CN102301343B (zh) 2011-06-14 2011-06-14 软件监测方法、装置以及系统

Country Status (2)

Country Link
CN (1) CN102301343B (zh)
WO (1) WO2012171171A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103207809A (zh) * 2012-01-13 2013-07-17 金蝶软件(中国)有限公司 清除互斥锁的方法及系统
CN105786692A (zh) * 2014-12-24 2016-07-20 远光软件股份有限公司 一种软件运行期性能分析方法
CN108595502A (zh) * 2018-03-19 2018-09-28 网宿科技股份有限公司 评估数据库服务性能的方法、装置及计算机可读存储介质
CN108762825A (zh) * 2018-04-20 2018-11-06 烽火通信科技股份有限公司 动态库重载的实现方法及系统
CN109040653A (zh) * 2018-06-28 2018-12-18 苏州科达科技股份有限公司 数据加解密开销确定方法、装置及电子设备
TWI650648B (zh) * 2018-02-09 2019-02-11 慧榮科技股份有限公司 系統晶片及存取系統晶片中記憶體的方法
CN110162483A (zh) * 2018-02-12 2019-08-23 上海寒武纪信息科技有限公司 静态内存碎片整理方法、装置、计算机设备及存储介质
CN114064212A (zh) * 2021-11-16 2022-02-18 摩尔线程智能科技(北京)有限责任公司 Pci设备的访问地址跟踪方法、设备及计算机可读存储介质
CN117077447A (zh) * 2023-10-17 2023-11-17 西安羚控电子科技有限公司 多席位协同想定编辑方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110044A (zh) * 2007-08-28 2008-01-23 中兴通讯股份有限公司 一种内存监控管理的方法及系统
CN102033804A (zh) * 2009-09-29 2011-04-27 国际商业机器公司 辅助内存分析的方法和系统
US20110113406A1 (en) * 2009-11-10 2011-05-12 International Business Machines Corporation Symmetric multi-processor lock tracing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110044A (zh) * 2007-08-28 2008-01-23 中兴通讯股份有限公司 一种内存监控管理的方法及系统
CN102033804A (zh) * 2009-09-29 2011-04-27 国际商业机器公司 辅助内存分析的方法和系统
US20110113406A1 (en) * 2009-11-10 2011-05-12 International Business Machines Corporation Symmetric multi-processor lock tracing

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103207809B (zh) * 2012-01-13 2017-07-07 金蝶软件(中国)有限公司 清除互斥锁的方法及系统
CN103207809A (zh) * 2012-01-13 2013-07-17 金蝶软件(中国)有限公司 清除互斥锁的方法及系统
CN105786692A (zh) * 2014-12-24 2016-07-20 远光软件股份有限公司 一种软件运行期性能分析方法
CN105786692B (zh) * 2014-12-24 2019-02-05 远光软件股份有限公司 一种软件运行期性能分析方法
TWI650648B (zh) * 2018-02-09 2019-02-11 慧榮科技股份有限公司 系統晶片及存取系統晶片中記憶體的方法
US10915269B2 (en) 2018-02-09 2021-02-09 Silicon Motion, Inc. Method for using set parameters to determine processor priority for accessing memory within system on chip having multiple processors
CN110162483B (zh) * 2018-02-12 2020-10-20 上海寒武纪信息科技有限公司 静态内存碎片整理方法、装置、计算机设备及存储介质
CN110162483A (zh) * 2018-02-12 2019-08-23 上海寒武纪信息科技有限公司 静态内存碎片整理方法、装置、计算机设备及存储介质
CN108595502A (zh) * 2018-03-19 2018-09-28 网宿科技股份有限公司 评估数据库服务性能的方法、装置及计算机可读存储介质
CN108595502B (zh) * 2018-03-19 2021-06-22 网宿科技股份有限公司 评估数据库服务性能的方法、装置及计算机可读存储介质
CN108762825A (zh) * 2018-04-20 2018-11-06 烽火通信科技股份有限公司 动态库重载的实现方法及系统
CN108762825B (zh) * 2018-04-20 2021-04-27 烽火通信科技股份有限公司 动态库重载的实现方法及系统
CN109040653B (zh) * 2018-06-28 2020-09-29 苏州科达科技股份有限公司 数据加解密开销确定方法、装置及电子设备
CN109040653A (zh) * 2018-06-28 2018-12-18 苏州科达科技股份有限公司 数据加解密开销确定方法、装置及电子设备
CN114064212A (zh) * 2021-11-16 2022-02-18 摩尔线程智能科技(北京)有限责任公司 Pci设备的访问地址跟踪方法、设备及计算机可读存储介质
CN114064212B (zh) * 2021-11-16 2022-07-29 摩尔线程智能科技(北京)有限责任公司 Pci设备的访问地址跟踪方法、设备及计算机可读存储介质
CN117077447A (zh) * 2023-10-17 2023-11-17 西安羚控电子科技有限公司 多席位协同想定编辑方法及装置
CN117077447B (zh) * 2023-10-17 2024-02-23 西安羚控电子科技有限公司 多席位协同想定编辑方法及装置

Also Published As

Publication number Publication date
CN102301343B (zh) 2014-02-19
WO2012171171A1 (zh) 2012-12-20

Similar Documents

Publication Publication Date Title
CN102301343B (zh) 软件监测方法、装置以及系统
Dean et al. Perfscope: Practical online server performance bug inference in production cloud computing infrastructures
Bai et al. Effective static analysis of concurrency {Use-After-Free} bugs in linux device drivers
US20160364315A1 (en) Fast data race detection for multicore systems
US6883162B2 (en) Annotations for transaction tracing
US10394714B2 (en) System and method for false sharing prediction
CN103399818B (zh) 操作系统中的死锁检测方法
CN102609254B (zh) 获取对象级访存行为的方法及装置
US20090094589A1 (en) Optimizing heap memory usage
David et al. Continuously measuring critical section pressure with the free-lunch profiler
CN100440163C (zh) 对计算机程序进行运行时分析的方法和系统
US20150277994A1 (en) Excluding counts on software threads in a state
Li et al. An efficient data-dependence profiler for sequential and parallel programs
CN103488563A (zh) 并行程序的数据竞争检测方法、装置及多核处理系统
US9135082B1 (en) Techniques and systems for data race detection
Luo et al. Laser: Light, accurate sharing detection and repair
CN110059014B (zh) 一种并发程序数据竞争指令级定位方法
US20230004367A1 (en) Low-overhead detection techniques for synchronization problems in parallel and concurrent software
Chabbi et al. Featherlight on-the-fly false-sharing detection
Liu et al. Cheetah: Detecting false sharing efficiently and effectively
Huang et al. HaLock: Hardware-assisted lock contention detection in multithreaded applications
EP2151760B1 (en) Method and apparatus for detecting a data access violation
Ahmad et al. Kard: Lightweight data race detection with per-thread memory protection
Song et al. Efficient data race detection for C/C++ programs using dynamic granularity
US7836447B2 (en) Method of efficient performance monitoring for symmetric multi-threading systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20171206

Address after: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee after: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Chen Lei

Inventor before: Wang Chao

Inventor before: Yu Jiaqiang

Inventor before: Chen Mingyu

Inventor before: Huang Yongbing

Inventor before: Zhang Wenli

Inventor before: Cui Zehan

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20171221

Address after: 404600 Yongan street, Fengjie County, Chongqing, No. 63, No. 14, Binxin Road, 1-9-2

Patentee after: CHONGQING KUIMEN TECHNOLOGY SERVICES Ltd.

Address before: 510640 Guangdong City, Tianhe District Province, No. five, road, public education building, unit 371-1, unit 2401

Patentee before: GUANGDONG GAOHANG INTELLECTUAL PROPERTY OPERATION Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231012

Address after: Room 11-5, Building 16, No. 6 Kuifu Avenue, Kuizhou Street, Fengjie County, Chongqing 404600

Patentee after: Yuntu (Chongqing) Business Information Consulting Service Co.,Ltd.

Address before: 404600 Building 1-9-2, No. 14, 63 Binxin Road, Yongan Street, Fengjie County, Chongqing

Patentee before: CHONGQING KUIMEN TECHNOLOGY SERVICES Ltd.