Linux经典面试题:网卡接收数据后,经过几次拷贝才能到用户进程

网络是云计算绕不开的话题,其中主机内部网络性能开销最大的就是数据拷贝,那么通常情况下,当网卡接收到数据后,要经过几次拷贝才能被应用程序接收呢 ?

下图是一个网卡接收数据的整个流程。

Linux经典面试题:网卡接收数据后,经过几次拷贝才能到用户进程

1、当数据包到达网卡依据配置会将网络数据拷贝到DMA中,并触发硬件中断

2、驱动程序将从ring buffer中读取,填充内核skbuff结构。执行上层协议栈操作

3、socket read操作将数据从内核拷贝到用户态

可见用户态看到的数据包需要经过三次数据拷贝,这也限制了Linux的网络性能,所以后期出现了DPDK、数据零拷贝等加速技术。其中DPDK直接使用用户态IO(UIO),直接旁路内核,如下图,可以直接将网卡数据拷贝到用户态,其中Driver有两部分组成,一部分在内核空间一个部分在用户空间。Driver主要作用是通过mmap地址映射物理地址和虚拟地址,以处理和禁止中断(这部分只能在内核空间完成)。

Linux经典面试题:网卡接收数据后,经过几次拷贝才能到用户进程

展开阅读全文

页面更新:2024-06-16

标签:网卡   旁路   数据   用户   下图   开销   内核   驱动程序   应用程序   后期   进程   性能   操作   地址   经典   科技   空间   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top