买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】监控方法、装置及系统_阿里巴巴集团控股有限公司_201710445461.3 

申请/专利权人:阿里巴巴集团控股有限公司

申请日:2017-06-13

公开(公告)日:2022-01-21

公开(公告)号:CN109086193B

主分类号:G06F11/34(20060101)

分类号:G06F11/34(20060101)

优先权:

专利状态码:有效-授权

法律状态:2022.01.21#授权;2019.01.18#实质审查的生效;2018.12.25#公开

摘要:本申请实施例提供了一种监控方法、装置及系统,该方法包括步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。本申请实施例可提高定位内存数据故障源的效率,降低定位内存数据故障源的实现成本。

主权项:1.一种监控方法,其特征在于,包括以下步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;其中,所述第一可执行代码包括扩展的伯克利包过滤器ebpf可执行代码;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。

全文数据:监控方法、装置及系统技术领域本申请涉及计算机技术领域,尤其是涉及一种监控方法、装置及系统。背景技术在日常的系统运维和调测过程中,内存数据故障导致的问题的来源通常是随机产生的,因而难以定位。类似的问题比如包括:i踩内存:程序内存由于被异常代码修改而导致错误,但是异常代码源却难以确定;ii系统引用计数错误:由于代码异常,在某些场景中添加了引用计数操作,但是却没有在匹配的场景下减少引用计数。iii;死锁问题:程序在运行过程中,触发死锁后,通常很容易就找到导致死锁的锁通常为排它锁,但却无法确定导致死锁的锁当前被谁持有。目前,一般采用排除法或代码分析方法确定内存数据故障源。显然,这样的方式耗时耗力,实现成本高且效率低下。因此实现成本低且效率高的定位内存数据故障源的方案是人们所普遍希望的。发明内容本申请实施例的目的在于提供一种监控方法、装置及系统,以提高定位内存数据故障源的效率,降低定位内存数据故障源的实现成本。为达到上述目的,一方面,本申请实施例提供了一种监控方法,包括以下步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。另一方面,本申请实施例还提供了一种监控装置,包括:中断触发模块,用于确定预定类型的操作访问预定的物理内存地址,则触发中断;地址确定模块,用于根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;数据监控模块,用于执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。再一方面,本申请实施例还提供了一种内存数据监控系统,包括:处理器;存储器,用于存储监控装置,所述监控装置被所述处理器执行时,执行如下步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。再一方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。由此可见,本申请实施例在指定监控范围内的内存地址被访问,且该访问属于预定类型的操作时,触发数据断点;并根据数据断点中的入口地址执行可执行代码,以根据可执行代码中的监控逻辑进行内存数据监控。这样,当需要监控何种类型的内存数据故障,就可以预先配置相应的监控逻辑。因此,与现有技术相比,本申请实施例这种自动定位内存数据故障源的方案提高了定位内存数据故障源的效率,降低了定位内存数据故障源的实现成本。附图说明此处所说明的附图用来提供对本申请实施例的进一步理解,构成本申请实施例的一部分,并不构成对本申请实施例的限定。在附图中:图1为本申请一实施例的数据断点配置流程图;图2为本申请一实施例的监控方法流程图;图3为本申请一实施例的页表结构示意图;图4为本申请一实施例的监控装置的结构框图;图5为本申请一实施例的监控系统的结构框图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本申请实施例做进一步详细说明。在此,本申请实施例的示意性实施例及其说明用于解释本申请实施例,但并不作为对本申请实施例的限定。在实现本申请过程中,本申请的发明人经过长期研究发现:虽然内存数据故障导致的问题难以定位。但是,在当前某块内存区或某个具体的内存地址出现内存数据故障时,如果能通过一个数据断点使当前内存访问停下来就好了,这样就可以方便的抓取关键信息比如进程pid、堆栈信息等,以便于根据关键信息确定是谁导致的内存数据故障。基于这种思想,本申请的发明人还发现:比如Linux系统等一些操作系统支持数据断点的使用,但是,如果想通过数据断点实现内存数据故障源的定位,需要进行内核态编程,即需要编写内核模块并插入到操作系统中。由于内核模块编写和调试的难度极大,耗时费力,因此,基于这种方式的实现成本相当高,基本不具有可行性。本申请的发明人进一步研究发现:扩展的伯克利包过滤器extendberkeleypacketfilter,ebpf是一个由Berkeley提出的用于网络包过滤的过滤器。当用户需要根据预置的某些条件进行包过滤时如根据网络包的协议类型、源目的网络地址、包大小,可以自定义正则表达式来设置规则。对应的,正则表达式会被编译成ebpf语言,同时将编译好的数据传递给内核。在内核中,当有网络包到达时,ebpf引擎即内核中内置的ebpf解释器,ebpf解释器能够加载ebpf可执代码并解析执行会被调用,并通过执行ebpf可执代码判断当前的网络包是否为用户所需要的,如果是则记录相关信息。基于类似的思想,可考虑在用户态编写针对指定内存地址的内存监控代码,并将其编译成ebpf可执行代码加载到内核中;当内存被访问时,便可通过执行ebpf可执行代码实现针对指定内存地址的监控、过滤和记录,从而发现了一种监控内存数据故障的可行思路。下面结合附图,对本申请基于上述可行思路的具体实施方式作进一步的详细说明。本申请实施例中,要实现当数据断点被触发时,可在内核态利用数据断点中指定的用户态代码即用户在用户态编写的程序代码获取关键信息比如进程pid、堆栈信息等,以便于根据这些关键信息确定内存数据故障,就需要预先配置这样的数据断点。参考图1所示,本申请实施例的数据断点配置可以包括如下步骤:S101、用户根据指定监控的内存地址范围和内存操作类型,编写监控逻辑脚本。本步骤是在用户态实现的,即用户可在用户态指定监控的内存地址范围和内存操作类型,并可在用户态根据指定监控的内存地址范围和内存操作类型,编写监控逻辑脚本。本申请一些实施方式中,指定监控的内存地址范围和内存操作类型均可由用户根据需要指定。所述的指定例如可以是用户通过系统提供的用户接口实现。其中,所述的用户接口例如可以是命令接口或图形界面接口等等。在本申请一些示例性实施方式中,指定监控的内存地址范围可通过起始地址+数据长度的方式实现;在本申请另一些示例性实施方式中,指定监控的内存地址范围还可过设定起止地址的方式实现,等等。本申请一些实施方式中,所述指定监控的内存地址范围可以为指定进程的内存逻辑地址范围、指定进程的内存线性地址范围、内核线性地址范围、内核逻辑地址范围、或者内核符号。其中,指定进程的可通过进程标识pid,processidentifier识别。本申请一些实施方式中,一般的,在编程语言中,内核符号指的是一个全局的变量或者函数。更一般地说,内核符号是一个代表着内存中指定空间的名称,这个空间存储着数据可读或者可写的变量或者指令可以执行的函数。以linux系统为例,为了使不同的内核功能单元能够更好地协同工作,linux内核中有着数以千计的内核符号,每个内核符号对应着内存中的指定空间,因此,本申请一些实施方式中可通过指定内核符号的方式来指定监控的内存地址范围。本申请一些实施方式中,所述预定类型的操作例如可以包括内存读操作、内存写操作和内存读写操作中的一种或多种。在本申请的一些示例性实施方式中,所述监控逻辑脚本例如可以由用户通过用户接口编辑相应的正则表达式实现。在本申请的另一些示例性实施方式中,监控逻辑脚本还可由用户通过第三方工具例如BCCBPFCompilerCollection等编写。在本申请一些实施方式中,所述监控逻辑脚本可以是针对某种或某些内存故障类型的监控逻辑。其中,每种监控逻辑中可包括有数据抓取规则,该数据抓取规则中规定了在发现对应内存数据故障时应记录的数据信息。在本申请的一个示例性实施方式中,例如当针对踩内存问题进行监控处理时,其监控逻辑可以包括如下内容:触发中断后,判断指定监控范围内的内存地址的数据是否被错误修改,当指定监控范围内的内存地址的数据被错误修改时,记录当前修内存改地址的进程标识、指令地址以及相关的堆栈信息,以便于后续可以根据这些信息定位故障源。其中,所述错误修改例如可以是:指定监控范围内的内存地址的数据超出用户定义的范围等等。在本申请的另一个示例性实施方式中,例如当针对死锁问题进行监控处理时,其监控逻辑可以包括如下内容:当进程进行加锁操作时,数据缓冲寄存器被触发,记录执行加锁的进程标识和堆栈信息。当该锁被释放的时候,也会触发写监控,以将之前对应的记录清除;当进程发生死锁时,读取锁记录找到对应的加锁地址,即可确定该锁是被哪个进程所持有而未被释放。在本申请的另一个示例性实施方式中,比如当针对引用计数错误问题进行监控处理时,其监控逻辑可以包括如下内容:当进程对计数进行增加操作时,数据缓冲寄存器被触发,记录执行该加操作的进程标识和堆栈信息;当进程对计数进行减小操作时,同样也会触发写监控,同样的记录执行减少操作的进程标识和堆栈信息;当进程触发引用计数错误时,通过读取以上两个记录,即可分析出导致该计数不平衡的原因。S102、获取用户编写的监控逻辑脚本、以及用户指定监控的内存地址范围和内存操作类型。本申请一些实施方式中,步骤S102~S105可以在内核态实现。所述的获取例如可以为将用户编写的监控逻辑脚本、以及用户指定监控的内存地址范围和内存操作类型读取至内存。S103、将所述监控逻辑脚本转换成ebpf可执行代码。本申请一些实施方式中,由于ebpf是一种汇编类型的语言,编写难度很高,因此,用户可在用户态采用C语言等易于实现的语言编写监控逻辑脚本。而当采用C语言等编写的脚本时,可通过操作系统内置的编译器例如虚拟解释器将所述监控逻辑脚本转换成ebpf可执行代码,以便于在内核态实现用户的监控逻辑。在本申请的一个示例性实施方式中,所述虚拟解释器例如可以为低级虚拟机LowLevelVirtualMachine,LLVM。由此,通过使用ebpf使得用户可以在可在用户态编写监控逻辑,从而避免了陷入复杂而困难的内核态编程及调试,实现成本大大降低。当然,ebpf仅是作为数据断点被触发时,跳转执行用户预设的监控逻辑的工具之一,当采用其他具有类似功能的工具时,则可将监控逻辑脚本转换成该工具能够执行的可执行代码。本申请一些实施方式中,所述的内核态是指:当一个进程任务执行系统调用而陷入内核代码中执行时,一般称该进程处于内核运行态或简称为内核态;此时处理器处于特权级最高的0级内核代码中执行。对应的,当进程在执行用户自己的代码时,则称其处于用户运行态用户态,此时处理器在特权级最低的3级用户代码中运行。S104、将所述ebpf可执行代码加载至内核地址空间中的指定内存段,并记录所述ebpf可执行代码的入口地址。本申请一些实施方式中,ebpf可执行代码是在内核态执行,因此,需要在内核地址空间中指定一个内存段,以存储所述ebpf可执行代码。S105、将所述指定监控的内存地址范围所对应的物理地址信息,以及所述内存操作类型写入数据缓冲寄存器,并在所述数据缓冲寄存器的数据结构即操作系统中对应表征该数据缓冲寄存器的数据结构中,添加所述ebpf可执行代码的入口地址,从而完成数据断点配置。本申请一些实施方式中,数据缓冲寄存器对应是一个真实的物理空间,其可以被以直接或间接寻址的方式访问,因此,写入数据缓冲寄存器的内存地址应是物理地址。而一般情况下,用户指定的内存地址范围多为逻辑地址、线性地址等,因而需要对用户指定的内存地址范围进行地址转换,以将这些逻辑地址、线性地址等转换成对应的物理地址信息。为了便于理解本申请,下面介绍本申请实施例的一种地址转换的过程,具体的:分页是将作业的逻辑地址划分为一系列同等大小的部分,每一部分称为一页。在分页存储管理中,页的存放可以是连续的,也可以是不连续的,这就增加了逻辑地址到物理地址转换的难度。如何在内存中找到页所对应的物理块即字节单元是地址转换的关键。为此,目前的操作系统会为每个进程创建一个页表,如图3所示,该页表具有逻辑地址到物理地址映射的作用。由此,在进程逻辑地址空间中的每一页,依次在页表中有一个表项,其中记录了该页对应的物理块号,每个物理块与一个物理地址唯一对应。而在配置了页表之后,通过查找页表就可以很容易地找到该页所对应的物理地址。本申请一些实施方式中,在所述数据断点的数据结构中,添加所述ebpf可执行代码的入口地址是为了在后续数据断点被触发时,可以根据该入口地址找到对应的ebpf可执行代码。其中,所述的入口地址即为上述步骤S103中内核地址空间中的指定内存段的起止地址。本申请一些实施方式中,为了确保ebpf可执行代码的可执行性,在将所述ebpf可执行代码加载至内核地址空间中的指定内存段之前,还可以包括如下步骤:检测所述ebpf可执行代码是否存在指定缺陷;如果存在指定缺陷,则确认数据断点配置失败,并输出失败提示;如果不存在指定缺陷,则允许将所述ebpf可执行代码加载至内核地址空间中的指定内存段。本申请一些实施方式中,所述指定缺陷例如可以包括死循环、触发异常和或触发进程上下文切换的操作。其中,由于ebpf可执行代码是在内核态的中断上下文执行的,因此,需要确保ebpf可执行代码不会产生休眠等可能导致进程上下文切换的操作。此外,需要说明的是,通常CPU的一个数据缓冲寄存器能够监控的内存地址长度是有上限的。因此,如果CPU只有一个数据缓冲寄存器时,此时,用户指定监控的内存地址范围不允许超过该数据缓冲寄存器的监控上限。而如果CPU有多个数据缓冲寄存器,当用户指定监控的内存地址范围超出一个数据缓冲寄存器的上限时,则可采用配置多个数据缓冲寄存器的方式来覆盖用户指定监控的内存地址范围,其中每个数据缓冲寄存器可被配置成监控用户指定监控的内存地址范围的一部分。这样,就相当于配置了多个数据断点,每个数据断点各司其职。本申请一些实施方式中,在多核处理器环境下,即当系统的处理器为多核处理器时,可对所述多核处理器中每个CPU核心的数据缓冲寄存器配置有相同的数据断点,以监控运行于每个CPU核心上的进程对指定监控范围内的内存地址的操作,避免出现监控遗漏。参考图2所示,在完成上述数据断点配置的基础上,本申请一些实施方式的内存数据监控方法,可以包括以下步骤:S201、确定预定类型的操作访问预定的物理内存地址,则触发中断。一般的,当CPU执行一条指令时,会先将指令从内存取到数据缓冲寄存器DR寄存器中,然后再传送至指令寄存器,而指令划分为操作码和地址码字段。因此,在本申请的一些实施方式中,通过指令的地址码,数据缓冲寄存器可以判断出当前访问是否是针对指定监控范围内的内存地址的访问。在本申请的一些实施方式中,当确认当前访问不是针对指定监控范围内的内存地址的访问时,数据缓冲寄存器结束对当前访问的监控,以进行下一个访问的监控。指令的操作码则表示指令应进行什么性质的操作比如读操作、写操作或读写操作。因此,在本申请的另一些实施方式中,当确认当前访问是针对指定监控范围内的内存地址的访问时,通过指令的操作码,数据缓冲寄存器可进一步判断该访问是否属于预定类型的操作例如内存读操作、内存写操作等;如果属于预定类型的操作,则数据缓冲寄存器触发中断;否则,数据缓冲寄存器结束对该访问的监控,以便于进行下一个访问的监控。本申请的一些实施方式中,指定监控范围内的内存地址和预定类型的操作均构成数据断点的一部分;也就是说,数据断点中包含了用户指定的监控对象,监控对象可引起数据缓冲寄存器触发中断。此外,数据断点中还包含用户指定的监控逻辑。触发中断的目的是为了中断对内存的访问,以执行数据断点中用户指定的监控逻辑,从而便于实现内存数据故障的定位。S202、根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址。本申请一些实施方式中,参考图1所示的数据断点配置过程,由于数据断点与指定监控的内存地址范围是对应的,当指定监控的内存地址范围的某一或某些内存地址引起数据缓冲寄存器触发中断时,则根据触发所述中断的内存地址的可以很容易的确定数据断点。S203、执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。本申请一些实施方式中,由于数据断点的数据结构中添加了ebpf可执行代码的入口地址,因此,从查找出的数据断点的数据结构中,可找到对应ebpf可执行代码的入口地址,然后调用ebpf引擎,以根据所述数据结构中的入口地址来执行ebpf可执行代码。在本申请一些实施方式中,所述根据第一ebpf可执行代码中的监控逻辑进行内存数据监控,可以包括:判断所述被访问的内存地址是否存在指定类型的内存数据故障;如果存在,则按照所述监控逻辑中预设的数据抓取规则,实时抓取所述内存地址的状态信息保存至共享内存,以提供给用户。本申请一些实施方式中,所述指定类型的内存数据故障例如可以为踩内存、内存死锁和或系统引用计数错误等。本申请一些实施方式中,监控逻辑中预设的数据抓取规则中规定了在发现对应内存数据故障时应记录的数据信息。一般的,记录的数据信息可以包括对应内存地址的状态信息比如进程标识、指令地址和堆栈信息等等。需要说明的是,本申请实施例实时抓取的目的是为了能在第一时间抓取到现场信息,以免错失时机。本申请一些实施方式中,操作系统一般会为内核态和用户态分配共享内存,以利于实现双方的信息交互。因此,在内核态执行的ebpf可执行代码将抓取到的内存数据的状态信息保存至共享内存,可以方便提供给用户。当有需要时,一般可由用户态程序读取共享内存,获得所述内存数据的状态信息,以供用户查看分析。在本申请另一些实施方式中,当用户的监控逻辑可能比较复杂或比较耗时,可考虑预先配置两套ebpf可执行代码即在数据断点配置过程中,配置两个监控逻辑脚本:中断监控逻辑脚本和软中断监控逻辑脚本,并在数据缓冲寄存器的数据断点中分别添加每套ebpf可执行代码的入口地址。其中,中断监控逻辑用于在中断中模糊命中,以及时抓取通常变化较快的关键信息比如进程pid、堆栈信息等;而软中断监控逻辑用于在软中断中精确命中,以抓取变化稍慢的信息并对软中断抓取的信息以及中断抓取的信息进行更复杂的处理比如获取内存快照等。因此,当指定监控范围内的内存地址被访问,且该访问属于预定类型的操作时,可先在中断中,执行包含中断监控逻辑的ebpf可执行代码,以实时抓取内存地址的状态信息比如进程标识、堆栈信息、指令地址等并将其保存至共享内存,然后再触发软中断,并在软中断中,执行包含软中断监控逻辑的ebpf可执行代码以定位内存数据故障;当然,在执行前要先确定包含软中断监控逻辑的ebpf可执行代码的入口地址。至于软中断的执行时间可以预先指定,比如在中断返回后达到设定时间再执行等。这样,既利用了中断实时性好的特点,实现实时抓取现场数据;又利用了软中断可处理比较复杂或比较耗时的事务的特点,实现处理复杂或耗时的监控逻辑;从实现了在定位内存数据故障的同时,减少CPU被中断的时间,避免因中断过多而影响后台程序的运行。并且,使用软中断还可以稍微放松对相应ebpf可执行代码的限制,比如可以允许包含软中断监控逻辑的ebpf可执行代码执行导致CPU休眠的指令等。本申请一些实施方式中,在根据所述第一ebpf可执行代码中的监控逻辑定位内存数据故障源之后,还可以包括:当接收到用户发送的数据断点删除指令时,重置数据缓冲寄存器,以删除配置于其内的数据断点,并卸载与该数据断点对应的ebpf可执行代码,此外还可以删除相关的数据断点维护数据等。一般的,当用户在确认完成了内存数据监控任务后,可主动通过系统提供的用户接口发送数据断点删除指令,以避免占用系统资源。在本申请另一些实施方式中,为避免用户在完成内存数据监控任务后,仍然继续占用系统资源,而造成的资源浪费,可强制性设定数据断点的生存时间。比如所述数据断点的生存时间可从用户完成数据断点配置后开始计时,并判断数据断点是否达到预设的生存时间;如果达到,则重置数据缓冲寄存器,以删除配置于其内的数据断点,并卸载与该数据断点对应的ebpf可执行代码。在本申请另一些实施方式中,在上述判断数据断点是否达到预设的生存时间之后,还可以包括:当所述数据断点达到所述生存时间前的设定时间时,向所述数据断点的用户返回生存时间到期提醒,以提示用户尽快删除即将到期的数据断点。虽然上文描述的过程流程包括以特定顺序出现的多个操作,但是,应当清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行例如使用并行处理器或多线程环境。此外,在本申请说明书及权利要求当中所提及的“包括”为一开放式用语,故应解释成“包括但不限定于”。参考图4所示,本申请一些实施方式的监控装置可以包括:中断触发模块41,可以用于确定预定类型的操作访问预定的物理内存地址,则触发中断;地址确定模块42,可以用于根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;数据监控模块43,可以用于执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。本申请上述实施例的监控装置与图2所示的内存数据监控方法对应,因此,有关于本申请上述实施例的监控装置的细节内容,请参见图2所示的内存数据监控方法实施例,在此不再赘述。参考图5所示,本申请实施例的内存数据监控系统在硬件层面可以包括处理器、内部总线、存储器和内存,当然还可能包括其他业务所需要的硬件。处理器从存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成监控装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。其中,所述监控装置被所述处理器执行时,可以执行如下步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。至于上述执行步骤的细节内容,请参见图2所示的内存数据监控方法实施例,在此不再赘述。在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进例如,对二极管、晶体管、开关等电路结构的改进还是软件上的改进对于方法流程的改进。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件ProgrammableLogicDevice,PLD例如现场可编程门阵列FieldProgrammableGateArray,FPGA就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器logiccompiler”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言HardwareDescriptionLanguage,HDL,而HDL也并非仅有一种,而是有许多种,如ABELAdvancedBooleanExpressionLanguage、AHDLAlteraHardwareDescriptionLanguage、Confluence、CUPLCornellUniversityProgrammingLanguage、HDCal、JHDLJavaHardwareDescriptionLanguage、Lava、Lola、MyHDL、PALASM、RHDLRubyHardwareDescriptionLanguage等,目前最普遍使用的是VHDLVery-High-SpeedIntegratedCircuitHardwareDescriptionLanguage与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该微处理器执行的计算机可读程序代码例如软件或固件的计算机可读介质、逻辑门、开关、专用集成电路ApplicationSpecificIntegratedCircuit,ASIC、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、AtmelAT91SAM、MicrochipPIC18F26K20以及SiliconeLabsC8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和或硬件中实现。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质包括但不限于磁盘存储器、CD-ROM、光学存储器等上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备系统、和计算机程序产品的流程图和或方框图来描述的。应理解可由计算机程序指令实现流程图和或方框图中的每一流程和或方框、以及流程图和或方框图中的流程和或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器CPU、输入输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器RAM和或非易失性内存等形式,如只读存储器ROM或闪存flashRAM。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存PRAM、静态随机存取存储器SRAM、动态随机存取存储器DRAM、其他类型的随机存取存储器RAM、只读存储器ROM、电可擦除可编程只读存储器EEPROM、快闪记忆体或其他内存技术、只读光盘只读存储器CD-ROM、数字多功能光盘DVD或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体transitorymedia,如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

