1. trickle介紹
trickle是一款輕量級的用戶空間帶寬控制管理的工具,用來限制如瀏覽器Firefox等, FTP , SSH,curl,wget,scp等等使用網(wǎng)絡帶寬。
trickle通過控制socket數(shù)據(jù)讀寫量來控制和限制應用的上傳和下載速度。要注意的是trickle使用動態(tài)鏈接和加載,所以只對于使用libc.so庫的程序有用,其他的則無效的。由于trickle可以設置數(shù)據(jù)在socket上的傳輸延遲,因此就可以用來限制應用程序的網(wǎng)絡帶寬。
trickle不能用于限制使用UDP協(xié)議的應用的帶寬,只可用于TCP連接。也無法工作在使用靜態(tài)鏈接的可執(zhí)行程序上。
2. 如何判定trickle對有個應用程序有效
根據(jù)是否使用libc.so庫來判斷。
可以通過ldd命令來查看某個應用程序是否使用了libc.so庫。如果應用程序使用了這個庫,就可以用trickle來限制網(wǎng)絡帶寬,否則不行。
# ldd /usr/bin/wget | grep libc.so
libc.so.6 => /lib64/libc.so.6 (0x00002adc30397000)
3.怎樣在Linux上安裝Trickle
trickle工具有一些依賴包,安裝和使用trickle之前必須安裝“libevent 庫”,不過這個庫在大多數(shù)現(xiàn)在的Linux機器上已經(jīng)默認安裝。
在 Debian/Ubuntu/Linux Mint 上
在Debian/Ubuntu/Mint 機器上運行 apt-get install trickle進行安裝。請確保源列表已經(jīng)更新,接著安裝你想要的應用。
$ sudo apt-get update
$ sudo apt-get install trickle
在 RHEL/CentOS/Fedora 上
首先你需要更新系統(tǒng),然后使用下面的命令安裝trickle。
# yum update
# yum install trickle
Trickle如何工作?
Trickle通過控制socket數(shù)據(jù)讀寫量來控制和限制應用的上傳/下載速度。它使用另一個版本的BSD套接字API,但是區(qū)別是trickle還管理socket調(diào)用。
要注意的是trickle使用動態(tài)鏈接和加載,所以它只對于使用“Glibc庫”的程序有用。由于trickle可以設置數(shù)據(jù)在socket上的傳輸延遲,所以它可以用來限制一個應用的網(wǎng)絡帶寬。
Trickle不能做什么?
Trickle不能用于限制使用UDP協(xié)議的應用的帶寬,它只可用于TCP連接,但是你要知道它也并不是對所有的TCP連接有效。如果你一直仔細地看這篇文章,你可以猜到原因是什么。
還要說一下,trickle無法工作在使用靜態(tài)鏈接的可執(zhí)行程序上。
4. 使用trickle
# trickle --help
Usage: trickle [-hvVs] [-d rate>] [-u rate>] [-w length>] [-t seconds>]
[-l length>] [-n path>] command ...
-h Help (this)
-v Increase verbosity level
-V Print trickle version
-s 在獨立模式下獨立運行
-d rate> 設置最大累計下載速率為 rate> KB/s
-u rate> 設置最大累計上傳速度為 rate> KB/s
-w length> 設置窗口長度為 length> KB 。默認512KB。
-t seconds> 設置默認的平滑時間 seconds> s 。平滑時間決定多少時間間隔trickle將嘗試讓應用程序傳輸數(shù)據(jù)。較小的值(0.1 - 1秒)會導致更連續(xù)(平滑)會話,非常適合于交互式應用。而較大的值(1 - 10秒)可能會產(chǎn)生一陣陣的發(fā)送和接收數(shù)據(jù),對需要大量帶寬的應用程序更好。
-l length> 設置默認的平滑長度 length> KB 。 默認10 KB。
-n path> 指定trickled socket名稱 path> 。 默認/tmp/.trickled.sock 。
-L ms> 設置延時。
5. 舉例
限制wget下載速度為50KB/s
6. 限制一個shell的所有命令帶寬