AutoPart: Simulation Partitioning Tool For PDNS

Status and Changes: AutoPart 1.2 updated on 3/12/2005
- Fixed a problem that would seg-fault if two connected agents do not have traffic attached.
Previous Changes:
AutoPart 1.1 updated on 9/28/2004
- Fixed a bug that would assign wrong IP addresses in some cases.

Author

Donghua Xu
College of Computing
Georgia Institute of Technology
Email: xu@cc.gatech.edu

Introduction

AutoPart is a tool to automatically partition a large network simulation into smaller simulation instances, so that they can be run on a number of machines with PDNS, a parallel and distributed network simulation tool based on ns2. By distributing a simulation onto a number of machines, we can achieve the simulation scale that the original ns2 cannot achieve on a single workstation.

If you have a network topology beforehand and you want to do simulation with this topology using PDNS, it would be a very tedious and error-prone task to partition the simulation manually, replacing some links with rlinks, adding all those add-route statements, etc.. When the topology is relatively large (say, >1,000 nodes), then it is virtually impossible to partition by hand. In addition, even if you can partition by hand, you do not know for sure how well the performance of the partitioned simulation will be, since this performance depends on a complicated combination of lookahead, load balancing and communication overhead. Therefore we developed this tool to help you automate the partitioning process. This tool takes a ns2 script and creates a number of pdns scripts that are ready to run in parallel on a number of machines,  attempting to make the best trade-off between lookahead, load balancing and communication overhead in the partitioning process, resulting in the best performance when being run by PDNS.

Prerequisites

Download and Installation

Assumptions

6node.jpg

Usage

autopart -n num[.num] [-W routefile] [-R routefile] ns2script

Usage Examples

Running the Partitioned Simulation

You can also download runsim.pl, a simple Perl script that helps you run the partitioned simulation with pdns on a computer cluster. The original runsim.pl runs well on our ferrari cluster which consists of 8 machines sharing the same file system, each machine having 2 CPU's. The machines are named ferrari001-ferrari008, as you can see in the runsim.pl.  You can modify the ferrari part of the script to change the machine names to what your cluster machines are named.  Suppose pdns is in your path, after you partition the m32.tcl into 16 parts as in the last example above, you can run the partitioned simulation as follows:
runsim.pl -m8 -c2 -nm32

Performance of Autopart Itself

We ran autopart on a 3GHz P4 machine with 2G memory to partition the 417,200-node 400,000-stream ns2 simulation into 8*2 parts. It took 12 minutes to finish if autopart had to calculate all routes, and just 5 minutes if autopart was allowed to read previously-calculated routes. The memory it occupied did not top 700 MB.

References

The following paper is not about how we developed this tool, but about a systematic methodology of partitioning network simulations, mainly obtaining the performance/factor relations by empirical benchmark experiments. The tool as it is now uses the relations that we obtained on our cluster.

Acknowledgement

This work is supported in part by NSF under contracts number ANI-9977544 and ANI-0136936.

Contact

Any questions or comments, feel free to contact Donghua Xu at xu@cc.gatech.edu.

You are number to access this page since Sep 8, 2004 .