Tho*_*son 6 linux tcp linux-networking
如果我不设置任何流量整形,Linux 如何在进程之间分配(传出)带宽?
我的具体情况是我在一个云 VM 上运行 30 个相同的进程,每个进程基本上都尽可能快地通过网络 (TCP) 发送数据。它们一起似乎达到了我期望的总输出带宽。然而,有些进程比其他进程完成得更快,并且消耗更多的带宽(高达 3 倍)。快速进程完成后,其余进程会加快速度并使用更多带宽。
Linux 如何决定每个进程应该获得多少带宽?
像大多数性能问题一样,它很复杂。每个任务获得多少带宽是网络堆栈不同层的许多事物之间的复杂交互。即使没有整形。一份不完整的清单:
其中许多不是针对相等带宽“公平性”进行优化,而是针对其他标准进行优化。TCP 拥塞控制宁愿有一点好处也不愿遭受拥塞崩溃。
并且不要忘记,在任何给定时间,您可能不是网络中唯一的一个 - 因此您还需要在“这里”和“那里”之间考虑路由器、交换机等”。
如果这不仅仅是出于好奇,那么尽快的解决方案是获得更多带宽。
或者,进行 QoS、整形或应用程序限制可以设置配额以获得更好的整体行为,无论是什么更好的手段。但这不再是越快越好,您按政策选择赢家和输家。