分布式持久内存文件系统Octopus(ATC-17 )分析(三)

  • 清华课题 Octopus 源码分析(三)
    • 前言
    • 论文摘要
    • 设计框架
    • 源码分析
      • include 头文件
    • src 源文件
      • fs 模块
      • net 模块
      • client 模块
      • tools 模块
    • 文件依赖关系分析
    • 函数依赖关系分析
    • 典型工作流程

清华课题 Octopus 源码分析(三)

前言

由于项目工作的需要,我们团队阅读了清华在文件系统方面的一个比较新颖的工作:Octopus。Octopus是一个基于持久内存 NVM 和远程直接内存访问 RDMA 技术的分布式内存文件系统。清华的陆游游老师现已将代码开源,可 点击此处 阅读。

这一工作中的是 ATC-17 (CCF A类),可 点击此处 阅读论文。

我们团队希望通过学习清华的这个优秀的同行工作,来进一步开展自己对于分布式持久内存文件系统的研究。关于论文的分析,虽然有做PPT给同伴们介绍过,但具体的博客分析可能会晚些才放上来。这一系列的内容主要是分析Octopus的源码设计(少许会结合论文内容来讲,希望有兴趣的同学可以自己先读一读),总结Octopus的框架、结构、设计组件及代码创新点等。

系列分析总共包括 个部分。第一部分是 论文摘要,相当于Octopus系统的一个简介;第二部分是 设计框架,在这一部分我们会宏观地介绍Octopus的组成体系及各部分的功能及相互间的联系;第三部分是 代码分析,也是本博客的重中之重。在这一部分我们首先介绍头文件体系(在include文件夹中),了解Octopus的存储结构,表结构,主要数据结构,内存池划分等等。接下来我们介绍方法实现代码(在src文件夹中),我们会通过比对头文件内的函数名称来看每一个方法是采用何种方式实现,好处是什么,取舍考虑是什么。进一步地,我们会通过代码文件间的依赖关系,函数依赖关系去深入探讨Octopus的创新性、局限性并留出进一步讨论的空间。

论文摘要

(内容请见系列上一篇博客)

设计框架

(内容请见系列上一篇博客)

源码分析

include 头文件

(内容请见系列上一篇博客)

src 源文件

Octopus 源码的源文件夹 src目录 下有 clientnetfstesttools五个子目录。我们不会每部分都介绍,在此先简要概括每个目录所涉及的主要功能。

  • client - 接口某块,包含客户端连接、申请服务所涉及到的相关函数;
  • fs - 系统模块,主要源代码部分,包含存储结构、文件系统接口、服务器建立与事务处理所涉及到的相关函数;
  • net - 通信模块,主要包含共享持久内存、RDMA通信与服务器客户端交互响应功能的实现;
  • test - 辅助模块,用来帮助理解客户端与服务器的交互过程,我们会在后文中利用到这一模块中的调用过程;
  • tools - 辅助模块,仅包含 debug 函数的实现。

我们将秉承从主体到次要的原则依次介绍各个模块中的代码部分。其中,fs无疑是我们关心的重要部分,这一模块强调了文件系统在每个机器上部署的存储结构和文件系统接口;其次是 net 模块,它是 RDMA 通信所需要理解的关键。通过学习这两部分的代码,我们将能够对文件系统的整体性有一个更清晰的把握,对 RDMA 通信机制也有更深入的理解。

为了阅读体验与写作的连贯性,我打算将以下四部分的分析写成三篇博客,还望读者海涵。

fs 模块

(内容请见系列下一章博客)

net 模块

(内容请见系列下一章博客)

client 模块

(内容请见系列下一章博客)

tools 模块

(内容请见系列下一章博客)

文件依赖关系分析

(内容请见系列下一章博客)

函数依赖关系分析

(内容请见系列下一章博客)

典型工作流程

(内容请见系列下一章博客)

你可能感兴趣的:(科研生活)