这是李芝塬的本科毕业设计。 本程序可以模拟ATP/switchML算法在面对网络丢包时的性能。仅模拟网络丢包,不考虑网络拥塞、吞吐量。是一个初学者水平的程序。 更详细的内容见毕业论文。为了避免查重的问题,毕业论文暂不公开,可联系作者:zhiyuanli.0122[at]outlook.com
本项目分为模拟程序(C++)、网络脚本(Bash)、测试脚本(Python) 其中:
- 模拟程序可以模拟ATP/SwitchML算法单次运行。每次运行结束时,输出模拟算法的运行时长。
- 网络脚本负责创建网络环境、设置丢包率与丢包模型等
- Python脚本负责调用以上两种程序,自动化测试并输出结果至csv文件
| 项目 | 配置信息 |
|---|---|
| CPU | x86 |
| 操作系统 | Ubuntu 20.04.6 LTS |
| g++ | 9.4.0 |
| spdlog | 1.5.0 |
| Python | 3.8 |
其中spdlog可使用apt安装
- 确定参数:Worker数量n,slot/Aggregator数量s,迭代次数i,时间阈值t,日志等级l,丢包率
- 创建veth:
sudo bash createVeth.sh 10,其中结尾的数字等于n - 设置丢包率:
sudo bash set_loss.sh 1,其中数字代表丢包率,例如1表示1% - 编译程序:进入程序的根目录,例如ATP/或switchML/,运行
./compile.sh - 运行模拟程序:
sudo ATP [参数]或sudo switchML [参数]。可使用--help获取帮助
使用Python自动批量化测试模拟程序
sudo python3 XX.py即可
- 所有模拟程序有小概率卡死,一直无法结束,此bug无法修改。所以在Python脚本中需要检测这种情况并kill残余的进程
- 自行修改文件路径,包括脚本路径、ELF文件路径等
- 注意权限:除编译外,所有命令都需要
sudo权限