是否可以调整哪些应用程序在 NIC 上接收最多带宽,类似于 -20 到 +20 Nice 值,但针对的是带宽而不是处理器时间?
传输似乎阻碍了我的其他应用程序。我可以通过其选项减慢应用程序的速度,但我想知道是否有一个 Linux/非特定于应用程序的解决方案,我可以在其中查看和调整具有网络访问权限的所有内容。
更新: 我怀疑问题出现在下面的输出中。目前,所有 Web 和传输流量都是 TCP 源端口 80 和动态目标端口,并集中在 0:3 类中(具有 16810552 字节和 171075 个数据包)。因此,因为我的网络连接速度不是那么快,所以传输速度足以让我超时。输出显示队列规则没有丢弃任何数据包。
我正在看tcng作为可能的解决方案,因为配置已经存在。
$ tc qdisc show dev wlp2s0
qdisc mq 0: root
qdisc fq_codel 0: parent :4 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
qdisc fq_codel 0: parent :3 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
qdisc fq_codel 0: parent :2 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
qdisc fq_codel 0: parent :1 limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
$ tc -g -s class show dev wlp2s0
+---(:4) mq
| Sent 5670 bytes 105 pkt (dropped 0, overlimits 0 requeues 1)
| backlog 0b 0p requeues 1
|
+---(:3) mq
| Sent 16810552 bytes 171075 pkt (dropped 0, overlimits 0 requeues 0)
| backlog 0b 0p requeues 0 competing for bandwidth
|
+---(:2) mq
| Sent 2538 bytes 31 pkt (dropped 0, overlimits 0 requeues 1)
| backlog 0b 0p requeues 1
|
+---(:1) mq
Sent 13432 bytes 76 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
答案1
流量整形 QoS
我曾经使用过诸如奇迹塑造者,涓流或 pyshaper 来限制网络流量。
例子
涓流
将上传/下载速度限制为 20Kbps。
$ trickle -d 20 wget -c http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
您也可以在上述场景中单独设置这些。您也可以像这样将这些设置设为默认设置。
$ trickled -d 50 -u 10
奇迹塑造者
您还可以使用 Wondershaper 来控制网络级别的带宽。例如,假设我想限制我的eth1
设备。
$ sudo wondershaper eth1 1024 256
这将为我提供 1024 Kbits 的下载速度和 256 Kbits 的上传速度。分别是 128KB 和 16KB。
当您想要释放盖子时。
$ sudo wondershaper clear eth1
pyshaper
我pyshaper
之前已经在该网站上进行过广泛介绍,请参阅这些 U&L 问答,标题为:
这些都是非常强大的工具,因此这只是为了向您展示其潜力。
参考
答案2
也许您正在寻找的是服务质量(QoS),这在您最喜欢的防火墙(例如iptables
,,,,等)中可能不容易获得,但在任何现代路由器上应该很简单,并且通过以下nftables
方式pf
运行ufw
IP/端口。
iptables 示例; https://serverfault.com/questions/762921/qos-with-iptables-and-tc-with-unstable-wan
正如 slm 提到的,trickle
可以在启动时使用过程当不使用具有速率限制作为内置选项的命令(例如rsync
、curl
、 )时。wget
wondershaper
可以用来限制[虚拟]界面这对于可以绑定到网卡的命令和虚拟机很有用(如rsync
、curl
、wget
)。