CN112306825B - 内存操作记录方法、装置和计算机设备 - Google Patents

内存操作记录方法、装置和计算机设备 Download PDF

Info

Publication number
CN112306825B
CN112306825B CN201910705028.8A CN201910705028A CN112306825B CN 112306825 B CN112306825 B CN 112306825B CN 201910705028 A CN201910705028 A CN 201910705028A CN 112306825 B CN112306825 B CN 112306825B
Authority
CN
China
Prior art keywords
memory
application
counter
release
size
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.)
Active
Application number
CN201910705028.8A
Other languages
English (en)
Other versions
CN112306825A (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201910705028.8A priority Critical patent/CN112306825B/zh
Publication of CN112306825A publication Critical patent/CN112306825A/zh
Application granted granted Critical
Publication of CN112306825B publication Critical patent/CN112306825B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例公开了一种内存操作记录方法、装置、计算机设备和存储介质,通过计数器对内存分配申请过程中的内存进行计数,从而,减少内存申请记录的日志量,进而可减少日志文件的内存大小。

Description

内存操作记录方法、装置和计算机设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存操作记录方法、装置和计算机设备。
背景技术
在进行性能分析时,需要对程序的内存申请和内存释放情况进行监测,但对于人工智能芯片中的一个机器学习程序来说,内存申请和内存释放的次数非常多,常常会导致记录出来的内存申请和释放的操作日志文件大小达到数十G,占用较多内存。
发明内容
本申请实施例提供一种内存操作记录方法、装置、计算机设备和存储介质,可将性能分析过程中内存申请记录的日志量缩少几百倍,从而可减少日志文件的内存大小,且不会损失峰值内存占用的记录精度。
第一方面,本申请实施例提供了一种内存操作记录方法,该方法包括:
在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程;
通过所述第一计数器记录申请内存的内存申请大小;
当触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将所述第一计数器清零。
第二方面,本申请实施例提供了一种内存操作记录装置,所述装置包括处理器、第一计数器和第二计数器,其中,
所述处理器,用于在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程;
所述第一计数器,用于记录申请内存的内存申请大小;
所述处理器,还用于在触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将所述第一计数器清零。
第三方面,本申请实施例提供了一种计算机设备,包括处理器、第一计数器、第二计数器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储支持计算机设备执行上述方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
第五方面,本申请实施例提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
实施本申请实施例,计算机设备通过在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据内存申请操作进行内存申请,启动目标线程对应的第一计数器,通过第一计数器记录申请内存的内存申请大小,当触发内存释放操作时,将第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将第一计数器清零,如此,可将性能分析过程中内存申请记录的日志量缩少几百倍,从而,可减少日志文件的内存大小,且不会损失峰值内存占用的记录精度。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的一种计算机设备的结构示意图;
图2是本申请实施例提供的一种内存操作记录方法的流程示意图;
图3是本申请实施例公开的另一种内存操作记录方法的流程示意图;
图4是本申请实施例公开的另一种内存操作记录方法的流程示意图;
图5是本申请实施例提供的一种内存操作记录装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应当理解,应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参见图1,是本申请实施例提供的一种计算机设备的结构示意图。如图1所示,计算机设备10可以包括处理器101、存储器102、通信总线103、通信接口104和第一计数器105和第二计数器106,其中,处理器101通过所述通信总线103连接所述存储器102和所述通信接口103。
处理器101可以是中央处理单元(Central Processing Unit,CPU),该处理器101还可以是人工智能处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器可以是微处理器或者该处理器101也可以是任何常规的处理器等。
处理器101还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的资源配置方法的各个步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。
存储器102可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)或其他存储器。本申请实施例中,存储器102用于存储数据以及各种软件程序,例如本申请实施例中进行性能分析过程中运行的目标程序。
可选的,在本申请实施例中,所述存储器可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方法的媒体加以存储。本实施方式所述的存储器又可以包括:利用电能方式存储信息的装置,如RAM、ROM等;利用磁能方式存储信息的装置,如硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置,如CD或DVD。当然,还有其他方式的存储器,例如量子存储器、石墨烯存储器等等。
通信接口104使用例如但不限于收发器一类的收发装置,来实现计算机设备10与其他设备或通信网络之间的通信。
应当理解,计算机设备10仅为本申请实施例提供的一个例子,并且,计算机设备10可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
如图2所示,图2为本申请实施例提供的一种内存操作记录方法的流程示意图,所述方法包括:
201、在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程。
其中,目标程序可以是人工智能芯片中的机器学习程序。
其中,线程是运行目标程序时进行运算调度的最小单位,一个线程指的是目标程序中一个单一顺序的控制流。目标程序可包括多个线程,每一线程可包括多个函数,目标程序中可以并行执行多个线程,每个线程并行执行不同的任务。
其中,目标线程为所述目标程序包括的多个线程中的任一线程。第一计数器为与目标线程对应的计数器。
具体实施中,目标程序可包括多个线程,每一个线程对应设置一个第一计数器,进而,在运行到多个线程中每一线程时,可启动当前运行的目标线程对应的第一计数器,若当前并行运行2个以上线程,可启动每个线程对应的第一计数器。
其中,内存申请操作可以是触发内存申请的内存申请指令或者传输指令,例如输入/输出指令,具体地,在需要进行数据缓存时,需要进行内存申请,因此,在检测到传输指令时,可进行内存申请,并启动目标线程对应的第一计数器。
202、通过所述第一计数器记录申请内存的内存申请大小。
本申请实施例中,可通过第一计数器记录目标线程对应的内存申请大小。具体地,在每一次进行内存申请时,可获取一个内存申请大小,并通过第一计数器将该内存申请大小记录下来。
可选地,上述步骤102中,通过所述第一计数器记录申请内存的内存申请大小,可包括以下步骤:
在进行连续内存申请时,通过所述第一计数器记录只一个内存申请大小。
本申请实施例中,当连续进行申请内存时,可通过所述第一计数器记录申请内存的内存申请大小,具体地,在每一轮连续多次申请内存的过程中,可将本轮连续申请中多次申请的内存大小进行累加,得到当前连续申请的当前申请内存大小,而不将多次申请中每一次进行内存申请的内存申请大小立即写入日志,如此,可减少记录内存申请大小的日志数量。
可选地,本申请实施例中,还可包括以下步骤:
将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,所述第一对应关系表为内存申请地址与内存申请大小之间的第一对应关系表。
本申请实施例中,在运行目标线程时,可建立一个针对目标线程的内存申请地址与内存申请大小之间的第一对应关系表,从而,在进行连续内存申请时,可以将每一次进行内存申请的内存申请地址以及与内存申请地址对应的内存申请大小添加至该第一对应关系表中,其中,第一对应关系表可用于针对目标线程进行内存释放。
可选地,本申请实施例中,还可建立针对目标程序的内存申请地址与内存申请大小之间的第二对应关系表,第二对应关系表中可添加目标程序中多个线程中每一线程在进行内存申请时的每一组内存申请地址与内存申请大小,其中,第二对应关系表可用于跨线程释放内存,如此,当目标线程对应的第一对应关系表中没有查询到释放地址时,可进一步从第二对应关系表中查询需要释放的内存大小。
203、当触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将所述第一计数器清零。
本申请实施例中,当在进行连续内存申请的过程中,检测到触发内存释放操作时,可停止内存申请的操作,将第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将第一计数器清零,第一计数器等待下一次触发内存申请操作,直到再一次检测到触发内存申请操作时,第一计数器从清零状态开始记录内存申请大小。如此,可减少连续内存申请过程中,多次内存申请进行内存申请大小记录的日志量,进而,减小记录内存申请大小的日志文件占用的内存开销。
可选地,本申请实施例中,当触发内存释放操作时,还可包括以下步骤A1-步骤A3:
A1、根据所述内存释放操作进行内存释放,启动所述目标线程对应的第二计数器;
本申请实施例中,当计算机设备检测到内存释放操作后,可启动第二计数器,其中,第二计数器用于记录释放内存的大小。
可选地,上述步骤A1中,根据内存释放操作进行内存释放,可包括以下步骤:
A11、根据所述内存释放操作获取所述目标线程进行内存释放的内存释放地址,所述内存释放地址对应一个内存申请地址;
A12、根据所述第一对应关系表确定与所述内存申请地址对应的内存申请大小,将所述内存申请大小作为所述内存释放地址对应的内存释放大小;
A13、根据所述内存释放地址和所述内存释放大小进行内存释放。
本申请实施例中,在运行目标线程时,可建立一个针对目标线程的内存申请地址与内存申请大小之间的第一对应关系表,从而,在根据内存释放操作进行内存释放时,可根据内存释放操作获取目标线程进行内存释放的内存释放地址,确定该内存是否地址对应的内存申请地址,根据预设的第一对应关系表确定内存申请地址对应的内存申请大小,从而,可将内存释放地址对应的内存释放大小进行内存释放。
A2、通过所述第二计数器记录释放内存的内存申请大小;
本申请实施例中,由于内存释放过程也是连续的,因此,可通过第二计数器记录每一轮连续多次内存释放的内存释放大小,具体地,在每一轮连续多次申请释放的过程中,可将本轮连续释放中多次释放的内存大小进行累加,得到当前连续释放的当前释放内存大小,而不将多次释放中每一次进行内存释放的内存申请大小立即写入日志,如此,可减少记录内存释放大小的日志数量。
A3、当所述第一计数器重新启动时,将所述第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将所述第二计数器清零。
进一步地,当再一次触发内存申请操作时,第一计数器重新启动,可将第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将第二计数器清零。第二计数器等待下一次触发内存释放操作,直到再一次检测到触发内存释放操作时,第二计数器从清零状态开始记录内存释放大小,如此,可减少连续内存释放过程中,多次内存释放进行内存释放大小记录的日志量,进而,减小记录内存释放大小的日志文件占用的内存开销。
可选地,本申请实施例中,还可包括以下步骤:
31、在所述根据内存申请操作进行内存申请时,若所述目标线程进入或退出函数,将所述第一计数器的当前内存释放大小写入到所述内存操作日志中,并将所述第一计数器清零;
32、在所述根据内存释放操作进行内存释放时,若所述目标线程进入或退出函数,将所述第二计数器的当前内存释放大小写入到所述内存操作日志中,并将所述第二计数器清零。
本申请实施例中,在每一次进入或退出目标线程中的任一函数时,可以强制停止第一计数器或者第二计数器的计数任务,并将第一计数器记录的当前内存申请大小或者第二计数器记录的当前内存释放大小写入到内存操作日志中,并清空第一计数器或者第二计数器,从而,可以在突发函数进入或者退出的情况下,通过内存操作日志记录当前内存申请大小或者内存释放大小。
可选地,本申请实施例中,所述目标程序中存在调用至少一个子函数的目标函数,在目标程序执行完毕后,还可包括以下步骤:
B1、获取所述至少一个子函数中每一子函数对应的内存操作日志,得到至少一个内存操作日志;
B2、根据所述目标函数调用所述至少一个子函数的调用关系将所述至少一个内存操作日志中的至少一个内存大小进行累计加减,得到目标内存大小;
B3、根据所述目标内存大小将所述至少一个内存操作日志合并为一条目标内存操作日志。
本申请实施例中,目标函数可以是预设类型的函数,具体实施中,性能分析人员可预先设置比较关心内存开销的函数为目标函数,目标函数的内存开销可能较大。从而,可在目标程序执行完毕后,将目标函数调用的至少一个子函数的至少一个内存操作日志中的至少一个内存大小进行累计加减,得到目标内存大小,进而,根据目标内存大小生成一条目标内存操作日志,使目标内存操作日志替换至少一个内存操作日志,如此,可减少目标函数对应的内存操作日志的日志量。
可以看出,本申请提供的技术方案,计算机设备通过在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据内存申请操作进行内存申请,启动目标线程对应的第一计数器,通过第一计数器记录申请内存的内存申请大小,当触发内存释放操作时,将第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将第一计数器清零,如此,可将性能分析过程中内存申请记录的日志量缩少几百倍,从而,可减少日志文件的内存大小,且不会损失峰值内存占用的记录精度。
如图3所示,图3为本申请实施例提供的另一种内存操作记录方法的流程示意图,所述方法包括:
301、在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程。
302、通过所述第一计数器记录申请内存的内存申请大小。
303、当触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将所述第一计数器清零。
304、根据所述内存释放操作进行内存释放,启动所述目标线程对应的第二计数器。
305、通过所述第二计数器记录释放内存的内存申请大小。
306、当所述第一计数器重新启动时,将所述第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将所述第二计数器清零。
其中,上述步骤301-306的具体实现过程可参照图2所示的方法中相应的描述,在此不再赘述。
可以看出,本申请提供的技术方案,计算机设备通过在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据内存申请操作进行内存申请,启动目标线程对应的第一计数器,通过第一计数器记录申请内存的内存申请大小,当触发内存释放操作时,将第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将第一计数器清零,根据内存释放操作进行内存释放,启动目标线程对应的第二计数器,通过第二计数器记录释放内存的内存申请大小,当第一计数器重新启动时,将第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将第二计数器清零,如此,可将性能分析过程中内存申请和内存释放记录的日志量缩少几百倍,从而,可减少日志文件的内存大小,且不会损失峰值内存占用的记录精度。
如图4所示,图4为本申请实施例提供的另一种内存操作记录方法的流程示意图,所述方法包括:
401、在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程。
402、通过所述第一计数器记录申请内存的内存申请大小。
403、将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,所述第一对应关系表为内存申请地址与内存申请大小之间的第一对应关系表。
404、当触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将所述第一计数器清零,启动所述目标线程对应的第二计数器。
405、根据所述内存释放操作获取所述目标线程进行内存释放的内存释放地址,所述内存释放地址对应一个内存申请地址。
406、根据所述第一对应关系表确定与所述内存申请地址对应的内存申请大小,将所述内存申请大小作为所述内存释放地址对应的内存释放大小。
407、根据所述内存释放地址和所述内存释放大小进行内存释放。
408、通过所述第二计数器记录释放内存的内存申请大小。
409、当所述第一计数器重新启动时,将所述第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将所述第二计数器清零。
其中,上述步骤401-409的具体实现过程可参照图2所示的方法中相应的描述,在此不再赘述。
可以看出,本申请提供的技术方案,计算机设备通过在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据内存申请操作进行内存申请,启动目标线程对应的第一计数器,通过第一计数器记录申请内存的内存申请大小,将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,当触发内存释放操作时,将第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将第一计数器清零,启动所述目标线程对应的第二计数器,根据内存释放操作进行内存释放,根据内存释放操作获取目标线程进行内存释放的内存释放地址,根据第一对应关系表确定与内存申请地址对应的内存申请大小,将内存申请大小作为内存释放地址对应的内存释放大小,根据内存释放地址和内存释放大小进行内存释放,通过第二计数器记录释放内存的内存申请大小,当第一计数器重新启动时,将第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将第二计数器清零,如此,可将性能分析过程中内存申请和内存释放记录的日志量缩少几百倍,从而,可减少日志文件的内存大小,且不会损失峰值内存占用的记录精度。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图2-图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
下面介绍本申请提供的内存操作记录装置。
参见图5,图5是本申请实施例提供的一种内存操作记录装置的结构示意图,该装置500至少可以包括控制单元501、计数单元502和记录单元503,其中,
所述控制单元501,用于在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程;
所述计数单元502,用于通过第一计数器记录申请内存的内存申请大小;
所述记录单元503,还用于在触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中;所述控制单元501,还用于将所述第一计数器清零。
在一个可能的实现方式中,所述控制单元,还用于根据内存释放操作进行内存释放,启动所述目标线程对应的第二计数器;
所述计数单元,用于通过第二计数器记录释放内存的内存申请大小;
所述记录单元,还用于当所述第一计数器重新启动时,将所述第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将所述第二计数器清零。
在一个可能的实现方式中,在所述根据内存申请操作进行内存申请时,所述控制单元还用于:
将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,所述第一对应关系表为内存申请地址与内存申请大小之间的第一对应关系表。
在一个可能的实现方式中,在所述根据内存释放操作进行内存释放方面,所述控制单元501具体用于:
根据所述内存释放操作获取所述目标线程进行内存释放的内存释放地址,所述内存释放地址对应一个内存申请地址;
根据所述第一对应关系表确定与所述内存申请地址对应的内存申请大小,将所述内存申请大小作为所述内存释放地址对应的内存释放大小;
根据所述内存释放地址和所述内存释放大小进行内存释放。
在一个可能的实现方式中,所述记录单元503,还用于在所述根据所述内存申请操作进行内存申请时,若所述目标线程进入或退出函数,将所述第一计数器的当前内存释放大小写入到所述内存操作日志中,所述控制单元501,还用于将所述第一计数器清零;
所述记录单元503,还用于在所述根据所述内存释放操作进行内存释放时,若所述目标线程进入或退出函数,将所述第二计数器的当前内存释放大小写入到所述内存操作日志中,所述控制单元501,还用于将所述第二计数器清零。
在一个可能的实现方式中,所述计数单元具体用于:
在进行连续内存申请时,通过所述第一计数器记录只一个内存申请大小。
可以看出,本申请提供的技术方案,计算机设备通过在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据内存申请操作进行内存申请,启动目标线程对应的第一计数器,通过第一计数器记录申请内存的内存申请大小,当触发内存释放操作时,将第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将第一计数器清零,如此,可将性能分析过程中内存申请记录的日志量缩少几百倍,从而,可减少日志文件的内存大小,且不会损失峰值内存占用的记录精度。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
所述作为分离部件说明的单元或模块可以是物理上分开的,也可以不是物理上分开的。作为单元或模块说明的部件可以是物理单元,也可以不是物理单元,即可以位于一个装置中,或者也可以分布到多个装置上。本披露中实施例的方案可以根据实际的需要选择其中的部分或者全部单元来实现。
本申请实施例还提供了一种计算机存储介质,用于存储为上述图2-图4所示的计算机设备所用的计算机软件指令,其包含用于执行上述方法实施例所涉及的程序。通过执行存储的程序,可以实现神经网络在线模型的验证,提高验证速度。
本申请实施例还提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述图2-图4所示的计算机设备所用的计算机软件指令,其包含用于执行上述方法实施例所涉及的程序。通过执行存储的程序,可以实现神经网络在线模型的验证,提高验证速度。
由上可见,本申请实施例提供内存操作记录方法、装置、计算机设备和存储介质,该方法通过随机生成在线模型所需的验证输入数据,无需提前准备输入数据集能便捷地对在线模型的前向传播进行验证。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本申请实施例中集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储器可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
进一步地,依据以下条款可更好地理解前述内容:
例如,条款C1,一种内存操作记录方法,所述方法包括:
在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程;
通过所述第一计数器记录申请内存的内存申请大小;
当触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将所述第一计数器清零。
C2、根据C1所述的方法,所述方法还包括:
根据所述内存释放操作进行内存释放,启动所述目标线程对应的第二计数器;
通过所述第二计数器记录释放内存的内存申请大小;
当所述第一计数器重新启动时,将所述第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将所述第二计数器清零。
C3、根据C1或C2所述的方法,在所述根据内存申请操作进行内存申请时,所述方法还包括:
将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,所述第一对应关系表为内存申请地址与内存申请大小之间的第一对应关系表。
C4、根据C3所述的方法,所述根据内存释放操作进行内存释放,包括:
根据所述内存释放操作获取所述目标线程进行内存释放的内存释放地址,所述内存释放地址对应一个内存申请地址;
根据所述第一对应关系表确定与所述内存申请地址对应的内存申请大小,将所述内存申请大小作为所述内存释放地址对应的内存释放大小;
根据所述内存释放地址和所述内存释放大小进行内存释放。
C5、根据C2-C4任一项所述的方法,所述方法还包括:
在所述根据所述内存申请操作进行内存申请时,若所述目标线程进入或退出函数,将所述第一计数器的当前内存释放大小写入到所述内存操作日志中,并将所述第一计数器清零;
在所述根据所述内存释放操作进行内存释放时,若所述目标线程进入或退出函数,将所述第二计数器的当前内存释放大小写入到所述内存操作日志中,并将所述第二计数器清零。
C6、根据C1-C5任一项所述的方法,所述通过所述第一计数器记录申请内存的内存申请大小,包括:
在进行连续内存申请时,通过所述第一计数器记录只一个内存申请大小。
D1、一种内存操作记录装置,所述装置包括控制单元、计数单元和记录单元,其中,
所述控制单元,用于在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程;
所述计数单元,用于通过第一计数器记录申请内存的内存申请大小;
所述记录单元,还用于在触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中;所述控制单元,还用于将所述第一计数器清零。
D2、根据D1所述的装置,所述控制单元,还用于根据所述内存释放操作进行内存释放,启动所述目标线程对应的第二计数器;
所述计数单元,用于通过第二计数器记录释放内存的内存申请大小;
所述记录单元,还用于当所述第一计数器重新启动时,将所述第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将所述第二计数器清零。
D3、根据D1或D2所述的装置,在所述根据内存申请操作进行内存申请时,所述控制单元还用于:
将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,所述第一对应关系表为内存申请地址与内存申请大小之间的第一对应关系表。
D4、根据D3所述的装置,在所述根据内存释放操作进行内存释放方面,所述控制单元具体用于:
根据所述内存释放操作获取所述目标线程进行内存释放的内存释放地址,所述内存释放地址对应一个内存申请地址;
根据所述第一对应关系表确定与所述内存申请地址对应的内存申请大小,将所述内存申请大小作为所述内存释放地址对应的内存释放大小;
根据所述内存释放地址和所述内存释放大小进行内存释放。
D5、根据D2-D4任一项所述的装置,所述记录单元,还用于在所述根据所述内存申请操作进行内存申请时,若所述目标线程进入或退出函数,将所述第一计数器的当前内存释放大小写入到所述内存操作日志中,所述控制单元,还用于将所述第一计数器清零;
所述记录单元,还用于在所述根据所述内存释放操作进行内存释放时,若所述目标线程进入或退出函数,将所述第二计数器的当前内存释放大小写入到所述内存操作日志中,所述控制单元,还用于将所述第二计数器清零。
D6、根据D1-D5任一项所述的装置,所述计数单元具体用于:
在进行连续内存申请时,通过所述第一计数器记录只一个内存申请大小。
E1、一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如条款C1-条款C6任一项所述的方法。
F1、一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如条款C1-条款C6任一项所述的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

