D1MD1MM1排队性能分析.docx

上传人:b****3 文档编号:5425619 上传时间:2022-12-16 格式:DOCX 页数:9 大小:130.96KB
下载 相关 举报
D1MD1MM1排队性能分析.docx_第1页
第1页 / 共9页
D1MD1MM1排队性能分析.docx_第2页
第2页 / 共9页
D1MD1MM1排队性能分析.docx_第3页
第3页 / 共9页
D1MD1MM1排队性能分析.docx_第4页
第4页 / 共9页
D1MD1MM1排队性能分析.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

D1MD1MM1排队性能分析.docx

《D1MD1MM1排队性能分析.docx》由会员分享,可在线阅读,更多相关《D1MD1MM1排队性能分析.docx(9页珍藏版)》请在冰豆网上搜索。

D1MD1MM1排队性能分析.docx

D1MD1MM1排队性能分析

 

通信网仿真与NS仿真器大作业

——D/D/1、M/D/1、M/M/1排队性能分析

 

姓名:

黄颢

学号:

1011010303

班级:

通信三班

 

2012年2月

一、总体目标

获得D/D/1、M/M/1、M/D/1等不同排队系统的吞吐量与流入负载的变化关系。

二、任务分配:

针对本次作业,将本组所有成员分成三个小组:

第一小组的主要任务是负责D/D/1、M/M/1、M/D/1等不同排队系统业务源的生成。

第二小组的主要任务是在第一小组工作的基础上对模拟环境所生成的数据进行记录并做后续的数据处理。

第三小组的主要任务是在前两个小组的任务完成之后,进一步讨论实验结果,并在最后撰写实验报告。

三、实验环境

Unbuntu平台下的NS、Gnuplot。

其中Ubuntu的版本为11.10、NS的版本为2.34、Gnuplot的版本为4.4。

四、D/D/1、M/D/1、M/M/1排队系统的概述

排队论(queuingtheory),或称随机服务系统理论,是通过对服务对象到来及服务时间的统计研究,得出这些数量指标(等待时间、排队长度、忙期长短等)的统计规律,然后根据这些规律来改进服务系统的结构或重新组织被服务对象,使得服务系统既能满足服务对象的需要,又能使机构的费用最经济或某些指标最优。

排队模型的表示方法:

M=指数分布D=确定型分布

M/M/1:

数据进入队列的概率服从泊松分布,数据离开队列的概率亦服从泊松分布,且只有一个队列。

由随机过程知识可知数据到达的时间间隔服从指数分布,数据离开队列的时间间隔也是服从指数分布的,而在在队列处理能力一定的基础上,数据离开队列的时间间隔与其大小有正比关系,故可将M/M/1的生成转化为生成一个这样的节点:

1、其发送数据的时间间隔服从指数分布,在程序中设其参数为λ;

2、其发送的数据大小也服从指数分布,在程序中设其参数为μ。

D/D/1:

即数据进入队列和离开队列的概率是固定的,由M/M/1的节点生成可知,D/D/1的生成转化为这样一个节点:

1、其发送数据的时间间隔固定;

2、其发送的数据大小也固定,为方便比较其间隔时间和大小也用λ和μ来表示。

M/D/1:

综合M/M/1和D/D/1,M/D/1的生成可转化为这样一个节点:

1、其发送数据的时间间隔服从指数分布;

2、其发送的数据大小固定。

五、吞吐量的计算

网络的吞吐量(Throughput,TH)是网络性能的一个重要参数,是指在不丢包的情况下单位时间内可以接收的数据量,单位是字节每秒或者比特每秒。

端到端的吞吐量与网络状况有很大关系,为了测试端到端的最大吞吐量,应该逐渐增大发送端的数据发送速率,然后计算接收端的吞吐量,直至吞吐量达到最大。

在分析Trace文件时,可以使用以下的计算方式计算吞吐量。

上式中,TB(i)是指第i个分组被目的节点接收时已经传输的数据总量,TR(i)是第i个包的接收时间。

i>m,标识计算从第m个分组到第i个分组的吞吐量,特别的,若取m=1则是计算平均吞吐量。

六、实验步骤

1,根据实验的总体目标,确认本次实验的整体思路,书写仿真程序代码,具体程序代码内容请参考附录。

2,根据上文所述的测量吞吐量的方法,在仿真完成之后,书写awk程序对仿真结果的Trace文件进行分析,具体程序代码内容请参考附录。

3,将第2步中对Trace文件分析的结果送入Gnuplot作图,得到具体直观的结果,并对结果进行验证;当所得结论与理论不符时,修改仿真程序或者awk程序,重复上述第1、2步骤。

七、运行结果与结论

参照上述的步骤,获得以下结果:

