APP下载

基于ODN的并行优化算法

2020-07-04王宇飞

科学与财富 2020年15期
关键词:线程复杂度端口

摘 要:随着光纤入户政策的持续推进,海量光纤使用在接入网中,它们被用来连接端局光配线架和ODN光交接箱上的光纤端口。由于施工标识的混乱和模糊,光纤端口的连接关系难以知晓,造成大量光纤废弃,, 无法实现精确的线缆资源管理,通过加入一种 基于ODN并行的优化算法,模拟出ODN中的ODF之间光纤对应关系,设置并行度并行进行多线程的计算,来达到时间复杂度的减少,算法的目的却在于能够有效的减少ODN中端口配对的时间复杂度。借助 c#语言进行编程仿真分析,仿真结果表明所提算法可以有效提高端口对应的效率。

关键词:ODN 并行计算;c#

0引言

随着科学技术的快速发展以及互联网技术的普及,近年来,我国众多企业为提升自身的市场核心竞争力,纷纷开展了机房资源的整合工作,致力于构建安全可靠的网络结构,实现服务质量的提升以及成本的控制管理[1]统计数据显示,通常运营商超过30%的光纤由于标识混乱、无法辨识造成资源沉淀无法使用,只能重新投资铺设,造成大量资源浪费。除了资源沉淀外,运营商还面临着光纤网络业务开通和管理的难题,比如,运维部门接到订单,派出施工人员到远端进行施工,但到现场才发现光纤已经分配完毕;对于局端是否需要扩容,运营商也只能采取定期巡查的模式,耗费大量人力物力。[2]

ODN(光分配网 络)是 基于 xPON(无 源 光 网络)设备的 FTTH(光纤到户)光缆网络,其作用是在 OLT(光线路终端)和 ONU(光网络单元)之間提供传输通道。根据国内FTTH 建设技术方案,OLT一般放 在 局 端,而 ONU 放 在 用 户 端,因 此 OLT、ODN 和 ONU 这3部分组成了 FTTH 系统。从功能上分,ODN 由馈线光缆、配线光缆、入户线光缆和光纤终端4个子系统组成。从产品形态上分,ODN可分为线缆类、光分配架(箱)类和分光与连接器类。由于 ODN 产品进入门槛较低,生产 ODN 产品的厂家达到数百家。同时 ODN 产品种类繁多,生产工艺与技术难易程度不同,造成市场上充斥着大量不合格产品,因此 ODN 产品质量控制尤为重要[3]FFTH投资和建设规模越来越大,也由此带来了很多问题。其中最重要的一个问题是接入网光配线网络(ODN)布线管理问题。具体问题概括为以下几个方面:(1)随着市场的需求不断扩大,运营商在普及FFTH期间铺设了海量的光纤光缆和设备,但由于缺乏规范统一的规划,人工操作资源准确率低,盲目扩容,导致大量资源被闲置,很多有效资源难以发挥作用,建网的成本一直居高不下。(2)业务发放流程复杂,缺乏竞争力,开通慢,自行连接无校验,返工率高,客户满意度难提升,难以有效支撑市场拓展。(3)资源数据人工维护,信息不匹配,刷新慢,错误率高;故障定位耗时长、效率低,难以支持精确化拓展。传统光纤、网元设备管理主要通过给每个连接点贴纸质标签来实现端口识别和路由管理。但FFTH网络中节点数量庞大,大量的节点端口标签依靠人工录入、查找、标记、抄录和盘点。运营商网络资源管理系统数据通过人工录入、修改。这些资源信息不仅错误率高,而且效率低下;工单派发、站点定位、资源归档等管理工作很难管控,统一高效;运维依赖客户投诉,被动运维。这些问题导致了每年各大运营企业将近10%的投资用于ODN维护管理,花了大量人力物力却带来了数量庞大的错误光纤连接记录和很低的光纤利用率。综上所述,ODN网络业务开通流程复杂,端口利用率低,管理难度大,在如今大发展FFTH的时期,运营商对高效稳定、方便管理维护的ODN网络需求十分迫切,ODN的变革变成了当务之急,智能ODN也是未来必然的发展趋势。[4]

