Changed geometry distribution on profling-reference.
Added short piece of documentation on the setup for the profiling.
This commit is contained in:
@@ -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.
|
||||
|
||||
|
||||
@@ -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<LenaHelper> lena = CreateObject<LenaHelper> ();
|
||||
lena->EnableLogComponents ();
|
||||
|
||||
// Create Nodes: eNodeB and UE
|
||||
NodeContainer enbNodes;
|
||||
@@ -79,25 +81,30 @@ int main (int argc, char *argv[])
|
||||
|
||||
// Position of eNBs
|
||||
Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
|
||||
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<MobilityHelper> 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<NetDeviceContainer> ueDevs;
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user