首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏存储内核技术交流

    SPDK介绍

    什么是SPDK? SPDK是一套存储开发套件,专门为专用设备(NVME)设计。全称是The Storage Performance Development Kit。 SPDK提供了一系列的高性能、可扩展、用户态下面的工具和库。 SPDK的原则是通过消除每一处额外的软件开销来提供最少的延迟和最高的效率。 轮询模式驱动(Polled Mode Drivers, PMDs),改变了I/O的基本模型。 SPDK核心组件 NVMe驱动 SPDK的基础组件,这个提供优化无锁的驱动提供高扩展、高效、高性能。 Blobstore Block Device, 这是SPDK Blobstore的分配的块设备,是虚拟机或者数据可以交互的虚拟设备,这些设备得到SPDK的基础架构的优势,可是显示零拷贝和非常高的扩展性

    2.4K21编辑于 2022-08-17
  • 来自专栏存储公众号:王知鱼

    Intel:SPDK加速框架演进

    阅读收获 掌握 SPDK 加速框架如何通过计算卸载提升存储性能。 理解 IPU/DPU 等专用硬件如何与 SPDK 协同工作以优化数据流。 认识 SPDK 新引入的链式操作和缓冲区优化如何解决性能瓶颈。 了解 SPDK 在高性能存储领域最新的发展方向和技术亮点。 工具链: 提供用于基准测试 (fio, SPDK perf)、管理 (nvme-cli, spdk-cli) 和诊断 (spdk_top) 的命令行工具。 SPDK 内置的计算加速框架及其工作原理 核心概念: 加速框架: SPDK 包含一个成熟的、用于加速计算任务的框架。 硬件能力与 SPDK 的集成: 能够理解类似 IPU 这样的专用设备所提供的硬件加速能力,是如何被集成到 SPDK 加速框架中并加以利用的。

    11910编辑于 2026-03-09
  • 来自专栏存储公众号:王知鱼

    Samsung:SPDK 特性与进展更新

    全文概览 本文着重讨论了SPDK项目的状态和进展,旨在探讨如何利用SPDK的技术优势来提高网络性能和可靠性,以满足现代数据中心的需求。 作者通过实验数据展示了SPDK的优势,并提出了未来的研究方向和发展计划。总体来说,本文为读者提供了关于SPDK技术的深入理解和相关应用领域的启示。 SPDK 的核心价值 极低延迟 SPDK 通过用户态驱动程序和轮询机制替代传统内核中断机制,显著降低 I/O 延迟。 生态系统兼容性 难点: SPDK 的用户态模型绕过了操作系统内核,与传统的软件生态(如标准文件系统)存在兼容性问题。 使用 SPDK 的应用通常需要重新设计或修改现有代码。 SPDK 代码库保持活跃 自 2023 年 9 月发布以来已超过 1500 个补丁。 SPDK 贡献者群体多样化 来自 25+ 家公司的近 100 名贡献者。

    84710编辑于 2025-02-11
  • 来自专栏虚拟化笔记

    SPDK实现存储加速

    存储组提供SPDK和ceph,SPDK提供rpc_server/iscsc target/nvme target,ceph提供真正的备份和落盘功能。 虚拟化组也用SPDK,IO增强型企业级实例SPDK运行在物理机上,裸金属v3 SPDK运行在DPU上,SPDK作为nvme-over-rdma的initiator,同时要配置硬件offload。 cinder cinder通过SPDK driver连接存储组提供的SPDK rpc_server在SPDK上创建一个nvme-of target,计算节点上qemu+spdk真正去连接这个target 理论上SPDK也可以用librbd直接对接ceph,但DPU卡SPDK没有编译进librbd的功能,SPDK是集成进SNAP的,要编译SPDK得重新编译SNAP,没有SNAP代码。 信息,配置SPDK initiator。

    3.1K30编辑于 2022-04-28
  • 来自专栏虚拟化笔记

    SPDK实现存储加速

    存储组提供SPDK和ceph,SPDK提供rpc_server/iscsc target/nvme target,ceph提供真正的备份和落盘功能。 虚拟化组也用SPDK,IO增强型企业级实例SPDK运行在物理机上,裸金属v3 SPDK运行在DPU上,SPDK作为nvme-over-rdma的initiator,同时要配置硬件offload。 cinder cinder通过SPDK driver连接存储组提供的SPDK rpc_server在SPDK上创建一个nvme-of target,计算节点上qemu+spdk真正去连接这个target 理论上SPDK也可以用librbd直接对接ceph,但DPU卡SPDK没有编译进librbd的功能,SPDK是集成进SNAP的,要编译SPDK得重新编译SNAP,没有SNAP代码。 信息,配置SPDK initiator。

    2.9K31发布于 2021-08-26
  • 来自专栏CNCF

    TiKV + SPDK,探索存储的性能极限

    队的杨可奥,他们团队在本次 Hackathon 比赛中尝试使用 SPDK 提供的工具让 TiKV 基于用户态存储运行,并获得了显著的性能提升。 幸运的是,这种想法和社区环境是相符的:Intel 已经提供了开源的存储工具包 SPDK,里面包含了 NVMe 的用户态驱动和对它的一些包装。 在此之上,SPDK 还实现了一套名为 BlobFS 的“文件系统”,提供类似 POSIX 文件系统的函数接口。 相比起 Linux 功能全面、复杂的 IO 栈,使用 SPDK 之后的 IO 步骤显得简单不少。相比之下,使用 SPDK blobfs 能够带来以下显著优势: 函数调用的开销远小于系统调用。 并且现在 TiDB 的云服务问世,提供云服务对用户来说能够显著降低 SPDK 的使用和配置门槛(是无感知的提升)。

    75820发布于 2021-03-15
  • 来自专栏虚拟化云计算

    使用SPDK实现NVMe over Fabrics Target

    二.SPDK nvmf-tgt环境搭建 参考:https://spdk.io/doc/nvmf.html 服务端 1.确定NVME物理设备 [root@localhost ~]# lspci 01:00.0 ://github.com/spdk/spdk cd spdk git submodule update --init scripts/pkgdep.sh . :cnode1 -a -s SPDK00000000000001 -d SPDK_Controller1 # scripts/rpc.py nvmf_subsystem_add_ns nqn.2016- 06.io.spdk:cnode1 Malloc0 # scripts/rpc.py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t :cnode2 -a -s SPDK00000000000002 -d SPDK_Controller1 # scripts/rpc.py nvmf_subsystem_add_ns nqn.2016-

    6.5K21发布于 2020-09-08
  • 来自专栏PingCAP的专栏

    TiKV + SPDK,探索存储的性能极限

    本篇文章的作者为 ️ ️队的杨可奥,他们团队在本次 Hackathon 比赛中尝试使用 SPDK 提供的工具让 TiKV 基于用户态存储运行,并获得了显著的性能提升。 幸运的是,这种想法和社区环境是相符的:Intel 已经提供了开源的存储工具包 SPDK,里面包含了 NVMe 的用户态驱动和对它的一些包装。 在此之上,SPDK 还实现了一套名为 BlobFS 的“文件系统”,提供类似 POSIX 文件系统的函数接口。 相比起 Linux 功能全面、复杂的 IO 栈,使用 SPDK 之后的 IO 步骤显得简单不少。相比之下,使用 SPDK blobfs 能够带来以下显著优势: 函数调用的开销远小于系统调用。 并且现在 TiDB 的云服务问世,提供云服务对用户来说能够显著降低 SPDK 的使用和配置门槛(是无感知的提升)。

    84230发布于 2021-03-10
  • 现代异步存储访问API探索:libaio、iouring和SPDK

    2、SPDK SPDK是Linux的高性能API。 它在用户空间映射了PCIe寄存器以配置CQ和SQ,用户通过轮询CQ来捕获I/O请求的完成,而不需要中断和系统调用。 SPDK 是怎么做的?为什么不需要系统调用? 当CPU数量增加到2时,iou+k的性能完全恢复了,如下图: 每个KIOPS对应的延迟中位数为: 此时,iou+k的性能仅次于SPDK:最大带宽比SPDK小18%,延迟和SPDK相当。 SPDK和iou+k的区别在于,iou+k使用两个线程访问同一个变量,会产生原子访问和缓存失效的开销,而SPDK使用一个线程,能更加充分的利用资源。 2、io_uring在特定配置下的性能接近SPDK 3、性能的可扩展性需要仔细考虑 虽然SPDK的性能最好,但需要放弃Linux文件的支持。

    63210编辑于 2025-06-13
  • 来自专栏DPU

    SPDK与iscsi_initiator及libiscsi库源码分析

    简介SPDK initiator模块可与远端的iscsi_tgt配合, 将SPDK的块存储bdev拉远到TGT端, bdev除了可对接iscsi, 还可对接ceph_rbd, nvmeof_tgt等参考 vhost client读远端spdk bdev为例图片本文IO调用栈如下APP WRITE/READBLKVIRTIO_BLK-------------REMOTE SPDK BDEVlibiscsi.so (pool->pool, (void **)bufs, spdk_min(IOBUF_BATCH_SIZE, spdk_max(pool->cache_size, 1))) :init --url iscsi://127.0.0.1/iqn.2016-06.io.spdk:disk1/0SPDK_RPC_REGISTER("bdev_iscsi_create", rpc_bdev_iscsi_create writev/readv函数使用, 减少了中间内存的拷贝, 充分利用用户态的编程模型和性能优势参考SPDK和libiscsi源码

    49700编辑于 2024-10-26
  • 来自专栏daos

    基于DOAS文件系统接口(DFS)暴露的SPDK块设备

    https://github.com/spdk/spdk.git git submodule update --init . I/O设备注册后,可以使用spdk_get_io_channel()函数返回I/O通道 spdk_bdev_register 注册一个新的 bdev。 必须从 SPDK APP线程调用此函数 大致流程 . /bdev.c -> bdev_register(struct spdk_bdev *bdev) spdk_bdev_get_memory_domains 获取给定 bdev 使用的 SPDK I/O设备注册后,可以使用spdk_get_io_channel()函数返回I/O通道, 许多 bdev 模块创建自己的 bdev 结构,其中 spdk_bdev 作为第一个成员。

    1.1K61编辑于 2023-09-05
  • 来自专栏DPU

    DPUIPU SPDK存储卸载之用户态vfio(vfio_user)

    虚拟机可以利用其现有的 NVMe 驱动程序与设备进行通信,并且数据可以使用共享内存高效地传输到 SPDK 或从 SPDK 传输。 Nutanix 发布了一个便捷库,可帮助实现协议的服务器,SPDK 在其实现中利用了这一点。 这些传输插件甚至可以存在于 SPDK 存储库之外的共享库中,并在运行时被发现,尽管 vfio-user 传输内置于 SPDK 本身。 我们对虚拟化技术的这一进步感到兴奋。 ", rpc_vfu_virtio_create_blk_endpoint, SPDK_RPC_RUNTIME) rpc_vfu_virtio_create_blk_endpoint spdk_vfu_create_endpoint endpoint->thread = spdk_thread_create(endpoint_name, &cpumask) spdk_thread_send_msg(endpoint-

    1.2K30编辑于 2024-09-01
  • 来自专栏分布式存储

    最佳实践:XSKY借助英特尔SPDK提升Ceph性能

    1.2 SPDK SPDK是一个框架而不是分布式系统,它的基石是用户态(user space)、轮询(polled-mode)、异步(asynchronous)和无锁的NVMe驱动 SPDK (Storage 官方网址:https://spdk.io/。 SPDK重用了很多DPDK中的一些公共组件,比如内存管理,轮询方式的实现等,SPDK的核心是通过无锁,轮询的方式实现高效的用户态驱动集合 SPDK一个重要的设计理念是无锁化,这样避免了多线程由于对锁的争抢而引入的性能开销 SPDK RBD bdev结合Ceph RBD,可以将image定义为SPDK的块设备类型。 镜像映射为 SPDK 块设备,供 iSCSI/NVMe-oF 等协议调用 参考 2022 SPDK线上论坛(二)| Ceph RBD浅析及性能调优 SPDK对接Ceph性能优化 干货 | Ceph中国社区年终盛典之

    60510编辑于 2025-08-15
  • 来自专栏LINUX阅码场

    打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS

    作者简介 周雁波,Intel存储软件工程师,主要从事SPDK软件开发工作。 在Blobstore下层,与SPDK bdev层对接。 最后向SPDK bdev层发送异步的读请求,并等待I/O完成。 参考链接: [1] https://spdk.io [2] https://github.com/spdk/spdk [3] https://spdk.io/doc/blobfs.html 文章转自公众号 “DPDK与SPDK开源社区”

    5.5K21发布于 2019-06-05
  • 来自专栏大话存储

    傲腾️™PMem + SPDK为百度用户态存储引擎注入新思路

    新单机引擎,使用持久内存存储元数据、缓存和索引,通过结合SPDK 提供的多种后端存储支持,提供不同的解决方案。SPDK2 提供了一组工具、库和方案,用于编写高性能和可扩展的用户态存储应用程序。 使用 SPDK 之后,用户态的驱动通过轮询硬件而不是依赖中断来完成,这可以降低总延迟和减少延迟差异,并且和内核驱动相比,在每个 CPU 内核的 IOPS 上具有更明显的性能优势;此外,SPDK 具备 I SPDK 可以高效整合英特尔的 CPU 处理、存储和网络技术,将高性能存储介质的性能潜力充分发挥出来,同时高性能框架提供统一的设备管理来支持多种多样的存储后端。 4 性能测试 ? ? ?

    1.3K20发布于 2021-07-22
  • 来自专栏云原生布道专栏

    【重识云原生】第三章云存储3.2节——SPDK方案综述

    但是,每个组件也可以集成到非SPDK架构中,从而使客户可以利用SPDK的经验和技术来加速自己的软件。 整个spdk开发套件提供了一整套完整的开发库支持。 SPDK中。 对于SPDK iSCSI Target,SPDK创建了iSCSI模块,路径为spdk/lib/event/subsystem/iscsi和spdk/lib/iscsi,该模块定义了所有和iSCSI相关的函数和数据结构 7 参考链接 SPDK详解_Rudy,Zhao的博客-CSDN博客_spdk架构 浅谈SPDK(一)什么是SPDK_饿狗007的博客-CSDN博客_spdk优势 SPDK官方文档中文版 - 海之心1213 - 博客园 【翻译】SPDK简介 - 程序员大本营 SPDK,软件定义存储的催化剂_TechWeb SPDK线程模型解析 SPDK 应用编程框架 可实现RSSD云硬盘120万IOPS的SPDK IO路径优化实践

    6.2K31编辑于 2022-04-11
  • 来自专栏帅云霓的技术小屋

    云存储硬核技术内幕——(35)

    在上期,我们提到,子虚将SPDK的轮询机制,与JFZ女士的日本游记中的画面进行了联系,虽然觉得自己在隐秘地开车,但还是留下了证据。 为了让方老师不把自己开车的证据说出去,子虚主动提出,捐献一篇SPDK的学习心得,这就是SPDK在虚拟化中的应用——vhost加速。 那么,我们有没有办法通过SPDK来加速虚拟机对NVMe SSD的访问呢? 这就涉及到今天的主题——SPDK vhost guest. SPDK vhost,就是通过基于SPDK实现virtio。SPDK在后端通过轮询机制,读取Frontend驱动向队列中写入的SCSi命令字,并且利用零拷贝技术消除VirtIO的性能卡点。 在上图中可见,Virtio-SCSI驱动不产生PCIe的MSI-X中断,改为虚拟化侧的SPDK vhost对队列进行轮询。

    1.2K20编辑于 2022-08-04
  • 来自专栏云原生布道专栏

    【重识云原生】第四章云网络4.7.6节——virtio-blk存储虚拟化方案

    中的spdk_bdev设备对外提供服务。 spdk_vhost_blk_construct。 在其中,会创建spdk_vhost_blk_dev,并获取指定的spdk_bdev设备的访问句柄供后续响应、处理virtio front-end驱动的请求时使用。 spdk_vhost_blk_task提交到vhost-blk关联的spdk bdev设备进行处理。          SPDK代码中,vhost的app程序由 “SPDK/app/vhost” 目录下的文件编译,默认即会编译。其使用参考见SPDK: vhost Target。         

    2.7K30编辑于 2022-06-28
  • 从零开发分布式文件系统(5.3):IO操作为什么占用cpu

    User-space I/O with SPDK. 基于SPDK的用户态I/O。 英特尔® 存储性能开发套件(SPDK)是一套用于构建高性能存储应用的工具和库。 其中,SPDK NVMe驱动作为NVMe固态硬盘的用户态驱动,与我们讨论的内容直接相关。 SPDK不支持中断驱动的I/O,其完成通知必须通过轮询NVMe完成队列来获取。 SPDK完全绕过了操作系统内核,包括块设备层、文件系统以及页缓存。

    17410编辑于 2026-01-05
  • 来自专栏帅云霓的技术小屋

    云存储技术硬核内幕 (34) —— 75度角的美妙

    这场大革命就是SPDK的出现。 SPDK是Storage Performance Development Kit的缩写。从字面意思理解,SPDK可以大大提升存储系统的性能。 首先,SPDK中,NVMe SSD盘的驱动在用户态。初始化驱动时,系统会将NVMe控制器的PCIe寄存器地址空间映射到用户态可以访问的地址空间。 同时,SPDK为NVMe提供的DMA缓冲区也是用户态可以访问的地址空间,这样避免了数据包在内核态与用户态之间的复制搬运; SPDK设计时,使用了绑定vCPU (HT)的异步轮询机制。 为了避免这种情况,SPDK申请的大页(Huge Page)可达GB级别,避免了这部分性能开销; 最后,SPDK采取了无锁化的设计,避免了多个线程竞争自旋锁及排队等待锁带来的开销,进一步提升了处理的效率。 在下一期,我们将进一步详解SPDK在云存储中的应用。 本期段子: 子虚同学翻看DPDK和SPDK文档的时候,注意到一个概念:轮询。

    89620编辑于 2022-09-08
领券