因此本文基于智能ODN下,提出一种odf之间光纤对应关系的并行优化算法,能够有效的减少端口之间对应的计算复杂度。

1算法思想和设计

图1是电信局内机房光分配架(箱)类ODN的光纤连接方式,光分配架(箱)类ODN(光分配网 络)在 OLT(光线路终端)和 ONU(光网络单元)之间提供传输通道,通过代码模拟出它们之间端口对应关系。1和2的端口相连。ODF11,ODF12和ODF21,ODF22的端口采用光纤相连。端口的连接情况未知,1和2的端口外连交换机。交换机上行端口连到PC端,PC端通过软件找出1和2中端口连接情况。ODF11某号端口与和ODF21某号端口用某条线相连,ODF12某号端口与和ODF22某号端口用某条线相连。

ODF11∈ODF21       ODF12∈ODF22

时间复杂度是衡量算法执行效率的一种标准。但是,时间复杂度不等于性能。即便在不降低时间复杂度的情况下,也可以通过一些优化手段,提升代码的执行效率。即便是像10%、20%这样微小的性能提升,也是非常可观的。算法的目的就是为了提高代码执行效率。当算法无法再继续优化的情况下,我们可以通过并行计算来进行优化进一步提高执行效率。

为了利用并行计算求解一个计算问题,通常基于以下考虑:1.将计算任务分解成多个子任务,有助于同时解决;2.在同一时间,由不同的执行部件可同时执行多个子任务;3.多计算资源下解决问题的耗时要少于单个计算资源下的耗时。

从概念上来说,进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位,在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)自然我们也能理解一个进程至少包含一个线程。但是也不是可以随便的开线程,每一个线程默认情况下都会占用1M的栈空间(对于普通应用程序来说),在32位的Windows平台下可以给一个用户进程使用的程序最大在2G,那么也就是说在程序中使用的线程不能超过2000个,在实际测试中可以发现一般来说开1930左右个线程就会收到内存不足的异常,其实这个数量是绝对够用的,即使复杂的visual studio2013程序一般也只用了50个不到的线程。在一个进程中开启多个线程以后,我们就可以让一个程序能够同一间隙能够相对多个事情,比如可以一边接受用户响应一边进行一些基本的计算。在以前处理器还处于单核的时期,也就是说在同一时间内,处理器只能单独做一件事情。那么怎么实现之前说的多个线程同时执行呢。其实这个同时只是表面上的同时,实际上多个线程依次占用的是处理器的若干个时间片,线程轮流使用处理器资源,由于这个时间间隙非常短暂,在一个长的时间看来这个这个间隙几乎可以忽视似乎是几个线程同时得到了执行。并行计算不是一个很新的概念,其实它就是通过多线程把同一个任务分割成多个子任务进行并行计算的过程。我们需要手动分割单任务所依赖的算法和数据结构,放到不同的线程中去,然后通过线程同步的方法来统一汇总和处理这些线程的执行结果。之所以会需要并行计算是因为随着我们电脑的CPU不紧紧是升级频率而是更加侧重于核心横向扩展,我们的程序也就达不到随着CPU Scale-out而Scale-up的能力,因此,需要调整程序的逻辑使得一段原本完整的任务也分割成多个片段同时执行,这样就可以充分利用到多核心的优势从而提供程序的性能。

但是线程之间切换需要时间,我们开两个线程执行两个任务有可能会比一个单线程执行还要慢,其实即使对于单核的处理器都不一定,因为在实际的应用中我们的任务往往不可能从完完全全一直占用处理器资源,有很多时候我们需要等待IO响应或用户的响应,如果只是一个线程做事情的话处理器就会空闲。对于现在多核处理器来说,在同一时刻理论上可以在每一个处理器上都并行执行指令,多线程来提高运算速度就是我们可以利用的一个好方法。当然也不是说一个任务要执行20秒,我们在双核的机器上并行执行这个任务只需要10秒了,那是因为很多时候这个任务很难划分成两个分支来并行执行,如果每个指令都要依靠上个指令的执行结果,那么这样的操作很难在多个处理器上并行执行。但是,我们可以这样想,至少如果有两个这样任务的话,我们就可以完全利用多个处理器的优势来并行执行了。

