美文网首页
SPDK项目

SPDK项目

作者: lnsyyj | 来源:发表于2020-09-05 00:40 被阅读0次

    项目地址:https://github.com/spdk/spdk

    Storage Performance Development Kit(SPDK)提供了一组tools和libraries,用于编写高性能,可扩展的用户模式存储应用程序。它通过将所有必要的驱动程序移至用户空间并以轮询模式运行,而不是依赖于中断,从而实现了高性能,从而避免了内核上下文切换并消除了中断处理开销。

    该development kit当前包括:

    在此readme中

    Documentation

    提供了Doxygen API documentation以及用于将SPDK移植到不同frameworks和operating systems的移植指南。

    Source Code

    git clone https://github.com/spdk/spdk
    cd spdk
    git submodule update --init
    

    Prerequisites

    依赖关系可以通过scripts/pkgdep.sh自动安装。 scripts/pkgdep.sh脚本将自动安装构建SPDK所需的最低要求。 使用--help查看有关为可选组件安装依赖项的信息

    ./scripts/pkgdep.sh
    

    Build

    Linux:

    ./configure
    make
    

    FreeBSD:注意:确保/usr/src/中有匹配的内核源代码,并且还要注意,CONFIG_COVERAGE选项现在对于FreeBSD不可用。

    ./configure
    gmake
    

    Unit Tests

    ./test/unit/unittest.sh
    

    运行单元测试时,您将看到几条错误消息,但它们是test suite的一部分。 脚本末尾的最后一条消息指示成功或失败。

    Vagrant

    我们还提供了Vagrant来创建带有virtual NVMe controller的Linux VM,以快速启动并运行。目前,已使用VirtualBox和Libvirt provider在MacOS,Ubuntu 16.04.2 LTS和Ubuntu 18.04.3 LTS上对此进行了测试。为了获得所需的NVMe支持,还必须安装VirtualBox Extension PackVagrant Libvirt

    有关Vagrant设置的详细信息,请参见SPDK Vagrant documentation

    AWS

    已知以下设置可在AWS上使用:Image:Ubuntu 18.04在运行之前setup.sh,请先运行 modprobe vfio-pci然后 :DRIVER_OVERRIDE=vfio-pci ./setup.sh

    Advanced Build Options

    可选components和其他build-time configuration由repository root目录中Makefile configuration file中的settings控制。CONFIG 包含configure script的基本settings。该script会生成一个新文件mk/config.mk,其中包含最终的构建settings。对于高级configuration,可以使用许多额外options configure,或者 mk/config.mk可以简单地手动创建和编辑。有关所有可能选项的说明,请参见CONFIG

    布尔(on/off)options配置为'y' (yes)或'n' (no)。例如,以下代码行CONFIG控制是否启用了可选的RDMA(libibverbs)支持:

    CONFIG_RDMA?=n
    

    为了启用RDMA,该行可以用'y'而不是'n'添加到mk/config.mk。对于大多数options,可以使用configure脚本来完成。例如:

    ./configure --with-rdma
    

    另外,CONFIG在make命令行上也可以覆盖options:

    make CONFIG_RDMA=y
    

    用户可能希望使用不同于 SPDK repository中包含的submodule DPDK 版本。请注意,这不仅包括从 DPDK sources build的能力,而且还包括通过dpdk和dpdk-devel packages安装的include和libraries。若要指定alternate DPDK installation,请使用 --with-dpdk option运行configure。例如:

    Linux:

    ./configure --with-dpdk=/path/to/dpdk/x86_64-native-linuxapp-gcc
    make
    

    FreeBSD:

    ./configure --with-dpdk=/path/to/dpdk/x86_64-native-bsdapp-clang
    gmake
    

    在make命令行中指定的options优先于mk/config.mk。例如,如果您mk/config.mk使用configure script生成,然后有一个或两个您希望经常打开和关闭的options(即调试版本),则此功能很有用。

    Shared libraries

    默认情况下,SPDK会生成static libraries,SPDK applications和examples将与这些static libraries链接。 Configure option --with-shared除了提供默认的static libraries外,还提供了生成SPDK shared libraries。 使用此flag还会导致SPDK可执行文件链接到libraries的shared版本。 默认情况下,SPDK shared libraries位于./build/lib中。 这包含所有SPDK static libs(libspdk.so)的SPDK shared libs,以及与每个SPDK static libs对应的SPDK shared libs。

    为了启动与SPDK shared libraries链接的SPDK app,请确保执行以下步骤:
    运行ldconfig,指定包含SPDK shared libraries的目录
    提供适当的LD_LIBRARY_PATH

    Linux:

    ./configure --with-shared
    make
    ldconfig -v -n ./build/lib
    LD_LIBRARY_PATH=./build/lib/ ./build/bin/spdk_tgt
    

    Hugepages and Device Binding

    在运行SPDK application之前,必须分配一些hugepages,并且所有NVMe和I/OAT设备都必须与本机内核驱动程序解除绑定。 SPDK包含一个脚本,可以在Linux和FreeBSD上自动执行此过程。 该脚本应以root用户身份运行。

    sudo scripts/setup.sh
    

    用户可能希望配置特定的内存大小。 以下是配置8192MB内存的示例。

    sudo HUGEMEM=8192 scripts/setup.sh
    

    Example Code

    示例代码位于examples目录中。这些示例将在build过程中自动编译。只需调用任何不带参数的示例即可查看帮助输出。除非您已进行其他配置以授予您的用户通过vfio分配huge pages和map devices的权限,否则您可能需要以特权用户(root)身份运行示例。

    Contributing

    有关如何使更多人参与社区的详细信息, 包括 contributing code 并参与讨论和其他活动, 请访问 spdk.io

    相关文章

      网友评论

          本文标题:SPDK项目

          本文链接:https://www.haomeiwen.com/subject/klazsktx.html