Page 478 - 《软件学报》2024年第4期
P. 478
2056 软件学报 2024 年第 35 卷第 4 期
HiLog is less than 6‰ with a compression rate of 3.5% for persistency, much lower than that of Log. In addition, HiLog also has some
novel practical functions such as data protection and flow control.
Key words: operating system; log system; open-source software; data security; flow control
在计算机系统中, 日志记录了在操作系统中发生的事件或其他软件运行的事件 [1] . 一方面, 日志具备极高的实
用价值, 系统开发和运维人员需要通过日志对程序中存在的问题进行定位和分析 [2−6] , 提高工作效率. 另一方面, 在
当今大数据时代, 日志又具备极高的商业价值 [2−4] , 日志记录了大量用户行为习惯信息, 这些信息通过大数据分析
可用于了解用户需求, 作为改进产品或孵化新的商业项目的依据. 日志系统需要提供一整套日志相关的支撑能
[8]
力 [7] . 目前, 日志系统广泛采用的标准是 Syslog-RFC5424 (Syslog) , 标准规定日志系统需要具备生成、过滤、记
录和消息分析的能力. 基于此标准, 目前产业界已经研究并开发了多种受到广泛应用和研究的日志系统, 如
Android 日志系统 [9−11] 、FTrace [12,13] 、NanoLog [14] 、Log4j2 [15−17] 等.
OpenHarmony 是开放原子开源基金会 (OpenAtom Foundation) 所维护的核心孵化项目, 目标是面向全场景、
全连接、全智能时代, 基于开源的方式, 搭建一个智能终端设备操作系统的框架和平台, 促进万物互联产业的繁荣
发展 [18] . 在开源项目运营初期, OpenHarmony 操作系统有许多关键子系统尚未构建, 其中就包括操作系统必备的
日志系统. 从 OpenHarmony 操作系统的需求出发, 其日志系统至少需要具备如下 3 个基本特性: ① 多进程日志读
写: OpenHarmony 是支持多进程并发的操作系统, 其日志系统需要具备从多进程收集日志的能力. ② 实时日志读
写: 作为操作系统的高效调试辅助工具, 日志系统需要具备事件发生-日志输出的实时响应能力. ③ 多内核适配:
OpenHarmony 是多内核的操作系统, 其日志系统需要具备多种内核适配能力.
基于对主流日志系统的分析 (具体内容见第 1.2 节), 在技术架构层面, 当前主流日志系统都不适合作为
OpenHarmony 的日志系统, 原因如下: ① Log4j2 是单进程的日志框架 [15] , 不适用于操作系统这类多进程并发的状
况. ② NanoLog 虽然拥有极高的日志写入速率, 但是日志读取需要复杂的后处理机制 [14] , 不能满足操作系统调试
所需的实时读日志需求. ③ FTrace 日志系统仅适用于内核日志读写, 且使用 FTrace 则意味着操作系统的日志功
能与 Linux 内核的强耦合 [12] , 不适用于适配多内核的 OpenHarmony 操作系统. Android 的日志系统 (Android
version ≥ 5.0.0) 的技术架构可以满足内核解耦、多进程、实时读写的需求. 但是该日志系统仍存在吞吐量不足、
缺乏资源分配机制、缺乏数据安全能力和面向轻量设备的兼容性差 4 个关键问题 (具体内容见第 1.3 节), 不能满足
OpenHarmony 操作系统对日志能力的需求. 因此亟需为 OpenHarmony 操作系统研发一款日志系统, 解决上述关键问题.
基于以上分析, 本文设计了面向 OpenHarmony 操作系统的高性能日志系统 HiLog. 首先, 为了明确日志系统
的研发目标与技术特点, 本文为 HiLog 设计了相应的模型规范. 包括性能原则、资源分配原则、设备兼容性原则
和数据安全原则. 接下来, 遵循模型规范设计并实现了 HiLog 日志系统, 通过高效的 IPC 设计和缓冲区管理提高
吞吐量、构建流量控制机制实现合理的日志资源分配、模块化设计模式提高轻量级设备的兼容性, 并对日志数据
安全能力进行了初步的探索. 最后, 为了检验 HiLog 的表现, 对 HiLog 进行了功能和性能的多重测试, 并与 Android
日志系统进行了横向对比试验. 结果显示, HiLog 在基础性能方面相比 Android 的日志系统 Log 有较大的提升, 例
如基于相同硬件平台, 在日志写入阶段 HiLog 的日志吞吐量比 Log 提升 114%; 在日志持久化阶段 HiLog 丢包率
小于 6‰, 远低于 Log. 同时, HiLog 还提供 Log 所不具备的数据安全、流量控制、持久化压缩等实用能力.
本文第 1 节介绍日志和日志系统的相关概念, 分析相关的背景工作, 阐述研发 HiLog 日志系统的重要性和必
要性. 第 2 节阐述面向 OpenHarmony 操作系统的 HiLog 日志系统的设计原则. 第 3 节描述 HiLog 日志系统的具
体设计方案与实现方法. 第 4 节对 HiLog 进行性能测试和技术分析, 并和 Android 的日志系统 Log 进行横向的比
较. 第 5 节总结本文工作的优缺点, 并给出下一步工作展望.
1 背景概述
1.1 日志与日志系统
日志是系统运行时数据的信息载体, 是基于时间序列的数据. 从功能角度分析, 日志可以在程序开发时提供问