System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种虚拟存储控制器的传输优化方法技术_技高网

一种虚拟存储控制器的传输优化方法技术

技术编号:40930223 阅读:3 留言:0更新日期:2024-04-18 14:51
本发明专利技术公开了一种虚拟存储控制器的传输优化方法,具体涉及数据通信技术领域,应用于virtio_blk控制器,所述virtio_blk控制器包括virtio_csr、virtio_adaptor、fetch_index、fetch_ring、fetch_desc、fetch_pkt、mate_builder、slot_adaptor、data_parser以及updata_pkt;本发明专利技术基于智能网卡的virtio_blk控制器设计,优化了整体的系统设计构架,相比纯软件实现,提高了存储数据的传输效率,并且节省CPU的核数开销。

【技术实现步骤摘要】

本专利技术涉及数据通信,更具体地说,本专利技术涉及一种虚拟存储控制器的传输优化方法


技术介绍

1、虚拟存储控制器是计算机系统中的一个重要组件,它主要负责管理虚拟存储器系统,实现虚拟内存的功能,目前应用最广泛的为virtio-blk控制器。

2、virtio-blk控制器是虚拟化kvm平台下虚拟磁盘的一种实现方式,在kvm平台中,qemu程序负责模拟一台pc的整个工作过程,qemu对设备的模拟可以分成全模拟和半模拟,其中,全模拟不需要提供专门针对虚拟化场景的设备驱动,可以复用物理环境下的驱动程序;但是,在全模拟时,虚拟机内部驱动会频繁访问虚拟机io端口,kvm平台下会产生大量的陷入和陷出操作。此外,虚拟机内外数据传输时拷贝方式只能以字节为单位进行,无法直接采用共享内存的方式,因此大大降低访问性能;而半模拟技术中,虚拟化设备配合前端驱动,采用全新的事件通知和数据传递机制,进而大幅提升性能,例如以virtio-blk控制器实现访问磁盘的行为中,采用io_event_fd进行前端到后端通知,采用中断注入方式实现后端到前端的通知,并通过io环(vring)进行数据的共享。

3、在现有技术中,virtio通过硬件加速已经是行业的一个通用的做法,因此,在智能网卡中,实现virtio_blk硬件加速,也是必然趋势,然而,将virtio-blk控制器到后端映射到远端磁盘上,需要在主机系统中挂载很多的远端磁盘,降低网络传输效率。


技术实现思路

1、为了克服现有技术的上述缺陷,本专利技术的实施例提供一种虚拟存储控制器的传输优化方法,以解决上述
技术介绍
中提出的问题。

2、为实现上述目的,本专利技术提供如下技术方案:一种虚拟存储控制器的传输优化方法,应用于virtio_blk控制器,所述virtio_blk控制器包括virtio_csr、virtio_adaptor、fetch_index、fetch_ring、fetch_desc、fetch_pkt、mate_builder、slot_adaptor、data_parser以及updata_pkt;

3、当virtio_blk控制器到soc侧之间链路的存储包丢失时,virtio_blk控制器进行处理;

4、当soc侧异常导致转发存储包丢失时,virtio_blk控制器进行处理;

5、当远端磁盘读写异常,无返回完成包而导致存储包丢失时,soc侧进行处理。

6、进一步地,所述virtio_csr为virtio的寄存器模块,用于缓存pf或者vf对应的queue的公共配置寄存器和特定配置寄存器;virtio_csr作为客户机host侧driver与fpga侧device之间寄存器交互用,用于整个virtio的控制通道;

7、所述virtio_adaptor为数据通道合并选择模块,将多路的dma读写请求,做通道选择,当virtio_blk控制器向客户机host发起dma读写请求时,将多条请求通道采用rr轮询的方式,合并成一个通道与客户机host交互;当客户机host响应virtio_blk控制器的读请求时,将返回的响应数据进行拆分,按照先前记录的读请求顺序,正确返回到对应的通道中。

8、进一步地,所述fetch_index:获取客户机host侧进行notify通知机制,以获取客户机host侧虚拟queue的共享ring环中的headindex;当收到对应queue的notify信号时,fetch_index获取客户机host侧对应queue的index,并且将取到的headindex传输至fetch_ring中;

