VIRTIO网络设备延时定位方法、处理单元及VIRTIO网络设备技术

技术编号:34353247 阅读:50 留言:0更新日期:2022-07-31 06:06
本申请提供了一种VIRTIO网络设备延时定位方法、处理单元及VIRTIO网络设备。该方法包括获取VIRITO前端网络驱动的当前系统时间,并将当前系统时间写入时间同步模块中;在待发送的网络数据包的头部或者尾部增加时间戳,形成更新后的网络数据包,更新后的网络数据包存储在VIRITO前端网络驱动中的;获取更新后的网络数据包被发送至描述符表读取模块的第一时刻、已用环表更新模块的第二时刻、消息中断模块的第三时刻和以太网数据包接口模块的第四时刻;根据第一时刻、第二时刻、第三时刻以及第四时刻分别与时间戳的差值,定位VIRTIO网络设备中发生延时的模块。本方案实现了对VIRTIO网络设备延时的精准定位。备延时的精准定位。备延时的精准定位。

Virtio network device delay positioning method, processing unit and virtio network device

【技术实现步骤摘要】
VIRTIO网络设备延时定位方法、处理单元及VIRTIO网络设备


[0001]本申请涉及云计算领域,具体而言,涉及一种VIRTIO网络设备延时定位方法、处理单元、及VIRTIO网络设备。

技术介绍

[0002]云计算虚拟化技术中,为了让多个GuestOS(GuestOperationSystem,客户机操作系统)可以独立于HostOS(HostOperationSystem,主机操作系统)运行在同一个硬件上,通常需要增加一个虚拟化层来实现。该虚拟化层称为VMM(VirtualMachineMonitor,虚拟机监视器,运行在主机操作系统上,用来支撑多个虚拟机运行的软件)。QEMU(MachineEmulatorandVirtualizer,机器模拟及虚拟化软件)作为一个VMM提供了全虚拟化环境,在全虚拟化环境中,客户机操作系统不感知自己是虚拟机,也无需修改客户机操作系统。但是由于所有操作都需要软件模拟,设备访问过程中,频繁的陷入/陷出带来了严重的性能问题,因此半虚拟化技术VIRTIO(VirtualI/ODevice,虚拟化I/O设备)应运而生。
[0003]VIRTIO是一个通用的半虚拟化I/O框架,VMM通过它模拟出一系列的虚拟化设备。VIRTIO框架主要包含三个部分:前端驱动(Front

endDriver)、后端设备(Back

endDevice)以及虚拟化队列(Virtqueue,VIRTIO前端驱动和VIRTIO后端设备交互数据的队列结构)。其中,前端驱动为虚拟机内部的VIRTIO模拟设备(比如常见的VIRTIO网络设备,VIRTIO磁盘设备等)对应的驱动,前端驱动的作用是接收用户态的请求,然后按照协议将这些请求进行封装,发送到后端设备;后端设备通常在QEMU中实现,后端设备用来接收前端驱动发过来的I/O请求,然后对接收的数据进行解析,并从实际物理设备上完成收、发请求,并最终通过中断机制通知前端驱动;前端和后端的数据通过Virtqueue队列进行交互。
[0004]相关技术中,一个VIRTIO网络设备收发报文需要经过很多步骤,在实际部署与应用时,如果出现延时较长的情况,往往很难定位是哪个步骤出的问题。

技术实现思路

