diff --git a/src/lte/doc/source/lte-user.rst b/src/lte/doc/source/lte-user.rst index eaa8d8c6b..2e739049e 100644 --- a/src/lte/doc/source/lte-user.rst +++ b/src/lte/doc/source/lte-user.rst @@ -68,3 +68,13 @@ Example simulation program lena.ActivateEpsBearer (ueDevs, bearer); +Performance evaluation +********************** + +Execution time and memory consumption +------------------------------------- + +In order to provide an running time and memory consumption estimation a reference simulation script has been developed, ``src/lte/examples/profiling-reference``. The scenario is composed by a set of eNodeBs, each one of them with a constant number of UEs attached. All eNodeBs have the same number of attached UEs. The UEs are all in the same position than its eNodeB and the eNodeBs are distributed in a line, each one 140m away from the previous one. Simulated time is set to 60s. + +With this considerations, the execution time and the memory consumtpion has been obtained for a certain number of UEs attached to each eNodeB and number of eNodeBs. The reference hardware platform is a Intel Core2 Duo E8400 3.00GHz with 512 MB of RAM memory running a Fedora Core 10 with kernel 2.6.27.5. It scenarios considered range the number of eNodeBs between 1 and 15 and the UEs per eNodeB in 1, 5 and 10. The performance figures obtained show follows. + diff --git a/src/lte/examples/execution-time-reference.cc b/src/lte/examples/profiling-reference.cc similarity index 85% rename from src/lte/examples/execution-time-reference.cc rename to src/lte/examples/profiling-reference.cc index 21f143e4d..0cb9f0619 100644 --- a/src/lte/examples/execution-time-reference.cc +++ b/src/lte/examples/profiling-reference.cc @@ -38,6 +38,7 @@ int main (int argc, char *argv[]) double radius = 0.0; uint32_t nEnb = 1; uint32_t nUe = 1; + double enbDist = 100; CommandLine cmd; cmd.AddValue ("nEnb", "Number of eNodeBs", nEnb); @@ -64,6 +65,7 @@ int main (int argc, char *argv[]) << "_rngRun" << std::setw(3) << std::setfill('0') << runValue.Get () ; */ Ptr lena = CreateObject (); + lena->EnableLogComponents (); // Create Nodes: eNodeB and UE NodeContainer enbNodes; @@ -79,25 +81,30 @@ int main (int argc, char *argv[]) // Position of eNBs Ptr positionAlloc = CreateObject (); - positionAlloc->Add (Vector (0.0, 0.0, 0.0)); + for (uint32_t i = 0; i < nEnb; i++) + { + positionAlloc->Add (Vector (enbDist*i, enbDist*i, 0.0)); + } + MobilityHelper enbMobility; enbMobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); enbMobility.SetPositionAllocator (positionAlloc); enbMobility.Install (enbNodes); - // Position of UEs attached to eN - MobilityHelper ueMobility; - ueMobility.SetPositionAllocator ("ns3::UniformDiscPositionAllocator", - "X", DoubleValue (0.0), - "Y", DoubleValue (0.0), - "rho", DoubleValue (radius)); - ueMobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); + // Position of UEs attached to eNB + vector ueMobility; for (uint32_t i = 0; i < nEnb; i++) { - ueMobility.Install (ueNodes[i]); + MobilityHelper ueMob; + ueMob.SetPositionAllocator ("ns3::UniformDiscPositionAllocator", + "X", DoubleValue (enbDist*i), + "Y", DoubleValue (enbDist*i), + "rho", DoubleValue (radius)); + ueMob.SetMobilityModel ("ns3::ConstantPositionMobilityModel"); + ueMobility.push_back (ueMob); + ueMobility[i].Install (ueNodes[i]); } - // Create Devices and install them in the Nodes (eNB and UE) NetDeviceContainer enbDevs; vector ueDevs; diff --git a/src/lte/examples/wscript b/src/lte/examples/wscript index d73403add..aa22a6e8f 100644 --- a/src/lte/examples/wscript +++ b/src/lte/examples/wscript @@ -10,6 +10,6 @@ def build(bld): obj = bld.create_ns3_program('lena-rlc-calculator', ['lte']) obj.source = 'lena-rlc-calculator.cc' - obj = bld.create_ns3_program('execution-time-reference', + obj = bld.create_ns3_program('profiling-reference', ['lte']) - obj.source = 'execution-time-reference.cc' + obj.source = 'profiling-reference.cc'