重构高端存储新范式-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。
138656 6
|
弹性计算 Ubuntu Shell
为eRDMA注册超大内存
本文介绍如何在eRDMA环境下注册大量内存。
496 0
|
网络协议 NoSQL API
深入理解 RDMA 的软硬件交互机制
本文深入分析了RDMA技术在数据中心高性能网络环境下的工作原理及软硬件交互机制,通过对比传统Kernel TCP,突出了RDMA在减少延迟、提高系统性能方面的优势,同时讨论了其在内存管理、软硬交互方面的关键技术和挑战,为读者提供了全面理解RDMA技术及其应用场景的视角。
|
存储 机器学习/深度学习 并行计算
GPU通信互联技术:GPUDirect、NVLink与RDMA
在高性能计算和深度学习领域,GPU已成为关键工具。然而,随着模型复杂度和数据量的增加,单个GPU难以满足需求,多GPU甚至多服务器协同工作成为常态。本文探讨了三种主要的GPU通信互联技术:GPUDirect、NVLink和RDMA。GPUDirect通过绕过CPU实现GPU与设备直接通信;NVLink提供高速点对点连接和支持内存共享;RDMA则在网络层面实现直接内存访问,降低延迟。这些技术各有优势,适用于不同场景,为AI和高性能计算提供了强大支持。
|
存储 网络协议 大数据
一文读懂RDMA: Remote Direct Memory Access(远程直接内存访问)
该文档详细介绍了RDMA(远程直接内存访问)技术的基本原理、主要特点及其编程接口。RDMA通过硬件直接在应用程序间搬移数据,绕过操作系统协议栈,显著提升网络通信效率,尤其适用于高性能计算和大数据处理等场景。文档还提供了RDMA编程接口的概述及示例代码,帮助开发者更好地理解和应用这一技术。
|
人工智能 IDE Java
AI 代码工具大揭秘:提高编程效率的必备神器!
【10月更文挑战第1天】近年来,人工智能得到了迅猛的发展,并在各行各业都得到了广泛应用。尤其是近两年来,AI开发工具逐渐成为开发者们的新宠,其中 GitHub Copilot 更是引发了无限可能性的探索。
755 9
AI 代码工具大揭秘:提高编程效率的必备神器!
|
存储 算法 Java
深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制
本文介绍了 JVM 的内存区域划分、类加载过程及垃圾回收机制。内存区域包括程序计数器、堆、栈和元数据区,每个区域存储不同类型的数据。类加载过程涉及加载、验证、准备、解析和初始化五个步骤。垃圾回收机制主要在堆内存进行,通过可达性分析识别垃圾对象,并采用标记-清除、复制和标记-整理等算法进行回收。此外,还介绍了 CMS 和 G1 等垃圾回收器的特点。
308 0
深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制
|
Web App开发 数据采集 JavaScript
有JavaScript动态加载的内容如何抓取
有JavaScript动态加载的内容如何抓取
|
Python Windows
Python安装第三方库太慢?配置好这个速度飞起
Python安装第三方库太慢?配置好这个速度飞起
481 1
|
域名解析 负载均衡 网络协议
【域名解析DNS专栏】DNS解析中的Anycast技术:原理与优势
【5月更文挑战第27天】Anycast技术是解决DNS解析高效、稳定和安全问题的关键。它将一个IP地址分配给多地服务器,客户端请求自动路由至最近的低负载服务器,减少延迟,提高解析速度。此外,Anycast实现负载均衡,缓解DDoS攻击,并确保高可用性。通过遍历Anycast服务器选择最低延迟者进行DNS解析,实现网络性能优化。随着技术发展,Anycast在DNS解析中的应用将更加广泛。
1054 2