以编程方式确定最大传输速率

Col*_*nee 5 c networking tcp bandwidth microsoft-bits

我有一个问题,需要我计算可用的最大上传和下载,然后将我的程序的使用限制为它的一个百分比。但是,我想不出找到最大值的好方法。

目前,我能想出的唯一解决方案是在客户端和服务器之间传输几兆字节的数据,然后测量传输所需的时间。然而,这种解决方案是非常不可取的,因为对于 100,000 个客户端,它可能会导致我们服务器的带宽使用量增加太多(已经太高了)。

有没有人有解决这个问题的方法?

请注意,我最感兴趣的是在数据离开 ISP 网络之前传输数据的限制;我认为这很可能是导致其他程序通信降级的瓶颈发生的地方。不过,如果我错了,请纠正我。

编辑:经过进一步调查,我认为这是不可能的;在离开 ISP 网络时,要准确测量最大传输速率涉及的变量太多。不过,让问题保持开放,以防有人提出准确的解决方案。

Tho*_*ews 0

我看到的唯一答案是:

  1. 使用小样本来计算传输速率。
  2. 对实际数据进行分块(例如 1k)计时并报告平均值。

一些使问题复杂化的问题:

  • 发送机器的处理器带宽(即运行的其他任务)。
  • 网络上的流量密度。
  • 在客户端计算机上运行的任务。
  • 所有机器的架构。

由于客户端可能正在运行其他任务,而主机(发送机器)将运行不同的任务,因此传输速率会有所不同。

我投票赞成发送一块数据计时,发送另一块数据并计时。累积这些持续时间并平均块的数量。这允许动态计时,这比任何预先计算的计时都更准确。