Skip to content
qizhePublic
forked from vishal1303/NDP

About

NDP datacenter stack

Resources

Stars

0 stars

Watchers

1 watching

Forks

 
 

Latest commit

 

History

92 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NDP

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.

Compile the simulator

cd sim/
make
cd datacenter/
make -p result/ndp/

Download the NDP trace files

Download the NDP trace files. And move the trace folder into sim/EXAMPLES/dynamic/.

Run the experiments (SIGCOMM Artifact Evaluation)

cd sim/EXAMPLES/dynamic/
mkdir result
  1. 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
  1. 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
  1. 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
  1. Reproduce Figure 8 results (Bursty workload) (running time: ~10 hours, )
./ndp_bursty.sh imc10

Parse Results

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'.

If You Need To change the link bandwidth (Default bandwidth at hosts is 100Gbps)

  1. Change the link speed in line 7 #define HOST_NIC 100000 in sim/datacenter/main.h a. Note the unit is Mbps, not Gbps as the comment suggests.
  2. Change the link speed in the function NdpPullPacer::NdpPullPacer(EventList& event, double pull_rate_modifier) line 1191 in file sim/ndp.cpp

About

NDP datacenter stack

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages