延迟、带宽和吞吐量之间有什么区别?

What is the difference between latency, bandwidth and throughput?

我正在努力在延迟带宽吞吐量之间划清界限。

谁能用简单的术语和简单的例子向我解释一下?

当使用 TCP 发送 SYN 数据包时,它会等待 SYN+ACK 响应,发送和接收之间的时间就是延迟。它是一个变量即时间的函数。

如果我们在 100Mbit 连接上执行此操作,这是我们拥有的理论带宽,即我们每秒可以发送多少位。

如果我将一个 1000Mbit 的文件压缩到 100Mbit 并通过 100Mbit 线路发送,那么我的有效吞吐量可以被认为是每秒 1Gbit。这个网络的理论吞吐量和理论带宽是一样的,但为什么我说吞吐量是每秒1Gbit

在谈论吞吐量时,我听到最多的是与应用程序相关的问题,即 1Gbit 吞吐量示例,我假设在堆栈的某个层进行压缩,我们在那里测量了吞吐量。实际网络的吞吐量没有变化,但应用程序吞吐量发生了变化。有时吞吐量是指 actual throughput 即 100Mbit 连接是理论带宽,也是以 bps 为单位的理论吞吐量,但不太可能是您实际获得的。

吞吐量也用于整个系统,即每天清洗的狗数或每小时灌装的瓶子数。您不经常以这种方式使用带宽。

请注意,带宽尤其具有其他常见含义,我假设是网络,因为这是 Whosebug,但如果它是数学或业余无线电论坛,我可能会完全谈论其他内容。

https://en.wikipedia.org/wiki/Bandwidth

https://en.wikipedia.org/wiki/Latency

关于吞吐量值得一读。

https://en.wikipedia.org/wiki/Throughput

这是我用我能理解的语言写的位

当你去购买水管时,你会看到两个完全独立的参数:管道的直径和长度。直径决定管道的吞吐量,长度决定延迟时间,即水滴穿过管道所需的时间。需要注意的关键点是长度和直径是独立的,因此,通信通道的延迟和吞吐量也是独立的。

更正式地说,吞吐量定义为每秒进出管道的水量,延迟是水滴从管道的一端移动到另一端所需的平均时间。

我们来算一算:

为简单起见,假设我们的管道是 4 英寸 x 4 英寸的正方形,长度为 12 英寸。现在假设每个水滴都是一个 0.1 英寸 x 0.1 英寸 x 0.1 英寸的立方体。因此,在管道的一个横截面中,我将能够容纳 1600 个水滴。现在假设水滴以 1 inch/second.

的速率移动

吞吐量:每组液滴将在 0.1 秒内移动到管道中。因此,1 秒内将移动 10 组,即每秒将有 16000 个液滴进入管道。请注意,这与管道的长度无关。 延迟:在 inch/second 时,液滴 A 从管道的一端到达另一端需要 12 秒,无论管道的直径如何。因此延迟将为 12 秒。

水类比喻:[=​​29=]

  • 延迟 是通过管道所需的时间量。
  • Bandwidth 是管的宽度。
  • 水流量为吞吐量

车辆类比:

  • 从源到目的地的车辆行驶时间为延迟。
  • 道路类型是带宽。
  • 行驶车辆数即吞吐量。

我想补充一下已经写的答案,延迟吞吐量的另一个区别,与[=的概念有关14=]流水线。为此,我将使用日常生活中的一个例子,关于衣服的准备:为了准备好它们,我们必须 (i) 清洗它们,(ii) 烘干它们 (iii) 熨烫它们。这些任务中的每一项都需要一定的时间,分别说 A、B 和 C。每一批衣服都需要总共 A+B+C 的时间才能做好。这是整个过程的延迟。但是,由于 i、ii 和 iii 是单独的子流程,您可能会开始洗涤第 3 批衣服,而第 2 批正在烘干,第 1 批正在熨烫,等等(管道 ).然后,第 1 次之后的每批衣服,将在 max(A,B,C) 时间后准备好。吞吐量将以每次衣服的批次来衡量,等于 1/[max(A,B,C)].

也就是说,这个答案试图强调 当我们只知道系统的延迟时,我们不一定知道它的吞吐量。这些是真正不同的指标,而不仅仅是表达相同信息的另一种方式。

延迟:事件经过的时间。

例如。从A点走到B点需要一分钟,延迟一分钟。

吞吐量:单位时间内可以执行的事件数。

例如。带宽是吞吐量的衡量标准。

我们可以增加带宽来提高吞吐量,但不会改善延迟。

以RPC为例 — 分布式系统中消息通信的延迟有两个组成部分,第一个组成部分是硬件开销,第二个组成部分是软件开销。

硬件开销取决于网络与计算机的接口方式,这主要由网络控制器管理。

我写了一篇关于它的博客:) https://medium.com/@nbosco/latency-vs-throughput-d7a4459b5cdb