重构高端存储新范式-RDMA+NVMe-oF

简介: `sendfile` 是 Linux 系统中用于高效传输数据的系统调用,支持文件到网络套接字的零拷贝传输,减少 CPU 和内存的开销。它通过建立两个文件描述符之间的传输通道,避免了传统 `read/write` 或 `mmap/write` 方式中的多次数据拷贝和上下文切换。文章探讨了 `sendfile` 的实现原理、性能优势及其在不同存储设备(如 SSD 和 NVMe)下的应用挑战,同时分析了 DMA 技术在数据传输中的作用及限制。此外,还介绍了 NVMe 和 RDMA 等新技术对网络存储架构的影响,展示了现代高性能存储与网络的深度融合趋势。

行动unsetunset

已知信息1 sendfile函数

sendfile() 的设计目标是

文件 ➝ 网络 socket 的零拷贝传输

sendfile系统调用是在 Linux 内核2.1版本中被引入,它建立了两个文件之间的传输通道

代码语言:javascript

代码运行次数:0

运行

AI代码解释

sendfile 
 transfer data between file descriptors
ssize_t sendfile(int out_fd, 
                  int in_fd, off_t *_Nullable offset,

不是cp 拷贝文件吗?这有什么,还问这个 鄙视

Rust接口 更加明确 读本地文件数据,发送socket窜传输?

代码语言:javascript

代码运行次数:0

运行

AI代码解释

///https://docs.rs/sendfile/latest/sendfile/fn.send_file.html
/// [`File`]: std::fs::File
/// [`TcpStream`]: std::net::TcpStream
/// [`UdpSocket`]: std::net::UdpSocket
fn send_file<F, S>(file: F, socket: S)

小思考:为要设计,从一个文件(网络fd而是文件)数据传输另外一个文件接口?背后意义是什么

sendfile

sendfile

个人感受:sendfile方式只使用一个函数就可以完成之前的read+write 和 mmap+write的功能, 这样就少了2次状态切换,由于数据不经过用户缓冲区,因此该数据无法被修改。

继续看,文章肯定不能在这里结束

endfile+DMA收集

endfile+DMA收集

个人感受:2 次都是由 DMA 来搬运,都不需要通过 CPU,完美呀?

真的的完美吗?这里遗漏什么?

疑问1:不需要cpu参与?,错误 内核态cpu也处理,系统调用肯定cpu参与?

疑问2 遗漏什么?磁盘 是什么类型,机械,还是固态? 为什么网卡不能直接写入磁盘呢

  • sendfile 作为为大众服务的接口,是通用设计。
  • 没有对固态做特殊优化

一句话总结:依然离不开cpu,依然需要落盘

疑问3:nvme 为什么是bypass io 一个技术

推导aly.endelus.com99

已知信息2 北桥的磁盘控制器

疑问4:DMA 能直接将数据写网卡,为什么不写入磁盘SSD,而是写入磁盘控制器?

中间缺少一层缓存,也是说写到磁盘控制器 是不安全的, 但是高端 SSD/CMB 有电容保电设计,避免丢数据【这个才是重要材料】

DMA写入SSD的真实路径

  • 主机发起DMA写入请求
  • SSD控制器将数据暂存于:

DRAM缓存(需电容保护,不怕断电)

SRAM缓存(部分新型控制器内置)

  • 最终由介质管理引擎写入NAND

自己看不懂没关系,别人研究出来了,直接看结果

二、翻译:NVMe, NVMe over Fabrics and RDMA for network engineers

aly.emeteye.com88

一、网络存储演进背景

1. 传统存储网络的平衡状态

In the past, the evolution of network-based storage was not really a problem for network engineers: the network was fast and the spinning hard drives were slow. Natural network upgrades to 10Gb, 40Gb, and 100Gb Ethernet were more than sufficient to meet the networking needs of storage systems.

过去,基于网络的存储的发展对网络工程师来说并不是真正的问题:网络速度很快,而旋转的硬盘驱动器很慢。自然地升级到 10Gb、40Gb 和 100Gb 以太网足以满足存储系统的网络需求。

But now, with the introduction of ultra-fast solid-state disks (SSDs) and Non-Volatile Memory Express (NVMe), this is no longer true! Storage teams now have the ability to potentially saturate the network with incredibly fast devices.

但现在,随着超高速固态硬盘 (SSD) 和非易失性内存高速 (NVMe) 的推出,这不再是事实!存储团队现在能够使用速度极快的设备使网络达到饱和。

unsetunset二、NVMe-oF带来的新挑战unsetunset

  • NVMe treats storage as memory. NVMe 将存储视为内存。
  • 如何使用?

阅读: 2分钟论文:网卡直写磁盘,这项专利彻底绕过了 CPU!

专利:分布式存储数据的传输方法、装置、系统、设 备和介质 CN117573043B


相关文章
|
人工智能 缓存 调度
技术改变AI发展:RDMA能优化吗?GDR性能提升方案(GPU底层技术系列二)
随着人工智能(AI)的迅速发展,越来越多的应用需要巨大的GPU计算资源。GPUDirect RDMA 是 Kepler 级 GPU 和 CUDA 5.0 中引入的一项技术,可以让使用pcie标准的gpu和第三方设备进行直接的数据交换,而不涉及CPU。
139814 6
|
Linux Anolis 异构计算
关于远程直接内存访问技术 RDMA 的高性能架构设计介绍
本文介绍 RDMA 技术的基本原理及交流在工程上的设计思路。
|
存储 缓存 固态存储
存储性能软件加速库(SPDK)
存储性能软件加速库(SPDK)
|
存储 缓存 NoSQL
阿里云 Tair 联手 SGLang 共建 HiCache,构建面向“智能体式推理”的缓存新范式
本文系统剖析面向智能体推理的 KVCache 技术演进,针对传统机制在长上下文、多轮决策与多智能体协同中的状态膨胀、持久化缺失和缓存孤立三大瓶颈,介绍阿里云 Tair KVCache 团队联合 SGLang 社区推出的 HiCache 分层缓存体系。该方案通过显存-内存-3FS 多级卸载与全局共享,实现缓存命中率提升至80%,TTFT 降低56%,推理 QPS 翻倍,支撑智能体时代的大模型高效推理。
|
存储 缓存 NoSQL
开源 | 阿里云 Tair KVCache Manager:企业级全局 KVCache 管理服务的架构设计与实现
阿里云 Tair 联合团队推出企业级全局 KVCache 管理服务 Tair KVCache Manager,通过中心化元数据管理与多后端存储池化,实现 KVCache 的跨实例共享与智能调度。该服务解耦算力与存储,支持弹性伸缩、多租户隔离及高可用保障,显著提升缓存命中率与资源利用率,重构大模型推理成本模型,支撑智能体时代的规模化推理需求。
|
存储 机器学习/深度学习 缓存
Hybrid Model Support:阿里云 Tair 联合 SGLang对 Mamba-Transformer 等混合架构模型的支持方案
阿里云 Tair KVCache 联合 SGLang,创新支持 Mamba-Transformer 等混合架构模型。通过双池内存、状态快照等技术,解决异构状态管理难题,实现前缀缓存与推测解码,显著提升 Qwen3-Next 等模型的推理效率,推动大模型迈向高效智能体时代。
|
10月前
|
人工智能 数据可视化 安全
【保姆级教程】Dify+DeepSeek+MCP三件套:零门槛打造AI应用流水线,手把手实战教学!
本教程手把手教你用Dify+DeepSeek+MCP三件套零门槛搭建AI应用流水线:Dify提供可视化工作流编排,DeepSeek贡献128K长文本国产最强模型,MCP实现弹性部署。这套组合兼具低代码开发、高性能推理和灵活运维三大优势,助你快速落地企业级AI解决方案。
|
12月前
|
存储 算法 调度