gpt4 book ai didi

c++ - C/C++中文件描述符的高效使用

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

我正在使用 C++ 从我的客户端系统备份文件。每一秒,文件都从我的客户机器中涌出,我必须为每个文件获取文件描述符以写入服务器。有时我什至在一分钟内得到 10K 个文件,那么我如何才能真正利用文件描述符来有效地写入多个文件。

我有一个 C++ 套接字监听器,每台客户端机器连接到服务器并开始上传文件。是否可以使用有限的文件描述符写入多个文件。我已经尝试将所有文​​件写入一个大文件中,但我已经跟踪了大文件中的文件结束字节和开始字节,以便我写入其中的每个文件。这将是一项艰巨的工作.

我希望能够以高性能写入文件,同时保证磁盘安全。有什么想法可以分享 ..?

最佳答案

看来您应该将请求排队。

这样您就可以让有限数量的工作人员(比如 16 个,具体取决于您系统上的硬件)来实际传输文件,而让其余的等待。

这可能会提高吞吐量和性能,因为

  • 它消除了线程调度开销
  • 它消除了资源瓶颈(fd + 缓冲区分配)
  • 它不会同时访问磁盘(在老式硬件上(即最常见的旋转磁盘),如果您导致重复磁盘寻道,这可能会导致性能大幅下降。

    • 免责声明:您的文件系统/操作系统可能会协同工作,通过重新安排磁盘写入(电梯/完全公平排队和其他算法)来限制/减少这种影响。
    • 无论如何,在将顺序上传写入共享卷时,通常带宽使用会在以下情况下达到最佳状态

      sum(upload rates) ~= effective disk write bandwitdh

关于排队:

关于c++ - C/C++中文件描述符的高效使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916191/

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