Unison Take-Away
TL; DR
原论文里mtp
和mpi
是两种不同的模式,单独用mtp的数据并没有提供。
想开启mpi,必须先开mtp,即(mtp+mpi),为方便表达,本文均采用mpi的表示方法
mtp一般用于中小规模的实验,mpi用于大规模分布式系统实验,mpi是mtp的超大加强版,fig1需要的是mpi服务(原因见后文)。
目前尝试了mtp模式下所有常规的负载/拓扑,最高提升倍数是7.4左右,原论文fig1的提升倍数暂时无法复现。
在开启mtp且关闭超线程的中小型拓扑中,可以看见“随着规模增大,提升倍数逐渐上升”的趋势(见本文第三部分)
可能影响提升倍数的因素:
跑实验的服务器是否开启超线程?
关闭超线程,在一定程度上,增大提升倍数
对于大规模分布式服务,如论文中的fig1,是否开启mpi?
fig1 中 k = 8, cluster = [48,72,96,...] 对应fat-tree-distributed
,需要的是mpi服务
需要用mpi的模型,若简单起见用mtp,则达不到相应的倍数,且会出现运行时长时间停顿的异常
即:不能允许“降级服务”
同一时间,服务器本身其他的负载如何?
其他负载越小,提升倍数越高
下一步只有服务器配置OpenMPI的相应环境才能做(原因见下),如果可以的话,按照Unison的要求 来把环境全部过一遍会比较好:
Bash # update all
sudo apt update
# install dependencies
sudo apt install build-essential cmake git openmpi-bin openmpi-doc libopenmpi-dev linux-tools-generic ninja-build nfs-common texlive-latex-recommended texlive-fonts-extra -y
# allow perf
sudo sysctl -w kernel.perf_event_paranoid= -1
disable hyper-threading
echo off | sudo tee /sys/devices/system/cpu/smt/control
为什么 fig1 无法复现
fig1对应于mpi服务
原论文的fig1对应于:
k=8, cluster=48, fat-tree
k=8, cluster=72, fat-tree
k=8, cluster=96, fat-tree
由于cluster已经大于24,故属于fat-tree-distributed
模型,需要的是mpi服务。
Python 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 # 1 (7d)
elif argv [ 1 ] == 'fat-tree-distributed' :
e = Experiment ( argv [ 1 ])
e . run ( 'fat-tree' , [ 'barrier' , 'nullmsg' , 'unison' ],
k = 8 ,
cluster = [ 48 , 72 , 96 , 120 , 144 ],
# cluster=8, # for small-scale
delay = 3000 ,
bandwidth = '100Gbps' ,
flow = False ,
incast = 1 ,
victim = lambda args : '-' . join ([ str ( i ) for i in range ( int ( args [ 'k' ]) ** 2 // 4 )]),
time = 0.1 ,
interval = 0.01 ,
flowmon = False ,
core = lambda args : args [ 'cluster' ])
Python elif simulator == 'unison' and core > conf [ 'maxcore' ]:
args [ 'thread' ] = math . ceil ( core / math . ceil ( core / conf [ "maxcore" ]))
configure_cmd . append ( '--enable-mtp' )
configure_cmd . append ( '--enable-mpi' )
mpi_cmd = f 'mpirun -n { math . ceil ( core / conf [ "maxcore" ]) } --map-by ppr:1:node --bind-to none'
configure_cmd.append('--enable-mpi')
说明给到CLI的实际指令开启了mpi服务。
sugon服务器目前不支持OpenMPI服务
这是原论文中对应的配置。
我按照要求重新写了shell脚本生成相应的CLI指令,经检查指令没问题。
sugon服务器,在复现fat-tree-distributed
实验的configure时会显示:
原因 (1):
服务器没有安装mpi:
Bash bxhu@sugon:~/UNISON-for-ns-3$ mpiexec --version
Command 'mpiexec' not found, but can be installed with:
apt install lam-runtime # version 7.1.4-7, or
apt install mpich # version 4.1.2-2
apt install openmpi-bin # version 4.1.6-5ubuntu1
apt install slurm-wlm-torque # version 23.02.6-1ubuntu2
Ask your administrator to install one of them.
我在电脑本机上安装了mpi,在configure后,显示mpi是ON
的,说明可以继续往下做:
Bash # local machine
❯ mpiexec --version
mpiexec ( OpenRTE) 4 .1.2
Report bugs to http://www.open-mpi.org/community/help/
Bash 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 # local machine
-- ---- Summary of optional ns-3 features:
Build profile : optimized
Build directory : /Users/huluobo/paper/UNISON-for-ns-3/build
BRITE Integration : OFF ( missing dependency)
DES Metrics event collection : OFF ( not requested)
DPDK NetDevice : OFF ( not requested)
Emulation FdNetDevice : OFF ( missing dependency)
Examples : OFF ( not requested)
File descriptor NetDevice : OFF ( missing dependency)
GNU Scientific Library ( GSL) : OFF ( missing dependency)
GtkConfigStore : OFF ( missing dependency)
LibXml2 support : OFF ( missing dependency)
MPI Support : ON
Multithreaded Simulation : ON
这里MPI Support : ON
说明已经可以做OpenMPI相关实验了
原因 (2):
潜在原因,目前还没体现出来,可能会爆雷,不好说
Bash bxhu@sugon:~/UNISON-for-ns-3$ lscpu
Architecture: x86_64
CPU op-mode( s) : 32 -bit, 64 -bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU( s) : 72
On-line CPU( s) list: 0 -71
该实验 (fig1) 需要服务器 CPU core number 至少是144,但是sugon的核数是72。达不到需求,不允许开启mpi
.
中小规模mtp的数据启示
在开启mtp且关闭超线程的中小型拓扑中,可以看见“随着规模增大,提升倍数逐渐上升”的趋势。
以fat-tree拓扑为例:
超线程未关闭
k
c
result
2
2
1.986
2
4
3.12
2
8
2.942
2
16
2.61
超线程已关闭
k
c
result
2
2
2.203
2
4
2.874
2
8
3.079
2
16
3.09
乐观估计,mtp确实有效果,且规模越大效果越好,但目前没有实验验证与数据佐证。
原论文fig1没有提供mtp下的提升数据,10x的提升倍数是mpi模式的
目前尚不清楚这个“大”的界定是什么,还在观测数据找规律
下一步要做什么
计划是,如果可以的话,配置全套OpenMPI工具 (第一部分的sudo
),复现原论文fig1的数据
如一致,则说明没问题;否则,进行规模测试,定量探究mtp和mpi模式下“提升倍数随实验规模”的规律。