根据上述的模型约束和理论基础,本文提出一种并行计算的算法,目的是有效的调高端口之间查找到的效率,伪代码如下:

查询相同端口的连接

1、初始化一个rst集合,用于存储连接信息

2、创建两个连接集合odf1Conn odf2Conn

3、For 一个以以最大线程数为5的进行多线程对odf1Conn的集合中每一个端口进行查找

4、End For

5、定义一个i∈odf1集合

6、让指定的odf1[i] 满足 odf1[1] 的端口属于打开状态,即odf1[i] 不等于-1

7、For 一个以以最大线程数为5的进行多线程对odf2Conn的集合中每一个端口进行查找

8、End For

9、定义一个j∈odf2集合

10、让指定的odf2[j] 满足 odf2[j] 的端口属于打开状态,即odf2[j] 不等于-1

11、在計算过程中如果odf1[i] 等于odf2[j],则满足条件

12、将满足条件的结果以i,j,odf2[j] 的字符串形式添加到rst集合中

13、计算完成后,返回rst集合

算法1-3 行进行初始化,对返回集合rst和连接集合odf1Conn,odf2Conn进行初始化

算法4-5 行进行多线程计算循环,并判断odf1Conn的端口是否打开

算法6-7 行进行多线程计算循环,并判断odf2Conn的端口是否打开

算法8-9 行进行在判断如果odf1[i] 等于odf2[j],则满足条件,并将计算结果添加到rst集合中去

算法10行 返回rst计算结果

2算法验证

这个是任意生产的的一次结果,图表示两组od11,odf21 中odf11 的第一号端口和odf21 的第46 号端口通过第80号线相连,odf11 的第3号端口和odf21 的第138 号端口通过第137号线相连。正常是计算是N*N,并行计算之后, 变成了N*N/m*n,mn 就是并行度,指令或数据并行执行的最大数目,提高并行度的一个显著优点就是可以最大限度地利用计算资源或存储资源。设置每个设备有144个端口,能连接成功的最大端口数是程序里面的变量,我们可以通过改变能连接成功的最大端口数来来对比并行计算前后时间复杂度之间的变化,因而体现并行计算是否能够有效的减少端口之间对应的计算复杂度,是否能加入实践的可行性。

从图看出优化后所用的时间复杂度的优越性随着最大端口数的增加而增加,优化前后所花费的时间差也随着端口数量的增加而增加,在最大端口数为4的情况下优化的效果并不是很明显,但是随着最大端口是的逐渐提高,并行计算的优越性逐渐体现出来,理论上不考虑到进程间的相互影响运行环境等影响下,并行计算后的运行速度可以达到之前的5倍。

3结束语

本文研究了基于ODN的配线架中端口对应效率过低难以准确统计, 无法实现精确的线缆资源管理的问题,提出一种基于并行计算的优化算法,通过模拟仿真能得到优化前后配对指定端口数所花费的时间进行比较。结果表明基于ODN的并行优化算法能够有效的减少ODN中端口配对的时间复杂度。本文提出的算法对未来机房改善的研究具有一定的借鉴作用。

参考文献:

[1] 穆乐. 构建节能高效的通信机房管理模式[J]. 中国新通信, 2019, 21(04):18.

[2] 吕剑锋. Sman ODN基于RFID推动光网智能化[J]. 通信世界, 2012(24):34-34.

[3] 魏忠诚, 张希, 陈玺,等. ODN产品质量控制探讨[J]. 光通信研究, 2013(06):28-31.

[4] 张卫斌, 关映雪. 智慧融入管道 中兴通讯eODN成功破解无源光网络发展困局[J]. 通信世界, 2012(17):55.

作者简介:

王宇飞(1996-)男,汉,江苏省南京市,学历:在读硕士,研究方向:光通信.

猜你喜欢

线程复杂度端口
一种端口故障的解决方案
一种低复杂度的惯性/GNSS矢量深组合方法
端口阻塞与优先级
求图上广探树的时间复杂度
浅谈linux多线程协作
某雷达导51 头中心控制软件圈复杂度分析与改进
初识电脑端口
出口技术复杂度研究回顾与评述
8端口IO-Link参考设计套件加快开发速度
基于上下文定界的Fork/Join并行性的并发程序可达性分析*