Page 479 - 《软件学报》2026年第3期
P. 479

1442                                                       软件学报  2026  年第  37  卷第  3  期


                 等操作. 与原生    Linux  内核相比, FCFS  在  Filebench  测试集中引入的最大开销不超过      4.0%, 其中  19  个基准测试的
                 开销低于   2%, 有  15  个基准测试的开销趋近于      0.
                    其次, 实验测试了一组与路径解析直接相关的系统调用                  (open、stat、chmod  和  rename) [45] , 并量化了  FCFS  为
                 其引入的开销. 图     10  显示了原始内核和集成了        FCFS  的内核中使用这些系统调用处理不同文件路径时的时间开
                 销. 实验中使用的文件路径具有不同的长度              (“1-comp”“2-comp”和“4-comp”分别表示路径/X, /X/Y  和/X/Y/Z/A), 或
                 包含符号链接     (“1-symlink”表示符号链接/C→/X/Y/Z/C) 及父目录       (“1-dot”表示路径/X/Y/…/C). 实验结果显示
                 FCFS  为此类系统调用引入的开销小于           150 ns, 且不超过原始系统调用观察到的延迟的            6.9%, 此类开销主要源于
                 FCFS  在路径查找过程中实施的访问控制.


                                  6 500
                                          open
                                          stat
                                  5 500   chmod
                                          rename
                                  4 500   FCFS overhead
                                 Latency (ns)  3 500


                                  2 500

                                  1 500
                                   500

                                          1-comp    2-comp    4-comp    1-dot    1-symlink
                                                    图 10 系统调用开销

                    为了进一步评估路径查找在复杂符号链接结构中的延迟, 还开展了递归符号链接实验, 构建了深度为                                  5  层、
                 10  层、20  层和  40  层的递归符号链接路径, 并运用      open、stat、chmod  和  rename 这  4  个系统调用进行测试. 实验
                 结果图   11(a) 显示, 随着递归深度的增加, 路径查找的延迟呈现出明显的上升趋势. 不过, 即便在如此复杂的递归符
                 号链接结构下, 这些开销也小于          120 ns, 修改后内核的延迟也未超过原始内核延迟的              6.7%, 表明其在处理复杂符
                 号链接时仍具有较高的效率. 此外还开展了多层挂载实验, 搭建了深度为                       5  层、10  层、20  层和  40  层的多层挂载
                 路径, 每个挂载点均挂载了独立的文件系统, 并在最深的挂载层创建了测试文件. 实验结果图                             11(b) 表明, 多层挂
                 载结构对路径查找延迟的影响较为显著. 随着挂载深度的增加, 路径查找需要逐层解析挂载点, 导致延迟逐渐上
                 升. 在  5  层挂载时, 延迟增加幅度相对较小, 而当挂载深度达到              40  层时延迟增长更为突出. 尽管如此, 这些开销也
                 小于  160 ns, 修改后内核的延迟在极端情况下也未超过原始内核延迟的                  6.7%, 说明其能够有效应对多层挂载路径
                 查找的复杂性, 同时保持较低的延迟开销.

                     6 500                                      6 500
                            open                                      open
                            stat                                      stat
                     5 500  chmod                               5 500  chmod
                            rename                              4 500  rename
                                                                      FCFS overhead
                            FCFS overhead
                     4 500
                    Latency (ns)  3 500                        Latency (ns)  3 500
                                                                2 500
                     2 500
                     1 500                                      1 500
                      500                                        500
                             5       10       20      40                5       10      20       40
                                   (a) 递归符号链接开销                                (b) 多层挂载开销
                                              图 11 递归符号链接及多层挂载开销
   474   475   476   477   478   479   480   481   482   483   484