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

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

Info

Publication number
CN104461931B
CN104461931B CN201410407250.7A CN201410407250A CN104461931B CN 104461931 B CN104461931 B CN 104461931B CN 201410407250 A CN201410407250 A CN 201410407250A CN 104461931 B CN104461931 B CN 104461931B
Authority
CN
China
Prior art keywords
trace log
timestamp
trace
timestamp information
log
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
CN201410407250.7A
Other languages
English (en)
Other versions
CN104461931A (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.)
Ramaxel Technology Shenzhen Co Ltd
Original Assignee
Ramaxel Technology Shenzhen Co 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 Ramaxel Technology Shenzhen Co Ltd filed Critical Ramaxel Technology Shenzhen Co Ltd
Priority to CN201410407250.7A priority Critical patent/CN104461931B/zh
Publication of CN104461931A publication Critical patent/CN104461931A/zh
Application granted granted Critical
Publication of CN104461931B publication Critical patent/CN104461931B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

多核存储装置及多核环境的跟踪日志输出处理方法
技术领域
本发明涉及存储技术领域,尤其涉及一种多核存储装置及多核环境的跟踪日志输出处理方法。
背景技术
Trace log(跟踪日志)是存储系统中的用户常用进程之一。现有技术中一般是通过在存储区域申请一块trace log记录缓冲区,在程序执行的过程中将trace log记录写入缓冲区,最后由一个优先级最低的任务负责trace log记录的输出。
上述方法有以下不利之处:1)当多个core同时向trace log记录缓冲区写入tracelog记录时必须先获取锁,所以需要等待其他Core释放锁;2)在优先级最低的任务所在的Core做trace log记录输出时,需要对trace log记录缓冲区加锁,通过加锁的方式避免trace log记录管理出现不一致的问题,但这种方式将直接导致其他Core此时如果有tracelog记录产生,那么必须等待优先级最低的任务释放锁。
综上可知,现有技术在在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种多核存储装置及多核环境的跟踪日志输出处理方法,可以减少调度次数,提高资源利用率。
为了实现上述目的,本发明提供一种多核环境的跟踪日志输出处理方法,所述方法包括:
每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;
为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;
根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;
定时器中断时,对所述跟踪日志输出处理。
根据本发明的多核环境的跟踪日志输出处理方法,根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理步骤包括:
预设一时间戳缓存结构;
将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;
将所述时间戳信息按大小排序处理。
根据本发明的多核环境的跟踪日志输出处理方法,所述定时器中断时,对所述跟踪日志输出处理步骤具体为:
定时器中断时,将时间戳最小的跟踪日志输出。
根据本发明的多核环境的跟踪日志输出处理方法,每个所述跟踪日志对应一个唯一的时间戳信息。
根据本发明的多核环境的跟踪日志输出处理方法,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
本发明还提供一种多核存储装置,其特征在于,包括:
日志处理模块,用于每个核的跟踪日志生成时,对所述跟踪日志的数据进行打包,并加入时间戳信息,所述时间戳信息用于标识跟踪日志记录的先后顺序;
缓存配置模块,用于为多个核各配置一无锁循环缓存结构和静态缓存结构,所述无锁循环缓存结构用于暂存所述跟踪日志的指针,所述静态缓存结构用于暂存每个核生成的跟踪日志及对应的时间戳;
日志排序模块,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理;
日志输出模块,用于定时器中断时,对所述跟踪日志输出处理。
根据本发明的多核存储装置,所述日志排序模块包括:
设置子模块,用于预设一时间戳缓存结构;
读取子模块,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次;
排序子模块,用于将所述时间戳信息按大小排序处理。
根据本发明的多核存储装置,所述日志输出模块用于定时器中断时,将时间戳最小的跟踪日志输出。
根据本发明的多核存储装置,每个所述跟踪日志对应一个唯一的时间戳信息。
根据本发明的多核存储装置,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
本发明通过在每个核生成的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(fifo0~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。
日志排序模块30,用于根据所述跟踪日志的指针获取所述跟踪日志的时间戳信息,并根据时间戳信息对不同静态缓存结构的跟踪日志进行排序处理。
对应于图3中的Step3。无锁操作的循环buffer内的trace log记录指针是按时间有序的,但不同core的循环buffer之间的trace log记录的顺序是未知的。为了保证tracelog的输出的顺序正确,trace log必须进行排序。
优选的是,结合图2,日志排序模块30包括:
设置子模块31,用于预设一时间戳缓存结构。如图4所示,本发明通过定义tracelog timestamp(时间戳)buffer,每条trace log记录的时间戳只会被读取一次,在tracelog timestamp buffer中完成排序,借此减少fifo不必要的读操作。
读取子模块32,用于将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次。
排序子模块33,用于将所述时间戳信息按大小排序处理,如图5所示,借此使不同无锁操作的循环buffer内的trace log记录也有序排列。
日志输出模块40,用于定时器中断时,对所述跟踪日志输出处理。需要说明的,定时器中断时,日志输出模块40将时间戳最小的trace log进行输出处理,且优选的,输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。外设处于空闲状态时即接收时间戳最小的trace log。
本发明适用于固态硬盘控制器在多核环境下并且PC侧外设终端无法通过tracelog记录的相关信息进行先后排序的情况,通过无锁操作结构,以及在存储装置内排序,实现了多核环境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就将tracelog的头信息(包括时间戳信息)和数据存到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记录的时间戳只会被读取一次,在trace logtimestamp buffer中完成排序,借此减少fifo不必要的读操作。
步骤S6032,将不同跟踪日志的时间戳信息读取到所述时间戳缓存结构,每个跟踪日志的时间戳信息只读取一次。
步骤S6033,将所述时间戳信息按大小排序处理,如图5所示,借此使不同无锁操作的循环buffer内的trace log记录也有序排列。
对于具体的排序及输出流程,如图8所示,其通过检测FIFO中的指针,将指针指向的log的时间戳存入到时间戳缓存结构,并在其中排序,读出一次trace log时,将队列头的指针(时间戳最小)指向的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任一项所述的多核存储装置,其特征在于,所述跟踪日志的输出处理由负载最小的核完成,其它核可以同步产生跟踪日志。
CN201410407250.7A 2014-08-18 2014-08-18 多核存储装置及多核环境的跟踪日志输出处理方法 Active CN104461931B (zh)

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 CN104461931A (zh) 2015-03-25
CN104461931B true 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)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106681846B (zh) * 2016-12-29 2020-10-13 北京奇虎科技有限公司 日志数据的统计方法、装置及系统
CN111813718A (zh) * 2020-06-30 2020-10-23 济南浪潮数据技术有限公司 一种日志输出方法、装置、设备及可读存储介质
CN112000617B (zh) * 2020-08-07 2022-08-12 北京浪潮数据技术有限公司 一种日志预处理方法、装置、设备及可读存储介质
CN112486752A (zh) * 2020-12-18 2021-03-12 时擎智能科技(上海)有限公司 一种处理器跟踪系统、方法、存储介质及终端

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008149657A1 (ja) * 2007-06-05 2008-12-11 Nec Corporation 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
CN101534213B (zh) * 2009-04-09 2011-02-02 成都市华为赛门铁克科技有限公司 一种日志的获取方法及日志服务器
CN103198007A (zh) * 2012-01-06 2013-07-10 腾讯科技(深圳)有限公司 多进程的日志输出方法及系统
CN103488563B (zh) * 2013-09-05 2017-04-12 龙芯中科技术有限公司 并行程序的数据竞争检测方法、装置及多核处理系统
CN103714026B (zh) * 2014-01-14 2016-09-28 中国人民解放军国防科学技术大学 一种支持原址数据交换的存储器访问方法及装置

