gpt4 book ai didi

linux - splice() 用于匿名内存——有什么性能优势吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:08 32 4
gpt4 key购买 nike

根据 splice 的联机帮助页,它允许您

move data between two file descriptors without copying between kernel address space and user address space.

这是否意味着如果与匿名内存一起使用会有任何性能优势,例如从 memfd_create 返回的 fd?

最佳答案

memory -([vm]splice)-> pipe -(splice)-> socket 比 send 或 write 系统调用更有效,因为内核可以转发指针并指示网络卡从源代码执行 DMA,而不是在假设它们可能被修改的情况下从用户空间缓冲区复制。但这样做意味着您向内核保证在内存真正从发送队列中耗尽之前不会修改内存,这在调用完成后可能需要任意时间。所以这对不会被修改的内存最有用。或者,您可以使用 MSG_ZEROCOPY在页面最终发送后接收通知的选项,以便您可以重复使用它。

一般情况下尽可能使用sendfile会更简单

关于linux - splice() 用于匿名内存——有什么性能优势吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49899402/

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