期刊库

教育   经济   科技   财会   管理   
医学   法学   文史   工业   建筑   
农学   水利   计算机   更多>>
 首 页    论文大全   论文精品    学术答疑    论文检测    出书咨询    服务流程    诚信通道    关于我们 

Linux下联合文件系统的研究及性能分析(3)

人气指数: 发布时间:2014-01-11 15:37  来源:http://www.zgqkk.com  作者: 吴超 陈启安
分享到:

 

  图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在线咨询
投稿辅导热线:
180-1501-6272
微信号咨询:
fabiaoba-com
咨询电话:18015016272 投稿邮箱:zgqkk365#126.com(#换成@)
本站郑重声明:文章只代表作者观点, 并不意味着本站认同。所载文章、数据仅供参考,使用前请核实,风险自负。
部分作品系转载,版权归原作者或相应的机构   若某篇作品侵犯您的权利,请来信告知.版权:周口博闻教育咨询有限公司 
Copyright © 2005-2023 . 期刊库 版权所有