行动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