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 递归符号链接及多层挂载开销

