Page 477 - 《软件学报》2025年第5期
P. 477

苏浩然 等: SPARC  架构下低时延微内核进程间通信设计                                                  2377


                 的寄存器传参机制.

                 4.3   系统服务测试
                    微内核上的应用程序大量使用            IPC  的场景一般情况下主要是用于调用系统服务, 比如文件系统、网络服务
                 等, 应用程序在调用文件系统接口时都会向用户态运行的文件系统服务发送                          IPC  请求, 于是我们使用在     ChCore
                 上实现的内存文件系统        tmpfs, 测试了应用程序文件操作的性能. 我们测试了测试程序调用一些经典的文件系统接
                 口时的性能, 比较了优化前        (Base) 以及采用  BankedIPC  方法优化后   (Optimized) 的性能, 以吞吐率作为衡量指标,
                 并且将测试结果以优化前的性能作为标准进行了规范化处理, 测试结果如图                         12  所示, 可见对  IPC  的优化多数情况
                 下能够提升应用在使用系统服务时的性能. 对于一些参数量较小的文件系统接口, 比如                           lseek  和  ftruncate 操作, 由
                 于能够将参数全部容纳于寄存器中, 性能提升比较明显, 达到了                   15%; 很多文件系统接口都需要传递文件路径作为
                 参数, 由于文件路径长度不确定, 默认使用内存传递, 这样的文件操作性能提升并不明显. 对于一些处理起来比较
                 复杂的文件操作如       symlink, 性能反而出现了下降, 这是因为采用单一寄存器窗口后, 函数调用开销增大, 如果出现
                 较频繁的函数调用则会性能产生影响, 但通过合理的编程设计, 我们认为这一现象应当是并不常见的.

                                1.20
                                                           Base  Optimized
                                1.15

                                1.10

                              吞吐率  1.05
                                1.00

                                0.95

                                0.90
                                0.85
                                     open  stat  rename  lseek  write  read  ftruncate  symlink  fcntl  close
                                                 图 12 文件系统服务测试结果

                 5   总 结

                    本文提出了对      SPARC  架构上微内核    IPC  的几种优化方法. 为了减小       SPARC  上保存大量寄存器上下文带来
                 的额外开销, 本文设计实现了寄存器组机制, 通过内核对寄存器窗口的分配管理, 限制每个线程对全部寄存器窗口
                 的使用. 本文基于寄存器组机制实现了            BankedIPC, 通过减少上下文切换的高昂开销提升微内核               IPC  性能. 此外,
                 BankedIPC  还可以利用“冗余”的寄存器传递        IPC  参数, 充分利用  SPARC  上丰富的寄存器, 同时实现小数据          IPC  的
                 零拷贝. 对于多核场景, 本文提出了         FlexIPC, 通过轮询共享内存的方式完成         IPC, 避免陷入内核以及      IPI 的发生, 大
                 幅优化了跨核     IPC  的性能. 在自研微内核     ChCore 上的测试表明, 寄存器      IPC  可以将单次小数据      IPC  时延降低至
                 优化前的   53%, 而  FlexIPC  则能够将跨核  IPC  时延降低至优化前的      49%, 而对于使用文件系统服务的应用, 在某些
                 测试场景下性能提升最高可达到           15%.

                 References:
                  [1]  David FM, Chan EM, Carlyle JC, Campbell RH. CuriOS: Improving reliability through operating system structure. In: Proc. of the 8th
                     USENIX Conf. on Operating Systems Design and Implementation. San Diego: USENIX Association, 2008. 59–72.
                  [2]  Isaac OA, Okokpujie K, Akinwumi H, Juwe J, Otunuya H, Alagbe O. An overview of microkernel based operating systems. IOP Conf.
                     Series: Materials Science and Engineering, 2021, 1107: 012052. [doi: 10.1088/1757-899X/1107/1/012052]
   472   473   474   475   476   477   478   479   480   481   482