基于IEEE 1588的虚拟集群多任务同步技术研究
【摘要】:随着计算机系统技术水平的不断提高以及大数据和云计算技术的快速发展,硬件资源虚拟化技术在分布式系统中得到了广泛应用。当虚拟集群执行分布式实时应用任务时,由于虚拟环境的复杂性,往往会产生时钟漂移、同步性能差等问题,难以为实时任务的执行提供高精准度的时间基准。为了有效地提高虚拟集群时间同步的精准度,进而实现分布式系统中的多任务同步,本课题基于IEEE 1588v2协议和KVM虚拟化平台,分别从硬件辅助和纯软件两方面着手,针对不同的部署环境和应用需求,提出基于硬件的同步方案和基于软件的改进方案,为虚拟集群的多任务同步提供良好而多样的解决方案。(1)在虚拟机通信机制的理论基础上,本文提出并实现了一种同步性能优良的基于硬件的同步方案,主要由IEEE 1588v2硬件同步模块和共享硬件访问模块组成。在IEEE 1588v2硬件同步模块中将从时钟硬件网络设备同步到主时钟硬件网络设备。共享硬件访问模块针对使用原有驱动程序只能让主机或某一客户机的操作系统独占从时钟硬件设备的问题,通过修改主机内核中的KVM模块代码,完成在虚拟机的用户空间中共享访问从时钟硬件网络设备的操作,获取硬件设备的时间戳信息并以此同步客户机的操作系统时间。(2)在Linux的网络技术基础上,结合IEEE 1588v2协议中端到端透明时钟(End to End Transparent Clock,E2E TC)的思想,本文提出并实现了一种同步性能较为良好的基于软件的改进方案。改进方案针对系统内核网络I/O路径中时延不对称的问题,对主机内核网络通信代码予以改进,计算出PTPv2事件报文驻留时间并累加到报文修正域中,实现E2E TC的功能。该改进使得运行在客户机用户空间的PTPv2同步软件可以根据这些事件报文来修正总时延,从而提高时间同步的精准度。我们搭建了实验测试系统来对所提出的同步方案和改进方案的效果进行长时间的测试。从测试结果来看,基于硬件的同步方案的同步精准度和稳定性比使用PTPd软件同步高一个数量级,达到十微秒量以内;而基于软件的改进方案的同步精准度和稳定性比改进前高50%左右,改进效果显著。