[发明专利]一种嵌入式操作系统异步日志记录的实现方法在审
申请号: | 202110142606.9 | 申请日: | 2021-02-02 |
公开(公告)号: | CN112948136A | 公开(公告)日: | 2021-06-11 |
发明(设计)人: | 李广;包晟临;夏卫;彭宏 | 申请(专利权)人: | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/54 |
代理公司: | 上海段和段律师事务所 31334 | 代理人: | 李佳俊;郭国中 |
地址: | 201800 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 操作系统 异步 日志 记录 实现 方法 | ||
本发明提供了一种嵌入式操作系统异步日志记录的实现方法,包括如下步骤:步骤1:创建日志记录执行线程,日志输出语句与业务逻辑语句在不同线程中运行;步骤2:创建并发线程间数据交换的通讯框架,不同的日志输出会创建不同的执行线程;步骤3:创建日志输出执行线程,日志事件根据日志的配置在单独的线程中执行日志写入操作。本发明提供的一种嵌入式操作系统异步日志记录的实现方法能够大幅提高日志记录的吞吐量,以log4j和logback框架作为比较对象,测试不同线程数量的日志吞吐量。
技术领域
本发明涉及通信的技术领域,具体地,涉及一种嵌入式操作系统异步日志记录的实现方法。
背景技术
每个大型应用项目都包含一套日志记录系统,日志记录是开发过程中的重要组成部分,它提供了有关应用程序运行的精确上下文信息,日志可以保存在永久存储介质中,以供以后参考和研究。然而很多业务系统,尤其是实时业务系统,需要打印详细的上下文和参数来追踪问题;如果在日志记录之前就对报文进行格式化,会非常影响日志输出的性能,可能会使应用程序变慢,进而加重系统负担。Log4j是基于java的日志记录工具,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。但是日志形成优化方面一般。Logback在Log4j的基础上重写了部分内核代码,在一些关键路径上性能提升了10倍以上,初始化内存加载的时间也更小了。在数据吞吐量和延迟方面实现了一定的提升。但仍然无法满足实时系统的实时要求。
针对上述中的相关技术,发明人认为存在有在多线程环境下,吞吐量偏低的问题,因此,需要提出一种技术方案以改善上述技术问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种嵌入式操作系统异步日志记录的实现方法。
根据本发明提供的一种嵌入式操作系统异步日志记录的实现方法,包括如下步骤:
步骤1:创建日志记录执行线程,日志输出语句与业务逻辑语句在不同线程中运行;
步骤2:创建并发线程间数据交换的通讯框架,不同的日志输出会创建不同的执行线程;
步骤3:创建日志输出执行线程,日志事件根据日志的配置在单独的线程中执行日志写入操作。
优选地,所述步骤1中的日志输出语句与业务逻辑语句在不同线程中运行,有专门的线程用于进行日志输出操作,处理业务逻辑的主线程执行后续业务逻辑。
优选地,所述步骤2包括如下步骤:
步骤2.1:框架内部核心数据结构队列为RingBuffer,设计为无锁环形队列;
步骤2.2:并发线程对环形队列的访问采用CAS的无锁策略方法;
步骤2.3:使用缓存行填充的方法来解决多个变量共享同一个缓存行的性能问题。
优选地,所述步骤2.1中的无锁环形队列首尾相连,对列循环使用,使用数组来保存。
优选地,所述步骤2.2中的并发线程间通讯看成是生产者和消费者模型。
优选地,所述用户线程为生产者,日志输出执行线程为消费者,单个生产者和单个消费者,生产者和消费者各自维护自己的指针,不需要加锁。
优选地,所述生产者为一个,消费者为多个,消费者控制自己的指针,依次读取各自序号对应的数据,不需要加锁。
优选地,所述生产者为多个,多个线程共用一个写指针,采用CAS的方法。
优选地,所述步骤2.3中的内存的访问速度低于CPU的运行速度,在内存和CPU之间,加入Cache,CPU访问Cache中的数据,CaChe未命中,访问内存中的数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东计算技术研究所(中国电子科技集团公司第三十二研究所),未经华东计算技术研究所(中国电子科技集团公司第三十二研究所)许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110142606.9/2.html,转载请声明来源钻瓜专利网。