广州建设工程质量安全网站,唐山哪里有做网站的,计算机网站开发岗位有哪些,中卫网站设计在哪里docker-tcpumba
docker-tc:docker-tc项目仓库 pumba:pumba项目仓库 这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预#xff0c;包括延迟#xff0c;丢包#xff0c;带宽限制等。 但是我在实际使用时#xff0c;发现docker-tc这个工具在进行网络进行模…docker-tcpumba
docker-tc:docker-tc项目仓库 pumba:pumba项目仓库 这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预包括延迟丢包带宽限制等。 但是我在实际使用时发现docker-tc这个工具在进行网络进行模拟时会使我的程序卡住一直不执行程序在不进行任何限速的时候可以正常工作因此舍弃这种方式。 pumba相对于docker-tc的缺点是在不使用其他全局监控插件时不能做到完全自动化docker-tc可以通过在docker compose中使用label标签进行全自动的部署。pumba需要在容器启动后再进行网络相关的设置因此需要单独开一个终端进行pumba指令的执行执行期间是独占的因此也无法将其整理成bash脚本的一个部分。
pumba
安装
方式1
wget https://github.com/alexei-led/pumba/releases/download/0.10.1/pumba_linux_amd64
sudo mv pumba_linux_amd64 /usr/local/bin/pumba
chmod x /usr/local/bin/pumba pumba --help方式2
sudo curl -L https://github.com/alexei-led/pumba/releases/download/0.10.1/pumba_linux_amd64 --output /usr/local/bin/pumba
chmod x /usr/local/bin/pumba pumba --help如果出现了pumba的帮助手册就说明安装成功就可以使用pumba进行docker容器间网络的设置 如果你需要下载最新版本的pumba可以需要自己查看版本并更新链接https://github.com/alexei-led/pumba/releases
实验环境
我的实验环境是三个容器位于同一个自定义的子网然后它们需要通过网络连接完成协同推理pumba的作用是限制它们之间的网络环境。 docker-compose.yml定义如下
# Settings and configurations that are common for all containers
x-paoding-common: paoding-commonimage: pao-ding:1.0volumes:- /home/yons/.cache/torch/hub/checkpoints:/root/.cache/torch/hub/checkpoints/- /home/yons/whisperliang/Pao-Ding:/Pao-Dingservices:# # you can make the workfolw automatic by this script# paoding-master:# : *paoding-common# command: bash -c sleep 10 python3 main.py master# networks:# paoding-network:# ipv4_address: 174.28.0.250# depends_on:# paoding-trainer:# condition: service_healthy# paoding-worker0:# condition: service_healthy# paoding-worker1:# condition: service_healthy# paoding-trainer:# : *paoding-common# command: python3 main.py trainer# networks:# paoding-network:# ipv4_address: 174.28.0.2# healthcheck:# test: [CMD, curl, -f, http://localhost:8000]# interval: 10s# timeout: 5s# retries: 20# execute python3 main.py master in docker paoding-master-trainer# make sure that pumba script workspaoding-master-trainer:: *paoding-commoncommand: python3 main.py trainernetworks:paoding-network:ipv4_address: 174.28.0.2healthcheck:test: [CMD, curl, -f, http://localhost:8000]interval: 10stimeout: 5sretries: 20paoding-worker0:: *paoding-commoncommand: python3 main.py worker -i 0networks:paoding-network:ipv4_address: 174.28.0.3healthcheck:test: [CMD, curl, -f, http://localhost:8000]interval: 10stimeout: 5sretries: 20paoding-worker1:: *paoding-commoncommand: python3 main.py worker -i 1networks:paoding-network:ipv4_address: 174.28.0.4healthcheck:test: [CMD, curl, -f, http://localhost:8000]interval: 10stimeout: 5sretries: 20# volumes:
# data1-1:networks:paoding-network:driver: bridgeipam:config:- subnet: 174.28.0.0/24实验场景
首先我需要进行的是在特定带宽下进行容器间协同推理的实验。
pumba netem --duration 2m --tc-image gaiadocker/iproute2 rate --rate 32mbit re2:^pao-ding我使用docker-compose up -d 启动各容器之后使用pumba指令进行带宽限制。通过正则匹配pumba可以自动将符合条件的容器带宽进行限制。 然后我们新开一个终端输入指令docker exec -it pao-ding_paoding-master-trainer_1 /bin/bash进入docker paoding-master-trainer并执行python3 main.py master进行协同推理 运行结果如下:
从图上可以看出带宽被限制到3.6MB/s预期的是4MB/s有误差是正常的而且这比docker-tc似乎更准确一些。