# mesh_switch **Repository Path**: zip0229/mesh_switch ## Basic Information - **Project Name**: mesh_switch - **Description**: 非规则mesh晶上网络仿真,采用omnet++ - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-09-26 - **Last Updated**: 2025-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: 博士课题 ## README # mesh_switch 这是在tree_switch基础上开发的mesh_switch,主要用于性能对比实验,采用OMNeT++开发,采用逐跳路由方式 ## 1. 基础功能点 - 拓扑结构:一种特殊的mesh结构 - 路由方式:逐跳进行路由判断 - 流量注入:uniform_random、hotspot - 节点结构:带输入缓存 - 数据信息统计: 1. 队列长度和收包率的关系 2. 队列长度和吞吐率的关系 3. 注入率和平均传输时延的关系 4. 不同LTR下的吞吐率、时延、和跳数 5. 均匀注入和泊松注入的区别 6. 队列利用率的热力图 ## 2. 详细设计 ### 2.1 mesh network - Channel:datarate = 160Gbps; - Adie共有:14*4 = 64个 - Xdie共有:16*16 - 4 = 252个 ### 2.2 die - 用于描述各种die,主要分为Adie(周边)、Xdie(中心) - parameter - bool die_enable - int x - int y - double die_delay - int queue_len - gates - inout north - inout south - inout west - inout east - 统计数据 - 队列利用率:Percent - 方法 public: - Die() - ~Die() protected: - initialize() - handleMessage(cMessage *msg) - routeMessage(Packet *msg) - refreshDisplay() ### 2.3 outer - 用于生成流量和接收流量 - parameter - string send_mode - double send_interval - int x - int y - bool outer_enable - double ltr_rate - gates - inout outer_port - 统计数据 - 包时延 Latnecy - 发送包数量 Send - 接收包数量 Recv - 发送bit数 SendBit(实际上是byte) - 接收bit数 RecvBit(实际上是byte) - 跳数值 Hop - 发送时间 SendTime - 接收时间 RecvTime - 方法 protected: - initialize() - handleMessage(cMessage *msg) - generateMessage() - refreshDisplay() ## 3. 脚本运行的步骤 1. 修改参数 ```bash sed -i 's/0.00000000005/0.00000000006/g' omnetpp.ini sed -i 's/2048/256/g' omnetpp.ini ``` 2. 执行运行指令 ```bash ./mesh_switch -u Cmdenv ``` 3. 保存输出结果 ```bash output-vector-file = "666.vec" output-scalar-file = "666.sca" ``` ## 4. 基于脚本的试验 由于单独运行再整理有以下缺点:1. 每次运行花费的时间较长;2. 每次运行后的数据文件都会被覆盖 因此采用脚本的方式批处理运行,脚本先进行第一次实验:首先验证大量发包下的吞吐率是否符合要求,验证速率为160Gbps保持不变,变化验证队长为256\*300Bytes、512\*300Bytes、1024\*300Bytes、2048\*300Bytes,脚本代码如下所示 ```bash rm -rf test* ./mesh_switch -u Cmdenv mkdir test_256_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_256_160Gbps sed -i 's/256/512/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_512_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_512_160Gbps sed -i 's/512/1024/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_1024_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_1024_160Gbps sed -i 's/1024/2048/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_2048_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_2048_160Gbps ``` 目前存在的问题: 1. 每次仿真参数交接时,terminal等待的时间比较长,此时是在整理实验数据吗??反正等等能用 2. 经过验证,数值基本正确 | | 原始结果 | 采用脚本运行结果 | | -------------- | ---------------- | ---------------- | | 256\*300Bytes | 4.622030628 Tbps | 4.65087 Tbps | | 512\*300Bytes | 4.583803207 Tbps | 4.63928 Tbps | | 1024\*300Bytes | 4.511499848 Tbps | 4.61784 Tbps | | 2048\*300Bytes | 4.374290312 Tbps | 4.57134 Tbps | 实验方向: 存在问题:每次生成的数据文件约为7GB,同时生成许多导致系统空间占用过大,因此决定逐批生成,生成顺序如下 mesh:256 - 512 - 1024 - 2048,统计平均吞吐率(RecvBit:vector)、时延(Latnecy:vector)、跳数(Hop:vector) tree(80G链路):256 - 512 - 1024 - 2048,统计平均吞吐率(RecvBit:vector)、时延(Latnecy:vector)、跳数(Hop:vector) tree(160G链路):256 - 512 - 1024 - 2048,统计平均吞吐率(RecvBit:vector)、时延(Latnecy:vector)、跳数(Hop:vector) 1. 完成现有mesh、tree结构的大量发包数据统计,运行参数变化如下 mesh结构如下 ```bash #mesh rm -rf test* #len = 256 ./mesh_switch -u Cmdenv mkdir test_256_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_256_160Gbps sed -i 's/0.00000000000625/8.33333333333333E-12/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_256_120Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_256_120Gbps sed -i 's/8.33333333333333E-12/0.0000000000125/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_256_80Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_256_80Gbps sed -i 's/0.0000000000125/0.000000000025/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_256_40Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_256_40Gbps sed -i 's/0.000000000025/0.00000000005/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_256_20Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_256_20Gbps sed -i 's/0.00000000005/0.0000000001/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_256_10Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_256_10Gbps sed -i 's/0.0000000001/0.0000000002/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_256_5Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_256_5Gbps sed -i 's/0.0000000002/0.000000001/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_256_1Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_256_1Gbps #len = 512 sed -i 's/256/512/g' omnetpp.ini sed -i 's/0.000000001/0.00000000000625/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_512_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_512_160Gbps sed -i 's/0.00000000000625/8.33333333333333E-12/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_512_120Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_512_120Gbps sed -i 's/8.33333333333333E-12/0.0000000000125/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_512_80Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_512_80Gbps sed -i 's/0.0000000000125/0.000000000025/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_512_40Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_512_40Gbps sed -i 's/0.000000000025/0.00000000005/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_512_20Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_512_20Gbps sed -i 's/0.00000000005/0.0000000001/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_512_10Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_512_10Gbps sed -i 's/0.0000000001/0.0000000002/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_512_5Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_512_5Gbps sed -i 's/0.0000000002/0.000000001/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_512_1Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_512_1Gbps #len = 1024 sed -i 's/512/1024/g' omnetpp.ini sed -i 's/0.000000001/0.00000000000625/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_1024_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_1024_160Gbps sed -i 's/0.00000000000625/8.33333333333333E-12/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_1024_120Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_1024_120Gbps sed -i 's/8.33333333333333E-12/0.0000000000125/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_1024_80Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_1024_80Gbps sed -i 's/0.0000000000125/0.000000000025/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_1024_40Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_1024_40Gbps sed -i 's/0.000000000025/0.00000000005/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_1024_20Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_1024_20Gbps sed -i 's/0.00000000005/0.0000000001/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_1024_10Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_1024_10Gbps sed -i 's/0.0000000001/0.0000000002/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_1024_5Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_1024_5Gbps sed -i 's/0.0000000002/0.000000001/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_1024_1Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_1024_1Gbps #len = 2048 sed -i 's/1024/2048/g' omnetpp.ini sed -i 's/0.000000001/0.00000000000625/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_2048_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_2048_160Gbps sed -i 's/0.00000000000625/8.33333333333333E-12/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_2048_120Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_2048_120Gbps sed -i 's/8.33333333333333E-12/0.0000000000125/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_2048_80Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_2048_80Gbps sed -i 's/0.0000000000125/0.000000000025/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_2048_40Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_2048_40Gbps sed -i 's/0.000000000025/0.00000000005/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_2048_20Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_2048_20Gbps sed -i 's/0.00000000005/0.0000000001/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_2048_10Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_2048_10Gbps sed -i 's/0.0000000001/0.0000000002/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_2048_5Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_2048_5Gbps sed -i 's/0.0000000002/0.000000001/g' omnetpp.ini ./mesh_switch -u Cmdenv mkdir test_2048_1Gbps cp -r /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/mesh_switch/src/test_2048_1Gbps ``` tree结构如下 ```bash #tree rm -rf test* #len = 256 ./tree_switch -u Cmdenv mkdir test_256_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_256_160Gbps sed -i 's/0.00000000000625/8.33333333333333E-12/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_256_120Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_256_120Gbps sed -i 's/8.33333333333333E-12/0.0000000000125/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_256_80Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_256_80Gbps sed -i 's/0.0000000000125/0.000000000025/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_256_40Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_256_40Gbps sed -i 's/0.000000000025/0.00000000005/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_256_20Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_256_20Gbps sed -i 's/0.00000000005/0.0000000001/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_256_10Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_256_10Gbps sed -i 's/0.0000000001/0.0000000002/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_256_5Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_256_5Gbps sed -i 's/0.0000000002/0.000000001/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_256_1Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_256_1Gbps #len = 512 sed -i 's/256/512/g' omnetpp.ini sed -i 's/0.000000001/0.00000000000625/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_512_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_512_160Gbps sed -i 's/0.00000000000625/8.33333333333333E-12/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_512_120Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_512_120Gbps sed -i 's/8.33333333333333E-12/0.0000000000125/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_512_80Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_512_80Gbps sed -i 's/0.0000000000125/0.000000000025/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_512_40Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_512_40Gbps sed -i 's/0.000000000025/0.00000000005/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_512_20Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_512_20Gbps sed -i 's/0.00000000005/0.0000000001/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_512_10Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_512_10Gbps sed -i 's/0.0000000001/0.0000000002/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_512_5Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_512_5Gbps sed -i 's/0.0000000002/0.000000001/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_512_1Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_512_1Gbps #len = 1024 sed -i 's/512/1024/g' omnetpp.ini sed -i 's/0.000000001/0.00000000000625/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_1024_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_1024_160Gbps sed -i 's/0.00000000000625/8.33333333333333E-12/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_1024_120Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_1024_120Gbps sed -i 's/8.33333333333333E-12/0.0000000000125/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_1024_80Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_1024_80Gbps sed -i 's/0.0000000000125/0.000000000025/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_1024_40Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_1024_40Gbps sed -i 's/0.000000000025/0.00000000005/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_1024_20Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_1024_20Gbps sed -i 's/0.00000000005/0.0000000001/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_1024_10Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_1024_10Gbps sed -i 's/0.0000000001/0.0000000002/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_1024_5Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_1024_5Gbps sed -i 's/0.0000000002/0.000000001/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_1024_1Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_1024_1Gbps #len = 2048 sed -i 's/1024/2048/g' omnetpp.ini sed -i 's/0.000000001/0.00000000000625/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_2048_160Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_2048_160Gbps sed -i 's/0.00000000000625/8.33333333333333E-12/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_2048_120Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_2048_120Gbps sed -i 's/8.33333333333333E-12/0.0000000000125/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_2048_80Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_2048_80Gbps sed -i 's/0.0000000000125/0.000000000025/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_2048_40Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_2048_40Gbps sed -i 's/0.000000000025/0.00000000005/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_2048_20Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_2048_20Gbps sed -i 's/0.00000000005/0.0000000001/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_2048_10Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_2048_10Gbps sed -i 's/0.0000000001/0.0000000002/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_2048_5Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_2048_5Gbps sed -i 's/0.0000000002/0.000000001/g' omnetpp.ini ./tree_switch -u Cmdenv mkdir test_2048_1Gbps cp -r /home/peng/omnetpp-5.5.1/samples/tree_switch/src/results/. /home/peng/omnetpp-5.5.1/samples/tree_switch/src/test_2048_1Gbps ``` 2. 完成tree结构160Gbps下的数据统计 ```c++ void Die::handleMessage(cMessage *msg) { // 若是self-packet if (msg->isSelfMessage()) { for (int i = 0; i < gateSize("die_port"); i++) { EV << "entering for (i = 0; i < gateSize(die_port); i++) " << endl; // 若msg是endServiceMsg if (msg == endServiceMsg[i]) { EV << "msg == endServiceMsg[i] " << endl; EV << "endServiceMsg[i] is " << endServiceMsg[i] << endl; EV << "i is " << i << endl; EV << "msgServiced[i] is " << msgServiced[i] << endl; routeMessage(msgServiced[i]); if (every_queue[i].isEmpty()) { EV << "entering every_queue[i].isEmpty()" << endl; msgServiced[i] = nullptr; } else { EV << "entering every_queue[i].pop()" << endl; msgServiced[i] = check_and_cast(every_queue[i].pop()); // 下一跳即将发送给oA,速率应为160Gbps if (msgServiced[i]->getHopcnt() == msgServiced[i]->getRouteArraySize() - 1) { scheduleAt(simTime()+((8 * msgServiced[i]->getField())* DELAY) / 2, endServiceMsg[i]); } // 下一跳即将发送给die,速率应为80Gbps else { scheduleAt(simTime()+(8 * msgServiced[i]->getField()) * DELAY, endServiceMsg[i]); // 160Gbps测试 // scheduleAt(simTime()+((8 * msgServiced[i]->getField())* DELAY) / 2, endServiceMsg[i]); } EV << "finish every_queue[i].pop()" << endl; } break; } } } // 若是正常packet else { int gate_num = msg->getArrivalGate()->getIndex(); // 若gate_num口没被服务,则直接服务 if (!msgServiced[gate_num]){ EV << msg->getSenderModule()->getName() << endl; EV << "entering if (!msgServiced[gate_num]) " << endl; msgServiced[gate_num] = check_and_cast(msg); EV << "pass msgServiced[i] " << endl; // 发送至oA的包,应为160Gbps if (msgServiced[gate_num]->getHopcnt() == msgServiced[gate_num]->getRouteArraySize() - 1) { scheduleAt(simTime()+((8 * msgServiced[gate_num]->getField())* DELAY) / 2, endServiceMsg[gate_num]); } // 下一跳即将发送给die,速率应为80Gbps else { scheduleAt(simTime()+(8 * msgServiced[gate_num]->getField()) * DELAY, endServiceMsg[gate_num]); // 160Gbps测试 // scheduleAt(simTime()+((8 * msgServiced[i]->getField())* DELAY) / 2, endServiceMsg[i]); } EV << "pass scheduleAt " << endl; } // 若i口正在被服务,则入队 else { if (every_queue[gate_num].getLength() < par("queue_len").intValue()) { every_queue[gate_num].insert(msg); } else { bubble("chaoguole"); delete msg; } } } sum = 0; // 获取每个die的队列数量 int queue_number_a_x = gateSize("die_port"); // 统计某个die中的所有队列中的利用率 for (int i = 0; i < queue_number_a_x; i++) { every_queue_percent[i] = (double)every_queue[i].getLength() / (double)par("queue_len").intValue(); EV << "every_queue_percent " << i << "is " << every_queue_percent[i] << endl; sum = sum + every_queue_percent[i]; EV << "sum is " << sum << endl; } // 统计die的总体利用率 double percent = (double)sum / queue_number_a_x; emit(percentageSingal, percent); } ```