我想编写一个从 NAS 读取文件并通过套接字发送出去的服务器。最快的方法是什么?
谢谢!
我认为标准 CIFSmmap(2)
对文件的安装支持(如果我没看错,direct
模式必须关闭)。
如果是这样,您最快的选择可能open(2)
是正常发送文件,并用于sendfile(2)
通过您的 UDP 套接字发送文件数据。(sendfile(2)
要求文件可映射,这并不总是得到保证,但内核中的 CIFS 客户端代码 ( fs/cifs/file.c:cifs_file_strict_mmap()
) 似乎支持mmap(2)
。)
Pat Patterson 报告说,sendfile(2)
与write(2)
. 但如果它有效,它将为您省去自己处理 AIO 操作的麻烦——内核将负责从文件中请求内存页面,在套接字缓冲区允许时通过套接字发送它们,并希望允许您的应用程序代码简短而甜蜜。
假设两边的网络接口都是 1Gbit 以太网或更慢,你可以做任何你喜欢的事情。您的机器将能够填满它们。