论文部分内容阅读
容器是一种轻量级的虚拟化技术。由于其部署便捷和启动快速等特点,容器在云平台中的应用场景近年来不断增加。容器需要专门的存储驱动(如Aufs、Overlay等)对镜像进行层次化的管理。然而,存储驱动的引入也增加了I/O路径的复杂性,使得多容器场景下的I/O扩展性受限。
为了研究容器文件系统的扩展性问题,设计了有关Overlay文件操作扩展性的性能评估。根据评估结果,当执行文件操作时,Overlay比主机文件系统引入了更多的性能开销。并且,Overlay的性能开销还会随着核数的增加而上升。基于测试结果发现,容器文件系统的扩展性瓶颈主要来源于锁竞争和文件重定向:1)尽管宿主机文件系统的互斥锁(VFS互斥锁)能够避免死锁,但它也限制了数个操作(如重命名、写时复制、和文件删除)的扩展性和并发性,因为这些操作需要竞争并获得该锁后才能继续执行;2)用户态持有的文件路径无法感知Overlay的层级,而打开文件时,Overlay通过利用该层级信息进行重定向才能访问到实际文件。
基于上述两种扩展性瓶颈,分别提出免锁重命名(Free-lock Rename)和可记忆重定向(Memorable Redirection)两种优化策略。免锁重命名的核心思想是,容器的文件操作不再将获得VFS互斥锁作为必要条件,仅由Overlay提供的文件锁和容器特点(非共享工作空间和单向重命名)来避免死锁场景的发生。具体地,在免锁重命名中,同一容器中的重命名只会竞争Overlay文件系统提供的文件锁,但并不会竞争VFS互斥锁。但是,只有获得该文件锁后,重命名才能继续进行。通过这种方式,免锁重命名能有效地避免一次锁竞争和死锁的发生。可记忆重定向会直接利用查询得到的实际文件来避免过多的跨层访问。在查询阶段结束时,可记忆重定向模块会将查询结果存储下来,而重定向过程能直接调用存储在该模块中的结果。
为了测试两种优化策略的效果,对存在扩展性瓶颈的文件操作进行对比实验。实验结果表明,大部分操作的性能均有提升,更接近主机的原生系统。其中,免锁重命名能将重命名、写时复制和文件删除等操作的性能提升90%~280%;而可记忆重定向能将打开文件的性能提升14%。
为了研究容器文件系统的扩展性问题,设计了有关Overlay文件操作扩展性的性能评估。根据评估结果,当执行文件操作时,Overlay比主机文件系统引入了更多的性能开销。并且,Overlay的性能开销还会随着核数的增加而上升。基于测试结果发现,容器文件系统的扩展性瓶颈主要来源于锁竞争和文件重定向:1)尽管宿主机文件系统的互斥锁(VFS互斥锁)能够避免死锁,但它也限制了数个操作(如重命名、写时复制、和文件删除)的扩展性和并发性,因为这些操作需要竞争并获得该锁后才能继续执行;2)用户态持有的文件路径无法感知Overlay的层级,而打开文件时,Overlay通过利用该层级信息进行重定向才能访问到实际文件。
基于上述两种扩展性瓶颈,分别提出免锁重命名(Free-lock Rename)和可记忆重定向(Memorable Redirection)两种优化策略。免锁重命名的核心思想是,容器的文件操作不再将获得VFS互斥锁作为必要条件,仅由Overlay提供的文件锁和容器特点(非共享工作空间和单向重命名)来避免死锁场景的发生。具体地,在免锁重命名中,同一容器中的重命名只会竞争Overlay文件系统提供的文件锁,但并不会竞争VFS互斥锁。但是,只有获得该文件锁后,重命名才能继续进行。通过这种方式,免锁重命名能有效地避免一次锁竞争和死锁的发生。可记忆重定向会直接利用查询得到的实际文件来避免过多的跨层访问。在查询阶段结束时,可记忆重定向模块会将查询结果存储下来,而重定向过程能直接调用存储在该模块中的结果。
为了测试两种优化策略的效果,对存在扩展性瓶颈的文件操作进行对比实验。实验结果表明,大部分操作的性能均有提升,更接近主机的原生系统。其中,免锁重命名能将重命名、写时复制和文件删除等操作的性能提升90%~280%;而可记忆重定向能将打开文件的性能提升14%。