CN104182360B - 多核环境的跟踪日志输出处理方法及系统 - Google Patents
多核环境的跟踪日志输出处理方法及系统 Download PDFInfo
- Publication number
- CN104182360B CN104182360B CN201410409419.2A CN201410409419A CN104182360B CN 104182360 B CN104182360 B CN 104182360B CN 201410409419 A CN201410409419 A CN 201410409419A CN 104182360 B CN104182360 B CN 104182360B
- Authority
- CN
- China
- Prior art keywords
- trace log
- core
- timestamp
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明适用于存储技术领域,提供了一种多核环境的trace log输出处理方法,所述方法包括:每个核的trace log生成时,对所述trace log数据进行打包,并加入时间戳及每个核的标识信息;为多个核各配置一无锁先入先出结构,用于接收每个核生成的trace log;定时器中断时,轮询每个核的无锁先入先出结构,将trace log输出到主机侧;主机侧根据所述每个核的标识信息,将trace log进行分类;主机侧根据时间戳,将分类后的trace log进行排序处理。本发明还相应的提供一种多核环境的trace log输出处理系统。借此,本发明可以使缓存操作和输出操作同时进行,减少调度次数,提高资源利用率。
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记录产生,那么必须等待优先级最低的任务释放锁;3)现有技术方案采用了逐条输出trace log记录的方法,导致USB,UART或ETHERNET的调度次数多,并且数据输出时CPU参与数据的搬移,这都会导致CPU资源的浪费和外设调度的开销。
综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种多核环境的跟踪日志输出处理方法及系统,可以减少调度次数,提高资源利用率。
为了实现上述目的,本发明提供一种多核环境的跟踪日志输出处理方法,所述方法包括:
每个核的跟踪日志生成时,对所述跟踪日志数据进行打包,并加入时间戳及每个核的标识信息;
为多个核各配置一无锁先入先出结构,用于接收每个核生成的跟踪日志;
定时器中断时,轮询每个核的无锁先入先出结构,将跟踪日志输出到主机侧;
主机侧根据所述每个核的标识信息,将跟踪日志进行分类;
主机侧根据时间戳,将分类后的跟踪日志进行排序处理。
根据本发明的多核环境的跟踪日志输出处理方法,所述根据所述每个核的标识信息,将跟踪日志进行分类步骤之前进一步包括:
主机侧将接收到的跟踪日志记录到缓冲区;
把所述缓冲区里的跟踪日志依次挂到轮询链表中;
检测所述轮询链表是否为空,若不为空,则对所述轮询链表的每个节点进行解析。
根据本发明的多核环境的跟踪日志输出处理方法,所述主机侧根据所述每个核的标识信息,将跟踪日志进行分类的步骤包括:
将不同类别的跟踪日志存入主机不同的先入先出结构。
根据本发明的多核环境的跟踪日志输出处理方法,所述主机侧根据时间戳,将分类后的跟踪日志进行排序处理步骤具体为:主机侧根据时间戳对不同先入先出结构中的跟踪日志进行排序处理,并将时间戳最小的跟踪日志排在对应的先入先出结构的顶部。
根据本发明的多核环境的跟踪日志输出处理方法,每个所述跟踪日志对应一个唯一的时间戳信息。
本发明还相应的一种多核环境的跟踪日志输出处理系统,包括具有多核控制器的存储装置及主机,其中:
所述存储装置包括:
日志处理模块,用于每个核的跟踪日志生成时,对所述跟踪日志数据进行打包,并加入时间戳及每个核的标识信息;
配置模块,用于为多个核各配置一无锁先入先出结构,以接收每个核生成的跟踪日志;
日志输出模块,用于定时器中断时,轮询每个核的无锁先入先出结构,将跟踪日志输出到所述主机;
所述主机包括:
日志分类模块,用于根据所述每个核的标识信息,将跟踪日志进行分类;
日志排序模块,用于根据时间戳,将分类后的跟踪日志进行排序处理。
根据本发明的多核环境的跟踪日志输出处理系统,所述主机还包括:
日志接收模块,用于将接收到的跟踪日志记录到缓冲区,并把所述缓冲区里的跟踪日志依次挂到轮询链表中;
链表检测模块,用于检测所述轮询链表是否为空,若不为空,则交于日志分类模块对所述轮询链表的每个节点进行解析。
根据本发明的多核环境的跟踪日志输出处理系统,所述日志分类模块进一步用于将不同类别的跟踪日志存入主机不同的先入先出结构。
根据本发明的多核环境的跟踪日志输出处理系统,所述日志排序模块进一步用于根据时间戳对不同先入先出结构中的跟踪日志进行排序处理,并将时间戳最小的跟踪日志排在对应的先入先出结构的顶部。
根据本发明的多核环境的跟踪日志输出处理系统,每个所述跟踪日志对应一个唯一的时间戳信息。
本发明通过在每个核生成的trace log中加入时间戳及标识信息,使其可以方便的进行识别与分类。并且每个核对应配置有无锁的先入先出结构(FIFO),用于接收tracelog,在定时器定时中断时,即可以将trace log记录输出到主机侧,主机侧可以根据tracelog中的时间戳及标识信息对trace log进行分类和和排序,并加以显示。借此,本发明产生trace log记录时不需加锁,提高了CPU资源的利用率,并且通过主机侧进行分类和排序可减少对trace log的调度次数。
附图说明
图1是本发明的多核环境的跟踪日志输出处理系统结构示意图;
图2是本发明一实施例的跟踪日志处理流程示意图;
图3是本发明一实施例的跟踪日志排序处理示意图;
图4是本发明一实施例的时间戳缓冲器示意图;
图5是本发明的多核环境的trace log输出处理方法流程图;
图6是本发明一实施例的跟踪日志排序流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图1,本发明提供了一种多核环境的跟踪日志输出处理系统,该系统100包括具有多核控制器的存储装置10及主机20,其中:
所述存储装置10包括日志处理模块11、配置模块12及日志输出模块13,具体的:
日志处理模块11,用于每个核的trace log生成时,对所述trace log数据进行打包,并加入时间戳及每个核的标识信息。
对应于图2的step1,trace log产生的时候,日志处理模块11对trace log数据进行打包,加入时间戳及Core(核)id等信息,优选的,每个trace log对应一个唯一的时间戳信息。
配置模块12,用于为多个核各配置一无锁先入先出结构(FIFO),作为循环缓冲器(buffer),以接收每个核生成的trace log。
对应于图2的step2,每个Core都分配了一个支持无锁操作的循环buffer,循环buffer用来承载trace log记录,trace log记录包括trace log的头信息和trace log数据,trace log头信息包含时间戳及Core id等信息。当生成trace log信息的时候,控制器就将整条trace log记录压入循环buffer。
日志输出模块13,用于定时器中断时,轮询每个核的无锁先入先出结构,将tracelog输出到主机侧。
对应用于图2的step3,存储装置10每隔固定的时间发生一次timer(定时器)中断,timer中断发生的时候,做trace log输出处理。DMA轮询每个core的循环buffer,将数据输出到主机侧。在copy数据时循环buffer存在着折返的可能性,如果存在折返,数据地址必不连续,对于每个循环buffer,DMA LLI链表上有两个block。
所述主机20包括日志接收模块21、链表检测模块22、日志分类模块23及日志排序模块24,其中:
日志接收模块21,用于将接收到的trace log记录到缓冲区,并把所述缓冲区里的trace log依次挂到轮询链表中。
对应于图2中的step4和step5,主机侧从外设接口(UART/USB/ETHEREN)接收到trace log记录到缓冲区,把缓冲区里的trace log记录依次挂到链表中,这里有一次memcpy的操作。
链表检测模块22,用于检测所述轮询链表是否为空,若不为空,则交于日志分类模块23对所述轮询链表的每个节点进行解析。
日志分类模块23,用于根据所述每个核的标识信息,将trace log进行分类。
对应于图2中的step6,一个专用的线程负责polling(轮询)链表的状态,如果不为空,就对每个链表node进行解析,根据code id将trace log记录分类,将不同trace log记录指针压入不同的fifo。
日志排序模块24,用于根据时间戳,将分类后的trace log进行排序处理。
对应于图2中step7,将trace log进行排序处理后,时间戳最小的trace log对应排在对应的先入先出结构的顶部。主机20可根据该排列,对trace log进行输出显示(step8)。
优选的是,为了减少对fifo不必要的读操作,本发明定义了trace log timestamp(时间戳)buffer,如图3和4所示。每条trace log记录的时间戳只会被读取一次,在tracelog timestamp buffer中完成排序。
本发明实现了多核环境trace log记录从产生到输出无锁操作,消除了因为加解锁导致的core之间的等待,提高了CPU资源的利用率。具体体现如下:1)Trace log记录生成和输出可以同时进行,整个过程不需加锁,无加锁解锁的开销,CORE之间无等待解锁开销,提高了CPU资源的利用率;2)本方案为每一个core都分配了一个支持无锁操作的循环buffer,多个core同时产生trace log记录时不需加锁,提高了CPU资源的利用率;3)“tracelog记录外排序输出算法”将排序的过程放在主机侧,使trace log记录输出时与外设的交互可以使用DMA来实现,这种方式同时减轻了存储装置的控制器的负载,提高了trace log记录的输出效率。
参见图5,本发明提供了一种多核环境的trace log输出处理方法,其可以通过如图1所示的系统100实现,该方法包括:
步骤S501,每个核的trace log生成时,对所述trace log数据进行打包,并加入时间戳及每个核的标识信息。
对应于图2的step1,trace log产生的时候,存储装置10对trace log数据进行打包,加入时间戳及Core(核)id等信息,优选的,每个trace log对应一个唯一的时间戳信息。
步骤S502,为多个核各配置一无锁先入先出结构(FIFO),作为循环缓冲器(buffer),以接收每个核生成的trace log。
对应于图2的step2,每个Core都分配了一个支持无锁操作的循环buffer,循环buffer用来承载trace log记录,trace log记录包括trace log的头信息和trace log数据,trace log头信息包含时间戳及Core id等信息。当生成trace log信息的时候,控制器就将整条trace log记录压入循环buffer。
步骤S503,定时器中断时,轮询每个核的无锁先入先出结构,将trace log输出到主机侧。
对应用于图2的step3,存储装置10每隔固定的时间发生一次timer(定时器)中断,timer中断发生的时候,做trace log输出处理。DMA轮询每个core的循环buffer,将数据输出到主机侧。在copy数据时循环buffer存在着折返的可能性,如果存在折返,数据地址必不连续,对于每个循环buffer,DMA LLI链表上有两个block。
步骤S504,主机侧将接收到的trace log记录到缓冲区,并把所述缓冲区里的trace log依次挂到轮询链表中。
对应于图2中的step4和step5,主机侧从外设接口(UART/USB/ETHEREN)接收到trace log记录到缓冲区,把缓冲区里的trace log记录依次挂到链表中,这里有一次memcpy的操作。
步骤S505,检测所述轮询链表是否为空,若不为空,则对所述轮询链表的每个节点进行解析。
步骤S506,根据所述每个核的标识信息,将trace log进行分类。
对应于图2中的step6,一个专用的线程负责polling(轮询)链表的状态,如果不为空,就对每个链表node进行解析,根据code id将trace log记录分类,将不同trace log记录指针压入不同的fifo。
步骤S507,根据时间戳,将分类后的trace log进行排序处理。
对应于图2中step7,将trace log进行排序处理后,时间戳最小的trace log对应排在对应的先入先出结构的顶部。主机20可根据该排列,对trace log进行输出显示(step8)。
优选的是,为了减少对fifo不必要的读操作,本发明定义了trace log timestamp(时间戳)buffer,结合图3和4所示。每条trace log记录的时间戳只会被读取一次,在tracelog timestamp buffer中完成排序,排序流程如图6所示,借此可减少调度次数,提高资源利用率。
综上所述,本发明通过在每个核生成的trace log中加入时间戳及标识信息,使其可以方便的进行识别与分类。并且每个核对应配置有无锁的先入先出结构(FIFO),用于接收trace log,在定时器定时中断时,即可以将trace log记录输出到主机侧,主机侧可以根据trace log中的时间戳及标识信息对trace log进行分类和和排序,并加以显示。借此,本发明产生trace log记录时不需加锁,提高了CPU资源的利用率,并且通过主机侧进行分类和排序可减少对trace log的调度次数。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1.一种多核环境的跟踪日志输出处理方法,其特征在于,所述方法包括:
每个核的跟踪日志生成时,对所述跟踪日志数据进行打包,并加入时间戳及每个核的标识信息;
为多个核各配置一无锁先入先出结构,用于接收每个核生成的跟踪日志;
定时器中断时,轮询每个核的无锁先入先出结构,将跟踪日志输出到主机侧;
主机侧根据所述每个核的标识信息,将跟踪日志进行分类;
主机侧根据时间戳,将分类后的跟踪日志进行排序处理。
2.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,所述根据所述每个核的标识信息,将跟踪日志进行分类步骤之前进一步包括:
主机侧将接收到的跟踪日志记录到缓冲区;
把所述缓冲区里的跟踪日志依次挂到轮询链表中;
检测所述轮询链表是否为空,若不为空,则对所述轮询链表的每个节点进行解析。
3.根据权利要求1所述的多核环境的跟踪日志输出处理方法,其特征在于,所述主机侧根据所述每个核的标识信息,将跟踪日志进行分类的步骤包括:
将不同类别的跟踪日志存入主机不同的先入先出结构。
4.根据权利要求3所述的多核环境的跟踪日志输出处理方法,其特征在于,所述主机侧根据时间戳,将分类后的跟踪日志进行排序处理步骤具体为:主机侧根据时间戳对不同先入先出结构中的跟踪日志进行排序处理,并将时间戳最小的跟踪日志排在对应的先入先出结构的顶部。
5.根据权利要求1~4任一项所述的多核环境的跟踪日志输出处理方法,其特征在于,每个所述跟踪日志对应一个唯一的时间戳信息。
6.一种多核环境的跟踪日志输出处理系统,其特征在于,包括具有多核控制器的存储装置及主机,其中:
所述存储装置包括:
日志处理模块,用于每个核的跟踪日志生成时,对所述跟踪日志数据进行打包,并加入时间戳及每个核的标识信息;
配置模块,用于为多个核各配置一无锁先入先出结构,以接收每个核生成的跟踪日志;
日志输出模块,用于定时器中断时,轮询每个核的无锁先入先出结构,将跟踪日志输出到所述主机;
所述主机包括:
日志分类模块,用于根据所述每个核的标识信息,将跟踪日志进行分类;
日志排序模块,用于根据时间戳,将分类后的跟踪日志进行排序处理。
7.根据权利要求6所述的多核环境的跟踪日志输出处理系统,其特征在于,所述主机还包括:
日志接收模块,用于将接收到的跟踪日志记录到缓冲区,并把所述缓冲区里的跟踪日志依次挂到轮询链表中;
链表检测模块,用于检测所述轮询链表是否为空,若不为空,则交于日志分类模块对所述轮询链表的每个节点进行解析。
8.根据权利要求6所述的多核环境的跟踪日志输出处理系统,其特征在于,所述日志分类模块进一步用于将不同类别的跟踪日志存入主机不同的先入先出结构。
9.根据权利要求8所述的多核环境的跟踪日志输出处理系统,其特征在于,所述日志排序模块进一步用于根据时间戳对不同先入先出结构中的跟踪日志进行排序处理,并将时间戳最小的跟踪日志排在对应的先入先出结构的顶部。
10.根据权利要求6~9任一项所述的多核环境的跟踪日志输出处理系统,其特征在于,每个所述跟踪日志对应一个唯一的时间戳信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410409419.2A CN104182360B (zh) | 2014-08-18 | 2014-08-18 | 多核环境的跟踪日志输出处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410409419.2A CN104182360B (zh) | 2014-08-18 | 2014-08-18 | 多核环境的跟踪日志输出处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104182360A CN104182360A (zh) | 2014-12-03 |
CN104182360B true CN104182360B (zh) | 2017-12-08 |
Family
ID=51963423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410409419.2A Active CN104182360B (zh) | 2014-08-18 | 2014-08-18 | 多核环境的跟踪日志输出处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104182360B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537074A (zh) * | 2014-12-31 | 2015-04-22 | 天津南大通用数据技术股份有限公司 | 一种提高数据库系统写日志性能的方法 |
CN105991633B (zh) * | 2015-04-28 | 2019-02-19 | 杭州迪普科技股份有限公司 | 会话日志处理方法及装置 |
CN108228322B (zh) * | 2016-12-12 | 2022-03-25 | 阿里巴巴集团控股有限公司 | 一种分布式链路跟踪、分析方法及服务器、全局调度器 |
CN110008084A (zh) * | 2019-03-29 | 2019-07-12 | 武汉中电国为技术有限公司 | 一种独立日志信息记录方法、系统、装置及存储介质 |
CN115480976B (zh) * | 2022-10-09 | 2023-05-23 | 无锡众星微系统技术有限公司 | 一种软硬件协同片上系统诊断方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937915A (zh) * | 2012-11-28 | 2013-02-20 | 中国人民解放军国防科学技术大学 | 用于多核处理器的硬件锁实现方法及装置 |
CN103488563A (zh) * | 2013-09-05 | 2014-01-01 | 龙芯中科技术有限公司 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
CN103714026A (zh) * | 2014-01-14 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 一种支持原址数据交换的存储器访问方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102008005124A1 (de) * | 2008-01-18 | 2009-07-23 | Kuka Roboter Gmbh | Computersystem, Steuerungsvorrichtung für eine Maschine, insbesondere für einen Industrieroboter, und Industrieroboter |
CN101534213B (zh) * | 2009-04-09 | 2011-02-02 | 成都市华为赛门铁克科技有限公司 | 一种日志的获取方法及日志服务器 |
-
2014
- 2014-08-18 CN CN201410409419.2A patent/CN104182360B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937915A (zh) * | 2012-11-28 | 2013-02-20 | 中国人民解放军国防科学技术大学 | 用于多核处理器的硬件锁实现方法及装置 |
CN103488563A (zh) * | 2013-09-05 | 2014-01-01 | 龙芯中科技术有限公司 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
CN103714026A (zh) * | 2014-01-14 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 一种支持原址数据交换的存储器访问方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104182360A (zh) | 2014-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104182360B (zh) | 多核环境的跟踪日志输出处理方法及系统 | |
CN104067282B (zh) | 状态机晶格中的计数器操作 | |
US10579661B2 (en) | System and method for machine learning and classifying data | |
TWI502502B (zh) | 用於處理狀態機引擎所接收之資料之方法及系統 | |
WO2019169700A1 (zh) | 一种数据分类方法、装置、设备及计算机可读存储介质 | |
US11928594B2 (en) | Systems and methods for creating training data | |
CN104615730B (zh) | 一种多标签分类方法及装置 | |
JP6920378B2 (ja) | 再修理用基板の検出装置、方法およびコンピュータ読み取り可能な記憶媒体 | |
Amare et al. | Learning analytics for higher education: proposal of big data ingestion architecture | |
CN105830160B (zh) | 用于将经屏蔽数据写入到缓冲器的设备及方法 | |
US10346700B1 (en) | Object recognition in an adaptive resource management system | |
CN104461931B (zh) | 多核存储装置及多核环境的跟踪日志输出处理方法 | |
CN108073705B (zh) | 一种分布式海量数据聚合采集方法 | |
WO2022179382A1 (zh) | 一种物体识别方法、装置、设备及介质 | |
CN113609074B (zh) | 医学影像文件入库归档的方法及相关装置 | |
CN112463785B (zh) | 一种数据质量监控方法、装置、电子设备及存储介质 | |
US11790087B2 (en) | Method and apparatus to identify hardware performance counter events for detecting and classifying malware or workload using artificial intelligence | |
CN114116811A (zh) | 日志处理方法、装置、设备及存储介质 | |
CN110659538A (zh) | 一种非极大值抑制计算器和计算方法 | |
CN111931460B (zh) | 支持可变列Excel文件解析方法及系统 | |
CN108345791A (zh) | 处理器安全检测方法、系统及检测装置 | |
CN106126195A (zh) | 一种信息处理方法及电子设备 | |
CN111651410B (zh) | 一种样本数据的动态平衡方法及系统 | |
CN113656354A (zh) | 日志分类方法、系统、计算机设备和可读存储介质 | |
CN112817952A (zh) | 数据质量评估方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |