gpt4 book ai didi

linux - 性能 Read() 和 Write() 到/从 Linux SKB 的

转载 作者:IT王子 更新时间:2023-10-29 01:04:50 25 4
gpt4 key购买 nike

基于标准的 Linux 系统,其中有一个用户态应用程序和内核网络堆栈。我读到将帧从用户空间移动到内核空间(反之亦然)在 CPU 周期方面可能会很昂贵。

我的问题是,

  1. 为什么?并在一个方向上移动框架(即从用户到内核)有更大的影响。
  2. 还有,当你进入基于 TAP 的接口(interface)。由于框架仍将继续在用户/内核空间之间。空间问题是否适用,或者是否存在某种形式的零拷贝?

最佳答案

在线解决问题:


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因为操作系统必须:

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

这有一些异常(exception),例如如果您的驱动程序实现了 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 的接口(interface),同样的考虑也适用,除非您使用某种 DMA、翻页等;逻辑。

关于linux - 性能 Read() 和 Write() 到/从 Linux SKB 的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44963804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com