Also Published As

Publication number Publication date
CN104461931A (zh) 2015-03-25

Similar Documents

Publication Publication Date Title
CN104461931B (zh) 多核存储装置及多核环境的跟踪日志输出处理方法
CN103793284B (zh) 基于共同序列模式的、用于智能客户服务的分析系统和方法
US9113125B2 (en) Techniques for indexing video files
RU2643651C2 (ru) Система и способ для вычисления дайджеста сообщений
CN106534273A (zh) 区块链元数据存储系统及其存储方法与检索方法
CN104331487B (zh) 日志的处理方法及装置
US9262676B2 (en) Handwritten signature detection, validation, and confirmation
JP2012529704A (ja) 検索負荷に応じて平衡化されたフィンガープリントのデータベースを有するメディア識別システム
CN102456076A (zh) 海量片段数据汇聚的系统和方法
CN103577310A (zh) 记录软件调试日志的方法以及装置
US20210133079A1 (en) Validation of log files using blockchain system
CN104182360B (zh) 多核环境的跟踪日志输出处理方法及系统
Zhang et al. A survey on quality assurance techniques for big data applications
US20190050298A1 (en) Method and apparatus for improving database recovery speed using log data analysis
CN104021002B (zh) 一种pdm系统标准件存储方法
CN108073705B (zh) 一种分布式海量数据聚合采集方法
US10528257B2 (en) Method and apparatus for reproducing an I/O operation of a storage system
CN102375886A (zh) 一种多通道高速数据比对方法
CN109597702A (zh) 消息总线异常的根因分析方法、装置、设备及存储介质
CN106682047B (zh) 一种数据导入方法以及相关装置
CN107544759A (zh) 一种磁盘阵列io分配系统及方法
CN106611138A (zh) 一种ghost文件保密检查方法及装置
CN109101426B (zh) 一种业务比对测试系统
CN111625505A (zh) 一种文件拆分方法及装置
CN105610733A (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