9、所述fetch_ring:获取客户机host侧虚拟queue的共享ring环中对应数组值,数组值的索引为headindex,内容为index对应的第一个描述符链表的索引;当fetch_index输入index相关信息时,fetch_ring从客户机host获取到数组值,即第一个描述符的位置索引,传递到fetch_desc。

10、进一步地,所述fetch_desc:获取客户机host侧虚拟queue中当前headindex对应的描述符,通过fetch_ring传输过来的数组信息驱动,数组含有描述符链表中第一个描述符的第一标号,根据第一标号找到index对应的第一个描述符,第一个描述符包括第二个描述符的第二标号,由第二标号找到链表的第二个描述符,第二个描述符也包括第三个描述符位置的第三标号,以此类推,根据第三标号找到index对应的所有描述符链表,将同一个虚拟queue的同一个index对应的完整的描述符组成的链表,按照前后获取的顺序排列,一次性完整的传输至mate_builder处理;

11、所述mate_builder为组包头,并将同一个queue的同一个index对应的描述符链表进行分类传输,mate_builder通过fetch_desc传输过来的描述符链表信息进行驱动;当收到完成的描述符链表后,将根据描述符内的标志位来分成两部分;第一部分为只写客户机host的描述符,第一部分的描述符组成一个包头,传输到fetch_pkt;第二部分为只读客户机host的描述符,同样也传输给fetch_pkt,且只读客户机host的描述符需要被fetch_pkt消耗。

12、进一步地,所述fetch_pkt:获取客户机host侧只读数据,并组包,fetch_pkt通过mate_builder传输过来的两部分描述符信息进行驱动,fetch_pkt将只读客户机host的描述符进行拆解分析,根据描述符内的地址+数据长度获取到客户机host侧的描述数据,将描述数据和只写客户机host描述符组成的包头进行拼接合并,组成一个包头+数据的存储包,传输到slot_adaptor;

13、所述slot_adaptor为virtio_blk控制器对接远端磁盘的输入输出模块,slot_adaptor包括两个功能,第一功能是将fetch_pkt输入的第一存储包加第一标记,以显示一存储包为对应的pf或者vf的虚拟queue的存储包,使得输出的存储包为完整的包;第二功能为接收远端磁盘返回的完成包,并解析出来对应的pf或者vf的queue的信息,并将解析的结果和对应的完成包信息传输至data_parser模块处理。

14、进一步地,所述data_parser:解析来自slot_adaptor的完成包,data_parser通过slot_adaptor传输的完成包等信息进行驱动,当接收到完成包,第一步将包头和数据部分剥离,第二步解析出包头内携带的只写客户机host描述符等信息,以获得解析信息;第三步将解析信息和剥离后剩下的数据部分传输至updata_pkt;

15、所述updata_pkt用于监测上传数据、更新客户机host侧used_index和发起中断信息;updata_pkt通过data_parser传输过来的解析包等信息进行驱动,当upd本文档来自技高网...

【技术保护点】

1.一种虚拟存储控制器的传输优化方法,其特征在于,应用于virtio_blk控制器,所述virtio_blk控制器包括virtio_csr、virtio_adaptor、fetch_index、fetch_ring、fetch_desc、fetch_pkt、mate_builder、slot_adaptor、data_parser以及updata_pkt;

2.根据权利要求1所述的一种虚拟存储控制器的传输优化方法,其特征在于,所述virtio_csr为virtio的寄存器模块,用于缓存PF或者VF对应的queue的公共配置寄存器和特定配置寄存器;virtio_csr作为客户机host侧driver与FPGA侧device之间寄存器交互用,用于整个virtio的控制通道;

3.根据权利要求2所述的一种虚拟存储控制器的传输优化方法,其特征在于,所述fetch_index:获取客户机host侧进行notify通知机制,以获取客户机host侧虚拟queue的共享ring环中的headindex;当收到对应queue的notify信号时,fetch_index获取客户机host侧对应queue的index,并且将取到的headindex传输至fetch_ring中;