[0005]本申请的主要目的在于提供一种VIRTIO网络设备延时定位方法、处理单元、VIRTIO网络设备、计算机可读存储介质与处理器,以解决现有技术中在VIRTIO网络设备出现延时,难以定位发生延时的步骤的问题。
[0006]为了实现上述目的,根据本申请的一个方面,提供了一种VIRTIO网络设备延时定位方法,所述VIRTIO网络设备包括VIRITO前端网络驱动和VIRTIO后端网络设备,所述VIRTIO后端网络设备包括时间同步模块、描述符表读取模块、已用环表更新模块、消息中断模块和以太网数据包接口模块,包括:获取VIRITO前端网络驱动的当前系统时间,并将所述当前系统时间写入所述时间同步模块中,所述时间同步模块用于将所述当前系统时间和所述VIRTIO后端网络设备的本地时钟获取的硬件时间进行同步;在待发送的网络数据包的头部或者尾部增加时间戳,形成更新后的网络数据包,所述更新后的网络数据包存储在所述VIRITO前端网络驱动中的;获取所述更新后的网络数据包被发送至描述符表读取模块的第
一时刻、所述已用环表更新模块的第二时刻、所述消息中断模块的第三时刻和所述以太网数据包接口模块的第四时刻;根据所述第一时刻、所述第二时刻、所述第三时刻以及所述第四时刻分别与所述时间戳的差值,定位所述VIRTIO网络设备中发生延时的模块。
[0007]可选地,根据所述第一时刻、所述第二时刻、所述第三时刻以及所述第四时刻分别与所述时间戳的差值,定位所述VIRTIO网络设备中发生延时的模块,包括至少以下之一:将四个所述差值中最大的所述差值对应的模块确定为所述VIRTIO网络设备发生延时的模块;将四个所述差值中最大的所述差值对应的模块,和次大的所述差值对应的模块确定为所述VIRTIO网络设备发生延时的模块。
[0008]可选地,在待发送的网络数据包的头部或者尾部增加时间戳,形成更新后的网络数据包之后,所述方法还包括:采用描述符表表征所述网络数据包的缓存信息,所述缓存信息包括多个数据缓存地址、多个数据缓存长度、多个标志以及多个下一跳指针;通过多个所述下一跳指针将所述描述符表串连成数据链。
[0009]可选地,在通过多个所述下一跳指针将所述描述符表串连成数据链之后,所述方法还包括:将所述数据链的首地址写入可用环表的当前索引所指向的位置;更新所述当前索引的索引值。
[0010]可选地,在更新所述当前索引的索引值之后,所述方法还包括:根据所述可用环表的所述当前索引,读取所述可用环表的指针值;根据所述指针值读取所述描述符表。
[0011]可选地,所述时间戳的长度为8字节。
[0012]可选地,所述时间戳的高32位用于表示从历史时间到所述当前系统时间的秒数,所述时间戳的低32位用于表示秒的小数部分。
[0013]根据本申请的一个方面,提供了一种处理单元,VIRTIO网络设备包括VIRITO前端网络驱动和VIRTIO后端网络设备,所述处理单元分别与所述VIRITO前端网络驱动和所述VIRTIO后端网络设备交互,所述VIRTIO后端网络设备包括时间同步模块、描述符表读取模块、已用环表更新模块、消息中断模块和以太网数据包接口模块,包括:第一获取模块,用于获取VIRITO前端网络驱动的当前系统时间,并将所述当前系统时间写入所述时间同步模块中,所述时间同步模块用于将所述当前系统时间和所述VIRTIO后端网络设备的本地时钟获取的硬件时间进行同步;新增模块,用于在待发送的网络数据包的头部或者尾部增加时间戳,形成更新后的网络数据包,所述更新后的网络数据包存储在所述VIRITO前端网络驱动中的;第二获取模块,用于获取所述更新后的网络数据包被发送至描述符表读取模块的第一时刻、所述已用环表更新模块的第二时刻、所述消息中断模块的第三时刻和所述以太网数据包接口模块的第四时刻;定位模块,用于根据所述第一时刻、所述第二时刻、所述第三时刻以及所述第四时刻分别与所述时间戳的差值,定位所述VIRTIO网络设备中发生延时的模块。
[0014]根据本申请的一个方面,提供了一种VIRTIO网络设备,包括VIRITO前端网络驱动和VIRTIO后端网络设备,所述VIRTIO后端网络设备包括时间同步模块、描述符表读取模块、已用环表更新模块、消息中断模块、以太网数据包接口模块和控制器,所述VIRITO前端网络驱动包括处理模块和增加模块,所述处理模块被配置为获取VIRITO前端网络驱动的当前系统时间,并将所述当前系统时间写入VIRTIO后端网络设备的时间同步模块中;所述时间同步模块被配置为将所述当前系统时间和所述VIRTIO后端网络设备的本地时钟获取的硬件
时间进行同步;所述增加模块被配置为在待发送的网络数据包的头部或者尾部增加时间戳,形成更新后的网络数据包;所述描本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种VIRTIO网络设备延时定位方法,其特征在于,所述VIRTIO网络设备包括VIRITO前端网络驱动和VIRTIO后端网络设备,所述VIRTIO后端网络设备包括时间同步模块、描述符表读取模块、已用环表更新模块、消息中断模块和以太网数据包接口模块,包括:获取VIRITO前端网络驱动的当前系统时间,并将所述当前系统时间写入所述时间同步模块中,所述时间同步模块用于将所述当前系统时间和所述VIRTIO后端网络设备的本地时钟获取的硬件时间进行同步;在待发送的网络数据包的头部或者尾部增加时间戳,形成更新后的网络数据包,所述更新后的网络数据包存储在所述VIRITO前端网络驱动中的;获取所述更新后的网络数据包被发送至描述符表读取模块的第一时刻、所述已用环表更新模块的第二时刻、所述消息中断模块的第三时刻和所述以太网数据包接口模块的第四时刻;根据所述第一时刻、所述第二时刻、所述第三时刻以及所述第四时刻分别与所述时间戳的差值,定位所述VIRTIO网络设备中发生延时的模块。2.根据权利要求1所述的方法,其特征在于,根据所述第一时刻、所述第二时刻、所述第三时刻以及所述第四时刻分别与所述时间戳的差值,定位所述VIRTIO网络设备中发生延时的模块,包括至少以下之一:将四个所述差值中最大的所述差值对应的模块确定为所述VIRTIO网络设备发生延时的模块;将四个所述差值中最大的所述差值对应的模块,和次大的所述差值对应的模块确定为所述VIRTIO网络设备发生延时的模块。3.根据权利要求1所述的方法,其特征在于,在待发送的网络数据包的头部或者尾部增加时间戳,形成更新后的网络数据包之后,所述方法还包括:采用描述符表表征所述网络数据包的缓存信息,所述缓存信息包括多个数据缓存地址、多个数据缓存长度、多个标志以及多个下一跳指针;通过多个所述下一跳指针将所述描述符表串连成数据链。4.根据权利要求3所述的方法,其特征在于,在通过多个所述下一跳指针将所述描述符表串连成数据链之后,所述方法还包括:将所述数据链的首地址写入可用环表的当前索引所指向的位置;更新所述当前索引的索引值。5.根据权利要求4所述的方法,其特征在于,在更新所述当前索引的索引值之后,所述方法还包括:根据所述可用环表的所述当前索引,读取所述可用环表的指针值;根据所述指针值读取所述描述符表。6.根据权利要求1至5中任一项所述的方法,其特征在于,所述时间戳的长度为8字节。7.根据权利要求6所述的方法,其特征在于,所述时间戳的高32位用于表示从历史时间到所述当前系统时间的秒数,所述时间戳的低32位用于表示秒的小数部分。8.一种处理单元,其特征在于,VIRTIO网络设备包括VIRITO前端网络驱动和VIRTIO后端网络设备,所述处理单元分别与所述VIRITO前端网络驱动和所述VIRTIO后端网络设备交互,所述VIRTIO后端网络设备包括时间同步模块、描述符表读取模块、已用环表更新模块、
消息中断模块和以太网数据包接口模块,包括:第一获取模块,用于获取VIRITO前端网络驱动的当前系统时间,并将所述当前系统时间写入所述时间同步模块中,所述时间同步模块用于将所述当前系统时间和所述VIRTIO后端网络设备的本地时钟获取的硬件时间进行同步;新增模块,用于在待发送的网络数据包的头部或者尾部增加时间戳,形成更新后的网络数据包,所述更新后的网络数据包存储在所述VIRITO前端网络驱动中的;第二获取模块,用于获取所述更新...

【专利技术属性】
技术研发人员:王建东马强史寅昭
申请(专利权)人:深圳云豹智能有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1