权利要求:1.一种监控方法,其特征在于,包括以下步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。2.根据权利要求1所述的监控方法,其特征在于,所述根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址,包括:根据触发所述中断的物理内存地址,确定对应的数据断点;确定所述数据断点中的第一可执行代码的入口地址。3.根据权利要求1所述的监控方法,其特征在于,所述对所述预定的物理内存地址进行数据监控,包括:判断所述物理内存地址是否存在指定类型的内存数据故障;如果存在,则按照所述第一可执行代码中的监控逻辑,实时抓取所述物理内存地址的状态信息保存至共享内存,以提供给用户。4.根据权利要求3所述的监控方法,其特征在于,在所述按照所述第一可执行代码中的监控逻辑,实时抓取所述物理内存地址的状态信息保存至共享内存之后,还包括:触发软中断,并确定第二可执行代码的入口地址;执行所述第二可执行代码,以根据所述第二可执行代码中的监控逻辑定位内存数据故障源。5.根据权利要求2所述的监控方法,其特征在于,所述数据断点预先通过以下步骤配置于数据缓冲寄存器中:获取监控逻辑脚本、以及用户指定监控的内存地址范围和内存操作类型;将所述监控逻辑脚本转换成对应的可执行代码;将该可执行代码加载至内核地址空间中的指定内存段,并记录该可执行代码的入口地址;将所述指定监控的内存地址范围所对应的物理地址信息,以及所述内存操作类型写入数据缓冲寄存器,并在所述数据缓冲寄存器的数据结构中,添加该可执行代码的入口地址。6.根据权利要求5所述的监控方法,其特征在于,所述将所述监控逻辑脚本转换成对应的可执行代码,包括:通过虚拟解释器将所述监控逻辑脚本转换成对应的可执行代码。7.根据权利要求5所述的监控方法,其特征在于,所述内存地址范围包括以下中的一种:指定进程的内存逻辑地址范围;指定进程的内存线性地址范围;内核线性地址范围;内核逻辑地址范围;以及,内核符号。8.根据权利要求5所述的监控方法,其特征在于,所述预定类型的操作包括以下中的至少一种:内存读操作、内存写操作和内存读写操作。9.根据权利要求5所述的监控方法,其特征在于,所述监控逻辑脚本包括以下中的至少一种:踩内存监控逻辑;死锁监控逻辑;以及,系统引用计数错误监控逻辑;其中,每种监控逻辑中包括在发现对应内存数据故障时的数据抓取规则。10.根据权利要求1至9任意一项所述的监控方法,其特征在于,所述的可执行代码包括扩展的伯克利包过滤器ebpf可执行代码。11.根据权利要求2所述的监控方法,其特征在于,还包括:当接收到数据断点删除指令时,重置数据缓冲寄存器,以删除配置于其内的数据断点,并卸载与该数据断点对应的可执行代码。12.根据权利要求2所述的监控方法,其特征在于,还包括:判断数据断点是否达到预设的生存时间;如果达到,则重置数据缓冲寄存器,以删除配置于其内的数据断点,并卸载与该数据断点对应的可执行代码。13.根据权利要求12所述的监控方法,其特征在于,在所述判断数据断点是否达到预设的生存时间之后,还包括:当所述数据断点达到所述生存时间前的设定时间时,向所述数据断点的用户返回生存时间到期提醒。14.根据权利要求5所述的监控方法,其特征在于,在将所述第一可执行代码加载至内核地址空间中的指定内存段之前,还包括:检测可执行代码是否存在指定缺陷;如果存在,则确认数据断点配置失败,并输出失败提示。15.根据权利要求14所述的监控方法,其特征在于,所述的指定缺陷包括死循环、触发异常和或触发进程上下文切换的操作。16.根据权利要求5所述的监控方法,其特征在于,在多核处理器环境下,所述多核处理器中每个CPU核心的数据缓冲寄存器配置有相同的数据断点。17.一种监控装置,其特征在于,包括:中断触发模块,用于确定预定类型的操作访问预定的物理内存地址,则触发中断;地址确定模块,用于根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;数据监控模块,用于执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。18.一种监控系统,其特征在于,包括:处理器;存储器,用于存储监控装置,所述监控装置被所述处理器执行时,执行如下步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如下步骤:确定预定类型的操作访问预定的物理内存地址,则触发中断;根据触发所述中断的物理内存地址,确定第一可执行代码的入口地址;执行所述第一可执行代码,以对所述预定的物理内存地址进行数据监控。

百度查询: 阿里巴巴集团控股有限公司 监控方法、装置及系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。