多核存储装置及多核环境的跟踪日志输出处理方法

文档序号:6623823
多核存储装置及多核环境的跟踪日志输出处理方法
【专利摘要】本发明适用于存储【技术领域】,提供了一种多核环境的跟踪日志输出处理方法,所述方法包括:每个核的跟踪日志生成时,对跟踪日志数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;为多个核各配置一无锁循环缓存结构和静态缓存结构,分别用于暂存所述跟踪日志的指针,以及暂存每个核生成的跟踪日志及对应的时间戳;根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;定时器中断时,对所述跟踪日志输出处理。本发明还相应提供一种实现上述方法的多核存储装置。借此,本发明可以使缓存操作和输出操作同时进行,减少调度次数,提高资源利用率。
【专利说明】多核存储装置及多核环境的跟踪日志输出处理方法

【技术领域】
[0001]本发明涉及存储【技术领域】,尤其涉及一种多核存储装置及多核环境的跟踪日志输出处理方法。

【背景技术】
[0002]Trace log (跟踪日志)是存储系统中的用户常用进程之一。现有技术中一般是通过在存储区域申请一块trace log记录缓冲区,在程序执行的过程中将trace log记录写入缓冲区,最后由一个优先级最低的任务负责trace log记录的输出。
[0003]上述方法有以下不利之处:1)当多个core同时向trace log记录缓冲区写入trace log记录时必须先获取锁,所以需要等待其他Core释放锁;2)在优先级最低的任务所在的Core做trace log记录输出时,需要对trace log记录缓冲区加锁,通过加锁的方式避免trace log记录管理出现不一致的问题,但这种方式将直接导致其他Core此时如果有trace log记录产生,那么必须等待优先级最低的任务释放锁。
[0004]综上可知,现有技术在在实际使用上显然存在不便与缺陷,所以有必要加以改进。


【发明内容】

[0005]针对上述的缺陷,本发明的目的在于提供一种多核存储装置及多核环境的跟踪日志输出处理方法,可以减少调度次数,提高资源利用率。
[0006]为了实现上述目的,本发明提供一种多核环境的跟踪日志输出处理方法,所述方法包括:
[0007]每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;
[0008]为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;
[0009]根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;
[0010]定时器中断时,对所述跟踪日志输出处理。
[0011]根据本发明的多核环境的跟踪日志输出处理方法,根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理步骤包括:
[0012]预设一时间戳缓存结构;
[0013]将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;
[0014]将所述时间戳信息按大小排序处理。
[0015]根据本发明的多核环境的跟踪日志输出处理方法,所述定时器中断时,对所述跟踪日志输出处理步骤具体为:
[0016]定时器中断时,将时间戳最小的跟踪日志输出。
[0017]根据本发明的多核环境的跟踪日志输出处理方法,每个所述跟踪日志对应一个唯一的时间戳信息。
[0018]根据本发明的多核环境的跟踪日志输出处理方法,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
[0019]本发明还提供一种多核存储装置,其特征在于,包括:
[0020]日志处理模块,用于每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;
[0021]缓存配置模块,用于为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;
[0022]日志排序模块,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;
[0023]日志输出模块,用于定时器中断时,对所述跟踪日志输出处理。
[0024]根据本发明的多核存储装置,所述日志排序模块包括:
[0025]设置子模块,用于预设一时间戳缓存结构;
[0026]读取子模块,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;
[0027]排序子模块,用于将所述时间戳信息按大小排序处理。
[0028]根据本发明的多核存储装置,所述日志输出模块用于定时器中断时,将时间戳最小的跟踪日志输出。
[0029]根据本发明的多核存储装置,每个所述跟踪日志对应一个唯一的时间戳信息。
[0030]根据本发明的多核存储装置,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
[0031]本发明通过在每个核生成的trace log中加入时间戳信息,使其可以方便的进行识别与分类。并且每个核对应配置有无锁的循环缓存结构和静态缓存结构,分别用于暂存所述跟踪日志的指针,及暂存每个核生成的跟踪日志及对应的时间戳,通过时间戳信息可以方便的对各跟踪日志进行排序,并在定时器定时中断时,即可以将trace log记录输出到外设。本发明产生trace log记录时不需加锁,提高了 CPU资源的利用率,并且通过在装置内对trace log进行排序可减少对trace log的调度次数。

