linux零拷贝技术

2019-04-23  本文已影响0人  analanxingde

在看Kafka相关设计时,注意到一个零拷贝技术。对其做一简要介绍:

为什么需要零拷贝技术?

以常见的read 和write函数为例:

read(file, tmp_buf, len);
write(socket, tmp_buf, len);
文件拷贝过程
如上图所示:在这个读写过程中,一共涉及了4次复制和4次状态切换

可以看到在这个过程中,对数据进行了多次复制,同时上下文环境进行了频繁的切换,对于CPU造成巨大压力。我们需要一种技术,减少不必要的数据复制,让CPU解脱出来

什么是零拷贝技术?

零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储,主要就是利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,或者让别的组件来做这一类简单的数据传输任务,让CPU解脱出来专注于别的任务。这样就可以让系统资源的利用更加有效。引用了(https://www.jianshu.com/p/fad3339e3448

常见的零拷贝技术

上一篇 下一篇

猜你喜欢

热点阅读