测试此随机数生成协议在不同节点数量及配置的情况下的生成速度
- 节点间网络及连接状态良好,建立好的 TCP Socket 在程序结束以前始终保持连接
- 无恶意节点,所有节点均尽力按照协议流程运行
主要使用阿里云同一区域(华北一)的共享型虚拟机进行实验
- 将代码放到一台开好的机器上,将其编译。
- 从步骤1 中的机器创建镜像
- 从镜像创建一定数量的虚拟机
- 每个节点使用
config_gen.py
生成符合要求的配置文件 - 运行约30秒,根据迭代次数和总耗时计算得到迭代速度
- 多次运行取平均值
- 节点间并不一定需要互相路由可达,即每个节点还需要承担转发消息的工作
- 对于广播的实现方式是洪泛
- 由于一些原因,代码实现中对于每一对 Socket 使用了一个线程来进行维护,导致上下文切换带来的Overhead 过大,之后的�代码中会更改这部分的实现方法
- 实验中的连接状况是指
对于一个节点,它对其他多少节点发起建立了 TCP Socket
, 例如 1/2连接 是指每一个节点对所有节点的其中随机1/2发起建立了连接, 全连接则是指每一个节点都对其他所有节点发起建立了连接 - 连接建立越多则消息传播延迟会更小,但本实现中带来的上下文切换开销会更大
节点数量 | 节点配置 | 网络情况 | 连接情况 | 迭代速度 |
---|---|---|---|---|
3 | i7-7700HQ 4 cores | localhost | 全连接 | 300轮/s |
4 | E5-2682v4 1 core | 阿里云同区域 | 全连接 | 140轮/s |
4 | E5-2682v4 4 cores | 阿里云同区域 | 全连接 | 225轮/s |
6 | E5-2682v4 4 cores | 阿里云同区域 | 全连接 | 100轮/s |
6 | E5-2682v4 4 cores | 阿里云同区域 | 1/2连接 | 140轮/s |
6 | E5-2682v4 4 cores | 阿里云同区域 | 1/3连接 | 120轮/s |
8 | E5-2682v4 4 cores | 阿里云同区域 | 全连接 | 36轮/s |
8 | E5-2682v4 4 cores | 阿里云同区域 | 1/2连接 | 72轮/s |
8 | E5-2682v4 4 cores | 阿里云同区域 | 1/3连接 | 80轮/s |
8 | E5-2682v4 4 cores | 阿里云同区域 | 1/4连接 | 85轮/s |
8 | E5-2682v4 4 cores | 阿里云同区域 | 1/5连接 | 112轮/s |
8 | E5-2682v4 4 cores | 阿里云同区域 | 1/6连接 | 80轮/s |
12 | E5-2682v4 4 cores | 阿里云同区域 | 全连接 | 7轮/s |
12 | E5-2682v4 4 cores | 阿里云同区域 | 1/2连接 | 23轮/s |
12 | E5-2682v4 4 cores | 阿里云同区域 | 1/3连接 | 25轮/s |
12 | E5-2682v4 4 cores | 阿里云同区域 | 1/4连接 | 40轮/s |
12 | E5-2682v4 4 cores | 阿里云同区域 | 1/5连接 | 55轮/s |
12 | E5-2682v4 4 cores | 阿里云同区域 | 1/6连接 | 60轮/s |
12 | 8163 12 cores | 阿里云同区域 | 全连接 | 14轮/s |
12 | 8163 12 cores | 阿里云同区域 | 1/2连接 | 20轮/s |
12 | 8163 12 cores | 阿里云同区域 | 1/3连接 | 30轮/s |
12 | 8163 12 cores | 阿里云同区域 | 1/4连接 | 45轮/s |
28 | 8163 12 cores | 阿里云同区域 | 1/4连接 | 12轮/s |
28 | 8163 12 cores | 阿里云同区域 | 1/6连接 | 20轮/s |
28 | 8163 12 cores | 阿里云同区域 | 1/10连接 | 28轮/s |
28 | 8163 12 cores | 阿里云同区域 | 1/14连接 | 36轮/s |
节点数量 | 节点配置 | 网络情况 | 连接情况 | 迭代速度 |
---|---|---|---|---|
3 | i9-8950HK 6 cores | localhost | 全连接 | 854轮/s |
4 | 8163 12 cores | 阿里云同区域 | 全连接 | 454轮/s |
4 | 8163 12 cores | 阿里云同区域 | 全连接 | 625轮/s |
6 | 8163 12 cores | 阿里云同区域 | 全连接 | 201轮/s |
6 | 8163 12 cores | 阿里云同区域 | 1/2连接 | 303/s |
6 | 8163 12 cores | 阿里云同区域 | 1/3连接 | 370轮/s |
8 | 8163 12 cores | 阿里云同区域 | 全连接 | 102轮/s |
8 | 8163 12 cores | 阿里云同区域 | 1/2连接 | 166轮/s |
8 | 8163 12 cores | 阿里云同区域 | 1/3连接 | 222轮/s |
8 | 8163 12 cores | 阿里云同区域 | 1/4连接 | 303轮/s |
12 | 8163 12 cores | 阿里云同区域 | 全连接 | 50轮/s |
12 | 8163 12 cores | 阿里云同区域 | 1/2连接 | 62轮/s |
12 | 8163 12 cores | 阿里云同区域 | 1/3连接 | 80轮/s |
12 | 8163 12 cores | 阿里云同区域 | 1/4连接 | 110轮/s |
12 | 8163 12 cores | 阿里云同区域 | 1/6连接 | 140轮/s |
28 | 8163 12 cores | 阿里云同区域 | 1/4连接 | 20轮/s |
28 | 8163 12 cores | 阿里云同区域 | 1/6连接 | 31轮/s |
28 | 8163 12 cores | 阿里云同区域 | 1/10连接 | 40轮/s |
28 | 8163 12 cores | 阿里云同区域 | 1/14连接 | 49轮/s |