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
                    在丢包率的影响因素方面, 除了日志系统的架构设计, 硬件平台的性能以外, 日志系统的负载                              (日志写入速
   484   485   486   487   488   489   490   491   492   493   494