我想用涓流来扼杀一个简单的git pull .这看起来应该很简单:trickle -d 100 git pull但是当git显示其带宽速率时,它对我来说仍然徘徊在3.3 MiB/s左右,远大于假设的最大值1000 KB/s.
看到涓涓细流在8年内没有更新,我感到气馁,但我希望我仍能解决这个问题.
其他可能有用的随机信息:
trickle -V: trickle: version 1.07git --version: git version 1.9.0hub,但我尝试过有没有集线器.我没有看到任何区别.ip addr:1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen …
我有一个golang程序,它通过https将大量数据上传到OpenStack Object Storage.它依赖于golang标准库"net/http"来完成工作.我想用来trickle限制数据的上传速度,但是使用trickle运行我的代码似乎没有任何影响(好像我根本没有使用涓流).
为什么会这样?涓流或golang有一些限制,阻止他们一起工作吗?是否有一些我没有考虑过的问题?
这是我的设置:
我知道trickle这只适用于动态链接的可执行文件(参见涓流文档的第一段),所以我编译了我的代码,go build -compiler gccgo mycode.go输出ldd myexecutable是:
linux-vdso.so.1 => (0x00007ffee27b8000)
libgo.so.9 => /usr/lib/x86_64-linux-gnu/libgo.so.9 (0x00007f46062bf000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f46060a9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4605cdf000)
/lib64/ld-linux-x86-64.so.2 (0x000055aa4d0a4000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4605ac2000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f46057b9000)
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu Linux 16.04上运行它.我用slurm我的命令运行时查看网络流量.该机器没有运行任何其他网络密集型作业,因此我确信我看到了我的代码生成的流量.
我跑的时候
trickle -s -v -u2500 myexecutable ...args
Run Code Online (Sandbox Code Playgroud)
我看到我的TX网络流量峰值大约为12000KB/s(网络可以处理的最大值),而不是遵守我的2500KB/s的限制.
任何人都可以想到为什么会发生这种情况或者我可以尝试解决这个问题?