背景
arweave や Flux など, web3 なサービスを手元(ローカル)で動かしたい(つよつよ CPU, GPU, SSD が必要)
Solana validator https://qiita.com/syoyo/items/7f2ab6167c0d4311fcba とかも広範囲には web3 と言えるかも!?
ただ帯域制限なくやると, 手元でのインターネット接続が遅くなる(or ほぼつながらなくなる)ため, 帯域制御したい.
ルーターや, proxy(VPS)経由で nginx などで制御するのも手かもであるが, もうちょっとぱぱっと楽にやりたい.
tc(traffic control)を使う?
ありがとうございます.
ただ, inbound も制御するには ifb
を経由する必要があります
inbound も対応したい
ありがとうございます.
Ubuntu 20.04 を想定します.
ネットをあさると patch いれてカーネルビルドが必要...
みないなのがありますが, Ubuntu も最近(18.04 くらい?) は ifb
は module でデフォルトで入っていますので特にセットアップは不要でした.
(/boot/config-***
で kernel が CONFIG_IFB=m
でビルドされているのを確認してみましょう)
効果測定
↑のリンクにある帯域制限スクリプトで 50Mb/s に制限してみました.
speedtest (apt で入る)使ってみました.
iftop で見てみるのが楽でいいかも!
$ speedtest │································
Retrieving speedtest.net configuration... │································
Testing from NTT (153.246.208.245)... │································
Retrieving speedtest.net server list... │································
Selecting best server based on ping... │································
Hosted by Rakuten Mobile, Inc (Tokyo) [1.80 km]: 8.989 ms │································
Testing download speed................................................................................ │································
Download: 47.52 Mbit/s │································
Testing upload speed...................................................................................................... │································
Upload: 94.16 Mbit/s
Download は制御できたようですが Upload は限界突破していました... (帯域制御できていないのか, もしくはロスセス圧縮して見かけの速度がアップしているのか...)
その他
tcplim がありました. こちらは iptables 設定以外はユーザースペースのようですので柔軟性があるかも!
あとはプロセスをコンテナ実行して, コンテナランタイム側で帯域制限する手もあるかも!
(セキュリティ的にもそちらが理想かも(GPU とか SSD 使う場合はオーバヘッドの少ないコンテナサービス使うのがよさそう(Docker は Disk IO がボトルネックのままだったりするかしらん?))
TODO
- ポート単位で制御する
- 探せば golang とかで書かれた完全ユーザースペースで動くのもあるかも!