Claims (14)

1.一种内存操作记录方法,其特征在于,所述方法包括:
在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程;
通过所述第一计数器记录申请内存的内存申请大小;其中,在每一轮连续多次申请内存的过程中,将本轮连续申请中多次申请的内存大小进行累加,得到当前连续申请的当前申请内存大小,而不将多次申请中每一次进行内存申请的内存申请大小立即写入日志;
当触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中,并将所述第一计数器清零。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述内存释放操作进行内存释放,启动所述目标线程对应的第二计数器;
通过所述第二计数器记录释放内存的内存申请大小;
当所述第一计数器重新启动时,将所述第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将所述第二计数器清零。
3.根据权利要求1所述的方法,其特征在于,在所述根据内存申请操作进行内存申请时,所述方法还包括:
将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,所述第一对应关系表为内存申请地址与内存申请大小之间的第一对应关系表。
4.根据权利要求2所述的方法,其特征在于,在所述根据内存申请操作进行内存申请时,所述方法还包括:
将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,所述第一对应关系表为内存申请地址与内存申请大小之间的第一对应关系表。
5.根据权利要求4所述的方法,其特征在于,所述根据内存释放操作进行内存释放,包括:
根据所述内存释放操作获取所述目标线程进行内存释放的内存释放地址,所述内存释放地址对应一个内存申请地址;
根据所述第一对应关系表确定与所述内存申请地址对应的内存申请大小,将所述内存申请大小作为所述内存释放地址对应的内存释放大小;
根据所述内存释放地址和所述内存释放大小进行内存释放。
6.根据权利要求2、4和5任一项所述的方法,其特征在于,所述方法还包括:
在所述根据所述内存申请操作进行内存申请时,若所述目标线程进入或退出函数,将所述第一计数器的当前内存释放大小写入到所述内存操作日志中,并将所述第一计数器清零;
在所述根据所述内存释放操作进行内存释放时,若所述目标线程进入或退出函数,将所述第二计数器的当前内存释放大小写入到所述内存操作日志中,并将所述第二计数器清零。
7.一种内存操作记录装置,其特征在于,所述装置包括控制单元、计数单元和记录单元,其中,
所述控制单元,用于在目标程序运行至目标线程的过程中,当触发内存申请操作时,根据所述内存申请操作进行内存申请,启动所述目标线程对应的第一计数器,所述目标线程为所述目标程序包括的多个线程中的任一线程;
所述计数单元,用于通过第一计数器记录申请内存的内存申请大小;其中,在每一轮连续多次申请内存的过程中,将本轮连续申请中多次申请的内存大小进行累加,得到当前连续申请的当前申请内存大小,而不将多次申请中每一次进行内存申请的内存申请大小立即写入日志;
所述记录单元,还用于在触发内存释放操作时,将所述第一计数器中记录的当前内存申请大小写入到内存操作日志中;所述控制单元,还用于将所述第一计数器清零。
8.根据权利要求7所述的装置,其特征在于,
所述控制单元,还用于根据所述内存释放操作进行内存释放,启动所述目标线程对应的第二计数器;
所述计数单元,用于通过第二计数器记录释放内存的内存申请大小;
所述记录单元,还用于当所述第一计数器重新启动时,将所述第二计数器中记录的当前内存释放大小写入到内存操作日志中,并将所述第二计数器清零。
9.根据权利要求7所述的装置,其特征在于,在所述根据内存申请操作进行内存申请时,所述控制单元还用于:
将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,所述第一对应关系表为内存申请地址与内存申请大小之间的第一对应关系表。
10.根据权利要求8所述的装置,其特征在于,在所述根据内存申请操作进行内存申请时,所述控制单元还用于:
将每一内存申请地址与对应的内存申请大小添加至预设的第一对应关系表中,所述第一对应关系表为内存申请地址与内存申请大小之间的第一对应关系表。
11.根据权利要求10所述的装置,其特征在于,在所述根据内存释放操作进行内存释放方面,所述控制单元具体用于:
根据所述内存释放操作获取所述目标线程进行内存释放的内存释放地址,所述内存释放地址对应一个内存申请地址;
根据所述第一对应关系表确定与所述内存申请地址对应的内存申请大小,将所述内存申请大小作为所述内存释放地址对应的内存释放大小;
根据所述内存释放地址和所述内存释放大小进行内存释放。
12.根据权利要求8、10和11任一项所述的装置,其特征在于,所述记录单元,还用于在所述根据所述内存申请操作进行内存申请时,若所述目标线程进入或退出函数,将所述第一计数器的当前内存释放大小写入到所述内存操作日志中,所述控制单元,还用于将所述第一计数器清零;
所述记录单元,还用于在所述根据所述内存释放操作进行内存释放时,若所述目标线程进入或退出函数,将所述第二计数器的当前内存释放大小写入到所述内存操作日志中,所述控制单元,还用于将所述第二计数器清零。
13.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-6任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法。
CN201910705028.8A 2019-07-31 2019-07-31 内存操作记录方法、装置和计算机设备 Active CN112306825B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910705028.8A CN112306825B (zh) 2019-07-31 2019-07-31 内存操作记录方法、装置和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910705028.8A CN112306825B (zh) 2019-07-31 2019-07-31 内存操作记录方法、装置和计算机设备

