NS Scaling

A memory consumption problem occured in recent simulations (cmcast-[150,200,250].tcl), so we decided to take a closer look at scaling issue. This page will demostrate the efforts in finding the bottlneck.

Running cmcast-50.tcl progressively

cmcast-50.tcl contains a topology of 50 nodes and 216 links generated by GT Internetwork Topology Models (GT-ITM) (pure random alpha=0.2). 10 receivers randomly selected among the 50 nodes join a group at once. A constant bit rate (3.75ms/packet) source sends packet to the group at node 2.

malloc() column indicates results of dmalloc which counts all memory used by malloc(). top SIZE column indicates numbers in SIZE column of 'top' which counts all text, stack, and heap memory. non-malloc is the difference of the previous two.

KBytes malloc() top SIZE non-malloc()
MultiSim 268 ?? ??
+50 MultiNode 586 2,316 1,730
+217 duplex-link-of-interfaces 3,456 9,064 5,608
+compute-routes 3,573 9,308 5,735
+50 cmcast agent 3,847 9,960 6,113
+1 CBR source 3,894 9,960 6,066
+1 10-member mcast group 3,947 10,168 6,221
+continue CBR source for 1 sec 4,057 10,304 6,247

Detail Profiling

Topology

KBytes Simulator MultiSim Node MultiNode duplex-link duplex-link(interface)
malloc() 268 268 2 6 9 14

malloc() usage to create topology =

268 + #MultiNode * 6 + #duplex-link-of-interfaces * 14
e.g. cmcast-50.tcl
50 MultiNodes: 268 + 6 * 50 = 568 (~ 586)
217 duplex-link-of-interfaces: 568 + 217 * 14 = 3,606 (~ 3456)

Unicast Routing Table

in progress...


ns
Polly Huang
ns ns-users@isi.edu