《多核存储装置及多核环境的跟踪日志输出处理方法.pdf》由会员分享,可在线阅读,更多相关《多核存储装置及多核环境的跟踪日志输出处理方法.pdf(13页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201410407250.7(22)申请日 2014.08.18G06F 12/08(2006.01)(71)申请人记忆科技(深圳)有限公司地址 518000 广东省深圳市南山区蛇口后海大道东角头厂房D13/F、D23/F、D14/F、D24/F、D15/F(72)发明人周大鹏(74)专利代理机构北京律诚同业知识产权代理有限公司 11006代理人刘健 梁挥(54) 发明名称多核存储装置及多核环境的跟踪日志输出处理方法(57) 摘要本发明适用于存储技术领域,提供了一种多核环境的跟踪日志输出处理方法,所述方法包括:每个核的跟踪日志生成时,对跟。
2、踪日志数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;为多个核各配置一无锁循环缓存结构和静态缓存结构,分别用于暂存所述跟踪日志的指针,以及暂存每个核生成的跟踪日志及对应的时间戳;根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;定时器中断时,对所述跟踪日志输出处理。本发明还相应提供一种实现上述方法的多核存储装置。借此,本发明可以使缓存操作和输出操作同时进行,减少调度次数,提高资源利用率。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书5页 附图5页(10。
3、)申请公布号 CN 104461931 A(43)申请公布日 2015.03.25CN 104461931 A1/2页21.一种多核环境的跟踪日志输出处理方法,其特征在于,所述方法包括:每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;定时器中断时,对所述跟踪日志输。
4、出处理。2.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理步骤包括:预设一时间戳缓存结构;将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;将所述时间戳信息按大小排序处理。3.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,所述定时器中断时,对所述跟踪日志输出处理步骤具体为:定时器中断时,将时间戳最小的跟踪日志输出。4.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,每个所述跟踪日志对应一个唯一的时间戳信息。5.根据权利要求14任一项所述的多核环境的跟踪。
5、日志输出处理方法,其特征在于,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。6.一种多核存储装置,其特征在于,包括:日志处理模块,用于每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;缓存配置模块,用于为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;日志排序模块,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;日志输出模块,用于定时。
6、器中断时,对所述跟踪日志输出处理。7.根据权利要求6所述的多核存储装置,其特征在于,所述日志排序模块包括:设置子模块,用于预设一时间戳缓存结构;读取子模块,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;排序子模块,用于将所述时间戳信息按大小排序处理。8.根据权利要求6所述的多核存储装置,其特征在于,所述日志输出模块用于定时器中断时,将时间戳最小的跟踪日志输出。9.根据权利要求8所述的多核存储装置,其特征在于,每个所述跟踪日志对应一个唯权 利 要 求 书CN 104461931 A2/2页3一的时间戳信息。10.根据权利要求69任一项所述的多核存储装。
7、置,其特征在于,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。权 利 要 求 书CN 104461931 A1/5页4多核存储装置及多核环境的跟踪日志输出处理方法技术领域0001 本发明涉及存储技术领域,尤其涉及一种多核存储装置及多核环境的跟踪日志输出处理方法。背景技术0002 Trace log(跟踪日志)是存储系统中的用户常用进程之一。现有技术中一般是通过在存储区域申请一块trace log记录缓冲区,在程序执行的过程中将trace log记录写入缓冲区,最后由一个优先级最低的任务负责trace log记录的输出。0003 上述方法有以下不利之处:1)当多个core。
8、同时向trace log记录缓冲区写入trace log记录时必须先获取锁,所以需要等待其他Core释放锁;2)在优先级最低的任务所在的Core做trace log记录输出时,需要对trace log记录缓冲区加锁,通过加锁的方式避免trace log记录管理出现不一致的问题,但这种方式将直接导致其他Core此时如果有trace log记录产生,那么必须等待优先级最低的任务释放锁。0004 综上可知,现有技术在在实际使用上显然存在不便与缺陷,所以有必要加以改进。发明内容0005 针对上述的缺陷,本发明的目的在于提供一种多核存储装置及多核环境的跟踪日志输出处理方法,可以减少调度次数,提高资源利用。
9、率。0006 为了实现上述目的,本发明提供一种多核环境的跟踪日志输出处理方法,所述方法包括:0007 每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;0008 为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;0009 根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;0010 定时器中断时,对所述跟踪日志输出处理。0011 根据本发明的多核环境的跟踪日志输出处。
10、理方法,根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理步骤包括:0012 预设一时间戳缓存结构;0013 将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;0014 将所述时间戳信息按大小排序处理。0015 根据本发明的多核环境的跟踪日志输出处理方法,所述定时器中断时,对所述跟踪日志输出处理步骤具体为:说 明 书CN 104461931 A2/5页50016 定时器中断时,将时间戳最小的跟踪日志输出。0017 根据本发明的多核环境的跟踪日志输出处理方法,每个所述跟踪日志对应一个唯一的时间戳信息。0018 根据本发明的多核环境的跟踪日志输出处理方法,。
11、所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。0019 本发明还提供一种多核存储装置,其特征在于,包括:0020 日志处理模块,用于每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;0021 缓存配置模块,用于为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;0022 日志排序模块,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;00。
12、23 日志输出模块,用于定时器中断时,对所述跟踪日志输出处理。0024 根据本发明的多核存储装置,所述日志排序模块包括:0025 设置子模块,用于预设一时间戳缓存结构;0026 读取子模块,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;0027 排序子模块,用于将所述时间戳信息按大小排序处理。0028 根据本发明的多核存储装置,所述日志输出模块用于定时器中断时,将时间戳最小的跟踪日志输出。0029 根据本发明的多核存储装置,每个所述跟踪日志对应一个唯一的时间戳信息。0030 根据本发明的多核存储装置,所述跟踪日志的输出处理由负载最小的核完成,其它核。
13、可以同步产生跟踪日志。0031 本发明通过在每个核生成的trace log中加入时间戳信息,使其可以方便的进行识别与分类。并且每个核对应配置有无锁的循环缓存结构和静态缓存结构,分别用于暂存所述跟踪日志的指针,及暂存每个核生成的跟踪日志及对应的时间戳,通过时间戳信息可以方便的对各跟踪日志进行排序,并在定时器定时中断时,即可以将trace log记录输出到外设。本发明产生trace log记录时不需加锁,提高了CPU资源的利用率,并且通过在装置内对trace log进行排序可减少对trace log的调度次数。附图说明0032 图1是本发明的多核存储装置结构示意图;0033 图2是本发明的日志排序。
14、模块结构示意图;0034 图3是本发明一实施例的跟踪日志处理流程示意图;0035 图4是本发明一实施例的时间戳缓存结构示意图;0036 图5是本发明一实施例的跟踪日志排序处理示意图;0037 图6是本发明的多核环境的trace log输出处理方法流程图;0038 图7是本发明一实施例的跟踪日志排序流程图;说 明 书CN 104461931 A3/5页60039 图8是本发明另一实施例的跟踪日志排序输出处理流程图。具体实施方式0040 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定。
15、本发明。0041 参见图1,本发明提供了一种多核存储装置,该多核存储装置100包括日志处理模块10、缓存配置模块20、日志处理模块30以及日志输出模块40,其中:0042 日志处理模块10,用于每个核的跟踪日志生成时,对跟踪日志数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序,且每个跟踪日志对应一个唯一的时间戳信息。0043 对应于图3中的Step1,trace log记录产生阶段,对trace log数据进行打包,加入时间戳信息,以标识trace log记录的先后顺序。0044 缓存配置模块20,用于为多个核各配置一无锁循环缓存结构(fo)和静态缓存结构,所述无锁。
16、循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳。0045 对应于图3中的Step2,每个Core都分配了一个支持无锁操作的循环buffer(fo 0fo 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中,并。
17、把该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所示,本发明通过定义trace lo。
18、g timestamp(时间戳)buffer,每条trace log记录的时间戳只会被读取一次,在trace log timestamp buffer中完成排序,借此减少fo不必要的读操作。0050 读取子模块32,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次。0051 排序子模块33,用于将所述时间戳信息按大小排序处理,如图5所示,借此使不同无锁操作的循环buffer内的trace log记录也有序排列。0052 日志输出模块40,用于定时器中断时,对所述跟踪日志输出处理。需要说明的,定时器中断时,日志输出模块40将时间戳最小的trace log。
19、进行输出处理,且优选的,输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。外设处于空闲状态时即接收时间戳最小的trace log。说 明 书CN 104461931 A4/5页70053 本发明适用于固态硬盘控制器在多核环境下并且PC侧外设终端无法通过trace log记录的相关信息进行先后排序的情况,通过无锁操作结构,以及在存储装置内排序,实现了多核环境trace log记录从产生到输出无加解锁操作,消除了因为加解锁导致的core之间的等待,提高了CPU资源的利用率。0054 参见图6,本发明提供了一种多核环境的trace log输出处理方法,其可以通过如图1所示的存储装置100实现,。
20、该方法包括:0055 步骤S601,每个核的跟踪日志生成时,对跟踪日志数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序,且每个跟踪日志对应一个唯一的时间戳信息。对应于图3中的Step1,trace log记录产生阶段,对trace log数据进行打包,加入时间戳信息,以标识trace log记录的先后顺序。0056 步骤S602,为多个核各配置一无锁循环缓存结构(fo)和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳。对应于图3中的Step2,每个Core都分配了一个支持无锁操作的循环buff。
21、er(fo 0fo 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,根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理。。
22、对应于图3中的Step3。无锁操作的循环buffer内的trace log记录指针是按时间有序的,但不同core的循环buffer之间的trace log记录的顺序是未知的。为了保证trace log的输出的顺序正确,trace log必须进行排序。0058 步骤S604,定时器中断时,对所述跟踪日志输出处理。需要说明的,定时器中断时,将时间戳最小的trace log进行输出处理,且优选的,输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。外设处于空闲状态时即接收时间戳最小的trace log。0059 优选的,结合图7,步骤S603具体包括:0060 步骤S6031,预设一时间戳缓存结。
23、构。如图4所示,本发明通过定义trace log timestamp(时间戳)buffer,每条trace log记录的时间戳只会被读取一次,在trace log timestamp buffer中完成排序,借此减少fo不必要的读操作。0061 步骤S6032,将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次。0062 步骤S6033,将所述时间戳信息按大小排序处理,如图5所示,借此使不同无锁操作的循环buffer内的trace log记录也有序排列。0063 对于具体的排序及输出流程,如图8所示,其通过检测FIFO中的指针,将指针指向的log的时间戳存入。
24、到时间戳缓存结构,并在其中排序,读出一次trace log时,将队列头的指针(时间戳最小)指向的trace log读出,外设空闲时即输出到外设。图8中Pop操作的功能为读出一个记录,Peek操作的功能为只读一个记录。在本发明中,trace log记录输出功能由负载最小的Core来完成,在trace log输出的时候,其他的Core可以同步产生说 明 书CN 104461931 A5/5页8trace log记录。0064 综上所述,本发明通过在每个核生成的trace log中加入时间戳信息,使其可以方便的进行识别与分类。并且每个核对应配置有无锁的循环缓存结构和静态缓存结构,分别用于暂存所述跟踪。
25、日志的指针,及暂存每个核生成的跟踪日志及对应的时间戳,通过时间戳信息可以方便的对各跟踪日志进行排序,并在定时器定时中断时,即可以将trace log记录输出到外设。本发明产生trace log记录时不需加锁,提高了CPU资源的利用率,并且通过在装置内对trace log进行排序可减少对trace log的调度次数。0065 当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。说 明 书CN 104461931 A1/5页9图1图2说 明 书 附 图CN 104461931 A2/5页10图3图4说 明 书 附 图CN 104461931 A10。