【专利附图】

【附图说明】
[0032]图1是本发明的多核存储装置结构示意图;
[0033]图2是本发明的日志排序模块结构示意图;
[0034]图3是本发明一实施例的跟踪日志处理流程示意图;
[0035]图4是本发明一实施例的时间戳缓存结构示意图;
[0036]图5是本发明一实施例的跟踪日志排序处理示意图;
[0037]图6是本发明的多核环境的trace log输出处理方法流程图;
[0038]图7是本发明一实施例的跟踪日志排序流程图;
[0039]图8是本发明另一实施例的跟踪日志排序输出处理流程图。

【具体实施方式】
[0040]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0041]参见图1,本发明提供了一种多核存储装置,该多核存储装置100包括日志处理模块10、缓存配置模块20、日志处理模块30以及日志输出模块40,其中:
[0042]日志处理模块10,用于每个核的跟踪日志生成时,对跟踪日志数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序,且每个跟踪日志对应一个唯一的时间戳信息。
[0043]对应于图3中的Stepl, trace log记录产生阶段,对trace log数据进行打包,力口入时间戳信息,以标识trace log记录的先后顺序。
[0044]缓存配置模块20,用于为多个核各配置一无锁循环缓存结构(fifo)和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳。
[0045]对应于图3中的Step2,每个Core都分配了一个支持无锁操作的循环buffer (fifoO?fifo 3)和一个trace log buffer (静态缓存结构)。无锁操作的循环buffer用来承载 trace log 记录在 trace log buffer 中的指针。trace log buffer 用来承载 trace log记录的头信息和trace log数据。当产生trace log记录的时候,CPU就将trace log的头信息(包括时间戳信息)和数据存到trace log buffer中,并把该trace log记录指针压入循环buffer。
[0046]日志排序模块30,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理。
[0047]对应于图3中的Step3。无锁操作的循环buffer内的trace log记录指针是按时间有序的,但不同core的循环buffer之间的trace log记录的顺序是未知的。为了保证trace log的输出的顺序正确,trace log必须进行排序。
[0048]优选的是,结合图2,日志排序模块30包括:
[0049]设置子模块31,用于预设一时间戳缓存结构。如图4所示,本发明通过定义tracelog timestamp (时间戳)buffer,每条trace log记录的时间戳只会被读取一次,在tracelog timestamp buffer中完成排序,借此减少fifo不必要的读操作。
[0050]读取子模块32,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次。
[0051]排序子模块33,用于将所述时间戳信息按大小排序处理,如图5所示,借此使不同无锁操作的循环buffer内的trace log记录也有序排列。
[0052]日志输出模块40,用于定时器中断时,对所述跟踪日志输出处理。需要说明的,定时器中断时,日志输出模块40将时间戳最小的trace log进行输出处理,且优选的,输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。外设处于空闲状态时即接收时间戳最小的trace log。
[0053]本发明适用于固态硬盘控制器在多核环境下并且PC侧外设终端无法通过tracelog记录的相关信息进行先后排序的情况,通过无锁操作结构,以及在存储装置内排序,实现了多核环境trace log记录从产生到输出无加解锁操作,消除了因为加解锁导致的core之间的等待,提高了 CPU资源的利用率。
[0054]参见图6,本发明提供了一种多核环境的trace log输出处理方法,其可以通过如图1所示的存储装置100实现,该方法包括:
[0055]步骤S601,每个核的跟踪日志生成时,对跟踪日志数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序,且每个跟踪日志对应一个唯一的时间戳信息。对应于图3中的Stepl, trace log记录产生阶段,对trace log数据进行打包,加入时间戳信息,以标识trace log记录的先后顺序。
[0056]步骤S602,为多个核各配置一无锁循环缓存结构(fifo)和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳。对应于图3中的Step2,每个Core都分配了一个支持无锁操作的循环buffer (fifo O?fifo 3)和一个trace log buffer (静态缓存结构)。无锁操作的循环 buffer 用来承载 trace log 记录在 trace log buffer 中的指针。trace log buffer用来承载trace log记录的头信息和trace log数据。当产生trace log记录的时候,CPU就将trace log的头信息(包括时间戳信息)和数据存到trace log buffer中,并把该trace log记录指针压入循环buffer。
[0057]步骤S603,根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理。对应于图3中的Step3。无锁操作的循环buffer内的trace log记录指针是按时间有序的,但不同core的循环buffer之间的trace log记录的顺序是未知的。为了保证trace log的输出的顺序正确,trace log必须进行排序。
[0058]步骤S604,定时器中断时,对所述跟踪日志输出处理。需要说明的,定时器中断时,将时间戳最小的trace log进行输出处理,且优选的,输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。外设处于空闲状态时即接收时间戳最小的trace log。
[0059]优选的,结合图7,步骤S603具体包括:
[0060]步骤S6031,预设一时间戳缓存结构。如图4所示,本发明通过定义trace logtimestamp (时间戳)buffer,每条trace log记录的时间戳只会被读取一次,在trace logtimestamp buffer中完成排序,借此减少fifo不必要的读操作。
[0061]步骤S6032,将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次。
[0062]步骤S6033,将所述时间戳信息按大小排序处理,如图5所示,借此使不同无锁操作的循环buffer内的trace log记录也有序排列。
[0063]对于具体的排序及输出流程,如图8所示,其通过检测FIFO中的指针,将指针指向的log的时间戳存入到时间戳缓存结构,并在其中排序,读出一次trace log时,将队列头的指针(时间戳最小)指向的trace log读出,外设空闲时即输出到外设。图8中Pop操作的功能为读出一个记录,Peek操作的功能为只读一个记录。在本发明中,trace log记录输出功能由负载最小的Core来完成,在trace log输出的时候,其他的Core可以同步产生trace log 记录。
[0064]综上所述,本发明通过在每个核生成的trace log中加入时间戳信息,使其可以方便的进行识别与分类。并且每个核对应配置有无锁的循环缓存结构和静态缓存结构,分别用于暂存所述跟踪日志的指针,及暂存每个核生成的跟踪日志及对应的时间戳,通过时间戳信息可以方便的对各跟踪日志进行排序,并在定时器定时中断时,即可以将trace log记录输出到外设。本发明产生trace log记录时不需加锁,提高了 CPU资源的利用率,并且通过在装置内对trace log进行排序可减少对trace log的调度次数。
[0065]当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【权利要求】
1.一种多核环境的跟踪日志输出处理方法,其特征在于,所述方法包括: 每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序; 为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳; 根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理; 定时器中断时,对所述跟踪日志输出处理。
2.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理步骤包括: 预设一时间戳缓存结构; 将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次; 将所述时间戳信息按大小排序处理。
3.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,所述定时器中断时,对所述跟踪日志输出处理步骤具体为: 定时器中断时,将时间戳最小的跟踪日志输出。
4.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,每个所述跟踪日志对应一个唯一的时间戳信息。
5.根据权利要求1?4任一项所述的多核环境的跟踪日志输出处理方法,其特征在于,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
6.一种多核存储装置,其特征在于,包括: 日志处理模块,用于每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序; 缓存配置模块,用于为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳; 日志排序模块,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理; 日志输出模块,用于定时器中断时,对所述跟踪日志输出处理。
7.根据权利要求6所述的多核存储装置,其特征在于,所述日志排序模块包括: 设置子模块,用于预设一时间戳缓存结构; 读取子模块,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次; 排序子模块,用于将所述时间戳信息按大小排序处理。
8.根据权利要求6所述的多核存储装置,其特征在于,所述日志输出模块用于定时器中断时,将时间戳最小的跟踪日志输出。
9.根据权利要求8所述的多核存储装置,其特征在于,每个所述跟踪日志对应一个唯一的时间戳信息。
10.根据权利要求6?9任一项所述的多核存储装置,其特征在于,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
【文档编号】G06F12/08GK104461931SQ201410407250
【公开日】2015年3月25日 申请日期:2014年8月18日 优先权日:2014年8月18日
【发明者】周大鹏 申请人:记忆科技(深圳)有限公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1