图1描述的是D/D/1、M/M/1、M/D/1三种排队系统的吞吐量对比图,其中λ均设为30.0,μ均为33.0,横轴为时间(单位为s),纵轴为平均吞吐量(Mbit/s)。

图1-小负载情况下三种排队系统的吞吐量对比图

由图1可见这三者在输入负载不大的情况下平均吞吐量相差亦不大,其中D/D/1的吞吐量比较稳定,而M/M/1和M/D/1的吞吐量有波动性。

图2-D/D/1队列系统在μ不同情况下的吞吐量对比

图2为三个D/D/1队列的吞吐量对比,三个D/D/1队列的参数分别为如图所示,横轴为时间(单位为s),纵轴为平均吞吐量(Mbit/s)。

λ不变时,随着μ的增大,数据包大小减小,从而输入负载也就减小,由图可知随着μ的增大平均吞吐量是减小的。

图3-M/M/1队列系统在λ不同情况下的吞吐量对比

图3为三个M/M/1队列系统的吞吐量对比,三个M/M/1队列的参数分别为如图所示,横轴为时间(单位为s),纵轴为平均吞吐量(Mbit/s)。

μ不变时,随着λ的增大,数据包发送时间间隔减小,从而输入负载也就增大,由图可知随着λ的增大平均吞吐量是增大的。

图4-M/M/1队列系统在λ不同情况下的吞吐量对比

图4为三个M/D/1队列系统的吞吐量的对比,三个M/M/1队列的参数分别为如图所示,横轴为时间(单位为s),纵轴为平均吞吐量(Mbit/s)。

μ不变时,随着λ的增大,数据包发送时间间隔减小,从而输入负载也就增大,由图可知随着λ的增大平均吞吐量是增大的。

附录:

业务源生成程序:

D/D/1、M/M/1、M/D/1队列程序的共同部分:

setns[newSimulator]

setf[openqueue2.trw]

setmu133.0

setlambda130.0

setn1[$nsnode]

setn2[$nsnode]

setlink[$nssimplex-link$n1$n21Mb1msDropTail]

$nsqueue-limit$n1$n250

setsrc1[newAgent/UDP]

$nsattach-agent$n1$src1

setsink1[newAgent/LossMonitor]

$nsattach-agent$n2$sink1

$nsconnect$src1$sink1

setholdtime10

setholdseq10

setholdrate10

D/D/1、M/M/1、M/D/1队列程序的不同部分:

针对D/D/1队列:

数据包发送

procsendpacket1{}{

globalnssrc1mu1lambda1

settime[$nsnow]

$nsat[expr$time+[expr1/$lambda1]]"sendpacket1"

setbytes[exprround([expr100000.0/(8*$mu1)])]

$src1send$bytes

}

针对M/M/1队列:

两个指数分布的生成:

setInterArrivalTime1[newRandomVariable/Exponential]

$InterArrivalTime1setavg_[expr1/$lambda1]

setpktSize1[newRandomVariable/Exponential]

$pktSize1setavg_[expr100000.0/(8*$mu1)]

数据包的发送,将两个指数分布同数据发送间隔时间与数据大小绑定:

procsendpacket1{}{

globalnssrc1InterArrivalTime1pktSize1

settime[$nsnow]

$nsat[expr$time+[$InterArrivalTime1value]]"sendpacket1"

setbytes[exprround([$pktSize1value])]

$src1send$bytes

}

针对M/D/1队列:

数据包发送,将一个指数分布(生成见M/M/1)同数据发送间隔时间绑定:

procsendpacket1{}{

globalnssrc1InterArrivalTime1mu1

settime[$nsnow]

$nsat[expr$time+[$InterArrivalTime1value]]"sendpacket1"

setbytes[exprround([expr100000.0/(8*$mu1)])]

$src1send$bytes

}

D/D/1、M/M/1、M/D/1队列程序的其余共同部分:

#记录及计算:

procrecord{}{

globalsink1fholdrate1

setns[Simulatorinstance]

settime0.9

setbw0[$sink1setbytes_]

setnow[$nsnow]

if{$now==0}{

puts$f"$now0.0"

}else{

Puts$f"$now[expr(($bw0+$holdrate1)*8)/($now*1000000)]"

$sink1setbytes_0

setholdrate1[expr$bw0+$holdrate1]

}

$nsat[expr$now+$time]"record"

}

#启动:

$nsat0.01"record"

$nsat0.01"sendpacket1"

$nsat100.0"stop"

$nsat100.01"puts\"NSEXITING...\";$nshalt"

#结束:

procstop{}{

globalnsf

close$f

exit0

}

#运行:

puts"StartingSimulation..."

$nsrun

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1