一种分布式实时测试系统时钟同步方法

文档序号:7806632阅读:342来源:国知局
一种分布式实时测试系统时钟同步方法
【专利摘要】本发明涉及一种分布式实时测试系统时钟同步方法,将时钟同步过程分为测试开始前时钟同步和测试进行中两个过程,其中,在测试开始前,利用类似IEEE?1588的时钟同步方法,保证主从节点之间的时钟同步精确性,同时利用分层同步的方法,使得每轮同步的节点数指数上升,保证了系统时钟同步的效率;同时,在测试开始前的同步中,从节点可以得到与主节点之间的传输时延,故测试过程中的时钟同步在测试开始前的同步过程的基础之上,进一步提高了同步的效率;最后,测试过程中节点获得时钟漂移之后与系统时钟最小颗粒度进行比较,如果时钟漂移小于最小颗粒度则记录漂移并在测试完成后对测试结果的时间标签进行修正,这就避免了频繁地修正时钟导致节点的定时任务执行紊乱。
【专利说明】一种分布式实时测试系统时钟同步方法

【技术领域】
[0001]本发明涉及一种分布式实时测试系统时钟同步方法,属于嵌入式软件测试【技术领域】。

【背景技术】
[0002]嵌入式软件在航空航天等领域的应用面正在日益扩大,针对嵌入式软件的测试需求也越加迫切。一方面,为成功的完成测试任务,嵌入式软件测试系统必须能够在规定的时间点上准确无误的完成预定的任务;另一方面,随着嵌入式系统本身的复杂性越来越强,对测试系统容纳负载的能力也相应提出越来越高的要求,采用分布式架构的测试系统可以将负载平均分配到各个节点互不干扰的运行。
[0003]分布式实时测试系统需要将各节点的测试数据收集并且归并起来以供分析,所以要求系统记录所有测试数据产生的时间标签,并且要求各节点的时钟必须一致,也就是说,在测试开始之前,必须对系统内的各节点进行时钟同步。然而,由于各节点由各自的定时器独立定时,整个测试的过程中不可能保证各节点的时钟完全一致,这就要求在测试过程中也需要对系统进行时钟同步。
[0004]目前在分布式系统中常用的时钟同步方法主要有以下几种:
[0005]Gossip算法:采用gossip算法,分布式系统中的所有节点之间随机两两互相发送时钟信息,分别计算平均值并将两个节点的时钟都设置为平均值;通过一段时间的同步操作,最后系统中的所有节点的时钟均将收敛于所有节点时钟的平均值。然而测试系统往往需要一个节点作为标准时钟节点,系统中各节点的时钟应该收敛于标准时钟节点的时钟;另外,gossip算法需要执行一段时间才能完成足够多的随机时钟同步操作,故对于要求能够快速完成时钟同步操作的用于嵌入式软件测试的分布式实时测试系统来说,基于gossip算法的时钟同步方法不能满足要求。
[0006]时钟广播法:目前存在多种基于广播时钟信息的时钟同步方法,这些方法选取一个节点作为标准时钟节点,向其他所有节点周期性的广播本节点的时钟信息,其他节点收到信息后进行时钟修正,但由于这种方法往往不考虑信息在网络中传播的传输时延造成的误差,故无法应用于对实时性要求高的分布式系统。
[0007]IEEE 1588协议的全称是“网络测量和控制系统的精确时钟同步协议”,简称PTP(Precis1n Time Protocal)。它具有配置容易、收敛快速以及对网络带宽和资源消耗少等优点。PTP协议采用以下方法完成时钟同步操作:主时钟向从时钟发送同步指令并记录发送时间,从时钟记录收到指令的时间,主时钟向从时钟发送记录的时间,从时钟向主时钟发送延时请求并记录时间,主时钟向从时钟发送收到延时请求的时间,从时钟根据所得的四个时间标签通过公式可以得到从时钟相对主时钟的时间漂移。PTP协议可以快速完成两个节点之间的时钟同步操作,但多个节点之间同步速度不能满足分布式实时测试系统的时钟同步要求。而且主时钟与多个从时钟分别进行时钟同步不仅需要占用主时钟节点大量的资源,也需要长时间占用网络资源影响系统的通信,对于测试系统来说,在测试过程中带来的花销更是无法接受。
[0008]在嵌入式软件测试领域,测试往往要求在实时性很高的情况下进行,执行的测试任务往往要求以准确的周期多次执行,如果频繁地进行时钟同步将会扰乱测试系统的定时器,造成执行周期紊乱。
[0009]因此,需要一种方法,一方面能够在消耗少量资源的情况下快速完成高精度的时钟同步操作;另一方面能够避免测试过程中频繁调整时钟导致的定时任务执行紊乱。


【发明内容】

[0010]本发明技术解决问题:克服现有技术的不足,提供一种分布式实时测试系统时钟同步方法,一方面能够在消耗少量资源的情况下快速完成高精度的时钟同步操作;另一方面能够避免测试过程中频繁调整时钟导致的定时任务执行紊乱。
[0011]本发明技术方案如下:一种分布式实时测试系统时钟同步方法,所述方法分为测试开始前的时钟同步和测试进行中的时钟同步,其中:
[0012]所述测试开始前的时钟同步步骤如下:
[0013](11)从系统的所有节点中选出一个节点作为标准时钟节点;
[0014](12)根据系统内部的节点总数计算需要将节点分为多少层来进行时钟同步,计算方法如下:如果系统内节点总数为N,则计算同步层数η的公式为2*2(n_2)〈N-K = 2*2(η_? ;
[0015](13)为所有节点编号,标准时钟节点为“0”,其余节点从“I”至“N -1”编号;
[0016](14)将节点I至节点N -1分层,其中,第η层节点数为2 (η -1)个;
[0017](15)逐层进行多轮时钟同步,需要进行的同步轮数与节点分成的层数η相同,每次同步在多组主节点和从节点之间进行,第m轮同步时,由节点k作为时钟同步的主节点,节点作为从节点,其中k为从O至2*2(π_2) -1的自然数;
[0018](16)在主从节点进行时钟同步的过程中,从节点获取时钟漂移Tdiff和与主节点之间、的传输时延Tdelay,从节点按照Tdiff修正时钟,并且记录与主节点之间的传输时延;
[0019](17)节点修正时钟后向标准时钟节点发送同步完成消息,标准时钟节点收到所有节点的冋步完成消息后,测试开始如的时钟冋步完成;
[0020]所述测试进行中的时钟同步步骤如下:
[0021](21)由标准时钟节点周期性地向各时钟同步层发出同步指令,每个同步周期内整个系统进行一次时钟同步,每次同步各节点逐层进行多轮时钟同步,需要进行的同步轮数与节点分成的层数η相同,每次同步在多组主节点和从节点之间进行,第m轮同步时,由节点k作为时钟同步的主节点,节点2(ffl-1)+k作为从节点,其中k为从O至2*2(π_2) -1的自然数;
[0022](22)测试过程中主从节点同步,同步按照以下过程进行:
[0023](221)从主节点向从节点发送同步指令消息Sync,并且主节点记录发送指令的时间点Tl ;
[0024](222)从节点记录接收到Sync消息的时间点T2 ;
[0025] (223)主节点向从节点发送跟随消息Follow_up,其中包含记录的Tl ;
[0026](224)从节点根据公式计算时钟漂移Tdiff,Tdiff = [ (T2 -Tl) -Tdelay],其中,Tdelay为从节点记录的主从节点之间的传输时延;
[0027](225)如果计算得出的Tdelay小于等于系统时钟的最小颗粒度Tatom,记录第m个同步周期的时钟漂移Tdelayjn,否则进行时钟修正;
[0028](226)测试结束后按照各从节点记录的各同步周期内的时钟漂移Tdelay修正测试数据的时间标签。
[0029]所述步骤(11)中从系统的所有节点中选出一个节点作为标准时钟节点的步骤如下;
[0030]根据应用的测试系统的不同,标准时钟节点的选取按照以下几种原则进行:
[0031](111)如果测试系统包含主节点,将主节点作为标准时钟节点;
[0032](112)如果测试系统只关注相对时间,则可任意选取节点作为标准时钟节点;
[0033](113)如果测试系统关注绝对时间,则该测试系统须经过网络或者GPS手段进行校时,将对外校时的节点作为系统内部的标准时钟节点。
[0034]所述步骤(21)中测试过程中的同步周期为:设置为10?200倍系统时钟最小颗粒度,实时性要求较高的系统,同步周期越小;所谓系统时钟最小颗粒度是指系统中需要周期执行的测试任务中最小的周期。
[0035]本发明与现有技术相比的优点在于:本发明将时钟同步过程分为测试开始前时钟同步和测试进行中两个过程,其中,在测试开始前,利用类似IEEE 1588的时钟同步方法,保证主从节点之间的时钟同步精确性,同时利用分层同步的方法,使得每轮同步的节点数指数上升,保证了系统时钟同步的效率;同时,在测试开始前的同步中,从节点可以得到与主节点之间的传输时延,故测试过程中的时钟同步在测试开始前的同步过程的基础之上,进一步提高了同步的效率;最后,测试过程中节点获得时钟漂移之后与系统时钟最小颗粒度进行比较,如果时钟漂移小于最小颗粒度则记录漂移并在测试完成后对测试结果的时间标签进行修正,这就避免了频繁地修正时钟导致节点的定时任务执行紊乱。

【专利附图】

【附图说明】
[0036]图1为本发明所述的一种分布式实时测试系统时钟同步方法的实现过程;
[0037]图2为本发明说书方法的实施例中分三轮进行时钟同步的过程。

【具体实施方式】
[0038]为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0039]本发明涉及一种分布式实时测试系统时钟同步方法,这种方法一方面能够在消耗少量资源的情况下快速完成高精度的时钟同步操作;另一方面能够避免测试过程中频繁调整时钟导致的定时任务执行紊乱。
[0040]如图1所示,本发明在实施例中的具体步骤如下:
[0041]测试开始前的时钟同步步骤如下:
[0042]步骤一:从系统的所有节点中选出一个节点作为标准时钟节点。选取标准时钟节点按照如下原则进行:
[0043](I)如果测试系统包含主节点,将主节点作为标准时钟节点;
[0044](2)如果测试系统只关注相对时间,则可任意选取节点作为标准时钟节点;
[0045](3)如果测试系统关注绝对时间,则该测试系统须经过网络或者GPS等手段进行校时,将对外校时的节点作为系统内部的标准时钟节点;
[0046]在发明本实施例中,需进行时钟同步的系统采用主节点控制从节点完成测试任务的结构,故将系统中的主节点最为标准时钟节点。
[0047]步骤二:根据系统内部的节点总数计算需要将节点分为多少层来进行时钟同步,计算方法如下:
[0048]如果系统内节点总数为N,则计算同步层数η的公式为2*2(η_2)〈Ν - 1< = 2*2(η_? ;在本实施例中,节点总数为8个,根据公式计算得出需要分为3层完成时钟同步,也就是说,需要同步3轮才能完成整个系统内所有节点的时钟同步。
[0049]步骤三:为所有节点编号,标准时钟节点为“0”,其余节点从“ I”至“Ν-1 ”编号。
[0050]在本发明实施例中,将主节点编号为“0”,其余节点从“I”至“7”编号。
[0051]步骤四:将节点I至节点N-1分层,其中,第η层节点数为2(η_?个。
[0052]在发明本实施例中,将节点I至节点7分层,根据公式计算可知,节点I在第一层;节点2至3在第二层;节点4至7在第三层。
[0053]步骤五:逐层进行多轮时钟同步,需要进行的同步轮数与节点分成的层数η相同,每轮同步在多组主节点和从节点之间进行,第m轮同步时,由节点k作为时钟同步的主节点,节点作为从节点,其中k为从O至2*2(π_2) -1的自然数。
[0054]在本发明实施例中,需要进行3轮同步,根据公式计算可知,第一轮同步在节点
O-1之间进行,O为主节点,I为从节点;第二轮同步分为两组:0为主节点,2为从节点;1为主节点,3为从节点;第三轮同步分为四组:0为主节点,4为从节点;1为主节点,5为从节点;2为主节点,6为从节点;3为主节点,7为从节点,同步过程可见附图2。
[0055]步骤六:在主从节点进行时钟同步的过程中,从节点可以获取时钟漂移Tdiff和与主节点之间的传输时延Tdelay,从节点按照Tdiff修正时钟,并且记录与主节点之间的传输时延。
[0056]在发明本实施例中,系统中节点之前采用以太网连接,节点η的ip地址设置为192.168.1.(n+1),故使用socket通讯完成时钟同步。主从节点之间时钟同步的实现过程如下:
[0057](I)从节点作为服务器端,绑定端口 1620并开始监听,端口的选定只要保证和已占用的端口没有冲突即可,对本发明所述方法本身的实现没有影响;主节点作为服务器端连接服务器端发送Sync消息并且记录此时的系统时间Tl ;
[0058](2)从节点接收到Sync消息后立即记录此时的系统时间T2 ;
[0059](3)主节点向从节点发送Follow_up消息,其中包含记录的Tl ;
[0060](4)从节点收到Follow_up消息之后,向主节点发送Delay_req消息并且记录发送消息的时间T3 ;
[0061](5)主节点记录收到Follow_up消息的时间点T4并且向从节点发送消息Delay_resp,其中包含记录的T4,主从节点分别关闭socket结束通讯;
[0062](6)根据公式Tdiff = [(Tl - T2) - (T4 - T3)]得出从节点相对主节点的时钟漂移,根据公式Tdelay = [(Tl - T2) + (T4 - Τ3)]得出主节点与从节点之间的传输时延。
[0063]步骤七:节点修正时钟后向标准时钟节点发送同步完成消息,标准时钟节点收到所有节点的冋步完成消息后,测试开始如的时钟冋步完成。
[0064]测试进行中的时钟同步步骤如下:
[0065]步骤八:由标准时钟节点周期性地向各时钟同步层发出同步指令,与测试前的时钟同步过程类似,每个同步周期内整个系统进行一次时钟同步,每次同步各节点逐层进行多轮时钟同步,需要进行的同步轮数与节点分成的层数η相同,每次同步在多组主节点和从节点之间进行,第m轮同步时,由节点k作为时钟同步的主节点,节点20^1)+k作为从节点,其中k为从O至2*2(π_2) -1的自然数。
[0066]测试过程中的同步周期为:
[0067]根据本发明应用的测试系统的不同,测试进行中的时钟同步周期也不同,可将同步周期设置为10~200倍系统时钟最小颗粒度,实时性要求较高的系统,同步周期越小;所谓系统时钟最小颗粒度是指系统中需要周期执行的测试任务中最小的周期。
[0068]在本发明实施例中,系统的最小颗粒度为0.5ms,将测试过程中的时钟同步周期设定为20ms,即40倍系统时钟最小颗粒度。
[0069]步骤九:在本实施例中,测试过程中的时钟同步与测试开始前的时钟同步类似,也使用socket通讯完成时钟同步。主从节点之间时钟同步的实现过程如下:
[0070](1)从节点作为服务器端,绑定端口 1620并开始监听;主节点作为服务器端连接服务器端发送Sync消息并且记录此时的系统时间Tl ;
[0071](2)从节点接收到Sync消息后立即记录此时的系统时间T2 ;
[0072](3)主节点向从节点发送Follow_up消息,其中包含记录的Tl ;
[0073](4)从节点根据公式计算时钟漂移Tdiff, Tdiff = [(T2 - Tl) - Tdelay],其中,Tdelay为从节点记录的主从节点之间的传输时延;
[0074](5)如果计算得出的Tdelay小于等于系统时钟的最小颗粒度Tatom,记录第m个同步周期的时钟漂移Tdelay_m,否则进行时钟修正;从节点使用单向链表保存每个同步周期获得的时钟漂移,如果某周期进行了时钟修正,将该周期的时钟漂移保存为O ;
[0075](6)测试结束后按照各从节点记录的各同步周期内的时钟漂移Tdelay修正测试数据的时间标签;测试结束后首先对获得的测试数据进行处理,例如,假设从节点第一个同步周期内的时钟漂移为+0.1ms,则将所有时间标签在O - 20ms范围内的测试数据的时间标签都-0.1ms。
[0076]本发明未详细阐述部分属于本领域公知技术。
[0077]以上所述,仅为本发明部分【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
【权利要求】
1.一种分布式实时测试系统时钟同步方法,其特征在于所述方法分为测试开始前的时钟同步和测试进行中的时钟同步,其中: 所述测试开始前的时钟同步步骤如下: (11)从系统的所有节点中选出一个节点作为标准时钟节点; (12)根据系统内部的节点总数计算需要将节点分为多少层来进行时钟同步,计算方法如下:如果系统内节点总数为N,则计算同步层数η的公式为2*2(η_2)〈Ν - 1< = 2*2(η_? ; (13)为所有节点编号,标准时钟节点为“O”,其余节点从“I”至“N-1”编号; (14)将节点I至节点N-1分层,其中,第η层节点数为2(η-?个; (15)逐层进行多轮时钟同步,需要进行的同步轮数与节点分成的层数η相同,每次同步在多组主节点和从节点之间进行,第m轮同步时,由节点k作为时钟同步的主节点,节点2(m_D+k作为从节点,其中k为从O至2*2(π_2) -1的自然数; (16)在主从节点进行时钟同步的过程中,从节点获取时钟漂移Tdiff和与主节点之间、的传输时延Tdelay,从节点按照Tdiff修正时钟,并且记录与主节点之间的传输时延; (17)节点修正时钟后向标准时钟节点发送同步完成消息,标准时钟节点收到所有节点的冋步完成消息后,测试开始如的时钟冋步完成; 所述测试进行中的时钟同步步骤如下: (21)由标准时钟节点周期性地向各时钟同步层发出同步指令,每个同步周期内整个系统进行一次时钟同步,每次同步各节点逐层进行多轮时钟同步,需要进行的同步轮数与节点分成的层数η相同,每次同步在多组主节点和从节点之间进行,第m轮同步时,由节点k作为时钟同步的主节点,节点+k作为从节点,其中k为从O至2*2(π_2) -1的自然数; (22)测试过程中主从节点同步,同步按照以下过程进行: (221)从主节点向从节点发送同步指令消息Sync,并且主节点记录发送指令的时间点Tl ; (222)从节点记录接收到Sync消息的时间点T2; (223)主节点向从节点发送跟随消息Follow_up,其中包含记录的Tl; (224)从节点根据公式计算时钟漂移Tdiff,Tdiff=[(T2 - Tl) - Tdelay],其中,Tdelay为从节点记录的主从节点之间的传输时延; (225)如果计算得出的Tdelay小于等于系统时钟的最小颗粒度Tatom,记录第m个同步周期的时钟漂移Tdelayjn,否则进行时钟修正; (226)测试结束后按照各从节点记录的各同步周期内的时钟漂移Tdelay修正测试数据的时间标签。
2.根据权利要求1所述的分布式实时测试系统时钟同步方法,其特征在于:所述步骤(11)中从系统的所有节点中选出一个节点作为标准时钟节点的步骤如下;根据应用的测试系统的不同,标准时钟节点的选取按照以下几种原则进行: (111)如果测试系统包含主节点,将主节点作为标准时钟节点; (112)如果测试系统只关注相对时间,则可任意选取节点作为标准时钟节点; (113)如果测试系统关注绝对时间,则该测试系统须经过网络或者GPS手段进行校时,将对外校时的节点作为系统内部的标准时钟节点。
3.根据权利要求1所述的分布式实时测试系统时钟同步方法,其特征在于:所述步骤(21)中测试过程中的同步周期为:设置为10~200倍系统时钟最小颗粒度,实时性要求较高的系统,同步周期越小;所谓系统时钟最小颗粒度是指系统中需要周期执行的测试任务中最小 的周期。
【文档编号】H04J3/06GK104079364SQ201410277069
【公开日】2014年10月1日 申请日期:2014年6月19日 优先权日:2014年6月19日
【发明者】杨顺昆, 刘斌, 司维 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1