CN104461931A - 多核存储装置及多核环境的跟踪日志输出处理方法 - Google Patents
多核存储装置及多核环境的跟踪日志输出处理方法 Download PDFInfo
- Publication number
- CN104461931A CN104461931A CN201410407250.7A CN201410407250A CN104461931A CN 104461931 A CN104461931 A CN 104461931A CN 201410407250 A CN201410407250 A CN 201410407250A CN 104461931 A CN104461931 A CN 104461931A
- Authority
- CN
- China
- Prior art keywords
- trace log
- timestamp
- timestamp information
- trace
- output processing
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明适用于存储技术领域,提供了一种多核环境的跟踪日志输出处理方法,所述方法包括:每个核的跟踪日志生成时,对跟踪日志数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;为多个核各配置一无锁循环缓存结构和静态缓存结构,分别用于暂存所述跟踪日志的指针,以及暂存每个核生成的跟踪日志及对应的时间戳;根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;定时器中断时,对所述跟踪日志输出处理。本发明还相应提供一种实现上述方法的多核存储装置。借此,本发明可以使缓存操作和输出操作同时进行,减少调度次数,提高资源利用率。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种多核存储装置及多核环境的跟踪日志输出处理方法。
背景技术
Trace log(跟踪日志)是存储系统中的用户常用进程之一。现有技术中一般是通过在存储区域申请一块trace log记录缓冲区,在程序执行的过程中将trace log记录写入缓冲区,最后由一个优先级最低的任务负责trace log记录的输出。
上述方法有以下不利之处:1)当多个core同时向trace log记录缓冲区写入trace log记录时必须先获取锁,所以需要等待其他Core释放锁;2)在优先级最低的任务所在的Core做trace log记录输出时,需要对trace log记录缓冲区加锁,通过加锁的方式避免trace log记录管理出现不一致的问题,但这种方式将直接导致其他Core此时如果有trace log记录产生,那么必须等待优先级最低的任务释放锁。
综上可知,现有技术在在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种多核存储装置及多核环境的跟踪日志输出处理方法,可以减少调度次数,提高资源利用率。
为了实现上述目的,本发明提供一种多核环境的跟踪日志输出处理方法,所述方法包括:
每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;
为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;
根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;
定时器中断时,对所述跟踪日志输出处理。
根据本发明的多核环境的跟踪日志输出处理方法,根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理步骤包括:
预设一时间戳缓存结构;
将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;
将所述时间戳信息按大小排序处理。
根据本发明的多核环境的跟踪日志输出处理方法,所述定时器中断时,对所述跟踪日志输出处理步骤具体为:
定时器中断时,将时间戳最小的跟踪日志输出。
根据本发明的多核环境的跟踪日志输出处理方法,每个所述跟踪日志对应一个唯一的时间戳信息。
根据本发明的多核环境的跟踪日志输出处理方法,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
本发明还提供一种多核存储装置,其特征在于,包括:
日志处理模块,用于每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;
缓存配置模块,用于为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;
日志排序模块,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;
日志输出模块,用于定时器中断时,对所述跟踪日志输出处理。
根据本发明的多核存储装置,所述日志排序模块包括:
设置子模块,用于预设一时间戳缓存结构;
读取子模块,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;
排序子模块,用于将所述时间戳信息按大小排序处理。
根据本发明的多核存储装置,所述日志输出模块用于定时器中断时,将时间戳最小的跟踪日志输出。
根据本发明的多核存储装置,每个所述跟踪日志对应一个唯一的时间戳信息。
根据本发明的多核存储装置,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
本发明通过在每个核生成的trace log中加入时间戳信息,使其可以方便的进行识别与分类。并且每个核对应配置有无锁的循环缓存结构和静态缓存结构,分别用于暂存所述跟踪日志的指针,及暂存每个核生成的跟踪日志及对应的时间戳,通过时间戳信息可以方便的对各跟踪日志进行排序,并在定时器定时中断时,即可以将trace log记录输出到外设。本发明产生trace log记录时不需加锁,提高了CPU资源的利用率,并且通过在装置内对trace log进行排序可减少对trace log的调度次数。
附图说明
图1是本发明的多核存储装置结构示意图;
图2是本发明的日志排序模块结构示意图;
图3是本发明一实施例的跟踪日志处理流程示意图;
图4是本发明一实施例的时间戳缓存结构示意图;
图5是本发明一实施例的跟踪日志排序处理示意图;
图6是本发明的多核环境的trace log输出处理方法流程图;
图7是本发明一实施例的跟踪日志排序流程图;
图8是本发明另一实施例的跟踪日志排序输出处理流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图1,本发明提供了一种多核存储装置,该多核存储装置100包括日志处理模块10、缓存配置模块20、日志处理模块30以及日志输出模块40,其中:
日志处理模块10,用于每个核的跟踪日志生成时,对跟踪日志数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序,且每个跟踪日志对应一个唯一的时间戳信息。
对应于图3中的Step1,trace log记录产生阶段,对trace log数据进行打包,加入时间戳信息,以标识trace log记录的先后顺序。
缓存配置模块20,用于为多个核各配置一无锁循环缓存结构(fifo)和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳。
对应于图3中的Step2,每个Core都分配了一个支持无锁操作的循环buffer(fifo 0~fifo 3)和一个trace log buffer(静态缓存结构)。无锁操作的循环buffer用来承载trace log记录在trace log buffer中的指针。trace log buffer用来承载tracelog记录的头信息和trace log数据。当产生trace log记录的时候,CPU就将tracelog的头信息(包括时间戳信息)和数据存到trace log buffer中,并把该trace log记录指针压入循环buffer。
日志排序模块30,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理。
对应于图3中的Step3。无锁操作的循环buffer内的trace log记录指针是按时间有序的,但不同core的循环buffer之间的trace log记录的顺序是未知的。为了保证trace log的输出的顺序正确,trace log必须进行排序。
优选的是,结合图2,日志排序模块30包括:
设置子模块31,用于预设一时间戳缓存结构。如图4所示,本发明通过定义trace log timestamp(时间戳)buffer,每条trace log记录的时间戳只会被读取一次,在trace log timestamp buffer中完成排序,借此减少fifo不必要的读操作。
读取子模块32,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次。
排序子模块33,用于将所述时间戳信息按大小排序处理,如图5所示,借此使不同无锁操作的循环buffer内的trace log记录也有序排列。
日志输出模块40,用于定时器中断时,对所述跟踪日志输出处理。需要说明的,定时器中断时,日志输出模块40将时间戳最小的trace log进行输出处理,且优选的,输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。外设处于空闲状态时即接收时间戳最小的trace log。
本发明适用于固态硬盘控制器在多核环境下并且PC侧外设终端无法通过trace log记录的相关信息进行先后排序的情况,通过无锁操作结构,以及在存储装置内排序,实现了多核环境trace log记录从产生到输出无加解锁操作,消除了因为加解锁导致的core之间的等待,提高了CPU资源的利用率。
参见图6,本发明提供了一种多核环境的trace log输出处理方法,其可以通过如图1所示的存储装置100实现,该方法包括:
步骤S601,每个核的跟踪日志生成时,对跟踪日志数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序,且每个跟踪日志对应一个唯一的时间戳信息。对应于图3中的Step1,trace log记录产生阶段,对trace log数据进行打包,加入时间戳信息,以标识trace log记录的先后顺序。
步骤S602,为多个核各配置一无锁循环缓存结构(fifo)和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳。对应于图3中的Step2,每个Core都分配了一个支持无锁操作的循环buffer(fifo 0~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。
步骤S603,根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理。对应于图3中的Step3。无锁操作的循环buffer内的trace log记录指针是按时间有序的,但不同core的循环buffer之间的trace log记录的顺序是未知的。为了保证trace log的输出的顺序正确,trace log必须进行排序。
步骤S604,定时器中断时,对所述跟踪日志输出处理。需要说明的,定时器中断时,将时间戳最小的trace log进行输出处理,且优选的,输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。外设处于空闲状态时即接收时间戳最小的trace log。
优选的,结合图7,步骤S603具体包括:
步骤S6031,预设一时间戳缓存结构。如图4所示,本发明通过定义trace logtimestamp(时间戳)buffer,每条trace log记录的时间戳只会被读取一次,在tracelog timestamp buffer中完成排序,借此减少fifo不必要的读操作。
步骤S6032,将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次。
步骤S6033,将所述时间戳信息按大小排序处理,如图5所示,借此使不同无锁操作的循环buffer内的trace log记录也有序排列。
对于具体的排序及输出流程,如图8所示,其通过检测FIFO中的指针,将指针指向的log的时间戳存入到时间戳缓存结构,并在其中排序,读出一次tracelog时,将队列头的指针(时间戳最小)指向的trace log读出,外设空闲时即输出到外设。图8中Pop操作的功能为读出一个记录,Peek操作的功能为只读一个记录。在本发明中,trace log记录输出功能由负载最小的Core来完成,在trace log输出的时候,其他的Core可以同步产生trace log记录。
综上所述,本发明通过在每个核生成的trace log中加入时间戳信息,使其可以方便的进行识别与分类。并且每个核对应配置有无锁的循环缓存结构和静态缓存结构,分别用于暂存所述跟踪日志的指针,及暂存每个核生成的跟踪日志及对应的时间戳,通过时间戳信息可以方便的对各跟踪日志进行排序,并在定时器定时中断时,即可以将trace log记录输出到外设。本发明产生trace log记录时不需加锁,提高了CPU资源的利用率,并且通过在装置内对trace log进行排序可减少对trace log的调度次数。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1.一种多核环境的跟踪日志输出处理方法,其特征在于,所述方法包括:
每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;
为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;
根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;
定时器中断时,对所述跟踪日志输出处理。
2.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理步骤包括:
预设一时间戳缓存结构;
将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;
将所述时间戳信息按大小排序处理。
3.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,所述定时器中断时,对所述跟踪日志输出处理步骤具体为:
定时器中断时,将时间戳最小的跟踪日志输出。
4.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,每个所述跟踪日志对应一个唯一的时间戳信息。
5.根据权利要求1~4任一项所述的多核环境的跟踪日志输出处理方法,其特征在于,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
6.一种多核存储装置,其特征在于,包括:
日志处理模块,用于每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;
缓存配置模块,用于为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;
日志排序模块,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;
日志输出模块,用于定时器中断时,对所述跟踪日志输出处理。
7.根据权利要求6所述的多核存储装置,其特征在于,所述日志排序模块包括:
设置子模块,用于预设一时间戳缓存结构;
读取子模块,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;
排序子模块,用于将所述时间戳信息按大小排序处理。
8.根据权利要求6所述的多核存储装置,其特征在于,所述日志输出模块用于定时器中断时,将时间戳最小的跟踪日志输出。
9.根据权利要求8所述的多核存储装置,其特征在于,每个所述跟踪日志对应一个唯一的时间戳信息。
10.根据权利要求6~9任一项所述的多核存储装置,其特征在于,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410407250.7A CN104461931B (zh) | 2014-08-18 | 2014-08-18 | 多核存储装置及多核环境的跟踪日志输出处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410407250.7A CN104461931B (zh) | 2014-08-18 | 2014-08-18 | 多核存储装置及多核环境的跟踪日志输出处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461931A true CN104461931A (zh) | 2015-03-25 |
CN104461931B CN104461931B (zh) | 2018-04-27 |
Family
ID=52908017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410407250.7A Active CN104461931B (zh) | 2014-08-18 | 2014-08-18 | 多核存储装置及多核环境的跟踪日志输出处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461931B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681846A (zh) * | 2016-12-29 | 2017-05-17 | 北京奇虎科技有限公司 | 日志数据的统计方法、装置及系统 |
CN111813718A (zh) * | 2020-06-30 | 2020-10-23 | 济南浪潮数据技术有限公司 | 一种日志输出方法、装置、设备及可读存储介质 |
CN112000617A (zh) * | 2020-08-07 | 2020-11-27 | 北京浪潮数据技术有限公司 | 一种日志预处理方法、装置、设备及可读存储介质 |
CN112486752A (zh) * | 2020-12-18 | 2021-03-12 | 时擎智能科技(上海)有限公司 | 一种处理器跟踪系统、方法、存储介质及终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101534213A (zh) * | 2009-04-09 | 2009-09-16 | 成都市华为赛门铁克科技有限公司 | 一种日志的获取方法及日志服务器 |
US20100174871A1 (en) * | 2007-06-05 | 2010-07-08 | Satoshi Uchida | Input/output control system, input/output control method and input/output control program |
CN103198007A (zh) * | 2012-01-06 | 2013-07-10 | 腾讯科技(深圳)有限公司 | 多进程的日志输出方法及系统 |
CN103488563A (zh) * | 2013-09-05 | 2014-01-01 | 龙芯中科技术有限公司 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
CN103714026A (zh) * | 2014-01-14 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 一种支持原址数据交换的存储器访问方法及装置 |
-
2014
- 2014-08-18 CN CN201410407250.7A patent/CN104461931B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100174871A1 (en) * | 2007-06-05 | 2010-07-08 | Satoshi Uchida | Input/output control system, input/output control method and input/output control program |
CN101534213A (zh) * | 2009-04-09 | 2009-09-16 | 成都市华为赛门铁克科技有限公司 | 一种日志的获取方法及日志服务器 |
CN103198007A (zh) * | 2012-01-06 | 2013-07-10 | 腾讯科技(深圳)有限公司 | 多进程的日志输出方法及系统 |
CN103488563A (zh) * | 2013-09-05 | 2014-01-01 | 龙芯中科技术有限公司 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
CN103714026A (zh) * | 2014-01-14 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 一种支持原址数据交换的存储器访问方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681846A (zh) * | 2016-12-29 | 2017-05-17 | 北京奇虎科技有限公司 | 日志数据的统计方法、装置及系统 |
CN106681846B (zh) * | 2016-12-29 | 2020-10-13 | 北京奇虎科技有限公司 | 日志数据的统计方法、装置及系统 |
CN111813718A (zh) * | 2020-06-30 | 2020-10-23 | 济南浪潮数据技术有限公司 | 一种日志输出方法、装置、设备及可读存储介质 |
CN112000617A (zh) * | 2020-08-07 | 2020-11-27 | 北京浪潮数据技术有限公司 | 一种日志预处理方法、装置、设备及可读存储介质 |
CN112000617B (zh) * | 2020-08-07 | 2022-08-12 | 北京浪潮数据技术有限公司 | 一种日志预处理方法、装置、设备及可读存储介质 |
CN112486752A (zh) * | 2020-12-18 | 2021-03-12 | 时擎智能科技(上海)有限公司 | 一种处理器跟踪系统、方法、存储介质及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN104461931B (zh) | 2018-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111324427B (zh) | 一种基于dsp的任务调度方法及装置 | |
US10002019B2 (en) | System and method for assigning a transaction to a serialized execution group based on an execution group limit for parallel processing with other execution groups | |
CN107729135B (zh) | 按序进行并行数据处理的方法和装置 | |
CN104461931A (zh) | 多核存储装置及多核环境的跟踪日志输出处理方法 | |
US20110238677A1 (en) | Dynamic Sort-Based Parallelism | |
CN106503008B (zh) | 文件存储方法和装置及文件查询方法和装置 | |
CN103927338A (zh) | 日志信息入库处理方法和装置 | |
US10789195B1 (en) | Article, device, and techniques for serverless streaming message processing | |
CN108846749A (zh) | 一种基于区块链技术的分片化的交易执行系统及方法 | |
CN103577310A (zh) | 记录软件调试日志的方法以及装置 | |
CN104182360B (zh) | 多核环境的跟踪日志输出处理方法及系统 | |
CN110471754A (zh) | 作业调度中的数据展示方法、装置、设备及存储介质 | |
WO2023160088A1 (zh) | 一种区块链交易的处理方法、区块链节点及电子设备 | |
CN109842621A (zh) | 一种减少token存储数量的方法及终端 | |
US20190050298A1 (en) | Method and apparatus for improving database recovery speed using log data analysis | |
CN110221914B (zh) | 文件处理方法及装置 | |
CN108920601B (zh) | 一种数据匹配方法及装置 | |
CN108073705B (zh) | 一种分布式海量数据聚合采集方法 | |
CN105183854A (zh) | 一种数据库卸载数据的调度方法 | |
CN103077081B (zh) | 资源调整的方法及装置 | |
CN102521149B (zh) | 一种从多缓冲区收取数据的优化轮询系统和方法 | |
CN110830385A (zh) | 一种捕包处理方法、网络设备、服务器及存储介质 | |
CN1851651A (zh) | 嵌入式sram操作系统进程优先权调度的实现方法 | |
CN111045959B (zh) | 一种基于存储优化的复杂算法变量映射方法 | |
CN112818007B (zh) | 数据处理方法、装置及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |