【问题标题】:Effect of network transfer over cpu网络传输对 cpu 的影响
【发布时间】:2012-12-03 15:06:54
【问题描述】:

我有一个项目,我需要将通过网络发送/接收计算数据的影响降至最低。

在我的配置中,一个(小)计算机网格将计算大量值(matrix_i^n,每台计算机都分配了一大组 i)。然后,这些值将根据计算值的属性通过网络发送到另一台计算机(平均而言,每台计算机接收相同数量的值)。

我想优化计算这些值所需的时间(高达 m 次幂,预先确定)。为此,我需要选择传输中间结果的最佳方式:

  • 预先计算所有内容,然后将所有值交换到正确的计算机
  • 一旦可用,就将每个值发送到正确的计算机
  • 在计算期间交换小数据包的混合解决方案

由于网络传输非常慢,我觉得我应该尽快开始传输数据,但我不确定 CPU 上的开销(处理更多异常,因此调度程序需要更多工作)不会影响性能的计算。

您知道我可以依赖的文档或我可以用来自己进行一些测试的良好基准套件(用 C 语言编写)吗?

谢谢

【问题讨论】:

    标签: c networking cpu-usage data-transfer


    【解决方案1】:

    网络的 CPU 使用率通常取决于您进行的 I/O 调用的数量。如果可以的话,以一种可以让您轻松调整缓冲区大小的方式设计您的应用程序,以便您可以进行测试。使用足够的缓冲,10gb/s 毫不费力。

    您使用的是什么操作系统?我怀疑您是否会需要它,但 Windows 8 具有 Registered I/O,它旨在实现极低的延迟和 CPU 使用率。

    【讨论】:

    • 我使用的是 unix 环境。这里的问题是:我应该使用什么缓冲区大小才能全速使用 cpu 和网络,以便 cpu 减少在网络上发送内容的时间?并且:我应该在计算时缓冲和发送,还是在计算后发送所有内容(在进行太多 I/O 调用的情况下)?我的问题可能非常具体到问题。我想无论如何我都必须测试所有内容。
    猜你喜欢
    • 1970-01-01
    • 2017-02-14
    • 2011-02-27
    • 2019-01-12
    • 1970-01-01
    • 2013-01-07
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多