Page 491 - 《软件学报》2024年第4期
P. 491

吴圣垚 等: HiLog: OpenHarmony  的高性能日志系统                                             2069


                 DAYU200  开发板在面对相同的日志写入速率时, 丢包率有了明显的下降; 在面对                     1 730 KB/s 的写入速率时, 仅分
                 别有  4.6%  和  0.1%  的数据丢包. 这一定程度上印证了丢包是由于覆盖写操作造成的                CPU  瓶颈导致的.
                    最后, 在  RPI3B  开发板上比较了     Android  的日志系统  Log  和  OpenHarmony  的日志系统  HiLog  的丢包率随写
                 日志速率的变化. 在选择参数         S s_buffer 、S h_buffe 时, 参考使用  Android  日志系统  Log  的默认  socket_buffer 空间大小
                                                    r
                 (64 KB) 和  list_buffer 空间大小 (256 KB). 结果如图  11  所示, 可以看出  Log  在写入速率达到  700 KB/s 时开始出现
                 丢包情况, 而   HiLog  直到  1 500 KB/s 时才出现丢包; 当日志写入速率达到        1 730 KB/s 时, Log  的丢包率达到  19%,
                 而  HiLog  的丢包率仅为   8%. 上述结果表明, HiLog   相比  Log  具有更高的日志吞吐量, 且在写日志速率超过吞吐量
                 的情况下具备更低的丢包率, 可以有效地保留更完备的操作系统事件信息提供给系统开发者或运维人员使用.

                                            20


                                            15        Log (Android)
                                                      HiLog (OpenHarmony)
                                           L (%)  10



                                             5


                                             0
                                             400  600  800  1 000 1 200 1 400 1 600 1 800
                                                          V input  (KB/s)
                               图 11 Log  和  HiLog  的丢包率  L  随  V inpu 增长的变化趋势  (硬件平台: RPI3B)
                                                              t

                    上述实验首先分析了        HiLog  日志系统在   500 KB/s–1 730 KB/s 写入速率范围的丢包情况和原因, 发现在高日
                 志写入速率下的丢包是由于          hilog_buffer 覆盖写操作造成的    CPU  瓶颈导致的, 可以通过增大       S h_buffe 降低丢包率.
                                                                                              r
                 接下来对比了     HiLog  和  Log  在  500 KB/s–1 730 KB/s 写入速率范围内的丢包率情况, 结果表明在相同的硬件条件
                 下, HiLog  相比  Log  具有更低的丢包率, 这说明    HiLog  日志系统可以更好地保留操作系统中的事件信息, 为使用者
                 提供更详尽的日志数据用于开展工作. 在如今这种由于丰富的软件带来日志数量持续膨胀而硬件摩尔定律失效的
                 状态下, HiLog  的性能优势是十分有意义的.
                  4.2   HiLog  流控性能分析
                    流量控制机制是       HiLog  实现系统资源合理分配的重要手段. 对于日志系统的基本性能分析表明, 当日志写入
                 速率过快时, 会导致丢包的情况, 同时也会大量占用               CPU  等系统资源. 为了避免这一问题, HiLog        设计了日志的流
                 量控制功能, 它可以对每进程的日志流量进行限制, 避免由于部分程序写日志速率过快占用                            HiLog  的处理资源.
                    为了测试流量控制功能的效果, 实验基于              HiKey960  开发板搭建了测试环境, 构建了        2  个写日志进程, 其中进
                 程  A  是正常写日志进程, 其写日志速率        V input_ 在正常速率范围内写日志       (1–20 KB/s); 进程  B  是违规写日志进程,
                                                    A
                 持续以极高速度写日志        (4 096 KB/s). 实验目的是分析在开启     (每进程写日志流量上限为         13 KB/s)/关闭流量控制的
                 情况下, 进程   A  的日志丢包率    L A  和  hilogd  进程的  CPU  占用率.
                    实验结果如图      12  所示, 其中, 黑色虚线代表单进程写日志流量上限, 可以看到当系统中存在一个高速写日志
                 进程时, 如果关闭流量控制, HiLog        几乎无法收集到其余进程的日志信息, 且              hilogd  进程的  CPU  占用率达到了
                 44%, 严重侵占了系统的资源. 流量控制功能开启时, 情况发生了变化, 当进程                    A  写日志速率低于设定的流量上限
                 (13 KB/s) 时, 几乎不会出现丢包情况, 且      hilogd  的  CPU  占用率也下降到  3%  左右. 说明流量控制功能抛弃了进程
                 B  的绝大多数日志, 使它们不会进入         IPC  和缓冲区处理环节, HiLog    能够有效处理进程       A  的日志信息. 流量控制功
                 能同时降低了     hilog_buffer 达到容量上限进行的覆盖写操作频率, 降低丢包率和             CPU  资源的损耗.
                    上述实验说明了      HiLog  流量控制功能的有效性, 可以有效降低违规高速写日志进程对其他进程日志资源的侵
   486   487   488   489   490   491   492   493   494   495   496