涓流:限制所有程序:适用于静态链接的可执行文件吗?

涓流:限制所有程序:适用于静态链接的可执行文件吗?

我想trickle在 Raspbian 上使用。

似乎它可以在运行可执行文件时使用,如下所示:

  • trickle -u {up} -d {down} {program}

并且它也可以用于所有应用程序。例如:

  • trickled -d 50 -u 10

手册页说第一个不能用于静态链接的可执行文件。所以我的问题是,第二个用法示例是否适用于所有程序,无论它们是否是静态链接的?

谢谢

答案1

trickled使用与 相同的技术来限制带宽trickle。它只是在 UNIX 域套接字上侦听/tmp其他trickle进程。当另一个trickle进程启动时,它会询问trickled(如果它正在运行)全局设置,并将其设置为默认值,除非它对该特定 实例有单独的覆盖trickle

A充分静态链接的可执行文件(即所有内容(包括 libc)都静态编译到二进制文件中)不能用于像 这样的用户空间进程trickle。静态链接的可执行文件最终会直接对 Linux 内核的稳定用户<->内核应用程序二进制接口 (ABI) 进行系统调用。它不会尝试加载/lib/usr/lib/usr/local/lib等中的任何库来解析符号。

的神奇之处trickle在于,它可以有效地将自定义代码注入到从系统中动态加载 C 库。或者被设置为 root 权限的进程不能通过这种方式修改其代码。

真正控制全部系统上的进程,这种级别的带宽限制需要在内核本身中完成。

Linux 内核本身中有一些新的和旧的流量整形功能(流量整形是带宽限制的统称,通常意味着修改数据包的时间或调度)的内核实现,这些实现更加可靠。这里是一个基于 nf 框架的较新示例,该框架计划取代 iptables 作为现代 Linux 的第 3 层策略和控制堆栈。

相关内容