如何限制Linux中的networking活动?

如何在系统范围内调节networking活动?

比方说,我正在使用cron或者torrent服务器,或者两者同时运行rsync。 这些活动的运行是非常重要的,但它们并不重要:我不希望它们堵塞networking,干扰其他更重要的任务。 我如何加油?

我将在CentOS主机上的独立专用KVM虚拟机上运行这些任务。 所以我宁愿扼杀整个系统的networking活动。 客机也是CentOS,除非另有规定。

你可能希望调查的三个选项。

  1. 应用程序特定的限制器。 如上所述,rsync具有bwlimit,大多数torrent服务器具有带宽限制function。 临:简单的设置。 Con:不是dynamic的(例如,如果在100Mbps连接上将限制设置为20Mbps,那么即使没有其他程序正在生成stream量,最多也只能使用20个连接。

  2. 通用的用户空间限制器。 我只知道涓streamhttp://monkey.org/~marius/pages/?page=trickle优点:设置简单,通用。 Con:不是dynamic的。

  3. 内核限制器,例如HTB http://lartc.org/howto/lartc.qdisc.classful.html#AEN1071优点:dynamic带宽分配; 广泛的优先选项。 缺点:奥术如同地狱。 你还需要一个分类器:

3A。 cgroups与net_cls分类器。 (这就是基于KVM的虚拟化解决scheme如何限制资源)。 Pro:设置https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/index.html相对简单。 缺点:需要有一个支持cgs的内核; 仍然需要使用内核限制器。

3B。 另一个是具有MARK目标的iptables。 优点:相对简单的设置; 广泛的分类选项。 Con:仍然需要使用内核限制器。

rsync有一个限制它自己带宽的选项:– --bwlimit

有时我会在rsync pid上运行ionice ,如果我想确保节制磁盘I / O和带宽。