系统设计 - Zero-Copy总结和性能测试

本文介绍了Zero-Copy技术在系统设计中的应用,通过对比传统数据传输方式,阐述了Zero-Copy如何减少上下文切换和数据复制次数,提高程序性能。文中还提到了Linux、Windows和macOS等操作系统对Zero-Copy的支持,并通过性能测试展示了Zero-Copy在传输效率上的优势。
摘要由CSDN通过智能技术生成

zero-copy应用场景

应用场景:将本地一个文件通过网络传输给另一个程序
关键字:数据复制过程中,内容不进行修改

zero-copy技术的使用场景有很多,比如Kafka, 又或者是Netty等,可以大大提升程序的性能
下面我们通过对比传统方式和zero-copy的方式传输数据,来理解zero-copy。

传统方式传输数据

代码如下:

// 将文件读取到buf中 
File.read(fileDesc, buf, len);
// 将buf中的数据写入到socket中
Socket.send(socket, buf, len);

结合下图理解理解操作如下:

在这里插入图片描述

在这里插入图片描述
详细步骤如下
1. 调用File.read()方法会发生上下文切换(context switch),从user mode切换到kernel mode。在read()内部会调用sys_read()来从文件中读取数据。第一次copy由DMA (direct memory access)完成,将文件内容从磁盘读出,并存储在kernel空间的buffer中,为方便说明,这个buffer称为reader buffer。
2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值