CN117891647A - 日志处理方法、电子设备和计算机可读存储介质 - Google Patents

日志处理方法、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN117891647A
CN117891647A CN202410304904.7A CN202410304904A CN117891647A CN 117891647 A CN117891647 A CN 117891647A CN 202410304904 A CN202410304904 A CN 202410304904A CN 117891647 A CN117891647 A CN 117891647A
Authority
CN
China
Prior art keywords
dump
log
state
ring
ring buffer
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
Application number
CN202410304904.7A
Other languages
English (en)
Other versions
CN117891647B (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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202410304904.7A priority Critical patent/CN117891647B/zh
Publication of CN117891647A publication Critical patent/CN117891647A/zh
Application granted granted Critical
Publication of CN117891647B publication Critical patent/CN117891647B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及电子设备技术领域,提供一种日志处理方法、电子设备和计算机可读存储介质,应用于电子设备,电子设备包括至少两个环形缓冲区,包括:电子设备在处于第一状态的第一环形缓冲区内写入跟踪日志。电子设备接收到跟踪日志转储请求后,响应于接收到的跟踪日志转储请求,对第一环形缓冲区进行跟踪日志转储,同时将处于第二状态的第二环形缓切换为第一状态,在转储期间在处于第一状态的第二环形缓冲区内写入跟踪日志。其中,第二状态不同于第一状态。由此,通过对多个环形缓冲区进行状态切换配合进行跟踪日志写入,即使在跟踪日志的转储期间也能有处于第一状态的环形缓冲区,进而能够顺利写入新产生的跟踪日志,防止跟踪日志出现数据真空期。

Description

日志处理方法、电子设备和计算机可读存储介质
技术领域
本申请实施例涉及电子设备技术领域,尤其涉及一种日志处理方法、电子设备和计算机可读存储介质。
背景技术
跟踪日志是系统级别的跟踪数据,通常存储在内存的缓冲区。由于跟踪日志可以用于性能分析和优化,且提供系统级别的性能数据和时间轴分析,有助于识别性能瓶颈。因此,不同业务对跟踪日志都有一定的需求。
然而,目前从缓冲区为各业务转储跟踪日志的期间,是不能实时再往这个缓冲区写入新的跟踪日志的,从而导致转储期间的跟踪日志无法记录,即转储期间容易出现数据真空期,影响了后续的性能分析。
发明内容
本申请实施例提供一种日志处理方法、电子设备和计算机可读存储介质,可以实现跟踪日志转储期间内依旧能够写入跟踪日志,避免转储期间出现数据真空期,而影响后续性能分析的问题。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种日志处理方法,该方法应用于电子设备,该电子设备包括至少两块环形缓冲区。其中,环形缓冲区包括第一状态和第二状态,第二状态不同于第一状态,该方法包括:电子设备在处于第一状态的第一环形缓冲区内写入跟踪日志;电子设备响应于跟踪日志转储请求,对第一环形缓冲区进行跟踪日志转储,第一环形缓冲区切换为转储状态。同时,电子设备将处于第二状态的第二环形缓冲区切换为第一状态,在第一环形缓冲区的转储期间,电子设备在处于第一状态的第二环形缓冲区内写入跟踪日志。其中,第一状态可以是写入状态,用于表征可以进行跟踪日志写入。第二状态可以是空闲状态。可以理解的,处于第二状态的环形缓冲区当前既没有用于写入跟踪日志,也没有在转储跟踪日志。
由此,即使电子设备响应于跟踪日志转储请求,对当前用于写入跟踪日志的第一环形缓冲区进行跟踪日志转储,也能通过状态切换启用空闲的第二环形缓冲区接替进行跟踪日志的写入。即,电子设备在跟踪日志转储请求到来时,可以根据当下情形及时切换环形缓冲区的状态,从而通过对多个环形缓冲区进行状态切换来配合进行跟踪日志的转储和写入。这样,能够尽可能保证每一个跟踪日志转储请求到来时都有处于第一状态的环形缓冲区,也就是尽可能确保一直有可以用于写入跟踪日志的环形缓冲区。进而,就算其中一个环形缓冲区进入跟踪日志转储状态,转储期间产生的跟踪日志也能够被另一个环形缓冲区记录到,从而避免转储期间跟踪日志出现数据真空期的问题。
在第一方面的另一种可能的实现方式中,在第一环形缓冲区内存储的跟踪日志转储结束后,若当前存在处于第一状态(如写入状态)的环形缓冲区,电子设备进一步将第一环形缓冲区的状态切换为第二状态(如空闲状态),以便下次可以再将其切换为写入状态接替进行跟踪日志的写入。而若当前不存在处于第一状态(如写入状态)的环形缓冲区,电子设备则需要将第一环形缓冲区的状态切换为第一状态(如写入状态),使得尽快有环形缓冲区可以用于跟踪日志的写入,确保极端情形下能够缩短数据真空期。
在第一方面的另一种可能的实现方式中,由于电子设备主要通过确定环形缓冲区的状态来区分第一环形缓冲区和第二环形缓冲区,因此,日志处理方法还可以包括:检查每块环形缓冲区的状态,确定处于第一状态的第一环形缓冲区和确定处于第二状态的第二环形缓冲区。
在第一方面的一种可能的实现方式中,如果同时有多块环形缓冲区用于写入跟踪日志,不仅写入过程有多块环形缓冲区会占用电子设备过多的资源,同时转储过程的拼接转储工作量也会增加,从而所占资源消耗相应也会增加。因此,为了减少环形缓冲区写入过程和转储过程中所占的资源,同一时间段内,电子设备可以控制仅有一块环形缓冲区用于进行跟踪日志的写入。即,同一时间段内,电子设备内仅有一块环形缓冲区的状态是第一状态(如写入状态)。
在第一方面的另一种可能的实现方式中,因为转储需要一定的时间,因此在比较极端的情况下,可能出现所有环形缓冲区都处于转储状态的情形。在这种极端情形下,电子设备若接收到跟踪日志转储请求,电子设备可以响应于这个跟踪日志转储请求,复制转发转储后的目标跟踪日志。在该实现方式中,目标跟踪日志是目标环形缓冲区内存储的跟踪日志,而目标环形缓冲区是历史转储开始时间与跟踪日志转储请求时间最接近的环形缓冲区。
由此,即使电子设备接收到跟踪日志转储请求时,没有可以用于转储的环形缓冲区,也能够顺利响应跟踪日志转储请求完成跟踪日志的转储。
在第一方面的另一种可能的实现方式中,由于环形缓冲区通常是内存中划分的存储空间,所以环形缓冲区的数量越多,所占用的内存也会越多,那么电子设备对于环形缓冲区的资源开销就会越大,容易影响其他业务的正常运行。因此,在能够解决转储期间数据真空期问题的基础上,环形缓冲区的数量越少越能节省电子设备的内存资源,从而避免环形缓冲区占用电子设备过多的内存资源。基于此,为了节省环形缓冲区所占内存资源,电子设备可以仅包括两块环形缓冲区。进而,由这两块环形缓冲区配合进行跟踪日志转储和跟踪日志写入。
在第一方面的另一种可能的实现方式中,环形缓冲区的状态可以通过一一对应的标志位确定。即,可以通过标志位来确定环形缓冲区的状态,进而确定第一环形缓冲区和第二环形缓冲区。基于此,在该实现方式中,检查每块环形缓冲区的状态,可以包括:获取标志位,标志位与环形缓冲区一一对应;根据标志位确定对应环形缓冲区的状态。
在第一方面的另一种可能的实现方式中,电子设备响应于跟踪日志转储请求之前,还可以包括:审核跟踪日志转储请求对应请求方的转储权限;其中,转储权限包括采集权限和/或转储配额。而在请求方的转储权限审核通过的情况下,电子设备响应于跟踪日志转储请求,对第一环形缓冲区进行跟踪日志转储。
由此,通过采集权限的审核,能够避免没有采集权限的请求方随意转储跟踪日志。而由于转储需要占用一定资源,通过转储配额的审核能够避免频繁响应各请求方的跟踪日志转储请求,从而避免影响电子设备的正常使用。
在第一方面的另一种可能的实现方式中,采集权限的审核可以通过配置的权限名单实现。电子设备若根据权限名单确定请求方有采集权限,并且请求方的转储配额未超额,电子设备则确定请求方有转储权限;而电子设备若根据权限名单确定请求方没有采集权限,或者请求方转储配额已超额,电子设备则确定请求方没有转储权限。
在第一方面的另一种可能的实现方式中,电子设备还可以更新转储信息,定期将转储信息上传到云端服务器。其中,转储信息包括跟踪日志转储请求对应请求方的转储次数和请求方的请求次数。在该实现方式中,通过更新请求方对应的转储次数可以便于进行转储配额的审核。而通过更新请求方对应的请求次数,可以用于后续判断请求方对跟踪日志的需求,以便后续调整请求方的转储配额。即,在第一方面的另一种可能的实现方式中,电子设备可以根据请求方的请求次数调整请求方的转储配额。
在第一方面的另一种可能的实现方式中,权限名单根据实际需求可以是权限白名单或权限黑名单。因此,若权限白名单内包括请求方,电子设备确定请求方有采集权限;若权限白名单内不包括请求方,电子设备确定请求方没有采集权限。
或者,若权限黑名单内不包括请求方,电子设备确定请求方有采集权限;若权限黑名单内包括请求方,电子设备确定请求方没有采集权限。
在第一方面的另一种可能的实现方式中,为了请求方能够顺利获取到转储的跟踪日志,电子设备可以按照转储路径对第一环形缓冲区内存储的跟踪日志进行转储。即,对第一环形缓冲区进行跟踪日志转储,包括:按照转储路径对第一环形缓冲区内存储的跟踪日志进行转储;其中,这个转储路径就由跟踪日志转储请求对应的请求方提供。
第二方面,本申请提供一种电子设备,包括:一个或多个处理器和存储器,存储器与处理器耦合;存储器中存储一个或多个计算机程序代码,计算机程序代码包括计算机指令;当处理器执行计算机指令时,使得电子设备执行以下步骤:
在处于第一状态的第一环形缓冲区内写入跟踪日志;
响应于跟踪日志转储请求,对第一环形缓冲区进行跟踪日志转储,第一环形缓冲区切换为转储状态,将处于第二状态的第二环形缓冲区切换为第一状态;在第一环形缓冲区的转储期间,在处于第一状态的第二环形缓冲区内写入跟踪日志;其中,第二环形缓冲区是处于空闲状态的环形缓冲区。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:在第一环形缓冲区内存储的跟踪日志转储结束后,若当前存在处于第一状态的环形缓冲区,将第一环形缓冲区的状态切换为第二状态;若当前不存在处于第一状态的环形缓冲区,将第一环形缓冲区的状态切换为第一状态。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:检查每块环形缓冲区的状态,确定处于第一状态的第一环形缓冲区和确定处于第二状态的第二环形缓冲区。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:同一时间段内,仅在一块环形缓冲区内写入跟踪日志。即,同一时间段内,只有一块环形缓冲区的状态是第一状态。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:若当前每块环形缓冲区都处于转储状态,则响应于跟踪日志转储请求,复制转发转储后的目标跟踪日志;其中,目标跟踪日志是目标环形缓冲区内存储的跟踪日志,目标环形缓冲区是历史转储开始时间与跟踪日志转储请求时间最接近的环形缓冲区。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:获取标志位,标志位与环形缓冲区一一对应;根据标志位确定对应环形缓冲区的状态。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:审核跟踪日志转储请求对应请求方的转储权限;其中,转储权限包括采集权限和/或转储配额;在请求方的转储权限审核通过的情况下,响应于跟踪日志转储请求,对第一环形缓冲区进行跟踪日志转储。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:若根据权限名单确定请求方有采集权限,并且请求方的转储配额未超额,确定请求方有转储权限;若根据权限名单确定请求方没有采集权限,或者请求方转储配额已超额,确定请求方没有转储权限。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:更新转储信息,定期将转储信息上传到云端服务器;转储信息包括跟踪日志转储请求对应请求方的转储次数和请求方的请求次数。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:若权限白名单内包括请求方,确定请求方有采集权限;若权限白名单内不包括请求方,确定请求方没有采集权限。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:若权限黑名单内不包括请求方,确定请求方有采集权限;若权限黑名单内包括请求方,确定请求方没有采集权限。
在第二方面的一种可能的实现方式中,当上述计算机指令被处理器执行时,使得电子设备还执行以下步骤:按照转储路径对第一环形缓冲区内存储的跟踪日志进行转储;其中,转储路径由跟踪日志转储请求对应的请求方提供。
第三方面,本申请一种计算机可读存储介质,其上存储有计算机程序,当计算机程序被电子设备中的处理器执行时,使得电子设备执行如第一方面及其任一种可能的实现方式的日志处理方法。
第四方面,本申请提供一种计算机程序产品,包括计算机程序,当计算机程序产品中的计算机程序在计算机上运行时,使得计算机执行如第一方面及其任一种可能的实现方式的方法。该计算机可以是上述电子设备。
可以理解地,上述第二方面其任一种可能的实现方式的电子设备,第三方面的计算机可读存储介质,第四方面的计算机程序产品所能达到的有益效果,可参考如第一方面及其任一种可能的实现方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种传统日志处理环形缓冲区的状态示意图;
图2为本申请实施例提供的一种电子设备的结构示意图;
图3为本申请实施例提供的一种环形缓冲区的状态示意图;
图4为本申请实施例提供的另一种环形缓冲区的状态示意图;
图5为本申请实施例提供的一种环形缓冲区状态切换的流程示意图;
图6为本申请实施例提供的一种电子设备软件的软件结构框图;
图7为本申请实施例提供的一种手机开机的场景示意图;
图8为本申请实施例提供的一种日志处理方法的流程示意图;
图9为本申请实施例提供的一种日志处理方法的交互时序流程示意图;
图10为本申请实施例提供的一种芯片系统的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例的技术方案进行清楚、完整地描述。其中,在本申请实施例的描述中,以下实施例所使用的术语只是为了描述特定实施例的目的,而并非旨在对本申请的限制。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,如果采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。以及,在本申请实施例的描述中,除非另有说明,“多个”的含义表示两个或两个以上。“多块”的含义表示两块或两块以上。
本申请实施例提供一种日志处理方法。该方法应用于电子设备,能够解决电子设备转储跟踪日志(systrace log)时无法在环形缓冲区(ring buffer)中写入新的跟踪日志,从而导致部分跟踪数据无法记录,跟踪日志出现数据真空期的问题。
也就是说,本申请实施例所提供的日志处理方法,能够使得电子设备在转储跟踪日志的这段时间内,依旧可以在ring buffer中写入新的跟踪日志,从而有效记录到所有的跟踪日志数据,避免跟踪日志的数据真空期。
systrace是AndroidTM系统提供的一种用于进行性能分析的工具,systrace log则是由systrace工具所捕获的系统级别的跟踪数据。systrace log通常包括中央处理器(Central Processing Unit,CPU)的使用情况、内核活动以及应用程序事件等。通过分析这些跟踪数据,能够了解应用程序在系统上的运行状况,识别性能瓶颈,以便进行性能优化。
需要说明的是,本申请实施例中的systrace log有别于流水日志。可以理解的,systrace log一般用于性能分析和优化,提供系统级别的性能数据和时间轴分析,有助于识别性能瓶颈。而流水日志是logcat工具所采集的日志数据。logcat是AndroidTM系统中的一个日志记录工具(命令行工具),主要用于记录应用程序的日志信息。logcat所记录的流水日志可以用于调试应用程序、查看错误日志以及监控应用程序的运行情况。
因此,由于systrace log提供了更加全面、更细致的性能数据,所以在分析和定位电子设备的性能问题时,可以主要依赖systrace log来分析电子设备的性能问题。当然,为了更加全面了解应用程序的性能和运行情况,也可以同时结合systrace log和流水日志进行分析。
但是,针对systrace log,其一般都是写入存储在ring buffer中。ring buffer是从内存中划分出来的一块大小固定的存储区域,所以ring buffer只能固定存储一定量的跟踪日志。那么,为了保证存储空间有限的ring buffer能够持续存储最新的跟踪日志,在ring buffer存储满了的情况下,电子设备会通过清理之前所存储的时间在前的跟踪日志的方式,来腾出存储空间用来存储新的跟踪日志。该方式可以简单理解为类似于队列的先进先出。
同时,现有电子设备的CPU大多是多核配置,例如四核、八核等。因此,ring buffer需要把固定大小的存储空间同时分配给多核使用。也就是说,每个核都是往同一块ringbuffer内写入跟踪日志的。
然而,跟踪日志是有时序的。由于CPU多核同时使用同一块ring buffer,所以电子设备对ring buffer里存储的跟踪日志进行转储时,是需要根据日志数据的生成时间对每个核写入的跟踪日志进行拼接的。电子设备通过拼接得到时序正确的跟踪日志后进行转储。
这样,如果在转储的拼接过程中依旧往ring buffer写入新的跟踪数据,就可能会导致拼接出现问题,进而导致转储出现问题。因此,目前电子设备对ring buffer内存储的跟踪进行转储时,也就是电子设备中ring buffer进入跟踪日志转储状态时,电子设备会控制当下不允许再往这块ring buffer内写入跟踪日志。即,电子设备转储systrace log的这段时间内,是无法再在ring buffer中写入新的systrace log的。
如图1所示,环形缓冲区(ring buffer)可以用于跟踪日志写入和跟踪日志转储。但是,在传统的日志处理方式中,ring buffer若进行跟踪日志转储,则无法进行跟踪日志写入。相对应的,ring buffer若进行跟踪日志写入,则无法进行跟踪日志转储(该情况附图未示出)。也就是说,传统的日志处理方法中,ring buffer只能处于转储状态或者写入状态。
那么,转储这段时间内的systrace log无法被记录到,systrace log在转储期间会出现数据真空期。也就意味着电子设备在转储systrace log这段时间内若发生相关性能问题,systrace log却并不能被及时记录到,进而没有可供后续性能分析的相关跟踪数据,提升了后续性能分析的难度。
基于此,本申请实施例通过增加ring buffer的方式来解决转储期间跟踪日志数据真空期的问题。在本申请实施例中,电子设备申请从内存中划分出至少两块存储区域作为ring buffer。也就是说,本申请实施例中的电子设备包括至少两块ring buffer。
在ring buffer的数量增加之后,所有的ring buffer都可以用来写入跟踪日志和转储跟踪日志。因此,电子设备则控制切换这些ring buffer的状态,配合着进行跟踪日志的转储和跟踪日志的写入的相关工作。
简单来说,在本申请实施例中,电子设备若控制其中一块ring buffer进入跟踪日志的转储状态,电子设备便可以同时启用另一块ring buffer来承担跟踪日志的写入工作,继续往这块新启用的ring buffer中写入新的跟踪日志。
例如,以电子设备包括两块ring buffer为例,若电子设备对其中一块ringbuffer内存储的跟踪日志进行转储,电子设备则将启用另一块ring buffer,将新的跟踪日志实时写入这另一块ring buffer。由此,即使是跟踪日志的转储期间,电子设备也能通过启用另一块ring buffer实时写入新的跟踪日志,从而防止跟踪日志在转储期间出现数据真空期。
上述电子设备可以包括手机、可折叠电子设备、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本、蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、人工智能(artificial intelligence, AI)设备、可穿戴式设备、车载设备、智能家居设备、或智慧城市设备中的至少一种。本申请实施例对该电子设备100的具体类型不作特殊限制。
如图2所示,提供一种电子设备100的结构示意图。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接头130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像模组193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。
其中,传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。例如,在本申请实施例中,可以由处理器110执行本申请任一实施例所记载的日志处理方法。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器可以为高速缓冲存储器。该存储器可以保存处理器110用过或使用频率较高的指令或数据。如果处理器110需要使用该指令或数据,可从该存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在本申请实施例中,可以申请在处理器110的存储器内划分存储空间作为ringbuffer。例如,可以申请在处理器110的存储器内划分两个存储空间分别作为ring buffer1和ring buffer2。由此,电子设备包括两个ring buffer,这两个ring buffer都可以用于进行过跟踪日志的转储和跟踪日志的写入。又例如,可以申请在处理器110的存储器内划分三个存储空间分别作为ring buffer1、ring buffer2和ring buffer3。由此,电子设备包括三个ring buffer,这三个ring buffer都可以用于进行过跟踪日志的转储和跟踪日志的写入。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。处理器110可以通过以上至少一种接口连接触摸传感器、音频模块、无线通信模块、显示屏、摄像模组等模块。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。或将音乐,视频等文件从电子设备传输至外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,该可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能方法或数据处理。
在本申请实施例中,还可以申请在内部存储器121内划分存储空间作为ringbuffer。具体可以申请在内部存储器121的存储数据区中划分一部分存储空间作为ringbuffer。
例如,可以申请在内部存储器121的存储数据区中划分两个存储空间分别作为ring buffer1和ring buffer2。由此,电子设备包括两个ring buffer,这两个ring buffer都可以用于进行过跟踪日志的转储和跟踪日志的写入。又例如,可以申请在内部存储器121的存储数据区中划分三个存储空间分别作为ring buffer1、ring buffer2和ringbuffer3。由此,电子设备包括三个ring buffer,这三个ring buffer都可以用于进行过跟踪日志的转储和跟踪日志的写入。
USB接头130是一种符合USB标准规范的接口,可以用于连接电子设备100和外围设备,具体可以是Mini USB接头,Micro USB接头,USB Type C接头等。USB接头130可以用于连接充电器,实现充电器为该电子设备100充电,也可以用于连接其他电子设备,实现电子设备100与其他电子设备之间传输数据。也可以用于连接耳机,通过耳机输出电子设备中存储的音频。该接头还可以用于连接其他电子设备,例如VR设备等。在一些实施例中,通用串行总线的标准规范可以为USB1.x、USB2.0、USB3.x和USB4。
充电管理模块140用于接收充电器的充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接头130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像模组193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
其中,天线1和天线2用于发射和接收电磁波信号。移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。无线通信模块160可以提供应用在电子设备100上的无线通信的解决方案。调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。
电子设备100可以通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLED,Micro-OLED,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或多个显示屏194。
电子设备100可以通过摄像模组193,ISP,视频编解码器,GPU,显示屏194以及应用处理器AP、神经网络处理器NPU等实现摄像功能。在一些实施例中,电子设备100可以包括1个或多个摄像模组193。摄像模组193还可以由两个或更多个摄像头构成。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
按键190可以包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。马达191可以产生振动提示。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或多个SIM卡接口。
以下,将结合附图对本申请实施例提出的日志处理方法进行详细说明。需要说明的是,以下实施例中的日志处理方法均可以在具备上述硬件结构的电子设备100中实现。
具体而言,本申请实施例中每一块ring buffer都有对应的状态,包括第一状态、转储状态和第二状态。其中,第一状态与第二状态不同。第一状态用于表征可以进行跟踪日志写入,可以称为写入状态。第二状态用于表征ring buffer是空闲的,可以称为空闲状态。
在本申请实施例中,电子设备只能在状态是写入状态(即第一状态)的ringbuffer内写入跟踪日志。即,写入状态(即第一状态)用于表征可以写入跟踪日志,状态是写入状态(即第一状态)的ring buffer是可以用于写入跟踪日志的ring buffer。CPU的每个核只能往状态是写入状态(即第一状态)的ring buffer中写入跟踪日志。例如,CPU的每个核可以将产生的跟踪日志实时写入到状态是写入状态(即第一状态)的ring buffer。
转储状态用于表征这块ring buffer处于转储跟踪日志的状态。而处于空闲状态(即第二状态)的ring buffer可以看作是没有启用的ring buffer。若ring buffer当前处于空闲状态(即第二状态),则可以理解为这块ring buffer当前既没有用于跟踪日志写入,也没有用于跟踪日志转储。那么,跟踪日志转储请求到来之前,电子设备不能选择在这块ring buffer中实时写入跟踪日志,且跟踪日志转储请求到来之后,也不能选择这块ringbuffer进行跟踪日志转储。
为便于方案理解,以下,本申请实施例将第一状态直接称为写入状态,同时本申请实施例将第二状态直接称为空闲状态。
因此,在电子设备接收到跟踪日志转储请求之后,由于当前状态是写入状态的ring buffer是电子设备当前正在使用的,用于实时写入跟踪日志的ring buffer。也就是说,当前状态是写入状态的ring buffer内存储有最新的跟踪日志。
基于跟踪日志的时间特性,因此,电子设备响应于跟踪日志转储请求,选择当前状态是写入状态的ring buffer进行跟踪日志转储。为了便于区分,本申请实施例将电子设备所选择的这块状态是写入状态的ring buffer称为第一ring buffer(即第一环形缓冲区)。
也就是说,电子设备一直都在第一ring buffer内写入跟踪日志。进而,在电子设备接收到跟踪日志转储请求之后,便响应于这个跟踪日志转储请求,对当前状态是写入状态的第一ring buffer进行跟踪日志转储,电子设备转储这个第一ring buffer内存储的跟踪日志。
同时,为了保证第一ring buffer进入转储状态不能实时写入跟踪日志后,电子设备还能够继续往ring buffer写入新的跟踪日志避免数据真空期,电子设备则一并启用另一块状态是空闲状态的ring buffer,将启用的这块ring buffer接替作为当前用于写入跟踪日志的ring buffer。为了便于区分,本申请实施例将电子设备所选择的这块空闲状态的ring buffer称为第二ring buffer(即第二环形缓冲区)。
也就是说,电子设备选择一块当前状态是空闲状态的第二ring buffer来接替第一ring buffer承担跟踪日志的写入工作,继续进行跟踪日志的实时写入。
例如,以电子设备仅包括ring buffer1和ring buffer2这两块ring buffer为例。若ring buffer1当前的状态是写入状态,ring buffer2当前的状态是空闲状态。此时,ringbuffer1是本申请实施例中的第一ring buffer,而ring buffer2是本申请实施例中的第二ring buffer。那么,电子设备接收到跟踪日志转储请求之前,一直在ring buffer1内写入跟踪日志,同时ring buffer2是空闲的。而电子设备接收到跟踪日志转储请求后,电子设备则响应于这个跟踪日志转储请求,选择ring buffer1进行跟踪日志转储。同时,电子设备启用空闲的ring buffer2,选择ring buffer2进行跟踪日志写入。ring buffer2被启用之后,转储期间所产生的跟踪数据能够被顺利记录到ring buffer2中,从而避免ring buffer1进入转储状态后跟踪日志出现数据真空期的问题。可以理解的,电子设备启用ring buffer2之后,本申请实施例中的第一ring buffer就从ring buffer1变更为ring buffer2了。
同理,若ring buffer2当前的状态是写入状态,ring buffer1当前的状态是空闲状态。可以理解的,此时,ring buffer2是本申请实施例中的第一ring buffer,而ringbuffer1是本申请实施例中的第二ring buffer。那么,电子设备接收到跟踪日志转储请求之前,在ring buffer2内写入跟踪日志,而ring buffer1是空闲的。而电子设备接收到跟踪日志转储请求后,电子设备响应于这个跟踪日志转储请求,选择ring buffer2进行跟踪日志转储,同时启用空闲的ring buffer1,选择ring buffer1进行跟踪日志写入。ringbuffer1被启用之后,转储期间所产生的跟踪数据能够被顺利记录到ring buffer1中,从而避免ring buffer2进入转储状态后跟踪日志出现数据真空期的问题。同样的,电子设备启用ring buffer1之后,本申请实施例中的第一ring buffer就从ring buffer2变更为ringbuffer1了。
参考图3,以环形缓冲区1(ring buffer1)和环形缓冲区2(ring buffer2)这两个环形缓冲区为例,示出了一种环形缓冲区的状态示意图。
如图3所示,在本申请实施例中,若环形缓冲区1(ring buffer1)处于转储状态,正在进行跟踪日志转储,那么环形缓冲区2(ring buffer2)就处于写入状态,用于进行跟踪日志写入。此时,转储期间的跟踪日志被写入到环形缓冲区2(ring buffer2),环形缓冲区2(ring buffer2)是第一ring buffer。
或者,若环形缓冲区2(ring buffer2)处于转储状态,正在进行跟踪日志转储,那么环形缓冲区1(ring buffer1)就处于写入状态,用于进行跟踪日志写入。此时,转储期间的跟踪日志被写入到环形缓冲区1(ring buffer1),环形缓冲区1(ring buffer1)是第一ring buffer。
可以理解的,图3所示状态仅为本申请实施例示例所用,其并不涵盖所有的状态情形。例如,环形缓冲区1(ring buffer1)和环形缓冲区2(ring buffer2)还都可以是转储状态。
参考图4,以环形缓冲区1(ring buffer1)、环形缓冲区2(ring buffer2)和环形缓冲区3(ring buffer3)这三个环形缓冲区为例,示出了另一种环形缓冲区的状态示意图。
如图4所示,环形缓冲区1(ring buffer1)处于空闲状态,环形缓冲区2(ringbuffer2)处于转储状态,而环形缓冲区3(ring buffer3)处于写入状态。此时,环形缓冲区3(ring buffer3)是第一环形缓冲区(第一ring buffer)。
或者,环形缓冲区2(ring buffer2)处于空闲状态,环形缓冲区3(ring buffer3)处于转储状态,而环形缓冲区1(ring buffer1)处于写入状态。此时,环形缓冲区1(ringbuffer1)是第一环形缓冲区(第一ring buffer)。
可以理解的,图4所示状态同样仅为本申请实施例示例所用,其并不涵盖所有的状态情形。例如,还可以是环形缓冲区1(ring buffer1)处于转储状态,环形缓冲区2(ringbuffer2)处于写入状态,而环形缓冲区3(ring buffer3)处于空闲状态。又例如,还可以是环形缓冲区1(ring buffer1)处于写入状态,环形缓冲区2(ring buffer2)和环形缓冲区3(ring buffer3)都处于转储状态。还例如,极端情形下,环形缓冲区1(ring buffer1)、环形缓冲区2(ring buffer2)和环形缓冲区3(ring buffer3)都是转储状态。
这样,即使当前用于实时写入跟踪日志的ring buffer进入跟踪日志的转储状态,电子设备也能通过状态切换启用其他的ring buffer实时写入新的跟踪日志,从而防止数据真空期。进而,即使电子设备在转储跟踪日志这段时间内发生相关性能问题,也能通过实时记录到的跟踪日志进行后续的性能分析,以降低后续性能分析的难度。
在一些实施例中,由于电子设备主要通过确定ring buffer的状态来区分用于跟踪日志写入和跟踪日志转储的ring buffer。那么,电子设备需要及时根据当下情形对ringbuffer的状态进行切换,以防止转储和写入发生错乱。因此,电子设备可以检查所有ringbuffer的状态,用以确定当前状态是写入状态的第一ring buffer和确定当前状态是空闲状态的第二ring buffer。在电子设备响应于跟踪日志请求时,对确定的第一ring buffer进行跟踪日志转储,并启用确定的第二ring buffer接替进行跟踪日志写入。
在一些实施例中,ring buffer的状态可以由标志位表示。在本申请实施例中,每一块ring buffer都包括一个对应的标志位。即,标志位与ring buffer一一对应。进而,当电子设备响应于跟踪日志请求需要检查ring buffer的状态时,即可获取所有ring buffer对应的标志位。通过标志位的置位状态来确定对应ring buffer的状态。
在一个具体的实施例中,标志位可以通过逻辑电平信号“1”和“0”表示。例如,标志位的置位状态是“1”时,表征对应的ring buffer是写入状态。标志位的置位状态是“0”时,表征对应的ring buffer是空闲状态。或者,标志位的置位状态是“1”时,表征对应的ringbuffer是空闲状态。标志位的置位状态是“0”时,表征对应的ring buffer是写入状态。需要说明的,标志位还可以是赋予用于表征状态的其他标识,本申请实施例对此不作任何限定,具体可以根据实际需求设定。
电子设备根据标志位确定第一ring buffer和第二ring buffer之后。此时响应于跟踪日志请求需要对第一ring buffer进行跟踪日志转储,并且第一ring buffer当前状态是写入状态。所以,为了避免后续继续往第一ring buffer写入跟踪日志而导致发生写入错乱,电子设备对第一ring buffer进行跟踪日志转储的同时,还需要将第一ring buffer的状态切换为转储状态。
相对应的,为了后续能够继续实时的写入跟踪日志,电子设备此时还选择了第二ring buffer进行跟踪日志写入,而第二ring buffer当前状态是空闲状态。所以,电子设备选择第二ring buffer用于进行跟踪日志写入时,需要一并将第二ring buffer的状态切换为写入状态。在第二ring buffer的状态切换为写入状态后,后续便可以持续往这个第二ring buffer写入新产生的跟踪日志。即,电子设备需要将所选择的第二ring buffer的状态从当前的空闲状态切换到写入状态,表征接下来都往这个第二ring buffer内写入跟踪日志。
总结来说,电子设备响应于跟踪日志转储请求,对第一环形缓冲区进行跟踪日志转储,将第一环形缓冲区从第一状态(即写入状态)切换为转储状态。同时,将处于空闲状态(即第二状态)的第二环形缓冲区切换为第一状态(即写入状态)。
可以理解的,由于ring buffer的状态随时可能被切换,所以第一ring buffer对应的ring buffer和第二ring buffer对应的ring buffer是随时可以变化的。
例如,在响应于跟踪日志转储请求之前,ring buffer1是第一ring buffer,ringbuffer2是第二ring buffer。而在电子设备响应于这个跟踪日志转储请求,对第一ringbuffer,即对ring buffer1进行跟踪日志转储并将其状态切换为转储状态。同时电子设备将ring buffer2的状态切换为写入状态之后,也就是说电子设备响应于这个跟踪日志转储请求之后,ring buffer1不再是本申请实施例中的第一ring buffer,而切换为写入状态后的ring buffer2才是本申请实施例中的第一ring buffer。
在一些实施例中,对于进入转储状态的第一ring buffer,电子设备在对第一ringbuffer内存储的跟踪日志转储结束之后,为了准确表示ring buffer已经结束转储,电子设备需要再次切换这个第一ring buffer的状态。
具体而言,若转储结束后当前存在处于写入状态的环形缓冲区,电子设备需要再将第一ring buffer的状态从转储状态切换为空闲状态。以便下次可以再将其切换为写入状态,用于实时写入跟踪日志。若转储结束后当前不存在处于写入状态的环形缓冲区,电子设备则需要再将第一ring buffer的状态从转储状态切换为写入状态,以便尽快缩短数据真空期。
如图5所示,图5以环形缓冲区1(ring buffer1)和环形缓冲区2(ring buffer2)这两个环形缓冲区为例,示出了一种环形缓冲区状态切换的流程示意图。
以下,结合图5示对本申请实施例中ring buffer切换进行示例性说明。
图5中的①、②、③、④以及⑤分别是不同时刻情形下,环形缓冲区1(ringbuffer1)和环形缓冲区2(ring buffer2)的不同状态。
如图5中的①所示,环形缓冲区1(ring buffer1)的初始状态是写入状态,环形缓冲区2(ring buffer2)的初始状态是空闲状态。此时,环形缓冲区1(ring buffer1)是第一ring buffer,电子设备是在环形缓冲区1(ring buffer1)内写入跟踪日志的。而环形缓冲区2(ring buffer2)是第二ring buffer。
接着,电子设备若接收到跟踪日志转储请求,便响应于这个跟踪日志转储请求对环形缓冲区1(ring buffer1)进行状态切换,用于进行跟踪日志转储。同时,电子设备一并对环形缓冲区2(ring buffer2)进行状态切换,用于跟踪日志写入。
如图5中的②所示,初始状态是写入状态的环形缓冲区1(ring buffer1)会切换进入转储状态,而初始状态是空闲状态的环形缓冲区2(ring buffer2)会切换为写入状态。以便环形缓冲区1(ring buffer1)进入转储状态后,继续往环形缓冲区2(ring buffer2)写入跟踪日志。此时,环形缓冲区2(ring buffer2)是第一ring buffer。
然后,环形缓冲区1(ring buffer1)和环形缓冲区2(ring buffer2)在图5中②所示的状态下,电子设备若再次接收到跟踪日志转储请求。由于环形缓冲区2(ring buffer2)此时是写入状态,那么电子设备响应于这个跟踪日志转储请求,会将环形缓冲区2(ringbuffer2)的状态切换为转储状态。此时,如果环形缓冲区1(ring buffer1)还未转储结束,那么环形缓冲区1(ring buffer1)和环形缓冲区2(ring buffer2)就都是转储状态,如图5中的③所示。
可以理解的,图5中③所示的这种状态情况就是所有ring buffer都是转储状态的极端情形。在这种极端情形下,若接收到跟踪日志转储请求,为了顺利响应跟踪日志转储请求实现跟踪日志的转储,电子设备则可以通过复制转发转储的方式实现跟踪日志的转储。具体而言,电子设备可以复制转发转储后的目标跟踪日志。目标跟踪日志是目标环形缓冲区内存储的跟踪日志,而目标环形缓冲区是历史转储开始时间与跟踪日志转储请求最接近的环形缓冲区。
同时,在这种极端情形下,为了尽快可以写入,电子设备会将先转储结束的环形缓冲区切换为写入状态。也就是说,若环形缓冲区1(ring buffer1)先转储结束,那电子设备会先将环形缓冲区1(ring buffer1)切换进入写入状态,如图5中⑤所示。此时,环形缓冲区1(ring buffer1)是第一ring buffer。
而若环形缓冲区2(ring buffer2)先转储结束,那电子设备会先将环形缓冲区2(ring buffer2)切换为写入状态,如图5中②所示。此时,环形缓冲区2(ring buffer2)是第一ring buffer。
另外,如图5中的②和④所示,在图5中②所示的状态下,若环形缓冲区1(ringbuffer1)转储结束,此时环形缓冲区2(ring buffer2)是写入状态,也就是说,可以理解为第一ring buffer转储结束后当前存在状态是写入状态的环形缓冲区。那么,在环形缓冲区1(ring buffer1)转储结束之后,环形缓冲区1(ring buffer1)的状态会被切换为空闲状态,如图5中的④所示。此时,环形缓冲区2(ring buffer2)仍然是第一ring buffer。
由此可见,在本申请实施例中,电子设备在跟踪日志转储请求到来时,可以根据当下情形及时切换环形缓冲区的状态,从而通过对多个环形缓冲区进行状态切换来配合进行跟踪日志的转储和写入。同样的,在环形缓冲区转储结束后,也能够根据具体情况将环形缓冲区从转储状态切换为写入状态或空闲状态,确保后续可以更好的利用转储结束的环形缓冲区。这样,能够尽可能确保一直有可以用于写入跟踪日志的环形缓冲区,从而避免出现数据真空期。
在一些实施例中,在电子设备包括两块以上的ring buffer的情况下,可以理解的,电子设备所选择的第二ring buffer可以是所有处于空闲状态的ring buffer中的任意一块。即,可以是第一ring buffer以外剩余所有处于空闲状态的ring buffer中的任意一块。所选择的第二ring buffer被启用之后,电子设备便集中在启用的这一块第二ringbuffer中写入跟踪日志,直至接收到下一个跟踪日志转储请求再重新启用切换ringbuffer。
例如,以电子设备包括ring buffer1、ring buffer2、ring buffer3以及ringbuffer4这四块ring buffer为例。电子设备接收到跟踪日志转储请求后,若ring buffer1当前的状态是写入状态,ring buffer2、ring buffer3以及ring buffer4当前的状态都是空闲状态。即,电子设备之前一直在ring buffer1内写入跟踪日志,ring buffer1以外剩余的所有ring buffer都处于空闲状态。那么,电子设备可以响应跟踪日志转储请求对ringbuffer1进行跟踪日志转储,同时从剩余的ring buffer2、ring buffer3以及ring buffer4中任意选择一块或多块ring buffer作为第二ring buffer接替进行跟踪日志写入。
在一个具体的实施例中,由于ring buffer是从内存中划分出来的存储空间,所以若处于写入状态的ring buffer的数量越多,对于跟踪日志转储和写入来说都需要占用电子设备大量的资源,从而导致电子设备对于这一块处理的开销越大。
例如,若有多块ring buffer供CPU多核同时实时写入跟踪日志,除了跟踪日志写入过程有多块ring buffer同时工作占用电子设备过多资源以外,在转储时还需要对多块ring buffer内存储的跟踪日志进行拼接转储。多块ring buffer拼接转储的这个工作量相比于仅对一块ring buffer内存储的跟踪日志进行拼接转储就大得多,所占资源消耗相应也会更多。
因此,本申请实施例中的电子设备可以从多块空闲的ring buffer中仅选择一块ring buffer作为第二ring buffer用于跟踪日志写入。例如,电子设备可以从ringbuffer2、ring buffer3以及ring buffer4中只选择一块ring buffer作为第二ringbuffer进行跟踪日志写入。也就是说,在本申请实施例中,在同一时间段,电子设备可以控制仅有一块ring buffer的状态是写入状态。即,同一时间段内只能集中往一块ringbuffer内写入跟踪日志。由此来减少跟踪日志写入和转储所占用的资源,减少资源消耗。
同时,由于转储需要一定时间,所以在有多块ring buffer的情形下,若保证仅有一块ring buffer的状态是写入状态,就会有更多的ring buffer处于空闲状态。进而,在跟踪日志转储请求比较频繁的情况下,就能使得每一个跟踪日志转储请求到来时,当前大概率都有状态是空闲状态的ring buffer供电子设备选择启用接替进行跟踪日志实时写入工作,从而提高避免数据真空期的概率。
同理,由于ring buffer的数量越多,电子设备对于ring buffer的资源开销就会越大。因此,在能够解决转储期间数据真空期问题的基础上,ring buffer的数量越少越能节省电子设备的资源,从而避免ring buffer占用电子设备过多的资源。因此,在一个具体的实施例中,本申请实施例中电子设备可以只包括两个ring buffer。
为便于对方案进行准确描述,以下实施例主要会以电子设备仅包括两块ringbuffer为例,来对本申请实施例提供的日志处理方法进行解释说明。
在一些实施例中,因为转储需要一定的时间,因此在比较极端的情况下,可能存在所有ring buffer都在进行跟踪日志转储。即,电子设备接收到跟踪日志转储请求之后,当下可能存在所有的ring buffer都是转储状态的情形,此时,没有可以选择的用于进行跟踪日志转储ring buffer。因此,为了顺利响应在这个极端情况下接收到的跟踪日志转储请求,电子设备可以通过复制转发的方式向跟踪日志转储请求对应请求方发送跟踪日志。
也就是说,在电子设备接收到跟踪日志转储请求之后,若当前所有的ring buffer的状态都是转储状态。那么为了可以响应这个跟踪日志转储请求成功为对应请求方转储跟踪日志,电子设备可以复制转发转储后的目标跟踪日志给到这个请求方。
其中,基于跟踪日志的时间特性可知跟踪日志都是有生成时间的,并且请求方发出跟踪日志转储请求时通常都是需要获取到最新跟踪日志的。同时,ring buffer是响应于跟踪日志转储请求,按照请求时间先后进入转储状态的。那么,在后面进入转储状态的ringbuffer所存储的跟踪日志的生成时间会是最新。因此,本申请实施例中的目标跟踪日志是指目标环形缓冲区内存储的跟踪日志。这个目标环形缓冲区则是历史转储开始时间与这个跟踪日志转储请求时间最接近的跟踪日志。电子设备在目标跟踪日志完成转储后,将其复制转发一份给这个跟踪日志转储请求对应的请求方。
例如,以ring buffer1和ring buffer2为例。在电子设备接收到请求方C的跟踪日志转储请求时,若ring buffer1正处于为请求方A转储跟踪日志的状态,且ring buffer2正处于为请求方B转储跟踪日志的状态。也就是说,此时ring buffer1和ring buffer2都处于转储状态,无法选择其中一块ring buffer为请求方C进行跟踪日志转储。
那么,为了响应请求方C的跟踪日志转储请求为请求方C转储跟踪日志,电子设备可以从ring buffer1内存储的跟踪日志和ring buffer2内存储的跟踪日志中确定生成时间与当前跟踪日志转储请求时间最接近的跟踪日志作为目标跟踪日志。然后,在这个目标跟踪日志完成转储之后,将转储的结果复制转发一份给这个跟踪日志转储请求对应的请求方C。
例如,若请求方A的跟踪日志转储请求A在请求方B的跟踪日志转储请求B之后被响应,即ring buffer1在ring buffer2之后进入转储,ring buffer1相比ring buffer2来说,转储开始时间越接近当前跟踪日志转储请求的时间。那么,ring buffer1内存储的跟踪日志的生成时间与当前跟踪日志转储请求时间最接近,电子设备则可以在对ring buffer1内存储的跟踪日志转储结束之后,将对应转储给请求方A的跟踪日志复制转发一份给请求方C。
而若请求方A的跟踪日志转储请求A在请求方B的跟踪日志转储请求B之前被响应,即ring buffer2在ring buffer1之后进入转储,ring buffer2相比ring buffer1来说,转储开始时间越接近当前跟踪日志转储请求的时间。那么,ring buffer2内存储的跟踪日志的生成时间与当前跟踪日志转储请求时间最接近,电子设备则可以在对ring buffer2内存储的跟踪日志转储结束之后,将对应转储给请求方B的跟踪日志复制转发一份给请求方C。
由此,本申请实施例即使在极端的情况下也能确保请求方能够顺利获取到跟踪日志,便于后续性能分析。
另外,若在这种极端情况下接收到跟踪日志转储请求,同样是没有处于空闲状态的ring buffer供电子设备选择来启用承担跟踪日志写入工作。因此,电子设备可以启用最快结束转储工作的ring buffer来承担跟踪日志写入工作,使得尽快能够有ring buffer可以承担跟踪日志写入工作,尽可能缩短数据真空期。
即,电子设备在第一ring buffer转储结束后,若当前存在处于写入状态的环形缓冲区,电子设备则可以将第一ring buffer的状态切换为空闲状态。而若当前不存在处于写入状态的环形缓冲区,为了尽快可以写入跟踪日志,电子设备则可以将第一ring buffer的状态切换为写入状态。
在一些实施例中,电子设备对跟踪日志进行转储时,需要将跟踪日志转储到指定的转储路径。在本申请实施例中,跟踪日志转储的转储路径由跟踪日志请求对应的请求方提供。
即,电子设备在转储跟踪日志时,需要获取到跟踪日志请求对应请求方提供的转储路径。然后,电子设备按照这个转储路径对ring buffer(如第一ring buffer)中存储的跟踪日志进行转储。在一个具体的实施例中,请求方提供的转储路径可以默认配置在电子设备中,进而电子设备接收到这个请求方的跟踪日志转储请求时,即可直接按照默认配置的转储路径转储ring buffer(如第一ring buffer)中存储的跟踪日志。
或者,在另一个具体的实施例中,请求方提供的转储路径可以同时携带在跟踪日志转储请求中。也就是说,请求方发送跟踪日志转储请求时一并携带发送转储路径。电子设备进而根据跟踪日志请求所携带的转储路径转储ring buffer(如第一ring buffer)中存储的跟踪日志。
在一些实施例中,由于并不是所有的业务都能有权限来随便获取到跟踪日志,所以为了防止跟踪日志被请求方随意转储,本申请实施例可以对请求跟踪日志转储的请求方进行相应的权限审核。在跟踪日志转储请求对应请求方有跟踪日志的采集权限时,电子设备再响应于跟踪日志转储请求为请求方转储跟踪日志。即,在跟踪日志转储请求对应请求方没有跟踪日志的采集权限时,电子设备不会响应这个请求方发送的跟踪日志转储请求为其转储跟踪日志。
也就是说,电子设备接收到跟踪日志转储请求之后,在响应于这个跟踪日志转储请求之前,先审核这个跟踪日志转储请求对应请求方的采集权限。若电子设备审核确定请求方有采集权限,那么电子设备在去响应于这个跟踪日志转储请求为请求方法进行跟踪日志的转储。
而若电子设备审核确定请求方没有采集权限,那么电子设备就无需响应这个跟踪日志转储请求。电子设备也就不会为这个请求方转储跟踪日志,那么即使请求方发送了跟踪日志转储请求,这个请求方也不会获取到跟踪日志。
在一些实施例中,电子设备可以通过预先配置权限名单的方式来实现采集权限的审核。也就是说,预先在电子设备中配置权限名单,然后电子设备可以通过这个权限名单来审核确定请求方是否具备跟踪日志的采集权限。
在一个具体的实施例中,例如,权限名单可以是权限白名单。这样,包括在权限白名单内的请求方是有跟踪日志采集权限的请求方,不在权限白名单内的请求方是没有跟踪日志采集权限的请求方。
又例如,在另一个具体的实施例中,权限名单可以是权限黑名单。这样,包括在权限黑名单内的请求方是没有跟踪日志采集权限的请求方,不在权限黑名单内的请求方是有跟踪日志采集权限的请求方。
在一些实施例中,因为跟踪日志的转储需要消耗一定的时间且占用一定的负载,所以如果电子设备频繁地响应于转储跟踪日志请求进行跟踪日志的转储,很大概率会影响到电子设备的正常使用,从而降低用户对电子设备的使用体验。
因此,为了防止转储过于频繁影响电子设备的正常使用,本申请实施例电子设备还可以进一步限制请求方所能请求转储的次数。
在一个具体的实施例中,电子设备可以根据不同业务的需求以及跟踪日志对该业务的重要程度来分配不同的转储配额。其中,这个转储配额可以理解为是给业务配置的请求次数阈值。例如,请求方A的转储配额可以是一天三次,那么电子设备可以限制请求方A一天之内只能申请转储三次跟踪日志。又例如,请求方B的转储配额可以是一天五次,那么电子设备则可以限制请求方B一天之内只能申请转储五次跟踪日志。
可以理解的,不同请求方的转储配额可以相同也可以不同,具体可以根据请求方的实际情况配置,本申请实施例对此不作任何限定。
那么,电子设备接收到跟踪日志转储请求之后,在响应于这个跟踪日志转储请求之前,可以先审核这个跟踪日志转储请求对应请求方的转储配额。若电子设备审核确定请求方目前还有转储配额(即转储配额未超额,例如未超过请求次数阈值),那么电子设备则可以响应于这个跟踪日志转储请求为这个请求方进行跟踪日志的转储。
而若电子设备审核确定请求方没有转储配额(即转储配额已超额,例如已经超过请求次数阈值),电子设备则可以不响应这个跟踪日志转储请求,也就不会向这个请求方转储跟踪日志。同样的,这种情况下,即使请求方发送了跟踪日志转储请求也不会获取到跟踪日志。
例如,请求方A的转储配额是一天三次,请求方A发送这一次跟踪日志转储请求之前已经有发送两次跟踪日志转储请求被响应,那么请求方A还剩余一次请求,请求方A的转储配额未超额。进而,电子设备可以响应于请求方A这一次的跟踪日志转储请求为请求方A转储跟踪日志。而若请求方A发送这一次跟踪日志转储请求之前已经有发送三次跟踪日志转储请求被响应,那么请求方A此时的转储配额是已超额的。进而,电子设备可以不响应于请求方A这一次的跟踪日志转储请求,电子设备今天之内不会再为请求方A转储跟踪日志。
在一些实施例中,上述请求方的采集权限和转储配额,电子设备可以一并进行审核。在本申请实施例中,电子设备一并审核请求方的采集权限和转储配额的行为可以统称为审核请求方的转储权限。即,本申请实施例中的转储权限包括请求方的采集权限和转储配额。因此,在请求方同时有采集权限和转储配额的情况下,电子设备确定请求方有转储权限。而在请求方没有采集权限或者没有转储配额的情况下,电子设备确定这个请求方没有转储权限。
之后,电子设备会响应于有转储权限的请求方的跟踪日志转储请求,为有转储权限的请求方转储跟踪日志。相对应的,电子设备不会响应于没有转储权限的请求方的跟踪日志转储请求,电子设备也就不会为没有转储权限的请求方转储跟踪日志。
可以理解的,若请求方是没有采集权限,那在请求方成功注册采集权限之前,电子设备都不会为其转储跟踪日志。而若请求方有采集权限只是当下没有转储配额,那么电子设备可以在请求方有转储配额时,也就是转储配额重新生效时,响应请求方新发送过来的跟踪日志请求,为这个请求方转储跟踪日志。
例如,如果转储配额的有效期是按一天计算,那么电子设备在今天之内不会再为没有转储配额的请求方转储跟踪日志。而若该请求方的转储配额的有效期是按一周计算,那么电子设备在这一周之内不会再为没有转储配额的请求方转储跟踪日志。
在一些实施例中,电子设备审核确定请求方没有转储权限(即请求方没有采集权限或者没有转储配额)不响应跟踪日志转储请求的情况下,还可以进一步向请求方反馈其没有转储权限(即请求方没有采集权限或者转储配额)这一事项,以便告知请求方没有转储的原因。
请求方接收到转储失败的反馈信息之后,可以根据反馈信息进行相关处理。例如,若反馈请求方没有采集权限,请求方可以基于这一反馈信息申请注册采集权限。
在一些实施例中,电子设备在响应于跟踪日志转储请求完成跟踪日志的转储之后,还可以进一步更新转储信息。在本申请实施例中,转储信息可以包括请求方对应的转储次数和请求方对应的请求次数。
通过更新请求方对应的转储次数可以用于审核请求方的转储配额。例如,在响应于请求方A的跟踪日志转储请求,成功为请求方A完成跟踪日志的转储,将跟踪日志转储到请求方A提供的转储路径之后,即可更新一次请求方A的转储次数。进而,通过比对统计的转储次数和转储配额可以确定请求方A是否有转储配额(转储配额是否超额)。
通过更新请求方对应的请求次数可以用于后续判断请求方对跟踪日志的需求,以便后续调整请求方的转储配额。即,电子设备可以根据请求方的请求次数来调整请求方的转储配额。
例如,请求方A的转储配额原本是一天三次,但是请求方A经常在一天之内要发送n次跟踪日志转储请求,n>3。那么,通过请求方A频繁发送跟踪日志转储请求的这个行为,可以确定一天三次的转储配额对于请求方A来说比较少,可能不足以满足请求方A的日常需求。那么,电子设备就可以根据所统计的请求方A的请求次数提高请求方A的转储配额。
另外,通过统计请求方的请求次数还可以辅助分析电子设备的性能问题。例如,在电子设备版本更新这种比较特殊的时期,电子设备可以着重监控统计各请求方的请求次数。若请求方A在此期间的请求次数比较多,那么可以侧面判断版本更新后请求方A可能出现了性能问题,也就能确定电子设备版本更新所导致出现的性能问题。
上述请求次数的更新可以在接收到请求方法发送的跟踪日志转储请求之后就进行更新。转储次数可以在成功响应请求方的跟踪日志转储请求为请求方转储了跟踪日志的情况下才更新。当然,电子设备若对于转储跟踪日志这一事项能够做到百分之百的成功率,那么也可以在审核确定请求方有转储权限的情况下就更新请求方的转储次数。
在一些实施例中,现有电子设备的厂商品牌方为了便于与自出厂的电子设备进行交互,都相应开发有可以与电子设备通信的云端服务器。因此,为了电子设备的厂商品牌方便于获取统计的转储信息进行后续的分析,电子设备可以将统计的转储信息上传到电子设备对应厂商品牌方对应的云端服务器。
在一个具体的实施例中,电子设备可以按照一定周期上传(即定期上传)所更新的转储信息。例如,电子设备可以实时上传所更新的转储信息。又例如,电子设备也可以按天/周/月/年,在固定的时间点统一上传这一天/周/月/年内更新的转储信息。
在一些实施例中,电子设备,如上述电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。以下,本申请实施例以分层架构的AndroidTM系统为例,示例性说明电子设备100的软件结构。
图6示出了一种电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,如图6所示,将Android系统分为五层,从上至下分别为应用程序层,应用程序框架层,系统运行库(Native)层,硬件抽象层(Hardware AbstractLayer,HAL)以及内核层。
应用程序层可以包括一系列应用程序包。如图6所示,应用程序包可以包括图库,日历,地图,WLAN,音乐,短信,通话,导航,蓝牙,视频等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图6所示,应用程序框架层可以包括窗口管理器,活动管理器,输入管理器,资源管理器,通知管理器,视图系统,内容提供器等。
窗口管理器提供窗口管理服务(Window Manager Service,WMS),WMS可以用于窗口管理、窗口动画管理、surface管理以及作为输入系统的中转站。
活动管理器可以提供活动管理服务(Activity Manager Service,AMS),AMS可以用于系统组件(例如活动、服务、内容提供者、广播接收器)的启动、切换、调度以及应用进程的管理和调度工作。
输入管理器可以提供输入管理服务(Input Manager Service,IMS),IMS可以用于管理系统的输入,例如触摸屏输入、按键输入、传感器输入等。IMS从输入设备节点取出事件,通过和WMS的交互,将事件分配至合适的窗口。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
系统运行库层可以分成安卓运行时(Android runtime,ART)和原生C/C++库两部分。其中,如图6所示,安卓运行时包括核心库和安卓运行时。安卓运行时负责将源代码转换为机器码。安卓运行时主要包括采用提前(ahead or time,AOT)编译技术和及时(just intime,JIT)编译技术。核心库主要用于提供基本的Java类库的功能,例如基础数据结构、数学、IO、工具、数据库、网络等库。核心库为用户进行安卓应用开发提供了API。
原生C/C++库可以包括多个功能模块。例如:表面管理器(surface manager),媒体框架(Media Framework)、函数库(如libc)、图形库(如OpenGL ES)、数据库(如SQLite)、日志库、网络库等。其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体框架支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如: MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。OpenGL ES提供应用程序中2D图形和3D图形的绘制和操作。SQLite为电子设备100的应用程序提供轻量级关系型数据库。
在本申请实施例中,系统运行库层新增有跟踪日志转储权限审核服务,跟踪日志采集服务和统计数据上传服务。
其中,跟踪日志转储权限审核服务用于审核跟踪日志转储请求对应请求方的转储权限。在一些实施例中,跟踪日志转储权限审核服务可以审核请求方的采集权限和/或采集配额。
跟踪日志采集服务用于进行跟踪日志的转储。具体的,跟踪日志采集服务可以根据请求方提供的转储路径为请求方进行跟踪日志的转储。
统计数据上传服务用于更新转储信息(包括请求方转储次数和请求方请求次数),并定期统一上传至云端服务器。
硬件抽象层运行于用户空间(user space),对内核层驱动进行封装,向上层提供调用接口。如图6所示,硬件抽象层可以包括显示HAL,音频HAL,摄像头HAL,蓝牙HAL等。
内核层是硬件和软件之间的层。内核层可以包括显示驱动,音频驱动,摄像头驱动,蓝牙驱动以及文件系统等。另外,在本申请实施例中,内核层新增一个申请环形缓冲区服务,用于向内存申请至少两块环形缓冲区(ring buffer)。
具体而言,申请环形缓冲区服务可以在电子设备开机启动时,向内存申请ringbuffer。在一个具体的实施例中,电子设备开机启动时,可以触发申请环形缓冲区服务向内存申请两块ring buffer。
如图7所示,以手机70为例,示出了一种电子设备的开机场景示意图。参考图7,用户可以通过长按手机70侧面的开机键71,触发手机70开机启动。手机70在开机启动过程中,触发申请环形缓冲区服务向手机70的内存申请ring buffer。
以下,以电子设备中各模块/服务的交互为例,将结合附图对本申请实施例提出的日志处理方法进行详细说明。
如图8所示,提供一种日志处理方法的流程示意图,包括步骤S801-S807。以下,结合图8对本申请实施例提供的日志处理方法进行详细说明。
S801,发送跟踪日志转储请求。
参考图8,业务模块(即请求方)向跟踪日志采集权限审核服务发送跟踪日志转储请求。如图8所示,不同的业务模块A(即请求方A)、业务模块B(即请求方B)……均可以向跟踪日志采集权限审核服务发起跟踪日志转储请求。
在一些实施例中,业务模块可以在电子设备分层架构的任一层。例如,业务模块可以是在应用程序层,应用程序框架层,或者系统运行库层。可以理解的,不同的业务模块可以在同一层也可以在不同层。
在一个具体的实施例中,业务模块(即请求方)在确定本业务有性能问题需要获取跟踪日志进行性能分析时,可以向跟踪日志采集权限审核服务发起跟踪日志转储请求。其中,业务模块可以基于业务规则触发向跟踪日志采集权限审核服务发起跟踪日志转储请求,业务规则可以是预先自行设定的规则。
或者,也可以由用户触发业务模块向跟踪日志采集权限审核服务发起跟踪日志转储请求。例如,一般电子设备需要维修时,维修人员可以依赖跟踪日志来分析电子设备的性能问题,因此可以由维修人员触发业务模块向跟踪日志采集权限审核服务发起跟踪日志转储请求。
S802,审核业务模块的转储权限。
跟踪日志采集权限审核服务接收到业务模块(即请求方)发送的跟踪日志转储请求之后,审核该业务模块(即请求方)的转储权限,确定该业务模块(即请求方)是否有转储权限。
在一些实施例中,转储权限的审核包括采集权限的审核和转储配额的审核。那么,跟踪日志采集权限审核服务在审核确定业务模块(即请求方)同时有采集权限和转储配额的情况下,确定这个业务模块(即请求方)有转储权限,跟踪日志采集权限审核服务通知跟踪日志采集服务执行跟踪日志转储。即,跟踪日志采集服务执行S803,开始正式进入跟踪日志的转储处理流程。同时,在跟踪日志采集权限审核服务确定业务模块(即请求方)有转储权限的情况下,通知统计数据上传服务执行S806,更新业务模块(即请求方)的请求次数。
在一个具体的实施例中,跟踪日志采集权限审核服务可以在确定业务模块(即请求方)有采集权限的情况下,就通知统计数据上传服务执行S806,更新业务模块的请求次数。
而如果跟踪日志采集权限审核服务在审核确定业务模块(即请求方)没有采集权限或者没有转储配额,跟踪日志采集权限审核服务可以确定这个业务模块(即请求方)没有转储权限,则可以结束本次处理。也就是说,没有转储权限的情况下,跟踪日志采集权限审核服务不会进一步通知跟踪日志采集服务去执行跟踪日志转储。
在一些实施例中,跟踪日志采集权限审核服务确定这个业务模块(即请求方)没有转储权限时,还可以额外向这个业务模块(即请求方)反馈没有转储跟踪日志的原因,以便业务模块(即请求方)根据反馈的原因自查解决。
S803,检查环形缓冲区的状态。
S804,跟踪日志转储。
S805,跟踪日志写入。
跟踪日志采集服务接收到跟踪日志采集权限审核服务执行跟踪日志转储的通知之后,为了确定进行跟踪日志转储的环形缓冲区和接替用于实时写入跟踪日志的环形缓冲区,即为了确定本申请实施例中的第一环形缓冲区和第二环形缓冲区,跟踪日志采集服务执行S803,检查环形缓冲区的状态。
可以理解的,当下内存中划分有多少块环形缓冲区,跟踪日志采集服务就相应可以检查多少块环形缓冲区的状态。在一些实施例中,跟踪日志采集服务可以根据环形缓冲区一一对应的标志位来确定环形缓冲区的状态。
在本申请实施例中,跟踪日志采集服务在检查环形缓冲区的状态的过程中,选择当前状态是写入状态的环形缓冲区作为进行跟踪日志转储的环形缓冲区,即作为本申请实施例中的第一环形缓冲区。同时,跟踪日志采集服务选择当前状态是空闲状态的环形缓冲区作为接替用于写入跟踪日志的环形缓冲区,即作为本申请实施例中的第二环形缓冲区。
然后,针对第一环形缓冲区,跟踪日志采集服务执行S804,即对第一环形缓冲区进行跟踪日志转储。也就是将第一环形缓冲区内存储的跟踪日志转储给对应的业务模块。在一些实施例中,跟踪日志采集服务可以将第一环形缓冲区内存储的跟踪日志按照业务模块提供的转储路径进行转储。
在另一些实施例中,当确定第一环形缓冲区之后,为了正确表示第一环形缓冲区当前的状态,跟踪日志采集服务还需要一并将第一环形缓冲区的状态切换变更为转储状态,用以表征第一环形缓冲区当前在进行跟踪日志转储。而在对第一环形缓冲区域的转储结束之后,若当前存在写入状态的环形缓冲区,跟踪日志采集服务再次将第一环形缓冲区的状态切换变更为空闲状态,用以下次有跟踪日志转储请求时,可以再次启用这个第一环形缓冲区进行跟踪日志的写入。若当前不存在写入状态的环形缓冲区,跟踪日志采集服务则再次将第一环形缓冲区的状态切换变更为写入状态,以便进行跟踪日志写入,缩短跟踪日志的数据真空期。
针对第二环形缓冲区,跟踪日志采集服务执行S805,即对第二环形缓冲区进行跟踪日志写入。也就是启用这个第二环形缓冲区来接替原本由第一环形缓冲区写入跟踪日志的工作。同样的,在一些实施例中,为了正确表示第二环形缓冲区的状态,跟踪日志采集服务启用第二环形缓冲区时,需要一并将第二环形缓冲区的状态从空闲状态切换变更为写入状态,用以表征当前是第二环形缓冲区用于实时进行跟踪日志的写入。而在下次接收到跟踪日志转储请求时,跟踪日志采集服务就可以选择这个第二环形缓冲区进行跟踪日志转储。
可以理解的,接收到下次跟踪转储请求以触发跟踪日志采集服务执行下一次跟踪日志转储时,如果跟踪日志采集服务选择这个第二环形缓冲区进行跟踪日志转储,那么在这个下一次跟踪日志转储的执行过程中,这个第二环形缓冲区就转变为了第一环形缓冲区。
跟踪日志采集服务完成对第一环形缓冲区的跟踪日志转储,并启用第二环形缓冲区用以实时写入跟踪日志之后,便可通知统计数据上传服务执行S807,更新业务模块(即请求方)的转储次数。
S806,更新业务模块的请求次数。
S807,更新业务模块的转储次数。
S808,统一上传转储信息,包括更新业务模块的请求次数和转储次数。
统计数据上传服务接收到跟踪日志转储权限审核服务和跟踪日志采集服务相对应的统计通知之后,即可对本次的跟踪日志转储请求进行统计。
在本申请实施例中,统计数据上传服务响应于跟踪日志转储权限审核服务统计请求次数的通知,执行S806,更新业务模块(即请求方)的请求次数。例如,将本次跟踪日志转储请求对应业务模块(即请求方)的请求次数递增1。同时,统计数据上传服务可以响应于跟踪日志采集服务统计转储次数的通知,执行S807,更新业务模块(即请求方)的转储次数。例如,将本次跟踪日志转储请求对应业务模块(即请求方)的转储次数递增1。
然后,统计数据上传服务执行S808,定期向云端服务器统一上传转储信息,该转储信息可以包括更新的业务模块(即请求方)的请求次数和转储次数,从而便于后续分析。例如,后续可以通过分析业务模块(即请求方)的请求次数来相应调整业务模块(即请求方)的转储配额。
如图9所示,提供一种日志处理方法的交互时序流程示意图。以下,结合图9对本申请实施例提供的日志处理方法进行详细说明。
首先,业务模块(即请求方)向跟踪日志转储权限审核服务发送跟踪日志转储请求。跟踪日志转储权限审核服务接收到业务模块发送的跟踪日志转储请求之后,审核这个业务模块的转储权限。在业务模块有转储权限的情况下,跟踪日志转储权限审核服务通知跟踪日志采集服务响应于这个业务模块的跟踪日志转储请求。如图9所示,即跟踪日志转储权限审核服务通知跟踪日志采集服务执行跟踪日志转储请求。
如图9所示,跟踪日志转储权限审核服务可以先审核业务模块的采集权限。在业务模块有采集权限的情况下,跟踪日志转储权限审核服务再审核业务模块的转储配额。在业务模块有转储配额的情况下,跟踪日志转储权限审核服务确定业务模块有转储权限,即可向跟踪日志采集服务发送跟踪日志转储请求。
然后,跟踪日志采集服务接收到跟踪日志转储权限审核服务通知的执行跟踪日志转储之后,先检查每一块环形缓冲区(ring buffer)的状态。在一些实施例中,跟踪日志采集服务可以通过每一块环形缓冲区(ring buffer)对应的标志位的置位状态来分别确定每一块环形缓冲区(ring buffer)的状态。
在跟踪日志采集服务确定好每一块环形缓冲区(ring buffer)的状态之后,跟踪日志采集服务选择当前状态是写入状态的环形缓冲区(ring buffer)转储跟踪日志。同时,跟踪日志采集服务选择当前状态是空闲状态的环形缓冲区(ring buffer)实时写入跟踪日志。
例如,以环形缓冲区1(即ring buffer1)和环形缓冲区2(即ring buffer2)为例。如果环形缓冲区1当前的状态是写入状态,环形缓冲区2当前的状态是空闲状态。那么,跟踪日志采集服务选择环形缓冲区1作为第一环形缓冲区进行跟踪日志转储,同时并选择环形缓冲区2,启用环形缓冲区2作为第二环形缓冲区来实时写入跟踪日志。此时,跟踪日志采集服务可以将环形缓冲区1的状态从写入状态切换为转储状态,将环形缓冲区2的状态从空闲状态切换为写入状态。
而如果环形缓冲区2当前的状态是写入状态,环形缓冲区1当前的状态是空闲状态,那么跟踪日志采集服务则选择环形缓冲区2作为第一环形缓冲区进行跟踪日志转储,并选择环形缓冲区1,启用环形缓冲区1作为第二环形缓冲区用于实时写入跟踪日志。此时,跟踪日志采集服务可以将环形缓冲区2的状态从写入状态切换为转储状态,将环形缓冲区1的状态从空闲状态切换为写入状态。
由此,即使在跟踪日志的转储期间,也能够在环形缓冲区(ring buffer)中写入新的跟踪日志,避免转储期间出现跟踪日志的数据真空期。
另外,跟踪日志采集服务可以在审核业务模块的采集权限,确定业务模块有采集权限的情况下,进一步通知统计数据上传服务统计本次跟踪日志请求。如图9所示,即通知统计数据上传服务更新业务模块的请求次数。同理,跟踪日志采集服务可以在转储跟踪日志之后,进一步通知统计数据上传服务统计本次转储行为。如图9所示,即通知统计数据上传服务更新业务模块的转储次数。
最后,统计数据上传服务模块可以按照定期统一上传所统计的业务模块的请求次数和转储次数。如图9所示,统计数据上传服务向云端服务器统一上传转储信息,这个转储信息包括业务模块的请求次数和转储次数。
本申请另一实施例提供一种电子设备,包括:一个或多个处理器和存储器。存储器分别与处理器耦合;存储器中存储有一个或多个计算机程序代码,计算机程序代码包括计算机指令;当处理器执行所述计算机指令时,使得电子设备实现上述任一实施例所述的日志处理方法。
本申请另一实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当计算机程序被电子设备中的处理器执行时,使得电子设备实现上述任一实施例所述的日志处理方法。
本申请实施例还提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述方法实施例中的各个功能或者步骤。
本申请实施例还提供一种芯片系统,如图10所示,该芯片系统1000包括至少一个处理器1001和至少一个接口电路1002。处理器1001和接口电路1002可通过线路互联。例如,接口电路1002可用于从其它装置(例如计算机的存储器)接收信号。又例如,接口电路1002可用于向其它装置(例如处理器1001)发送信号。
示例性的,接口电路1002可读取存储器中存储的指令,并将该指令发送给处理器1001。当指令被处理器1001执行时,可使得计算机执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (16)

1.一种日志处理方法,其特征在于,应用于电子设备,所述电子设备包括至少两块环形缓冲区,其中,所述环形缓冲区包括第一状态和第二状态,所述第二状态不同于所述第一状态,所述方法包括:
在处于所述第一状态的第一环形缓冲区内写入跟踪日志;
响应于跟踪日志转储请求,对所述第一环形缓冲区进行跟踪日志转储,所述第一环形缓冲区切换为转储状态,将处于所述第二状态的第二环形缓冲区切换为所述第一状态;
在所述第一环形缓冲区的转储期间,在处于所述第一状态的所述第二环形缓冲区内写入跟踪日志。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一环形缓冲区内存储的跟踪日志转储结束后,若当前存在处于所述第一状态的环形缓冲区,将所述第一环形缓冲区的状态切换为所述第二状态;
若当前不存在处于所述第一状态的环形缓冲区,将所述第一环形缓冲区的状态切换为所述第一状态。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
检查每块环形缓冲区的状态,确定处于所述第一状态的第一环形缓冲区和确定处于所述第二状态的第二环形缓冲区。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:同一时间段内,仅有一块环形缓冲区的状态是所述第一状态。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若当前每块环形缓冲区都处于所述转储状态,则响应于所述跟踪日志转储请求,复制转发转储后的目标跟踪日志;其中,所述目标跟踪日志是目标环形缓冲区内存储的跟踪日志,所述目标环形缓冲区是历史转储开始时间与所述跟踪日志转储请求时间最接近的环形缓冲区。
6.根据权利要求1或2所述的方法,其特征在于,所述电子设备包括两块环形缓冲区。
7.根据权利要求3所述的方法,其特征在于,所述检查每块环形缓冲区的状态,包括:
获取标志位,所述标志位与所述环形缓冲区一一对应;
根据所述标志位确定对应环形缓冲区的状态。
8.根据权利要求1或2所述的方法,其特征在于,所述响应于跟踪日志转储请求之前,所述方法还包括:
审核所述跟踪日志转储请求对应请求方的转储权限;其中,所述转储权限包括采集权限和/或转储配额;
所述响应于跟踪日志转储请求,对所述第一环形缓冲区进行跟踪日志转储,包括:
在所述请求方的转储权限审核通过的情况下,响应于所述跟踪日志转储请求,对所述第一环形缓冲区进行跟踪日志转储。
9.根据权利要求8所述的方法,其特征在于,所述审核所述跟踪日志转储请求对应请求方的转储权限,包括:
若根据权限名单确定所述请求方有采集权限,并且所述请求方的转储配额未超额,确定所述请求方有转储权限;
若根据所述权限名单确定所述请求方没有采集权限,或者所述请求方转储配额已超额,确定所述请求方没有转储权限。
10.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
更新转储信息,定期将所述转储信息上传到云端服务器;所述转储信息包括所述跟踪日志转储请求对应请求方的转储次数和所述请求方的请求次数。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
根据所述请求方的请求次数调整所述请求方的转储配额。
12.根据权利要求9所述的方法,其特征在于,所述权限名单包括权限白名单,所述方法还包括:
若所述权限白名单内包括所述请求方,确定所述请求方有采集权限;若所述权限白名单内不包括所述请求方,确定所述请求方没有采集权限。
13.根据权利要求1或2所述的方法,其特征在于,所述对所述第一环形缓冲区进行跟踪日志转储,包括:
按照转储路径对所述第一环形缓冲区内存储的跟踪日志进行转储;其中,所述转储路径由所述跟踪日志转储请求对应的请求方提供。
14.一种电子设备,其特征在于,包括:一个或多个处理器和存储器,所述存储器与所述处理器耦合;所述存储器中存储有一个或多个计算机程序代码,所述计算机程序代码包括计算机指令;当所述处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-13中任一项所述的日志处理方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序被电子设备的处理器执行时,使得所述电子设备执行如权利要求1-13中任一项所述的日志处理方法。
16.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被电子设备中的处理器执行时,使得所述电子设备执行如权利要求1-13中任一项所述的日志处理方法。
CN202410304904.7A 2024-03-18 2024-03-18 日志处理方法、电子设备和计算机可读存储介质 Active CN117891647B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410304904.7A CN117891647B (zh) 2024-03-18 2024-03-18 日志处理方法、电子设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410304904.7A CN117891647B (zh) 2024-03-18 2024-03-18 日志处理方法、电子设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN117891647A true CN117891647A (zh) 2024-04-16
CN117891647B CN117891647B (zh) 2024-07-23

Family

ID=90651090

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410304904.7A Active CN117891647B (zh) 2024-03-18 2024-03-18 日志处理方法、电子设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117891647B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122421A1 (en) * 2011-07-08 2014-05-01 Fujitsu Limited Information processing apparatus, information processing method and computer-readable storage medium
CN112000583A (zh) * 2020-09-17 2020-11-27 深圳市有方科技股份有限公司 一种调试信息抓取方法及其装置
CN115203002A (zh) * 2022-09-16 2022-10-18 深圳华云信息系统有限公司 日志处理方法、装置、电子设备及存储介质
WO2022226485A1 (en) * 2021-04-20 2022-10-27 Microsoft Technology Licensing, Llc Processor support for using cache way-locking to simultaneously record plural execution contexts into independent execution traces
CN115687036A (zh) * 2021-07-30 2023-02-03 腾讯科技(深圳)有限公司 日志采集方法、装置及日志系统
CN115718568A (zh) * 2022-11-18 2023-02-28 山东云海国创云计算装备产业创新中心有限公司 一种提高日志数据读写效率的方法、装置及设备
CN115981892A (zh) * 2023-01-03 2023-04-18 哲库科技(上海)有限公司 日志读取方法、装置、电子设备及存储介质
CN116049122A (zh) * 2022-08-12 2023-05-02 荣耀终端有限公司 日志信息传输控制方法、电子设备和存储介质
CN116521639A (zh) * 2023-05-24 2023-08-01 北京天空卫士网络安全技术有限公司 一种日志数据的处理方法、电子设备和计算机可读介质
CN116610648A (zh) * 2022-02-08 2023-08-18 哲库科技(上海)有限公司 日志保存方法、装置、电子设备及存储介质
CN117687880A (zh) * 2023-08-03 2024-03-12 荣耀终端有限公司 日志处理方法及装置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122421A1 (en) * 2011-07-08 2014-05-01 Fujitsu Limited Information processing apparatus, information processing method and computer-readable storage medium
CN112000583A (zh) * 2020-09-17 2020-11-27 深圳市有方科技股份有限公司 一种调试信息抓取方法及其装置
WO2022226485A1 (en) * 2021-04-20 2022-10-27 Microsoft Technology Licensing, Llc Processor support for using cache way-locking to simultaneously record plural execution contexts into independent execution traces
CN115687036A (zh) * 2021-07-30 2023-02-03 腾讯科技(深圳)有限公司 日志采集方法、装置及日志系统
CN116610648A (zh) * 2022-02-08 2023-08-18 哲库科技(上海)有限公司 日志保存方法、装置、电子设备及存储介质
CN116049122A (zh) * 2022-08-12 2023-05-02 荣耀终端有限公司 日志信息传输控制方法、电子设备和存储介质
CN115203002A (zh) * 2022-09-16 2022-10-18 深圳华云信息系统有限公司 日志处理方法、装置、电子设备及存储介质
CN115718568A (zh) * 2022-11-18 2023-02-28 山东云海国创云计算装备产业创新中心有限公司 一种提高日志数据读写效率的方法、装置及设备
CN115981892A (zh) * 2023-01-03 2023-04-18 哲库科技(上海)有限公司 日志读取方法、装置、电子设备及存储介质
CN116521639A (zh) * 2023-05-24 2023-08-01 北京天空卫士网络安全技术有限公司 一种日志数据的处理方法、电子设备和计算机可读介质
CN117687880A (zh) * 2023-08-03 2024-03-12 荣耀终端有限公司 日志处理方法及装置

Also Published As

Publication number Publication date
CN117891647B (zh) 2024-07-23

Similar Documents

Publication Publication Date Title
US11922100B2 (en) System and method for energy usage accounting in software applications
CN112257135B (zh) 一种基于多线程的模型加载方法、装置、存储介质及终端
US10963267B2 (en) Bootstrapping profile-guided compilation and verification
CN111597065B (zh) 用于采集设备信息的方法和装置
EP4095723B1 (en) Permission reuse method, permission reuse-based resource access method, and related device
WO2023109272A1 (zh) 监控方法与装置、电子设备
WO2021164560A1 (zh) 一种多核芯片及其调度方法
WO2023051355A1 (zh) 权限检查的方法和电子设备
CN114579055B (zh) 磁盘存储方法、装置、设备及介质
CN114398179B (zh) 一种跟踪标识的获取方法、装置、服务器及存储介质
CN105677481A (zh) 一种数据处理方法、系统及电子设备
CN117891647B (zh) 日志处理方法、电子设备和计算机可读存储介质
US20230385164A1 (en) Systems and Methods for Disaster Recovery for Edge Devices
US20230350738A1 (en) Method for Reusing Shared Library and Electronic Device
CN111813574A (zh) 图片压缩方法、装置、存储介质和电子设备
CN111459462A (zh) 分散式重锁降级
WO2023185684A1 (zh) 一种应用程序的进程查杀方法及电子设备
CN115114083B (zh) 基于视频监控平台的存储容灾方法、装置、设备和介质
CN116701101B (zh) 一种SensorHUB的异常检测方法和电子设备
CN114706715B (zh) 一种基于bmc的分布式raid的控制方法、装置、设备及介质
CN115061702B (zh) 一种ide管理方法及电子设备
CN111290817B (zh) 桌面系统的数据装载方法及系统
CN117708072A (zh) 文件复制方法、终端设备及芯片系统
CN118656100A (zh) 应用程序运行的调整方法及电子设备
CN115982060A (zh) 一种内存回收方法及相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant