容错性能

2024-05-18

容错性能(共7篇)

容错性能 篇1

摘要:针对机会网络中传输数据包的突发性集中丢失问题,提出一种基于交织编码的容错传输算法。为了评估算法性能,从理论分析和模拟实验两个方面对其进行较为全面的分析。在理论方面,从不可恢复概率、数据恢复误差、传输延时、复杂度等方面对算法进行了分析;在模拟实验方面,通过数据分散、数据恢复、定量误差等几组实验对算法进行了分析。分析结果表明,复杂度低,易于实现,能有效恢复丢失的数据,而且在连续丢失数据包的恶劣干扰情况下,也保持了良好性能,可以有效恢复丢失的数据。

关键词:机会网络,交织编码,性能评估

0 引 言

机会网络是针对无线网络链路频繁中断、端到端连接不能保证以及传输延时大的情况下仍然能够联网并提供信息传输服务的一种无线自组织网络。机会网络是一种结合具体的网络形式和网络通信新技术的复合型新型网络,对普适计算具有重要意义[1,2]。

在机会网络中,过短的链接时间导致节点驻留大量信息,因此在转发时需要多数据包连续发送以完成信息的单跳传输[3]。潜在的问题是,一旦发生突发性拥塞很可能导致数据包的集中丢失,而确认重传机制等传统方法很难解决该问题。野生动物监控是机会网络的典型应用之一,普林斯顿大学设计的ZebraNet对野生斑马的研究表明,严重的丢包问题导致网络收集到的完整数据非常少[4]。

考虑到机会网络拥塞导致的数据丢失、网络吞吐量降低等问题,不少学者对此进行了研究并取得了一定的研究成果。文献[5]提出了基于随机现行网络编码的机会转发机制;文献[6]提出了一种基于擦除编码(EC)的机会转发机制;文献[7]提出了一种基于擦除编码和复制的混合式路由机制(H-EC)。这些文献的共同点在于,建立网络传输模型和传输延时模型,提出拥塞控制机制,降低网络拥塞的概率,而对于突发性拥塞引起的丢包问题如何处理并没有进行深入的研究。针对该问题,利用机会网络中通过多数据包转发的数据具有很强时间相关性的特点,文献[8]提出了基于交织编码思想的容错数据传输算法。算法核心在于对待发送数据进行交织编码,利用相邻数据估计丢失数据从而提高机会网络中数据传输的容错性。

文献[8]较为详细地描述了算法实现细节,本文对算法性能进行了全面分析。从理论分析和模拟实验两个方面对算法进行了评估。在理论分析方面,从不可恢复概率证明、数据恢复误差分析、交织传输延时分析和复杂度分析等几个方面入手;在模拟实验方面,通过数据分散实验、数据恢复对比实验和恢复误差实验等几组实验进行分析。分析结果表明,算法复杂度低、易于实验,在丢包严重的情况下仍能保持良好的性能。这些都表明算法具有很强的实用性。

1 基于交织编码的容错传输算法[8]

文献[8]中提出的算法可以概述如下:首先,在节点本地上查询与之存在过链接的节点平均链接时间长度,链接时间越长交织深度越大。然后,通过本文提出的交织编码规则对交织深度内要发送的数据包重新排列。最后,当节点收到转发的数据包后进行逆交织排序,对缺失数据包内的数据进行正交估计,恢复完整的数据。该算法对网络获取一定精度的完整数据集提供了保证,同时不要求参与通信的双方进行额外的信息交互,节约了短暂的链接时间。

该算法由运行在发送节点的交织发送算法和运行在接收节点的逆交织重排算法两部分组成。同时,接收节点将在重排后,利用分段拉格朗日插值算法对丢失的数据进行插值恢复。

1.1 基于交织编码的发送算法

在机会网络中由于连续发送数据导致的集中丢包问题可以如图1所示。假定机会网络中每个发送的分组(数据包)携带5字节数据,则驻留25个字节的节点需要5个分组将数据全部发送出去。如果发送过程中出现短时信号衰落导致丢失一个数据包,那么丢失的数据在无确认重传机制的网络中将无法恢复。可以看出,信号衰落的持续时间短,丢失的数据比较集中。虽然节点发送的数据具有较强的时间相关性,由于丢失数据与接收数据之间时间距离过长,很难用估值算法恢复数据。

基于交织编码进行传输的思路是将可能集中丢失数据包所携带的数据进行分散,以缩短丢失数据与接收数据之间的时间相关距离,如图2所示。假定有25个字节待发送,每个数据包携带5个字节,每个字节按时间先后编号为1到25。在发送节点的内存中,25个字节以行的方式顺序排列,但在发送时则采用列的方式顺序发送。即:交织后第一个发送的报文所携带的数据为字节1、6、11、16和21。可以看出,经交织编码后,接收节点所接收单个数据包内每个样本之间的时间距离为5。因此,当信道等原因导致集中报文丢失时,出错样本被均匀分散在时间轴的不同位置,从而缩短丢失数据的集中长度,有利于数据恢复的准确度。

上述交织发送算法可以描述如下:

上述算法运行于机会网络中发送数据的节点上,主要对发送数据进行交织发送,分散丢失的数据。某些情况下,待传输数据是高维数据组合,如:一段轨迹数据需要经度、纬度、海拔等三个数据来共同表示同一个坐标点,可以将多维数据每一项分别存储到不同的缓冲矩阵进行交织编码。

1.2 数据恢复算法

根据交织编码规则,编码后的数据中出错数据与健康数据之间的时间距离不超过相关长度,就可以通过插值算法对丢失的数据进行有效恢复。文献[8]采用分段拉格朗日插值算法对丢失数据包中含有的数据进行恢复。

针对接收数据中有数据丢失的数据恢复算法描述如下:

数据恢复算法运行于机会网络中接收数据的节点上,节点首先根据包序号确认丢了哪些数据包,然后对接收缓冲的数据进行逆交织排序,最后根据上述分段拉格朗日插值算法对丢失的数据进行恢复。

2 性能分析

针对提出的传输算法,从理论分析和模拟实验两个方面对其性能进行了综合分析。

2.1 理论分析

2.1.1 交织性能分析

设节点发送的数据之间的相关距离为d,节点发送的一个数据包中负载的数据长度为lpacket,且lpacket<d,因为连续丢失d个数据,插值算法所恢复的数据不满足误差要求。对机会网络中节点的发送信道进行Bernolli建模,一个数据包发送后不能被接收节点正确完整接收的概率为Pf ,相反,能被接收节点正确完整接收的概率为1-Pf。不难得出,机会网络中发送的数据不可被接收节点恢复的概率为:Ρf|dlpacket|

采用交织算法后,连续的数据被分散,接收节点除了连续丢失d个数据包,其余情况下恢复的数据均能满足误差要求。由此得出定理1。

定理1 假设机会网络节点发送数据的相关距离为d,信道的丢包率为Pf,那么采用交织算法,接收节点不可恢复数据的概率为Pfd

证明:采用Bernolli概率统计模型进行信道丢包建模,那么每次信道丢包随机试验只有两种结果:丢(D)与不丢(D′) 。在定理假设中,节点通过交织发送结束,连续的d个样本将会均匀分布在d个不同的数据包中。又由于信道丢包是无记忆的,即前后两次丢包试验之间是独立的。

因此:Ρ(DDD)=dΡ(D)=Ρfd,证毕。

又由于Ρfd/Ρfdlpacket=Ρfd-dlpacket1,可以看出在发送的数据自相关度不变的情况下,使用交织发送算法,可以使丢失数据的可恢复概率提高。因此,信道突发性的移动衰落或由拥塞引起的集中性丢包,采用交织发送算法能明显提高数据的可恢复性。

2.1.2 数据恢复误差分析

假设机会网络某节点所发送数据中有L个连续数据因信道衰落或拥塞发生了集中式丢失。采用分段拉格朗日插值算法,可以得:

记机会网络节点发送缓冲区中的相应数据为f(iT),σ= f(iT)-Φ(iT)为恢复后数据的误差。为了符合数据样本之间时间距离越长相关度越小这一特征,假设发送数据的自相关函数为一个负指数函数e-αt,其中α为相关强度因子,记信号的平均能量为Es。则有:

从式(4)可以看出,连续丢失的数据长度L越短,采用插值算法恢复数据所产生的误差就会越小。因此,在采用交织发送算法可有效缩短连续丢失数据长度的基础上,对连续丢失的数据进行插值恢复精度较高。

2.1.3 交织传输延时分析

相比于前向纠错码和差错控制包,基于交织编码的数据传输不会在报文中附加其他码字,因此也不会带来额外的计算和传输开销。一个潜在缺点是,虽然更深的交织深度具有更好的容错性能,但同时也使接收端收到完整连续数据的延时增加。

为便于分析交织传输引起的延时进行分析,假设网络传输介质的延时为0。本文提出算法中交织编码的深度d=m,宽度为n。记网络中节点的通信带宽为R,如果发送缓冲矩阵中一个元素代表一个字节,那么交织所产生的延时为:D= (mn)/R。由此可见,在待传送数据维数不变的情况下,缩小发送缓冲宽度可以减小交织传输带来的延时。

2.1.4 复杂度分析

本文提出的算法由发送算法和恢复算法两部分构成,二者是顺序加和关系。其中:发送算法主要是对内存(即:发送缓冲)的读写顺序进行改变,其复杂度为线性。

恢复算法在接收端采用拉格朗日插值算法进行数据恢复,公式如下:

y(x)=k=0n-1[j=0jkn-1x-xjxk-xj]f(xk)

式中x0,x1,…,xnf(x0),f(x1),…,f(xn-1)分别为函数y=f(x)的n个已知变量值及其对应的函数值,xy(x)分别为插值区间内任一点及其对应的插值结果。记丢失数据的数量为drop_count,根据恢复算法其复杂度为O(drop_count),其复杂度也为线性。因此,算法整体上的复杂度仍然为线性。

2.2 模拟实验

为了验证所提算法在真实数据中的性能表现,实验仿照Zebranet实验中对斑马运动轨迹的监测,采用真实的GPS轨迹数据对算法性能进行评估。实验数据集为广西省南宁市某人上下班的GPS轨迹数据(数据来源:http://bbs.godeyes.cn/ showtopic-369632.aspx)。

2.2.1 数据分散实验

第一组实验目的是验证交织发送算法对集中式丢失数据包的分散性能。图3(a)所绘制的曲线为完整的GPS数据绘制的轨迹曲线,其中一条横坐标为纬度,一条横坐标为经度,纵坐标表示海拔。假设机会网络中的节点需要将该条轨迹对应的数据发送到另外一个节点,在发送的过程中出现了信道的衰落或短时的拥塞,出现了集中性丢包现象,如图3(b)所示,可见轨迹曲线中对应的很长一段都丢失了。基于提出的交织编码算法重新进行编码后,同样的情况发生时,原来丢失的集中性数据被分散在曲线的各个部分,如图3(c)所示。

根据模拟实验结果,直观上可以看出,采用提出的算法对数据重新编码之后,接收数据仍然体现了原有数据的特点,这对后续估计丢失数据提供了基础。

2.2.2 数据恢复对比实验

第二组实验目的是检验本文所提出的容错传输算法对连续丢失数据的恢复程度。图4中的(a)和(b)分别是不采用和采用提出算法对连续丢失48个数据进行插值恢复后的曲线图。从图中可以看出,图4(b)的曲线比图4(a)的曲线更为平滑一些,更接近原始GPS数据所绘制的曲线。比如:在纬度22.82,经度108.37处图4(b)比图4(a)更平滑。

图4 数据恢复实验

2.2.3 均方误差

由于曲线数据的自相关度过高,从直观上看诸如图4所示差别并不明显。为了凸显所提算法对数据恢复的性能,进行第三组对比实验,目的是在连续丢失的数据包增多情况下,把使用交织传输容错算法和不使用交织传输容错算法的均方误差曲线进行对比。

实验中仍然设定数据包中含有8个样本数据,图5给出了实验结果。从中可以看出,随着连续丢失数据包个数的增多,采用提出算法恢复的数据与原始数据的均方误差都会增大。但是增长的速度有非常明显的差别,使用所提算法后对应的均方误差曲线增长速度缓慢,在丢失18个数据包的情况下其均方误差值约为0.03,未使用交织传输容错算法的均方误差值大约为0.24。相比于未使用所提算法而言,采用所提算法后,数据恢复性能被大大提高。

3 结 语

针对提出的基于交织编码的容错传输算法,本文对算法性能进行了全面分析。该算法由基于交织编码的传输算法和基于拉格朗日插值的数据恢复算法两部分组成。本文从理论和模拟实验两方面进行评估。理论分析得到了如下结论:得到了定量的接收节点不可恢复数据的概率;采用交织思想可以提高插值恢复精确度;算法复杂度是线性;在待传送数据维数不变的情况下,缩小发送缓冲宽度可以减小交织传输带来的延时。模拟实验结果,算法可以将集中丢失的数据分散到整个数据的不同部分;算法能有效恢复丢失的数据,并大大提高了数据恢复性能。

参考文献

[1]Akyildiz I F,Akan B,Chen C,et al.InterPlaNetary Internet:State-of-the-Art and research challenges[J].Computer Networks,2003,43(2):75-112.

[2]熊永平,孙利民,牛建伟,等.机会网络[J].软件学报,2009,20(1):124-137.

[3]Grossglauser M,Tse Dnc.Mobility increases the capacity of ad hocwireless networks[J].IEEE/ACM Trans.on Networking,2002,10(4):477-486.

[4]Juang P,Oki H,Wang Y,et al.Energy-efficient computing for wildlife tracking:Design trade-offs and early experiences with ZebraNet[J].ACM SIGARCH Computer Architecture News,2002,37(10):96-107.

[5]Widmer J,Boudec J L.Network coding for efficient communication inextreme networks[C]//Proceedings of the 2005 ACM SIGCOMMWorkshop on Delay-Tolerant Networking.Philadelphia:United Statesof America,2005:284-291.

[6]Wang Y,Jain S,Martonosi M,et al.Erasure-Coding based routing foropportunistic networks[C]//Proceedings of the 2005 ACM SIGCOMMWorkshop on Delay-Tolerant Networking.Philadelphia:United Statesof America,2005:229-236.

[7]Chen L,Yu C,Sun T,et al.A hybrid routing approach for opportun-istic networks[C]//Proceedings of the 2006 SIGCOMM Workshop onChallenged networks.Pisa,Italy,2006:213-220.

[8]Luo T Q,Zhang J,Wang Y.Fault-Tolerant Transfer Algorithm Basedon Interweaving Code in Opportunistic Networks[J].Applied Mechan-ics and Materials,2011,63-64:341-344.

容错性能 篇2

在工业自动化、机器人系统、武器系统、航空和航天等领域中,为了提高系统的可靠性,双机容错技术得到了普遍的应用和发展。双机容错是由两套完全同构的计算机系统组成[1],作为双机容错系统的控制核心—容错控制器是实现双机故障诊断和仲裁切换的关键机构。本文提出并实现一种基于FPGA的容错控制器,它的功能根据所设计双机容错系统的应用特点,不但实现了双机容错系统中故障的检测和诊断,且能根据诊断结果作出故障处理的仲裁结果,使双机能够及时得到实时判断结果,完成双机容错系统的切换重构工作。该方案有效地结合了FPGA器件的优势及特点,将其引入高可靠性嵌入式系统应用领域,降低了成本,提高了系统的可靠性。

1 双机容错系统结构

本文所设计的FPGA容错控制器应用于如图1所示的双模冗余热备份容错计算机系统。该双机容错系统其应用功能是通过CAN总线接受上位机发送的数据,通过双机容错系统的计算机解算处理后再经过RS422总线下传给接受方设备。

工作原理:该系统由计算机A和计算机B组成主备机,由交叉数据通道实现双机间的通讯,由FP-GA实现的容错控制器完成双机容错系统的部分故障检测、诊断和仲裁切换的任务。另外,A机和B机各有独自的外围控制逻辑和外设,这样即不会引起系统资源的竞争,增加了整体系统的稳定性。双机上电后,首先进行A、B机硬件自检,自检通过后,默认A机作为主系统,接受数据并将此数据和此次接受任务的标志发送至交叉数据通道固定单元,等待双机同步,B机作为备份机同样接受数据并将此数据和此次接受任务的标志发送至交叉数据通道固定单元[2],等待双机同步,然后两机从交叉数据通道中取出任务标志和对方接受的数据进行同步和比较,然后分别执行相同数据的解析任务。将任务标志和计算结果又送至交叉数据通道,两机又通过任务标志和结果数据的比较完成数据发送数据任务的同步和输出数据的比较检测。在接受和主备发送数据的比较中,若比较一致,程序由A机输出,比对不一致程序转到各自自检程序,根据自检结果和主备机标志切换正常计算机作为系统输出,系统转为单机运行。

另外,容错控制器还要实时监测软硬件心跳状态是否正常,若某台主机出现故障,根据故障机是否为当班机,进行相应的容错处理,包括是否请求无故障机切换为当班机、是否复位故障机等处理过程。

2 容错控制器设计

为实现所描述双机容错系统的整体监控和备份功能,本文提出的基于FPGA的容错控制器结构如图2所示。容错控制器根据所接收到的状态信号,判断单机在系统中的地位,并给出相应的输出信号,容错控制器包括:软件心跳检测模块WTD、硬件心跳检测模块ALE_WTD和仲裁判决模块Arbiter。

2.1 两主机负责处理的信号[1]

因为两主机与容错控制器的连接工作机制完全相同,这里只介绍主机A处理的信号:(1)发送周期性的脉冲信号wdi1给WDT,表示主机A处于正常工作状态;(2)通过ALE自动发送既定的脉宽到ALE_WTD,表示主机ALE信号正常;(3)通过主机A的IO口发送主机目前的主备机标志、比较结果标志、自检结果标志到容错控制器仲裁判决模块,等待仲裁判决处理。(4)接收来自仲裁判决模块Arbiter的脉冲信号RESET,以使主机A复位重启恢复故障;(5)接收来自仲裁判决模块Arbiter的中断请求信号Switch1_INT,表示当主机B发生故障且主机B之前是当班机时,请求主机A机接管工作;(6)接收来自仲裁判决模块的脉冲信号state1,表示系统中对等机主机B的工作状态,为主机A是否进入单机运行态做准备。

2.2 软件心跳检测模块(WTD)

程序跑飞、程序死循环等是常出现的软件故障,本设计中在容错控制器采用看门狗技术来检测此故障。看门狗WTD接受来自主机A的IO口发送的周期性脉冲信号wdi1,该脉冲信号对WTD计数器清零。当下一个clk(WTD内部时钟)周期到来时,WDT计数器重新开始计数。如果WDT计数超过某个值(即主机A在规定的时间周期内没有发送wd1脉冲),则认为主机A发生故障,WDT将发送wdo1信号至仲裁判决模块等待仲裁判决处理。

2.3 硬件心跳检测模块(ALE_WTD)

由于51单片机的ALE引脚,无论单片机是否访问外存,ALE都能在一定时间内提供至少一个上升沿或下降沿[3]。如果ALE信号不正常,那么可以确定CPU一定是出现了永久故障。本文设计两个看门狗(ALE_WTD)监测主机的ALE信号,当两主机的ALE不正常引起硬件不能喂狗时,溢出信号(ALE_wdo1=‘1’或ALE_wdo2=‘1’)送至仲裁判决模块等待仲裁处理。这种通过硬件喂狗方式来检测CPU故障的方法既可以节省单片机有限的IO口资源又不用设计专门的喂狗程序。

2.4 仲裁判决模块(Arbiter)

仲裁判决模块根据容错信号包括双机发出的自检信号(self_chk1和self_chk2)、数据一致比较结果信号(diff_chk1和diff_chk2)和软硬件心跳检测模块检测到的结果信号(wdo1和wdo2、ALE_wdo1和ALE_wdo2)这四组检测结果信号和双机发出的主备机状态标志(flag1和flag2),完成对双机状态的判断,最后给出切换请求、复位和对等机状态信号等系统重构信号。图3是主机A被容错控制器仲裁判断后的流程图。

由图3可以看出,四种输入信号self_chk1、diff_chk1、wdi1、ALE1中的任何一个被检测到不正常时,被判断为该机不正常,然后根据该机目前是否为主机(flag1=‘1’),若为主机,则申请切换B机为当班机(置switch2_INT=‘1’)并通知对B机对等机不正常(置state2=‘1’),同时复位A机。主机B的仲裁判决过程同主机A。通过在FPGA中利用硬件描述语言的进程并行模块语句和并行语句特点,实现此模块是很有效的方法。

3 系统实现

根据以上介绍,本文提出的容错控制器是在FPGA芯片上实现的,利用QuartusⅡ8.0,设计如图4所示的VHDL语言编译综合后的RTL级视图。WTD1和WTD2模块分别集成了对主机A和主机B的软硬心跳检测的看门狗模块,Abiter模块即为前面提到仲裁判决模块。这里为了满足系统中CPU及总线控制器等电路的复位信号要求至少200 ms的保持时间,增加了一个reset模块用它来专门处理保持200 ms的复位信号。在程序设计中考虑到输入异步产生的毛刺现象,设计中增加了clk信号作为全局时钟同步信号,充分解决了毛刺问题。[4]

图4中WTD1和WTD2功能相同,feed和ALE信号是被检测的两主机的喂狗信号和ALE信号,经过WTD1的看门狗监测后输出故障监测结果信号至Arbitry模块,Arbitry模块根据两主机的主备机标志信号flag1和flag2、自检信号self_chk1和self_chk2、比较信号diff_chk1和diff_chk2、由看门狗监测到的ALE错误信号CPU1_ERROR和CPU2_ER-ROR、和喂狗失败信号wdo1和wdo2判断仲裁后向两主机输出对等机状态信号state1和state2、切换请求中断信号switch1_INT、switch2_INT和复位信号reset1和reset2。reset1和reset2又经过Reset模块处理输出既定时间的复位信号至两主机系统的各个电路。

4 结果与讨论

本设计选用Altera公司的CycloneⅡ系列型号为EP2C8Q208C8的FPGA芯片,在Windows XP操作系统环境下使用该公司的开发软件Quartus II8.0作为EDA设计工具设计实现。时序仿真波形如图5所示。

由图5中看出,两主机输入的四组检测信号通过容错控制器的故障检测、诊断以及仲裁判断输出复位、切换请求等系统重构信号。例如图5中时间棒(Time Bar)所示:

当时间棒处于+221.88 ns时,容错控制器的WTD看门狗检测到输入信号wdi1由于出现高电平脉冲时间超过既定时间。在时间棒所指处出现“狗咬”,容错控制器根据此时的flag1为高电平,flag2为低电平,确定进行双机切换,置switch2_INT高电平,置switch1_INT为低电平,表示要求主机2接管当班机任务;state1置高电平,state2置为低电平,表示通知主机B对等机(A机)不正常;并置reset1为高电平十个脉冲信号,表示对主机A复位保持一定时间。

其他三个时间棒所指点容错处理结果,由图5容易看出结果也满足设计要求。通过以上时序分析,本文设计的容错控制器满足双机容错系统的容错控制功能的要求,引入了clk全局时钟后信号未出现毛刺,满足系统性能需求。

5 总结

该容错控制器应用于某设备双机容错系统上进行验证,满足系统需求。由于该双机容错系统对数据处理的实时要求比较高,采用本文设计的容错控制器具有的实时监测,实时仲裁等特点,保证了双机容错系统切换时的准连续性;另外,通过FPGA硬件实现仲裁检测任务减轻了双机容错系统软件任务的负担,保证了容错系统不会由于采用复杂的软件实现仲裁判决带来的不可靠性影响。

摘要:根据双机容错系统故障检测和诊断、仲裁技术的常用方案及特点,结合某在研双机容错系统,提出了一种基于FPGA容错控制器的设计方案。仲裁模块作为容错控制器的核心模块,可根据双机工作的监测信号负责完成主备机切换功能。为了实现软硬件心跳故障监控功能,在FPGA内嵌了WTD模块。同时,全局时钟引用于各个模块后,良好消除了输出信号的毛刺问题。实验结果表明,该设计方案满足系统要求,可靠性较好。

关键词:双模容错计算机,FPGA,故障检测与诊断,仲裁

参考文献

[1]李迅,李洪峻,刘庆敖.双模容错计算机的设计与实现.计算机工程,2008;9(17):240—241

[2]朱朝晖,张崇峰,陈卫东.空间双机容错计算机系统研究.上海航天,2004;(6):18—23

[3]王幸之,忘雷.单片机抗干扰应用系统抗干扰技术.北京:北京航空航天大学出版社,2000

常有“容错”在尽显“融错”美 篇3

一、错中求“智”, 弄“拙”成“巧”

在北京市评优课上柏继明老师的一节评优课 《圆的认识》让所有老师大加赞叹.谁能知道在紧张的教学过程中, 柏老师的板书出现了问题. 板书:“在同圆中, 直径是半径的一半”时, 板书缺少一个“同”字, 这样写等同于犯了科学性错误, 怎么办? 此时的栢老师已经看出板书的破绽, 将错就错, 急中生智问“请同学们仔细看板书, 看谁能发现什么? ”半分钟后学生陆续的提出疑问:“不是在圆中, 是在同圆中”“如果不是同圆中直径和半径就不是2 倍的关系”……同学们发言激烈, 情绪高涨, 沟通很和谐, 每名同学都在为疑惑深思, 看样子都学会了, 柏老师趁热打铁“这样重要的字我们一定要记住, 为了与其他字区别, 我用一个红粉笔把它补上吧”.这样一个有错的细节, 在栢老师的指导下, 却变得自然得体.此时的“差错”, 验证了教师的机智, 也撞击出了同学们思维的火花, 使更多的同学更快地走向了“正确”.一个失误在教师的机智中化解, 一次马虎让学生的记忆深刻, 而演变成高效课堂, 精彩的融错过程成为永远的记忆.

在新理念的倡导下, 学生的主体地位越来越明显, 教学氛围也越来越民主. 我觉得对于学生来说课堂上每一处自然的生成, 都会让学生有所发现, 有所大悟, 增强学生探究的欲望;学生的积极参与, 也是成就老师个人教育智慧的契机, 教学过程会在不断的宽容, 信任, 鼓励, 探究, 合作, 思考中完善它的教学效果.

二、错中求真、求实生成才会美丽

暑假开学后, 四年级上册除法竖式就要学习了, 本单元让老师非常挠头, 题目出错得洋相百出.今年希望有所改观, 于是我在课前做好大量准备.

1. 大胆、灵活、创造性地使用教材.在这节课中, 我抛却以往过于“一板一眼”地使用教材, 步步教, 而是让学生自己去处理试商、调商的方法, 并且把学生的计算及时地板书或用投影展示反馈, 总结.我相信:教材只是一个教学工具, 应该是“用教材”, 而不是“教教材”.在使用过程中, 结合学生实际, 灵活的使用教材, 在某些内容上进行适当的增、改.总结了试商的方法.这样再经过练习巩固掌握方法, 在巩固中选择最优的方法.

2. 为学生的发展创造环境, 搭建展示自我的平台.学生的发展很大程度上取决于教师, 教师给多大空间, 学生的发展空间可能就有多大.因此, 课堂上教师应该为学生多创造一些有利于学生发展、有利于学生展示自我个性、有利于学生交流的环境.《除法》这一单元中计算难度不大, 只是试商比较麻烦, 需要利用所学知识灵活试商, 知道什么时候商是一位数, 什么时候商是两位数, 除数看小了商会变大, 除数看大了商会变小, 如果学生的学习习惯不好, 学生出错率就高, 要求学生细心, 认真, 还要会熟练背诵乘法口诀, 这样他们在计算中才能减少出错的机会.

通过学生自己探究、生生交流、教师的引导, 让学生自己总结出几种试商的方法, 参与新知识形成的全过程.学生获得的知识通过自己的探究得到的, 而不是教师“教”出来的, 这样的知识又怎么能轻易忘记呢? 怎么还会出错呢?

出错是学生的权利, 我们老师可以从出错中找到学生学习的困惑与困难, 也应看到自己教学存在的不足, 可以不断反思, 不断改进教学, 在课堂上为学生创设一个良好的学习环境, 对学生不歧视, 不排斥, 不懈怠, 多一些耐心、爱心、关心, 错误就会越来越少.

三、错中求“值”, 挖掘教学的价值

《轴对称图形 》是三年级下册的内容.这节课体现了数学问题的生活化, 注重培养学生观察、交流、操作、探究能力的培养, 让学生充分经历知识的形成过程, 在学生的自主活动和合作活动中完成教学活动.

上课了, 学生的回答让我有所触动.

师:观察下图哪些是轴对称图形?

学生1:平行四边形有两条对称轴.

学生2:平行四边形有四条对称轴.

学生3:平行四边形和长方形都是对边相等, 所以有两条对称轴.

班级同学已经在争执不清了, 30 多双眼睛看着我, 等着我的肯定. 我想既然同学们对此争执不休, 对错已经不重要了, 这不是一个最好的探究的机会吗?

师:到底是2 条还是4 条或者是其他的答案, 口说无凭, 你们能想办法证明一下吗?

生异口同声的说:能.

师:那就以小组为单位, 研究研究吧……

计算机系统容错技术研究 篇4

计算机系统容错技术指的是计算机在遭到错误指令的发生, 或者是计算机系统发生一些损害的情况之下仍然能够提供一定的服务的技术与方法。这项技术不仅能够在平时的办公计算机上防止一些重要文件丢失, 避免一些日常办公的损失。而在一些特殊场合的情况下使用电脑, 这项技术就显得更加的关键和必要, 例如在国防中能够保证计算机保持正常的运行和提供正确的服务, 这在战争发生时关系到的就是国家的安全。同样在医疗行业中, 有着这样技术的保障, 在医生手术操作时不间断, 这时就会关系到病人的生命安全。还有着在其他一些高危部门中计算机的使用中, 这项技术都是不可或缺的。通过这一系列的实例, 我们可以发现该技术的应用保证计算机在突发情况下不会发生系统崩溃这样保证系统的正常运行的重要性, 因此我们应该不断研究该技术, 突破它完善它, 让它更好的保护计算机系统, 更好的让计算机服务社会, 避免不必要的损失, 降低实际中的危险性和争取更大的利益。

在过去实际使用中, 我们把计算机主要的错误可以总体上分为两种, 分别是硬件错误和软件错误。在随着社会科学技术的发展, 在计算机的硬件上大量使用集成电路, 多晶硅的经常使用, 虽然减少了处理器的体积, 可是因为电路的高级集中, 这样就加大了出现事故故障的概率。也是因为晶体管的使用也可以很好的降低集成处理器的噪声问题, 可是因为晶体管的脆弱性, 就会加大出现瞬时故障的概率。在集成电路也是因为芯片大量的使用多晶硅材料, 是的发生临时故障率指数级别的增加。虽让现在随着科技的飞速发展已经能够在一定基础解决这些问题, 可是考虑到经济限制无法能够解决量产计算机的问题, 目前的技术措施在可行度上还是有一定的欠缺。

2 计算机系统容错技术硬件问题与方法

通过我们研究可以知道计算机系统容错技术的硬件问题主要可以分为三种, 它们分别是:永久性错误、瞬态错误和间歇性错误。导致每一种错误的原因都是不相同的, 在此我们通过研究分析如下。永久性错误, 一般因为计算机的部分零件使用老化或者是受到破坏无法修复, 这些零件损害后一般是无法维修再用, 只有通过更换零件才能解决的问题。而瞬态错误, 一般是因为现在大量使用晶体造成的, 通常表现为瞬间错误之后通过重新启动计算机又可以恢复, 一般这种情况下不需要更换零件, 同样这种情况也是很难维修和解决的。还有就是间歇性错误, 这时介于永久性错误和瞬间错误之间的一种计算机错误, 这也是最为常见的计算机错, 一般时刻维修解决的。通过对于硬件错误了解之后啊, 下面我们介绍几种在目前技术条件下, 我们可以使用的也是可行性比较高的几种方法来解决硬件错误的办法。

2.1 硬件冗余法

冗余法是在当代使用在一级电路中使用比较频繁的方法, 在解决计算机系统容错技术中的硬件问题时, 我们同样可以借鉴这种方法。通常我们可以根据硬件冗余的程度不同, 可以把将此技术分为两种, 一种是部分冗余还有一种是完全系统冗余。部分冗余法就是在同一系统中, 我们将比较容易损坏的部分我们使用像电路中并联一样, 使用两套零件, 并联起来, 一套损坏另一套可以顶替继续运行。而完全系统冗余则是完全设计两套系统采用并联方式连接计算机硬件设备中, 可以相互补充使用。

2.2 信息冗余

在解决硬件错误的方法除了使用零件的冗余方法, 还可以使用信息冗余的方法。信息冗余方法指的是在原始数据中附加若干位的冗余信息以达到故障检测或故障恢复等目标的容错技术, 包括检错编码与纠错编码两种。检错编码可以自动地发现错误, 而纠错编码具有自动发现错误和纠正错误的能力。在使用信息冗余方法是也是需要考虑到成本问题, 在比较零件冗余方法与信息冗余方法中, 会随着系统规模大小不同, 会有着各自的优势, 一般而言在小规模的计算机系统中信息冗余比不上零件冗余节省成本, 而在规模相对较大的系统中, 信息冗余就显出它独特的优势, 可以大大的减少成本。同时信息冗余处理问题比较快, 可以在同一时间内检错和处理, 可以避免耽误时间减少损失。

3 计算机系统容错技术软件问题与方法

在评价一个计算机系统的优越性和可靠性时, 除了硬件上的保障还需要在软件上提供很高的可靠性, 可是在当代社会中, 因为软件问题的不可视性, 发展的速度比不上硬件, 因此在计算机系统容错技术中, 软件的保障是非常重要的, 同时也是很难解决的。人为的软件设计错误在软件整个生命周期中都一直存在, 这一点已经得到证明。这种设计错误, 在一定的输入激励下将产生一定的故障现象, 客观上很难使用统一的模型对这种思维的结果进行数学的描述。我们通过对现在软件问题的分析与研究, 主要提出两种解决软件问题的方法, 它们分别是:恢复块法和防卫式程序设计方法。恢复块法主要是研究开发两个模块, 这两个模块具有相同的功能, 一个为主块一个为备用块, 当系统遇到错误时由主快运行, 主块遇到破坏是, 要使用备用块检测并发现问题, 然后顶替主块的使用功能。这一过程将会充分的使用备用块, 这样就会使备用遭到损害, 无法在以后使用了, 所以一般在发生损坏后, 需要在后期更换备用块。防卫式程序设计方法是一种不采用任何一种传统的容错技术就能实现软件容错的方法, 对于程序中存在的错误和不一致性, 防卫式程序设计的基本思想是通过在程序中包含错误检查代码和错误恢复代码, 使得一旦错误发生, 程序能撤消错误状态, 恢复到一个已知的正确状态中去。其实现策略包括错误检测、破坏估计和错误恢复三个方面。在解决软件问题的这两种方法也都是各有各的特点, 我们需要根据实际情况的不同, 从而设计不同的解决方法。

结束语

在如今这个节奏非常快的社会中, 信息传递非常的重要, 计算机技术需要跟上社会, 才能更好的服务社会。在本文的研究中, 对于计算机系统容错技术进行必要的分析, 和现在计算机系统中存在的错误, 我们从硬件和软件两个方面都给出了一些可行性比较强建议措施, 为我国的计算机行业的发展做出了一定的贡献, 更加有利于祖国的繁荣富强, 促进社会的和谐。

摘要:计算机的使用不经对硬件设备有着很高的要求, 还应该需要很好的系统软件。在本文中我们主要是通过分析计算机系统中关于容错技术中存在的问题如反应延缓、容错技术的经济、技术设计缺陷、精确的级别不够等, 在了解这些问题的特点与它们之间的一些共性之后, 经过一些的实验研究, 和实际应用中的总结, 提出一系列的科学、合理、高效的措施建议。

关键词:计算机,系统容错,硬件,软件

参考文献

[1]聂林波, 刘孟仁.软件缺陷分类的研究[J].计算机应用研究, 2004, 21 (6) :84-86.

计算机系统容错技术研究 篇5

1 硬件错误的容错方法

计算机可能出现的硬件错误有永久性错误、间歇性错误和瞬态错误。永久性错误是指由于计算机硬件老化、电路元件短路等现象而产生的故障, 一旦出现则影响系统原有功能, 需通过更换元器件来恢复系统正常工作;瞬态错误的发生率是非常频繁的, 在所有系统错误中所占的比例也是最大的, 对整个系统可靠性和安全性的影响也是最大的;间歇性错误介于以上两种错误之间, 针对系统的可靠性设定了一定的阈值, 当瞬态错误的发生频率超过该阈值时表现为间歇性错误。

计算机容错系统为了更好地容错性能, 必须是冗余的。不同形式的冗余资源可分为不同的冗余方法, 主要包括硬件冗余、信息冗余、时间冗余、线程冗余等集中冗余类型。

1.1 硬件冗余

根据冗余程度的不同, 硬件冗余还可分为部分冗余和完全冗余。完全冗余可分为冷备、温备、热备以及双工这四种工作方式。以双系统为例, 可分为双系统冷备、双系统温备、双系统热备和双系统双工。其中, 在对故障导向实时性和安全性要求较高的系统中首选方式是应用双系统双工, 而其他三种方式可以应用在一般性系统中, 即对故障诊断时间和切换时间没有过高要求的情况。此外, 三模、四模的冗余技术的应用也非常广泛。

目前, 基于动态可重构现场可编程门阵列 (FPGAs) 在硬件冗余技术中是研究关注度较高的。这种方法可根据抽象层次分为2层:硬件层 (DL) 和配置层 (CL) 。

目前, 学界在计算机系统容错技术研究中, 对硬件冗余方法的研究最多, 花费也相对较大, 但是其在提升计算机系统的可靠性和安全性方面的效果也非常良好, 技术相对比较成熟, 并在很多场合都已实践运用。因此, 我们在计算机系统容错中, 一般首选硬件冗余。

1.2 信息冗余

信息冗余是指通过在原始数据中添加若干冗余位以实现故障检测或故障恢复, 这种容错技术包括检错编码和纠错编码。检错编码可以检测出错误, 纠错编码可以检测错误, 也可以纠正错误。编码技术通常应用于传输、储存、处理信息环节中。比较典型的信息冗余技术有奇偶校验码、循环冗余校验码、海明码及其扩展编码方式等。

相对其他冗余方法, 信息冗余技术的优点有:速度快, 对冗余信息的处理与原始数据在同一时间段内, 无需额外占用时间成本, 在数据处理时检错、纠错并行完成, 从而避免由于错误恢复操作引发的迟延;代价较小, 仅需支付少许额外的编码电路或字节和计算开销, 与其他硬件冗余相比开销要小得多, 因此, 在实际进行计算机系统性能提升的过程中, 可以根据实际的需要来选择采用硬件冗余技术还是信息冗余技术。

常见的信息冗余技术有ABFT、RED-FECMechanism、check-sum EDAC。

1.3 时间冗余

在对实时性要求不高, 且没有实施硬件冗余的系统中, 可以采用时间冗余的方法来保证系统可靠性, 实现容错机制。在具体应用过程中, 时间冗余技术体现为1种方式, 分别为:Re-execution of the task on the Same Hardware (RSHW) , 指同一硬件基础上的同一数据在不同的时间片内执行相同的指令集;利用表决电路和数据延迟单元, 把这两者结合处理后的数据根据延迟的多少拷贝出对应的版本, 并传送到表决器惊醒表决判断, 通过对比得出最佳结果。

时间冗余技术的关键点在延迟时间的大小, 也就是说若延迟时间过小可能会导致表决器的输入内容出现错误, 无法实现系统容错;若延迟时间过大, 会导致时间成本增大, 那么容错机制就是去了原本减小延迟的意义。因此, 在时间冗余技术的应用中, 一定要对系统的时间要求进行合理的判断, 进而设置合理的时间冗余, 以实现计算机系统容错性能的提高。

1.4 硬件线程冗余

硬件线程冗余是指在多线程处理器中使用容错手段实现线程级容错, 具体方法是在多线程系统中把主线程拷贝成多个同样的线程并行处理数据, 然后通过比较处理结果来实现容错。目前常见的线程冗余技术有基于CMP的容错即芯片级冗余多线程、冗余多线程RMT、基于微线程的粗粒度超标量容错MTB等。

目前在硬件多线程冗余中研究最多的是主副线程通信方式, 通过对中间结果队列的共享使线程的执行速度加快, 并实现容错。线程冗余技术对硬件成本的要求不高, 而且容错效果好, 时间开销小, 实时性较高, 因此硬件线程冗余技术是一种高效可行的硬件容错方法。

2 软件错误的容错方法

关于计算机系统的可靠性的评价与分析, 需将其软件的可靠性因素考虑进去, 但是对这方面的研究却不太成熟, 因此相比硬件容错方法效率较低, 导致在评估系统的可靠性是忽略软件的失误率。人为设计引发的软件错误一直存在, 在一定的输入刺激下产生各种故障, 尚无法用统一数学模型进行描述。软件错误的容错方法通常有恢复快方法、软件多样性方法、防卫式程序设计方法。也可以通过改善软件工程、计算机平台环境和构造异常处理模块等方面来提高容错水平。

计算机系统出现故障后恢复的策略通常可分为前向恢复和后向恢复。前向恢复是指使系统继续向前运行, 采取措施是系统连贯, 弥补故障造成的不连贯, 继续计算;后向恢复是指将系统还原到之前的正确阶段, 再重新运行计算。

2.1 N-version programming方法

N版本软件容错技术是将软件的各个版本交由不一样的开发团队进行开发, 用不同的开发语言和方法, 独立的设计工具和环境, 以减少不同版本之间出现相关错误的几率。此时各个版本的软件设计开发不能违背以下几个原则:总体设计目标要一致, 避免错误恢复;各个模块之间要有统一的标准接口;软件设计过程中模块内部对外透明, 要进行封装;各个版本的软件开发必须独立。

2.2 恢复块方法

恢复块方法的具体过程是配置有主块和后备块, 其功能是相同的, 首先是主块开始运行, 计算结果, 若出现故障, 则运行一后备块, 再计算结果进行测试, 未通过则再运行一后备块, 直到测试通过, 若测试一直未通过, 则说明产生了不可恢复的故障。在设计开发过程中应尽量保证主块与各后备块之间的独立性, 以降低它们之间的错误的相关性。此外, 测试计算结果的程序有着至关重要的地位, 必须毫无错误。

2.3 防卫式程序设计方法

防卫式程序设计方法是一种保守的容错机制, 它不利用任何传统的容错方法就能实现系统容错。它的具体过程是这样的:若程序在运行过程中出现错误, 就会调用程序自带的检测代码和恢复代码进行处理, 将系统返回到上一个正确的状态, 如此, 就实现了对程序中出现的错误的检测, 错误类型以及影响范围的估计, 并且最终实现错误恢复。

3 结语

随着极端及系统的规模不断扩大, 越来越多的应用部署在计算机系统中, 对系统可靠性的要求也越来越高, 因此需要更加完善的容错技术来保障系统的可靠性和安全性。目前的硬件冗余容错方法成本较高, 耗能较多, 物理空间占用较大;信息冗余容错方法中针对瞬态错误的容错技术还有待深入研究;时间冗余容错方法不仅使延迟增大, 对永久性错误没有好的容错机制;并行线程冗余容错方法在合理分配线程资源方面没有完善的解决方案;软件冗余技术相对硬件更加落后;恢复块方法中必须保证测试程序的准确性;防卫式程序设计方法尚缺乏完整的理论依据。因此无论哪种容错技术, 虽然已经取得了很多研究成果, 但是还有不足, 仍有许多问题值得进一步探索。

参考文献

[1]王丽华.计算机容错系统的体系结构与安全性研究[D].成都:西南交通大学, 2002.

[2]李洪超.计算机系统的容错技术方法[J].单片机与嵌入式系统应用, 2010 (11) :19-21.

任意平面交换网络容错设计 篇6

1 交换网络架构的容错设计

组成各种交换网络的交换元, 由于交换网络架构及连线算法的不同, 可能造成某些特定交换元使用频率偏高, 这些使用频率较高的交换元, 其寿命相对较短, 交换网络架构设计上皆尽可能精简交换元数目, 以求得在硬件花费上的最佳表现, 若因些许交换元损坏而丧失交换网络的交换能力与其原本的特性 (无阻塞交换网络不在具有无阻塞特性) , 则会造成交换网络的维护更加困难, 成本愈高, 是如何设计容错架构的问题。

2 交换网络架构容错设计

以Spanke-Benes Network为列, Spanke-Benes Network属于平面交换网路, 所有平面交换网路皆可以任意平面交换网络UPSN表示。当SpankeB e n e s N e t w o r k其中一个交换元损坏时, 则会丧失原本具有的无阻塞交换网络的特性, 我们提出一种称为Fault Tolerant Spanke-Benes Network, 简称FT-Spanke-Benes, 对于一n输入的Spanke-Benes Network, 只需将n-1个额外的交换元放置到特定位置, 即可针对此交换网络中任何一个交换元损坏时, 仍维持Spanke-Benes Network无阻塞交换的特性。

图1 (左) 所示为一6输入的SpankeBenes Network, 可以UPSN的1, 3, 5, 4, 2表示, 图1 (右) 则为其容错设计, 红色部分为额外放置的备用交换元。

我们将说明当Spanke-Benes Network中有任何一个交换元损坏时, 如何选取备用交换元来进行其架构的重组。例如当ROW3有任一交换元损坏 (BAD) 时, 我们将整条ROW3的交换元全部设定为不动作 (Straight) , 即状态0, 等同于移除了ROW3所有交换元, 此时可以发现, 当有任何一个ROW的交换元个数比ROW3小时, 则必须将备用交换元取出使用 (包括交换元个数为0的ROW5) 。而ROW3的交换元个数为4, 可知ROW0、ROW1、ROW4及ROW5须将备用交换元取出使用。所以最后的重组结果为 (2, 4, 5, 3, 1) , 仍是一无阻塞交换网路。

我们以上述的范例可以发现以下规则:当交换元损坏时, 损坏的ROW中有i个交换元时, 则需取出i个额外备用交换元使用, 才能使其形成符合UPSN组成规则的无阻塞交换网络。

3 容错设计的分析

在一n输入的UPSN中, 当有一交换元损坏时, 则将此交换元所在的Row所有交换元设为状态0, 亦即若有多个交换元损坏时, 若其都在同一层Row中, 则最大可容许n-1个交换元损坏, 最少则为1个。

于容错架构设计中, 我们也可知, 于不同的UPSN架构中, 所需的备用交换元数量皆不相同, 对于一个n输入输出的UPSN, 其最佳的情况, 例如于TriangleType架构及Spanke-Benes Network架构下, 其所需备用交换元个数仅需要n-1个, 意即每层Row仅需准备一备用交换元, 最差的情况则时交换元个数恰好为最多及第二多, 其所需备用交换元个数为2n-4, 相当于需为每层Row准备两个备用交换元。

容错设计的备用交换元个数与交换元总数的比率图, 蓝色部分为备用交换元个数除以交换元总数的比率, 橘色为最佳备用交换元个数除以总数, 而灰色则为最差交换元个数除以总数, 横轴为交换网络输入数, 介于2~1000, 纵轴为其比率, 由此图可以知道, 当一UPSN架构的输入输出数n愈大时, 其所需的备用交换元个数愈趋近于最差, 然而, 其备用交换元个数与交换元总个数12相比, 其级数上明显较少。

结语

连线建立算法是以C++程序语言所撰写, 目的在于验证此连线算法的正确性, 用户可以任意决定UPSN的输入数、交换元放置方式以及目的端所要求的输出端, 或者由程序自行乱数产生, 程序有两种结束方式, 其一为当有输入端经由Right-to-Left连线建力算法建立连线后, 其到达的目的地为错误的输出端, 此时可以知道此种算法有错误, 程序将会结束, 其二为所有连线皆建立完毕且所有输入端皆到达正确的输出端, 代表此次UPSN, Right-to-Left连线建立算法为正确, 程序将会结束。

摘要:交换网络 (Switching Network) 被广泛应用在计算器通讯、平行处理、阶层交换及积体电路绕线等领域中。在各领域之间会因为性质及对象的不同, 对于交换网络的效能亦会有所不同的要求, 为使系统提高效能、增加交换能力以及减少交换的时间, 一般采用无阻塞交换网络 (Non-Blocking Switching Network) , 然而, 交换能力愈好往往代表其须使用数量较多的交换元 (Switch Element) 以及采用较复杂的连线架构, 此举却会使得交换网络的成本增加。

关键词:任意平面,交换网络,容错设计

参考文献

[1]富弘毅, 杨学军.大规模并行计算机系统硬件故障容错技术综述[J].计算机工程与科学, 2010 (10) .

单容错网络存储编码并行算法研究 篇7

关键词:网络存储,容错编码,组通信,并行算法

存储编码技术随着RAID的广泛应用而得到了迅速发展。RAID磁盘阵列技术的基本思想是: (1) 利用数据的条纹化提高磁盘的I/O性能。 (2) 利用存储编码的冗余容错技术提高磁盘阵列的可靠性[1]。

对于有冗余校验数据的特定网络磁盘阵列, 例如RAID5、RAID6等, RAID新创建时, 各磁盘的用户数据与校验数据不能保证各条纹校验关系的一致性, 例如RAID5中各条纹的校验信息须满足 (P=D1D2…Dn) [2]。数据的不一致会导致系统无法正常运行, 因此, 这种网络磁盘阵列在创建时必须先进行初始化同步工作。而初始化同步操作, 要遍历各成员磁盘上的所有数据并进行编码运算, 这项工作耗时较长[3]。

本文针对网络磁盘阵列的初始化同步与重构操作, 提出了与组通信[4]操作相融合的更高效的并行算法。

1 RAID5编码

RAID5[5]是常用的单容错RAID阵列编码之一, 其数据方案如图1所示, 第一个校验条纹的校验结果存放在Disk4, 第二个校验条纹的校验结果存放在Disk3, 以此类推。数据单元则从Disk0开始, 循环放置在所有磁盘上, 当与校验单元冲突时, 数据单元的位置后移, 即进入下一条纹。这种布局称为左对称布局[6], 当5块盘中的任意1块出故障时, 都可通过剩余4块盘中的数据恢复出来。如图1所示, 假定Disk0失效, Disk0中的数据D0, D5, D10, D15, p16~19, 均可通过其他磁盘中相应校验条纹中的数据计算得出。

MPI (Massage Passing Interface) [7]标准是目前重要的并行编程工具。利用MPI_SEND和MPI_RECV进行消息传输属于点对点通信, 但在并行/分布式环境中, 通常需要多个节点进行更为复杂的通信, 即组通信 (Group Communication) 。

在并行/分布式环境中, MPI组通信一般实现3个功能:数据通信、同步和计算。数据通信主要完成组内进程间的数据传输;同步功能是实现组内所有进程在特定地点在执行进度上取得一致;计算功能要对给定的数据完成指定的运算, 通常用于从局部结果计算出全局结果, 如图2所示。从效果上, 可认为MPI组通信的计算功能通过3步实现:首先是通信功能, 即消息根据要求发送至目的进程, 目的进程再接收到各自所需的消息;然后是对消息的处理, 即计算部分, MPI组通信中有计算功能的调用都有指定的计算操作, 用给定的计算操作对接收到的消息进行处理;最后一步就是将处理的结果放入指定的接收缓冲区。

2 RAID5编码并行算法

针对RAID5网络磁盘阵列的初始化同步操作, 提出了集中式算法与优化的分布式算法。所谓集中式, 就是由一个Root节点接收各节点发来的数据进行编码运算, 再把编码结果的校验数据发送给该条纹的校验盘, 此算法可容易地嵌入到已有RAID软件中, 实现网络磁盘阵列的初始化功能, 但显然Root节点在系统规模较大的情况下会成为性能瓶颈;而分布式算法则是将编码运算分布到多个节点中的处理方式, 并无Root节点控制整个编码过程, 所有节点处于平等地位协同完成编码计算。

2.1集中式奇偶校验编码

令一个节点作为根节点 (Root) , 在实际网络存储系统中, 此节点通常是运行磁盘阵列软件的节点。假定0号节点为根节点, 算法可改为适合任意节点为根节点的情况。则编码过程为:其他节点各自读取自己磁盘中的数据, 发送到根节点;根节点负责接收数据, 并进行RAID5编码运算;然后将运算出的校验结果数据发送到该条纹的校验节点;校验节点将校验数据写入磁盘。如图1的RAID5示意图, 假设有共有5块盘, 则第一个条纹块的校验数据发送给Disk4, 第二个校验数据发送给Disk3, 以此类推。算法中rw_buf[j][i]表示第i个条纹的第j个条纹单元 (位于第j个节点) 。

如图3所示, 算法在具体实现时采用了预读取操作, 由于编码时的条纹单元 (stripe_unit_size) 较小, 频繁I/O会影响效率。因此各节点每次读取磁盘的大小为一个较大值buf_size到缓冲区rw_buf, 供多个条纹的编码计算, 从而提高了I/O性能。各节点将rw_buf中的数据发送到根节点。rw_buf中包含s (s=buf_size/stripe_unit_size) 个条纹单元, 因此, 根节点中对s个条纹进行RAID5编码运算, 再将校验结果发送到各条纹相应的校验节点[8]。

通过算法可看出, 这种集中式算法的瓶颈主要集中在根节点, 而其他节点大多时间却处于空闲状态, 负载不均衡。

2.2基于多对一归约的并行编码

可看到, 当节点 (磁盘) 数增多时, ROOT节点成为集中式编码算法的性能瓶颈。考察编码 (解码) 过程, 可看到所有节点均参与其中, 与组通信模式相似。因此, 本文提出将编码/解码过程嵌入到组通信之中, 设计基于高效组通信算法的并行编码/解码算法, 来提高编码/解码操作的效率。对于RAID5编码过程, 恰与多对一归约 (All-to-one reduction) 过程吻合, 因此设计基于多对一归约的并行编码算法, 其基本思想是:取消根节点, 各节点地位平等, 在各自读出磁盘数据之后, 通过多对一归约操作, 实现编码运算;归约的目的进程即为条纹的校验节点进程, 该进程负责将这一条纹的校验数据写入磁盘[9]。每次归约的数据为一个RAID5条纹的大小。

多对一归约操作有多种实现算法[10]。其中串行算法时间复杂性为线性, 利用它来实现RAID5编码的性能与上一节的集中式算法相当。本文采用递归加倍法。该算法的原理较为简单:第一步, 奇数节点发送数据到偶数节点, 偶数节点对接收的数据和自身的数据进行异或运算;第二步, 不能被4整除的偶数节点将自己的数据发送给能被4整除的节点, 后者负责接收数据并且进行运算;之后的步骤以此类推, p个节点共需logp步[2]。如图4所示。

本算法的实现如图5所示, 各节点读出磁盘中buf_size大小的数据到rw_buf中, 再对rw_buf中的每个条纹单元进行多对一归约操作, 每次归约得出一个条纹单元的校验结果, 结果存放在该条纹的校验节点的result中, 校验节点将结果写入磁盘。

显然, 相对于集中式算法, 基于多对一归约的并行算法无ROOT节点的问题, 效率更高。

3实验结果与分析

本文的测试是在天河一号的计算节点中完成。天河一号的计算节点用于运行串行和并行计算任务, 每个计算节点都是一个多核的SMP服务器。

为方便各算法方案间的性能对比, 实验取8个计算节点, 磁盘大小为2 GB, 每次读磁盘操作时读取的大小为4 MB, 取不同的条纹单元大小。图6为单容错网络磁盘阵列初始化同步算法性能对比。

如图6所示, 其中横坐标表示条纹单元的大小, 通过实验结果可发现, 在不同条纹单元下, 集中式编码算法用时更长。与集中式编码算法相比, 基于多对一归约的编码方案效率优化明显, 性能最多提升169.4%, 平均提升130.4%。因此, 相对于集中式编码算法, 基于多对一归约的并行算法优化效果明显。

4结束语

介绍了单容错网络磁盘阵列初始化同步的两种算法的设计, 分别是集中式奇偶校验编码算法和基于多对一归约的并行编码算法, 在编码 (解码) 计算过程中充分利用网络链路的传输能力和存储节点的计算能力, 以加速网络磁盘阵列的操作。以此为延伸, 在双容错及多容错网络磁盘阵列中, 都可实现基于组通信的高效并行算法。

参考文献

[1]PATTERSON D A, GIBSON G, KATZ R H.A case for redundant arrays of inexpensive disks (RAID) [C].Proceeding ACM SIGMOD, 1988:109-116.

[2]林胜.存储系统容错及阵列编码[D].天津:南开大学, 2010.

[3]王芳.网络磁盘阵列系统的研究[D].武汉:华中科技大学, 2011

[4]ANANTH G, ANSHUL G, GEORGE K, et al.Introduction to parallel computing[M].Newyork:Addison-Wesley Educational Publishers Inc, 2003.

[5]PLANK J S.Erasure codes for storage applications[C].San Francisco, CA:Tutorial of the 4th Usenix Conference on File and Storage Technologies, 2005.

[6]刘建, 张建国.两种网络存储技术的对比[J].电子科技, 2001 (21) :31-32.

[7]Message Passing Interface Forum.The MPI message-passing interface standard[EB/OL]. (2011-09-30) [2013-12-10]http://www.mpi-from.org.

[8]CHEN P M, PATTERSON D A.Maximizing performance in a striped disk array[R].Berkeley CA:Berkeley Technical Report, 1989.

[9]BLAUM M, BRUCK J, VARDYA A.MDS array codes with independent parity symbols[J].IEEE Transactions on Information Theory, 1966, 42 (2) :529-542.

上一篇:小微企业信贷风险下一篇:工程建设项目