Linux:从 NAS 读取文件并通过套接字发送的最有效方法是什么

发布于 2024-11-06 22:54:30 字数 61 浏览 0 评论 0原文

我想编写一个从 NAS 读取文件并将其发送出去的服务器 一个插座。最快的方法是什么?

谢谢!

I would like to write a server that reads in a file from a NAS and sends it out over
a socket. What is the fastest way of doing this?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忘羡 2024-11-13 22:54:30

认为标准 CIFS 在文件上安装支持 mmap(2) (如果我没读错的话,direct 模式 必须关闭)。

如果是这样,最快的选择可能是照常 open(2) 文件,并使用 sendfile(2) 通过 UDP 套接字发送文件数据。 (sendfile(2) 要求文件可映射,这并不总是能保证,但内核中的 CIFS 客户端代码 (fs/cifs/file.c:cifs_file_strict_mmap()) 似乎支持 mmap(2)。)

Pat Patterson 报告说,使用以下命令可实现 8% 的加速sendfile(2)write(2)。但如果它有效,它会帮你省去自己处理 AIO 操作的麻烦——内核将负责从文件中请求内存页面,在套接字缓冲区允许时通过套接字发送它们,并希望允许你的应用程序代码简短而甜蜜。

I think standard CIFS mounts support mmap(2) on the files (if I read correctly, direct mode must be off).

If so, your fastest option is probably to open(2) files as normal, and use sendfile(2) to send the file data over your UDP sockets. (sendfile(2) requires the file to mappable, which isn't always guaranteed, but the CIFS client code in the kernel (fs/cifs/file.c:cifs_file_strict_mmap()) appears to support mmap(2).)

Pat Patterson reports an 8% speedup with sendfile(2) vs write(2). But if it works, it'd save you the hassle of handling AIO operations yourself -- the kernel would be in charge of requesting memory pages from the file, sending them over the socket when the socket buffers allow, and hopefully allow your application code to be short and sweet.

安穩 2024-11-13 22:54:30

假设双方的网络接口都是 1Gbit 以太网或更慢,则可以执行任何您喜欢的操作。您的机器将能够填满它们。

Assuming your network interfaces on both sides are 1Gbit ethernet or slower, just do anything you like. Your machine will be able to fill them up.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文