Publications (2)

Publication Number Publication Date
CN112306825A CN112306825A (zh) 2021-02-02
CN112306825B true CN112306825B (zh) 2024-02-27

Family

ID=74485739

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910705028.8A Active CN112306825B (zh) 2019-07-31 2019-07-31 内存操作记录方法、装置和计算机设备

Country Status (1)

Country Link
CN (1) CN112306825B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014088655A1 (en) * 2012-12-07 2014-06-12 International Business Machines Corporation ('ibm') Consistency of data in persistent memory
CN104281517A (zh) * 2014-10-16 2015-01-14 浙江宇视科技有限公司 一种基于日志方式的存储空间管理方法和装置
CN109117274A (zh) * 2018-08-28 2019-01-01 Oppo广东移动通信有限公司 应用于浏览器的内存管理方法、装置、终端及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180024909A1 (en) * 2016-07-25 2018-01-25 International Business Machines Corporation Monitoring growth of memory buffers in logging and dynamically adapting quantity and detail of logging
US10540250B2 (en) * 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014088655A1 (en) * 2012-12-07 2014-06-12 International Business Machines Corporation ('ibm') Consistency of data in persistent memory
CN104281517A (zh) * 2014-10-16 2015-01-14 浙江宇视科技有限公司 一种基于日志方式的存储空间管理方法和装置
CN109117274A (zh) * 2018-08-28 2019-01-01 Oppo广东移动通信有限公司 应用于浏览器的内存管理方法、装置、终端及存储介质

