Page 489 - 《软件学报》2024年第4期
P. 489
吴圣垚 等: HiLog: OpenHarmony 的高性能日志系统 2067
文件轮转的持久化机制构建临时的日志文件, 后续通过日志文件压缩方法将临时日志文件压缩处理为压缩文件,
最后删除临时日志文件. 期间出现意外情况, 仍可读取临时的日志文件.
2
3 1 删除 hilogtool
写入
4 Disk 8 日志持久化
5 7
6 单文件写满使执行轮转,
各文件序号减 1
图 9 HiLog 日志系统的多文件轮转的持久化机制
4 HiLog 日志系统实验分析
为了检验标准 HiLog 的表现, 本文基于多种硬件平台对 HiLog 进行实验, 并且和在相同平台上和 Android 的
Log 日志系统进行横向的对比实验. 相应的实验条件如下所示.
(1) 在硬件平台方面: 在 HiLog 性能实验中, 使用的硬件平台包括润和 Hi3516DV300 开发板 (Hi3516)、树莓
派基金会 Raspberry Pi Model B V1.2 开发板 (RPI3B)、润和 HH-SCDAYU200 开发板 (DAYU200) 和润和 HiKey960
开发板 (HiKey960). 在 HiLog 和 Log 的对比实验中, 目前同时能够支持 OpenHarmony 操作系统和 Android 操作系
统的硬件平台并不多, 本实验挑选了 RPI3B 和 HiKey960 作为对比实验的硬件平台.
(2) 在软件平台 (操作系统) 方面: OpenHarmony 操作系统仍属于快速迭代期, 目前并非所有的系统版本都能
够适配以上的全部硬件平台, 因此考虑到操作系统的适配性问题, 本实验的使用的 OpenHarmony 操作系统是
OpenHarmony3.0 版本. Android 的 Log 日志系统在 Android 5.0.0 版本进行了整体架构的更新, 并一直沿用至今,
因此本实验使用的 Android 操作系统为 Android 6.0.0 版本.
(3) 在实验数据方面: 为了使实验数据更贴近实际使用场景, 收集了在 OpenHarmony 操作系统和 Android 操
作系统运行过程中产生的共计 15 368 条日志数据, 获取其 Tag 和 Content, 作为数据集. 利用 Tag 和 Content 作为
参数分别调用 Log 和 HiLog 的写日志接口, 构建日志写入程序.
为了检验轻量 HiLog 对资源受限设备的兼容性, 实验在多种轻量设备上安装基于 LiteOS-m 内核的
OpenHarmony3.0 轻量操作系统, 并测试轻量 HiLog 的功能. 测试涉及的硬件平台有海思 HiSpark Hi3861V100 开
发板 (Hi3861)、小熊派 BearPi-HM_Nano 开发板 (BearPi)、旗点科技 GD32F303 开发板 (GD32F303). 测试使用基
于 LiteOS-m 内核的 OpenHamrony3.0 的轻量级系统.
4.1 HiLog 基本性能分析
前述吞吐量是日志系统性能的重要指标, 然而吞吐量仅代表日志未出现丢包情况的最高速率, 不能描述日志
系统在各种工况下的表现. 因此除了吞吐量外, 还需引入丢包率指标, 考虑到大部分开发人员对日志的使用需求是
将日志打印到窗口或文件进行分析, 日志的丢包率的计算方法定义如下:
S input −S print
L = (1)
S input
其中, S prin 代表打印到文件的日志大小, S inpu 代表写日志进程写入日志的数据大小, 为了考察日志系统在不同写
t
t
入速率下的丢包率表现, S prin 可表达为:
t
S input = V input ×t (2)
其中, V inpu 表示写日志进程写入速率, t 为写入的持续时间.
t
在丢包率的影响因素方面, 除了日志系统的架构设计, 硬件平台的性能以外, 日志系统的负载 (日志写入速