4.根据权利要求3所述的一种虚拟存储控制器的传输优化方法,其特征在于,所述fetch_desc:获取客户机host侧虚拟queue中当前headindex对应的描述符,通过fetch_ring传输过来的数组信息驱动,数组含有描述符链表中第一个描述符的第一标号,根据第一标号找到index对应的第一个描述符,第一个描述符包括第二个描述符的第二标号,由第二标号找到链表的第二个描述符,第二个描述符也包括第三个描述符位置的第三标号,根据第三标号找到index对应的所有描述符链表,将同一个虚拟queue的同一个index对应的完整的描述符组成的链表,按照前后获取的顺序排列,一次性完整的传输至mate_builder处理;

5.根据权利要求4所述的一种虚拟存储控制器的传输优化方法,其特征在于,所述fetch_pkt:获取客户机host侧只读数据,并组包;fetch_pkt通过mate_builder传输过来的两部分描述符信息进行驱动,fetch_pkt将只读客户机host的描述符进行拆解分析,根据描述符内的地址+数据长度获取到客户机host侧的描述数据,将描述数据和只写客户机host描述符组成的包头进行拼接合并,组成一个包头+数据的存储包,传输到slot_adaptor;

6.根据权利要求5所述的一种虚拟存储控制器的传输优化方法,其特征在于,所述data_parser:解析来自slot_adaptor的完成包,data_parser通过slot_adaptor传输的完成包信息进行驱动,当接收到完成包,第一步将包头和数据部分剥离,第二步解析出包头内携带的只写客户机host描述符信息,以获得解析信息;第三步将解析信息和剥离后剩下的数据部分传输至updata_pkt;

7.根据权利要求6所述的一种虚拟存储控制器的传输优化方法,其特征在于,当virtio_blk控制器到soc侧之间链路的存储包丢失时,virtio_blk控制器的处理过程包括:

8.根据权利要求7所述的一种虚拟存储控制器的传输优化方法,其特征在于,当soc侧异常导致转发存储包丢失时,virtio_blk控制器的处理过程包括:

9.根据权利要求8所述的一种虚拟存储控制器的传输优化方法,其特征在于,当远端磁盘读写异常,无返回完成包而导致存储包丢失时,soc侧处理过程包括:

10.一种电子设备,其特征在于,包括:处理器和存储器,其中,所述存储器中存储有可供处理器调用的计算机程序;

...

【技术特征摘要】

1.一种虚拟存储控制器的传输优化方法,其特征在于,应用于virtio_blk控制器,所述virtio_blk控制器包括virtio_csr、virtio_adaptor、fetch_index、fetch_ring、fetch_desc、fetch_pkt、mate_builder、slot_adaptor、data_parser以及updata_pkt;

2.根据权利要求1所述的一种虚拟存储控制器的传输优化方法,其特征在于,所述virtio_csr为virtio的寄存器模块,用于缓存pf或者vf对应的queue的公共配置寄存器和特定配置寄存器;virtio_csr作为客户机host侧driver与fpga侧device之间寄存器交互用,用于整个virtio的控制通道;

3.根据权利要求2所述的一种虚拟存储控制器的传输优化方法,其特征在于,所述fetch_index:获取客户机host侧进行notify通知机制,以获取客户机host侧虚拟queue的共享ring环中的headindex;当收到对应queue的notify信号时,fetch_index获取客户机host侧对应queue的index,并且将取到的headindex传输至fetch_ring中;

4.根据权利要求3所述的一种虚拟存储控制器的传输优化方法,其特征在于,所述fetch_desc:获取客户机host侧虚拟queue中当前headindex对应的描述符,通过fetch_ring传输过来的数组信息驱动,数组含有描述符链表中第一个描述符的第一标号,根据第一标号找到index对应的第一个描述符,第一个描述符包括第二个描述符的第二标号,由第二标号找到链表的第二个描述符,第二个描述符也包括第三个描述符位置的第三标号,根据第三标号找到index对应的所有描述符链表,将同一个虚拟queue的同一个in...

【专利技术属性】
技术研发人员:李小龙杨琰旭莫喜梁
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1