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

欧阳湘臻 等: 榫卯: 一种可组合的定制化内存分配框架                                                     2093


                 到: 三者运行基准测试的执行时间和最大             RSS  的几何平均数无显著差别, 其最大差距不超过            0.7%. 同时, 在  aarch64
                 平台的实验中     wfslabfl 甚至取得了比   wfslab  执行时间几何平均数低     0.6%  的结果. 因此, 三者的差距可认为是        5  次
                 实验运行过程中受到操作系统以及其他进程运行影响而出现的波动. wfslabfl 和                     wfslab  分配器的区别在于其额外
                 插入的多个    fake 层函数调用以及为复合这些函数而生成的中间函数, 实验结果说明生成中间函数的开销和无意
                 义的分支判断对性能的影响可被编译器优化消除. 同时, 对                   wfslab  与  wfslabfl 编译生成的.so  动态库文件执行
                 objdump  命令进行反汇编分析发现两者所有的中间函数符号均被消除, 且最终生成                       malloc(3) 接口函数长度以及
                 汇编代码都保持一致. 这也从另一个角度证明不必要的函数调用开销与分支判断可以被编译器优化完全消除. 另
                 外, wfslab  和  wfslabm  算法和参数均相同, 而后者通过手动编写实现. 两者运行时的区别在于               wfslab  需要在栈上构
                 造内存请求上下文       mctx  并在层级函数间传递. 实验结果说明该开销基本可被编译器优化为使用寄存器消除. 综上
                 所述, 实验结果说明榫卯框架实现了层级函数组合的零性能开销.

                                      sys  tlsf  tc  je  hd  tbb  sn   mi  tlsfcc  hslab  wfslab
                                   200
                                   150
                                最大 RSS (按照 wfslab 归一化) (%)  100 0
                                    50

                                   −50
                                  −100
                                         cfrac  barnes espresso  redis  cxqueue  larson  lean glibc-simple
                                      sys  tlsf  tc  je  hd  tbb  sn   mi  tlsfcc  hslab  wfslab
                                   200
                                   150
                                最大 RSS (按照 wfslab 归一化) (%)  100 0
                                    50

                                   −50
                                  −100
                                       xmalloc-test cscratch  rptest sh6benchsh8bench mstress alloc-test glibc-thread
                                         图 7 x86/64 Ryzen  平台运行基准测试的最大       RSS

                                      sys  tlsf  tc  je  hd  tbb  sn   mi  tlsfcc  hslab  wfslab
                                   200
                                   150
                                最大 RSS (按照 wfslab 归一化) (%)  100 0
                                    50

                                   −50
                                  −100
                                         cfrac  barnes espresso  redis  cxqueue  larson  lean glibc-simple

                                      sys  tlsf  tc  je  hd  tbb  sn   mi  tlsfcc  hslab  wfslab
                                   200
                                   150
                                最大 RSS (按照 wfslab 归一化) (%)  100 0
                                    50

                                   −50
                                  −100
                                       xmalloc-testcscratch  rptest sh6benchsh8bench mstress alloc-test glibc-thread
                                       图 8 aarch64 Snapdragon  平台运行基准测试的最大     RSS
   510   511   512   513   514   515   516   517   518   519   520