Linux下联合文件系统的研究及性能分析(3)
图6整体测试元数据操作性能保持度
Unionfs元数据处理系统调用(creat(),stat()等)复杂度适中,又处于内核空间,所以性能保持度最高。unionfs-fuse虽然属于用户空间文件系统,但是实现简单所以相对功能复杂的aufs,反而在处理元数据的时候开销更小。测试中,我们设定的文件数是51200,三种实现均能在500ms内完成顺序访问。值得注意的是,bonnie++的顺序访问是stat()和readdir()两个系统调用的混合操作,测试结果同时说明,这两个系统调用一般应用场景,绝对性能损失非常小。
在关键系统调用测试中,我们对每种系统调用连续测试5次,并将测试结果分为两种情况:Coldcache取第一次测试结果,这时dcache和buffercache基本为空,缓存命中率低,磁盘访问是瓶颈;Warmcache取后三次测试结果的平均值,这时缓存命中率高,数据更能体现算法效率。对比表3表4,cache机制对联合文件系统stat()速度优化并不显著。首先,元数据数据量小,磁盘IO不是瓶颈。根据算法1算法2,stat()系统调用处理unionfs时,关键步骤是路径查找,处理unionfs-fuse时关键步骤是生成stat信息。这些关键步骤无法通过cache系统优化,所以成为性能瓶颈。
算法1stat()参数为unionfs文件系统路径
stat(){
调用vfs_stat()→..→path_lookupat()→link_path_walk();
link_path_walk(){
for(;;){
分解路径名;
查找每一路径分量;
ifdentry.namenotindcache{
calli_op→lookup(即unionfs_lookup)
unionfs_lookup(){
确定分支;
确定分支中需要返回的dentry;
}
所有路径分量遍历结束break;
}
返回路径最后分量对应的dentry;
}
根据dentry.inode提供的信息,调用vfs_getattr填入kstat结构;
}
算法2stat()参数为unionfs-fuse文件系统路径
stat(){
fuse获得文件路径;
调用unionfs_getattr(){
根据文件路径确定分支;
在该分支上调用系统函数lstat();
返回stat信息给fuse;
}
fuse填充kstat结构;
}
另外,Unionfs-fuse并不涉及复杂的路径名查找,而是通过更高层的lstat()系统调用返回信息给FUSE,lstat()负责调用底层文件系统inode操作进行路径名查找,所以速度最快。但在高并发的环境下,可能得到错误的结果,因为unionfs-fuse的路径名查找粒度在路径名级别(只是直接调用lstat()),而aufs和unionfs查找粒度在dentry级别。
相比stat(),除unionfs-fuse上下文切换导致开销外,readdir()没有明显性能损失。aufs,unionfs,unionfs-fuse的unlink()/rmdir()操作性能保持度分别为79.64%,92.28%,63.59%。
3结束语
本文对联合文件系统进行了深入研究,总结出联合文件系统的两种设计模型,同时对现有实现进行了测试分析。通过对设计模型的比较分析,我们得到结论,基于VFS的设计模型和基于底层文件系统的设计模型各有利弊。长远看,将联合文件系统的功能补充到VFS中,更有可能提供性能优越,稳定可靠的解决方案。由于基于底层文件系统的设计模型开发依赖更少,所以当前的主要稳定实现都是基于这种设计模型。
根据我们的测试结果,unionfs-fuse路径名查找最快,unionfs文件创建删除性能最好,aufs目录读取有一定优势。但与底层文件系统相比,性能差距仍十分明显。综合测试中显示出过高的开销,关键系统调用测试显示出低效的路径查找操作,实际应用中不免要对性能和功能做出权衡,所以目前所有实现均只能被视为过渡方案。实际科研实践中,可以参考本文测试结果并结合具体情况进行选择。
参考文献:
[1]RobertLove.Linux内核设计与实现[M].北京:机械工业出版社,2010.
[2]PendryJ,McKusicklM.Unionmountsin4.4BSD-Lite[C].USENIXAssociationConferenceProceedings,1995.
[3]ErezZadok.Unionfs:AStackableUnificationFileSystem[EB/OL].[2013-03-01].http://www.filesystems.org/project-unionfs.html/.
[4]OkajimaJR.Goalsandnewfeaturesofaufs[EB/OL].[2013-03-01].http://aufs.sourceforge.net/.
[5]RadekPodgorny.Auserspaceunionfsimplementation[EB/OL].[2012-10-18]
[6]ErezZadok.FiST:ASystemforStackableFile-SystemCodeGeneration[D].NY:ColumbiaUniversity,2001.
[7]Corbet.Overlayfilesystem:requestforinclusion[EB/OL].[2011-06-15].https://lwn.net/Articles/447658/.
[8]RusselCoker.abenchmarkoffilesystemperformance[EB/OL].[2013-03-01].http://www.coker.com.au/bonnie++/.
[9]CharlesPWright,JayDave,PujaGuptaVersatilityandUnixSemanticsinaFan-Out[Z].
期刊库(http://www.zgqkk.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。
【免责声明】本文仅代表作者本人观点,与投稿辅导_期刊发表_中国期刊库专业期刊网站无关。投稿辅导_期刊发表_中国期刊库专业期刊网站站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
投稿辅导服务咨询与期刊合作加盟
陆老师联系QQ: 913775405(普刊)
蒋老师联系QQ: 867306987(核心)
刘老师联系QQ: 271374912(核心)
联系电话:18015016272
17327192284
投稿辅导投稿邮箱:zgqkk365@126.com
期刊推荐
- 《课程教育研究》 旬刊 国家级
- 《网络空间安全》(信息安全与技术)月刊 国
- 《价值工程》旬刊 国家级 科技统计源期刊
- 《高教论坛》 月刊 省级
- 《法制与社会》旬刊 省级
- 《中国教育学刊》月刊 14版北大核心
- 《语文建设》 旬刊 14版北大核心
- 《中国绿色画报》 月刊 国家级
- 《社科纵横》季刊 社科类优秀期刊
- 《求索》月刊 14版北大核心期刊
- 《财会月刊》旬刊 14版北大核心
- 《艺术品鉴》 月刊 省级
- 《中华建设》月刊 国家级 建设类优秀期刊
- 《教学与管理》旬刊 北大核心
- 《当代经济》 旬刊 省级
- 《新课程研究》旬刊 省级 教育类优秀学术期
- 《文教资料》 旬刊 省级
- 《学术界》 月刊 双核心
- 《吉林教育》旬刊 省级 教育类学术期刊
- 《中国农业资源与区划》 月刊 14版北大核心
- 《继续教育研究》月刊 北大核心期刊
- 《财经界(学术版)》半月刊 国家级
- 《电影评介》半月刊 14版北大核心
- 《公路交通科技》 月刊 北大核心
- 《新闻传播》月刊 省级 新闻类优秀期刊