当前位置 : 主页 > 网络安全 > 测试自动化 >

性能Read()和Write()往返于Linux SKB

来源:互联网 收集:自由互联 发布时间:2021-06-22
基于标准 Linux系统,其中有用户态应用程序和内核网络堆栈.我已经知道,从CPU周期来看,将帧从用户空间移动到内核空间(反之亦然)可能很昂贵. 我的问题是, 为什么?并在一个方向上移动框
基于标准 Linux系统,其中有用户态应用程序和内核网络堆栈.我已经知道,从CPU周期来看,将帧从用户空间移动到内核空间(反之亦然)可能很昂贵.

我的问题是,

>为什么?并在一个方向上移动框架(即从用户移动到
内核)有更大的影响.
>另外,当你做的事情有所不同
进入基于TAP的界面.因为框架仍将继续
用户/内核空间之间.空间问题是否适用,或者是否存在某种形式的零拷贝?

在线解决问题:

Why? and is moving the frame in one direction (i.e from user to
kernel) have a higher impact.

Moving to/from user/kernel spaces is expensive因为操作系统必须:

>验证复制操作的指针.
>传输实际数据.
>进入在用户/内核模式之间转换所涉及的通常成本.

这有一些例外,例如你的驱动程序是否实现了strategy such as “page flipping”,它有效地重新映射了一块/内存页面,以便用户空间应用程序可以访问它.这与零复制操作“足够接近”.

With respect to copy_to_user/copy_from_user performance, the performance of the two functions is apparently comparable.

Also, how do things differ when you move into TAP based interfaces. As
the frame will still be going between user/kernel space. Do the space
concerns apply, or is there some form of zero-copy in play?

使用基于TUN / TAP的接口时,除非您正在使用某种DMA,页面翻转等,否则应用相同的注意事项;逻辑.

网友评论