[发明专利]基于容器线程管理技术的大规模网络节点拟真方法在审
| 申请号: | 202210692183.2 | 申请日: | 2022-06-17 |
| 公开(公告)号: | CN115098220A | 公开(公告)日: | 2022-09-23 |
| 发明(设计)人: | 史琰;曹琦轩;白卫岗;盛敏;李建东;李浩然;周笛;朱彦;刘俊宇;郑阳;文娟 | 申请(专利权)人: | 西安电子科技大学 |
| 主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F9/54;G06F9/448;G06F9/50;H04L41/14 |
| 代理公司: | 陕西电子工业专利中心 61205 | 代理人: | 田文英;王品华 |
| 地址: | 710071*** | 国省代码: | 陕西;61 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 容器 线程 管理 技术 大规模 网络 节点 方法 | ||
1.一种基于容器线程管理技术的大规模网络节点拟真方法,其特征在于:多线程为同一个发送队列并发出队与入队分组、根据任务动态分配与管理线程、根据发送队列的分组流强度动态调整接收处理线程数量;该拟真方法的具体步骤包括如下:
步骤1,调度网络拟真场景内所有节点:
在宿主机中创建与网络拟真场景中网络节点一一对应的容器,拷贝所有节点的可执行文件到容器中,加载并执行可执行文件;
步骤2,创建所有节点的共享内存区:
在宿主机的共享内存目录中创建内存映射文件作为共享内存区,并将此内存映射文件映射到所有节点的地址空间;
步骤3,多线程通过发送队列进行多输入-多输出分组流的传输:
步骤3.1,每个节点在共享内存上创建发送队列,并为该节点发送队列设置一个尾索引和一个头索引,头索引指向的队列单元是分组出队位置,尾索引指向的队列单元是分组入队位置;
步骤3.2,当多个线程同时向一个发送队列入队时,均通过原子操作确定入队索引值;前一个执行原子操作的线程在将被请求入队的发送队列尾索引值,作为该线程的入队索引值的同时,将该发送队列尾索引值加1,后一个执行原子操作的线程将前一个线程更新过的发送队列尾索引作为该线程的入队索引值,以此类推,每一个后执行的线程入队索引值均比前一个线程的入队索引值大1,并通过其入队索引值入队分组到发送队列;
步骤3.3,当多个线程同时从一个发送队列出队时,均通过原子操作确定出队索引值;前一个执行原子操作的线程在将被请求出队的发送队列头索引值,作为该线程的出队索引值的同时,将该发送队列头索引值加1,后一个执行原子操作的线程将前一个线程更新过的发送队列头索引作为该线程的出队索引值,以此类推,每一个后执行的线程出队索引值均比前一个线程的出队索引值大1,并通过其出队索引值从发送队列出队分组;
步骤4,根据任务动态分配与管理线程:
步骤4.1,每个节点创建一个用于管理动态线程的空闲线程管理队列,通过该节点空闲线程管理队列保存节点所有动态线程的线程号、线程状态和函数指针;
步骤4.2,每个节点通过为该节点动态线程设置有限状态机,在为该节点动态线程分配任务后,使其进入任务执行状态,在该节点动态线程执行完任务后,阻塞该动态线程,使其进入空闲状态;
步骤4.3,每个节点设置一个其处于空闲状态的动态线程的最大数量,管理该节点处于空闲状态的动态线程的数量始终小于该最大数量;该节点提前创建好对应数量的处于空闲状态的动态线程,并保存其信息到该节点空闲线程管理队列;当有该节点负责处理的新任务到达时,该节点将该任务分配给该节点的一个处于空闲状态的动态线程;当该节点所有动态线程的状态均为任务执行状态时,该节点新创建一个处于空闲状态的动态线程;当该节点通过空闲线程管理队列检查到处于空闲状态的动态线程数量大于空闲状态的动态线程最大数量时,该节点销毁多余的空闲状态动态线程;
步骤5,接收节点接收处理一个或多个源节点发送队列中的分组:
步骤5.1,每个节点创建一个用于保存该节点需要接收处理的一个或多个源节点的发送队列信息的注册表,发送队列信息具体包括已注册的发送队列数量、标记发送队列唯一序号的发送队列号以及标记发送队列的分组入队时刻的发送队列更新时间;源节点在通过其发送队列发送分组前,将该源节点发送队列信息保存到接收节点的注册表,向接收节点注册发送队列;
步骤5.2,一个或多个源节点在向接收节点注册其发送队列后,通知接收节点从该接收节点的空闲线程管理队列中获取一个用于接收处理该源节点发送队列的接收处理线程;
步骤5.3,接收节点的接收处理线程通过轮询接收节点注册表中一个或多个源节点的发送队列号,查询到接收节点需要接收处理的一个或多个发送队列,并从各发送队列中接收处理分组;
步骤6,根据发送队列的分组流强度动态调整接收处理线程数量:
步骤6.1,源节点在发送队列拥塞时通知接收节点调度更多的接收处理线程;
步骤6.2,接收节点设置一个用于判断发送队列的分组流是否中断的队列中断阈值,并在检查发送队列为空时,将该发送队列的更新时间与当前时间进行对比,若当前时间与发送队列更新时间的差值大于队列中断阈值,则注销注册表中此发送队列的信息,不再从该发送队列接收处理分组;
步骤6.3,接收节点的接收处理线程在轮询注册表接收所有发送队列时,若检查所有发送队列均为空,则判定接收节点的其他接收处理线程已提前轮询处理完所有发送队列,接收节点的接收处理线程数量过多,并将自身回收到空闲线程管理队列。
2.根据权利要求1所述的基于容器线程管理技术的大规模网络节点拟真方法,其特征在于:步骤4中所述节点设置处于空闲状态的动态线程的最大数量为2;当节点检查空闲状态的动态线程数量为0后,创建1个处于空闲状态的动态线程;当节点处于空闲状态的动态线程数量大于2时,节点销毁多余的空闲状态动态线程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210692183.2/1.html,转载请声明来源钻瓜专利网。





