【发布时间】:2012-01-20 08:17:17
【问题描述】:
在将一个固定字节缓冲区写入多个文件描述符时,是否有任何操作系统级 (Linux) 加速?当向一个文件描述符写入多个缓冲区时,可以使用writev(2),所以我想知道是否有任何类似的情况,或者必须通过多个系统调用来完成。
【问题讨论】:
在将一个固定字节缓冲区写入多个文件描述符时,是否有任何操作系统级 (Linux) 加速?当向一个文件描述符写入多个缓冲区时,可以使用writev(2),所以我想知道是否有任何类似的情况,或者必须通过多个系统调用来完成。
【问题讨论】:
我知道在 Linux 上没有这样的系统调用。他们的详尽列表在syscalls(2) 手册页中给出。
而且我不会那么麻烦。对于文件访问,真正的瓶颈是磁盘...
【讨论】:
write 所做的只是将数据复制到内核中的缓冲区。 (有更改此选项的选项,但这是默认行为。)并且 OP 的问题是一个很好的问题,因为如果有这样的问题,这将意味着一个副本,并且可能只有内核中的一个缓冲区(资源较少在内核中使用)。
我没用过,但这可能有用:lio_listio
【讨论】:
vmsplice 和 tee 的组合应该执行请求的操作,尽管它是多次调用,但用户空间/内核空间障碍仅跨越一次。
【讨论】: