本文对消息创建报告CreatedMessagesReport进行统计,给出创建消息的分布图。
1. CreatedMessagesReport
CreatedMessagesReport用于记录每个新创建消息的详细信息,其格式如下:
# time ID size fromHost toHost TTL isResponse
32.0000 M1 1834 n32 n9 2 N
58.0000 M2 1273 n16 n52 2 N
84.0000 M3 1122 n21 n9 2 N
112.0000 M4 1257 n40 n52 2 N
144.0000 M5 1671 n58 n38 2 N
2. 新创建消息分布
关于消息事件产生器原理性东西,请参考之前博文《消息事件产生器MessageEventGenerator 》。
2.1 配置文件
配置文件相关条目如下:
Scenario.endTime = 432000
Events2.class = [MessageEventGenerator; OneToEachMessageGenerator; OneFromEachMessageGenerator; MessageBurstGenerator]
Events2.interval = 25,35
Events2.size = 1k,2k
Events2.hosts = 0, 79
Events2.tohosts = 0, 79
Events2.prefix = M
2.2 MessageEventGenerator
共创建了14636个消息。新创建消息的分布如下图,比如,在所有新创建的消息中,节点0产生193个消息(图中绿色叉叉表示),消息的目标节点为0的205个(图中红色加号表示)。蓝线表示均值,可见消息分布并没有集中在均值,这大概是The ONE产生消息时加入了一些限制,如源节点和目的节点不能一样。
2.3 OneToEachMessageGenerator
从字面上理解,OneToEachMessageGenerator似乎是每个interval,随机选取一个源节点,分别产生新消息给tohosts。看了源代码,才发现不是,仿真结果更验证了这点。本例tohosts为[0,79),只有51个源节点产生消息,目的节点只有74个(最多一个消息到达某个目的节点)。注:下图的x轴不完整。
2.4 OneFromEachMessageGenerator
同理,从字面上理解,OneFromEachMessageGenerator
似乎是在每个interval
,随机从tohosts
选择一个目的节点,每个源节点hosts
产生一消息给他。看了源代码,才发现不是,仿真结果更验证了这点。本例tohosts
为[0,79)
,74个源节点产生消息(最多产生一个消息),目的节点只有51个。注:下图的x轴不完整。
2.5 MessageBurstGenerator
MessageBurstGenerator
跟字面上理解的一样,产生大量消息,每个间隔interval
,每个源节点hosts
为每个tohosts
产生一个消息。产生的CreatedMessagesReport
有3+G,太大了,就没绘图。
3551072899 infocom06_432000_MessageBurstGenerator_CreatedMessagesReport.txt
522946 infocom06_432000_MessageEventGenerator_CreatedMessagesReport.txt
2359 infocom06_432000_OneFromEachMessageGenerator_CreatedMessagesReport.txt
2359 infocom06_432000_OneToEachMessageGenerator_CreatedMessagesReport.txt
产生的CreatedMessagesReport
部分内容如下,共产生90205518个消息(参考这个等式:432000/30 7978 = 88732800)。
# time ID size fromHost toHost TTL isResponse
32.0000 M1 1514 n0 n1 2 N
...
32.0000 M78 1631 n0 n78 2 N
32.0000 M79 1543 n1 n0 2 N
....
32.0000 M156 1125 n1 n78 2 N
...
431971.0000 M90205516 1146 n78 n75 2 N
431971.0000 M90205517 1862 n78 n76 2 N
431971.0000 M90205518 1678 n78 n77 2 N
3. 脚本文件
写一个简单shell脚本分析CreatedMessagesReport(主要用到命令有:cut, sed, uniq, wc),用gnuplot绘图。