This is the version we use for evaluating NDP performance in dcPIM.
NDP datacenter stack. The doc directory contains documentation about the project. The sim directory contains the simulator implementation of NDP which allows running experiments in various datacenter topologies. For much more information about NDP, see the wiki.
cd sim/
make
cd datacenter/
make -p result/ndp/
Download the NDP trace files. And move the trace folder into sim/EXAMPLES/dynamic/.
cd sim/EXAMPLES/dynamic/
mkdir result
- Reproduce Figure 3 results (Evaulation results for the default setup) (Running time: ~3-4 days). NDP simulation may use lots of CPU memory so please don't run too many simulations in parallel.
./ndp_load_100_imc10.sh imc10
./ndp_load_100Gbps.sh websearch
./ndp_load_100Gbps.sh datamining
- Reproduce Figure 4 results (Microscopic view into dcPIM performance) (Running time: 1-2 hours)
To get worst case results of 4a and 4c throughput, comment out line 1094-1102 in sim/ndp.cpp:
// if(_src->eventlist().now() - pim_last_time > 5000000) {
// if(!pim_file.is_open()) {
// pim_file.open("thpt.txt");
// }
// pim_file << _src->eventlist().now() / 1000000.0 << " " <<
// (pim_total_recvd - pim_total_recvd_last) / (_src->eventlist().now() - pim_last_time) * 1000 * 8 << " Gbps" << std::endl;
// pim_total_recvd_last = pim_total_recvd;
// pim_last_time = _src->eventlist().now();
// }
and compile the simulator again:
make
cd datacenter/
make
[Note] Please comment out the code and recompile the simualtor after getting 4a and 4c results. And then run results for 4a and 4c:
cd sim/EXAMPLES/dynamic/
./run_ndp_worst.sh NDP_worstcase1.dat
./run_ndp_worst.sh NDP_worstcase3.dat
To get results of 4b:
./ndp_load_100Gbps.sh worstcase2
- Reproduce Figure 5 results (Oversubscribed topology and Fat-Tree topology) (Running time: 4-5 days)
To run workloads on oversubscribed topology,
./ndp_local_traffic.sh imc10
./ndp_local_traffic.sh websearch
./ndp_local_traffic.sh datamining
To run workoloads on Fat-Tree topology,
./ndp_fat_tree.sh imc10
./ndp_fat_tree.sh websearch
./ndp_fat_tree.sh datamining
- Reproduce Figure 8 results (Bursty workload) (running time: ~10 hours, )
./ndp_bursty.sh imc10
After getting all results, run parsing script:
python calc_slowdown_ndp.py
python calc_slowdown_ndp_fat.py
python calc_slowdown_ndp_bursty.py
python calc_util_worstcase1.py
python calc_util_worstcase3.py
Figure 3a result is at dynamic/result_ndp_load.txt.
Figure 3b/3c/3d/3e results are at dynamic/result_ndp_all-to-all.txt.
Figure 4a is at dynamic/result/ndp/worst_case/util_NDP_worstcase1.txt.
Figure 4b is at 'dynamic/result_ndp_worstcase2.txt'
Figure 4c is at dynamic/result/ndp/worst_case/util_NDP_worstcase3.txt.
Figure 5a/b is at 'dynamic/result_ndp_local_traffic.txt'.
Figure 5c/d is at 'dynamic/result_ndp_fat_tree.txt'.
Figure 8 is at 'dynamic/result_ndp_load_bursty.txt'.
- Change the link speed in line 7
#define HOST_NIC 100000in sim/datacenter/main.h a. Note the unit is Mbps, not Gbps as the comment suggests. - Change the link speed in the function NdpPullPacer::NdpPullPacer(EventList& event, double pull_rate_modifier) line 1191 in file sim/ndp.cpp