Also Published As

Publication number Publication date
CN112306825A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
US8676734B2 (en) Methods and systems for replaceable synaptic weight storage in neuro-processors
CN111444196B (zh) 块链式账本中全局状态的哈希的生成方法、装置及设备
CN108073687B (zh) 随机游走、基于集群的随机游走方法、装置以及设备
CN109033365B (zh) 一种数据处理方法及相关设备
US20120117347A1 (en) Initializing of a memory area
CN111444192A (zh) 块链式账本中全局状态的哈希的生成方法、装置及设备
US11409798B2 (en) Graph processing system including different kinds of memory devices, and operation method thereof
CN108573172B (zh) 一种数据校验、存储方法及装置
CN111078510B (zh) 一种任务处理进度的记录方法及装置
CN112306825B (zh) 内存操作记录方法、装置和计算机设备
CN110020074B (zh) 确定网页流失率的方法及装置
JP6332756B2 (ja) データ処理方法、装置、およびシステム
CN106339473A (zh) 文件复制方法及装置
CN111124811A (zh) 一种ssd数据保持时间的获取方法、系统及装置
CN109658094B (zh) 随机游走、基于集群的随机游走方法、装置以及设备
CN106202262B (zh) 一种信息处理方法及电子设备
CN113641872B (zh) 一种散列方法、装置、设备及介质
CN106909484B (zh) 一种用于存储环境下模拟坏盘测试的系统及方法
CN112000521B (zh) 分布式数据库系统的全量备份方法、装置及计算机可读存储介质
CN111367461B (zh) 一种存储空间管理方法及装置
CN109460185B (zh) 组建分块组ckg的方法、装置、虚拟存储池及存储介质
CN109241027B (zh) 数据迁移的方法、装置、电子设备及计算机可读存储介质
CN107122489B (zh) 一种数据对比方法及装置
CN107766196B (zh) 对计算设备进行启动检查的方法与设备
CN105893394B (zh) 一种大文件模拟方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant