10得票2回答
使用vmsplice(2)的语义是什么?有无赠予的区别?

我正在尝试理解vmsplice(2)系统调用的功能(手册页面在此处)。 我有两个关于SPLICE_F_GIFT标志的作用的问题: 手册页面说,一旦将页面赠送给内核,就必须永远不再修改内存。这是否意味着内存被固定,或者它可能是指可以由赠送进程取消映射的虚拟内存,而非物理内存?换句话说,典型的使...

10得票3回答
使用共享内存进行进程间通信是否会实现零拷贝?

我正在编写一个网络守护进程,运行在内核版本为2.6的Linux上,其中有一个生产者进程和N个消费者进程,它们不对数据进行任何更改,也不向生产者创建任何响应。 每当生产者进程生成一个数据对象时,其长度从几十字节到几十K字节不等,它必须将数据对象传递给一个可用的消费者进程。 一开始,我考虑使用...

9得票2回答
在Linux系统上,是否可能进行零拷贝UDP数据包接收?

我希望能够将UDP数据包直接从以太网适配器复制到我的用户空间缓冲区中。 关于我的设置的一些细节: 我正在从一对千兆以太网摄像头接收数据。组合起来,我每秒接收28800个UDP数据包(每行1个数据包* 30FPS * 2个摄像头 * 480行)。我无法切换到巨型帧,并且已经在研究调整驱动程序...

9得票1回答
有没有一种方法在.NET中执行零拷贝?

在Java中,我会使用java.nio库,然后使用FileChannel.transferTo()和FileChannel.transferFrom()方法。在(特别是)C#中是否有类似的方式,还是我需要从某个地方加载一些不受管理的.dll文件?在这种情况下,谷歌并没有提供有用的信息。 注:...

9得票2回答
如何通过Spring-Feign获得InputStream?

我想通过Spring-OpenFeign实现零拷贝将文件从服务器下载并保存到本地目录。 以下是朴素的下载方法: import org.apache.commons.io.FileUtils @GetMapping("/api/v1/files") ResponseEntity<by...

9得票2回答
如何在Java中实现零拷贝?主要区别有哪些?

我正在阅读有关如何使用Java NIO库利用操作系统级别的文件传输/缓冲(称为“零拷贝”)的内容。 那么,您创建/写入文件的方式有什么不同呢? 使用零拷贝有什么缺点吗?

8得票2回答
如何在C++中使用无锁循环缓冲区实现零拷贝TCP?

我有多个线程需要从TCP流中获取数据。我希望使用共享内存中的循环缓冲区/队列从TCP套接字读取。TCP接收将直接写入循环队列。消费者将从队列中读取。 这种设计应该实现零拷贝和零锁定。但是这里有两个不同的问题。 1.是否可能/高效地从TCP套接字中读取一个逻辑消息?如果不行,而我读取了多于一...

8得票2回答
判断一个可读文件描述符是否为管道的读端

我想使用 splice 将数据从 STDIN_FILENO 零拷贝到文件描述符(可以是普通文件、字符或块设备、FIFO 或任何可以使用open打开的内容)。为了使用 splice,要么源文件描述符(from)至少一个与管道的一端相对应,要么目标文件描述符(to)至少一个与管道的一端相对应,因此...

7得票3回答
如何使用Linux的splice()函数将一个文件复制到另一个文件?

关于splice()的另一个问题,我希望使用它来复制文件,并尝试使用两个由管道连接的splice调用,就像splice的维基百科页面上的例子一样。我编写了一个简单的测试用例,只尝试从一个文件中读取前32K字节并将它们写入另一个文件: #define _GNU_SOURCE #include ...

7得票3回答
使用Scatter/Gather操作的零拷贝与不使用的零拷贝

我是一名有用的助手,可以翻译文本。 我刚刚阅读了一篇文章,讲解了零拷贝机制。 它讨论了带和不带Scatter/Gather支持的零拷贝之间的区别。 不带SG支持的NIC,数据复制如下: NIC with SG support,数据副本如下: 简而言之,具备 SG 支持的零拷贝...