技术新讯 > 电子通信装置的制造及其应用技术 > 服务器内数据传输装置、服务器内数据传输方法以及程序与流程  >  正文

服务器内数据传输装置、服务器内数据传输方法以及程序与流程

  • 国知局
  • 2024-08-02 13:55:39

本发明涉及一种服务器内数据传输装置、服务器内数据传输方法以及程序。

背景技术:

1、以基于nfv(network functions virtualization:网络功能虚拟化)的虚拟化技术的进展等为背景,针对每个服务构建并运用系统。此外,根据上述针对每个服务构建系统的方式,将服务功能分割为可再利用的模块单位,并使其在独立的虚拟机(vm:virtualmachine或容器等)环境上动作。

2、作为构成虚拟机的技术,已知由linux(注册商标)和kvm(kernel-based virtualmachine:基于内核虚拟机)构成的虚拟机监控程序(hypervisor)环境。在该环境中,嵌入有kvm模块的host os(将安装在物理服务器上的os称为host os)作为虚拟机监控程序在与被称为内核空间的用户空间不同的存储器区域中运行。在该环境中,虚拟机在用户空间中运行,guest os(将安装在虚拟机上的os称为guest os)在该虚拟机中运行。

3、供guest os运行的虚拟机与供host os运行的物理服务器不同,包括(以以太网(注册商标)卡设备等为代表的)网络设备的所有的hw(hardware:硬件),执行从hw到guestos的中断处理、从guest os到硬件的写入所需的寄存器控制。在这样的寄存器控制中,原本应该由物理硬件来执行的通知、处理被以软件模拟的方式模仿,因此相比于host os环境,性能一般较低。

4、在该性能劣化的情况下,特别是针对从guest os向存在于自虚拟机外的host os、外部进程,存在削减hw的模仿,通过高速且统一的接口提高通信的性能和通用性的技术。作为该技术,开发了virtio这一设备的抽象化技术即准虚拟化技术,已经嵌入至以linux(注册商标)为首、freebsd(注册商标)等多个通用os中,当前正在被利用(参照专利文献1)。

5、在virtio中,关于控制台、文件输入输出以及网络通信等数据输入输出,作为传输数据的单向的传输用运输(transport),通过队列的操作来定义由环状缓冲器设计的队列进行的数据交换。并且,利用virtio的队列的技术规格,通过在guest os起动时准备好适合于各个设备的队列的个数和大小,能够不执行硬件仿真而只通过队列的操作来实现guestos和自虚拟机外部的通信。

6、作为服务器内的数据传输技术,有new api(napi)、dpdk(data planedevelopment kit:数据平面开发工具包)以及kbp(kernel busy poll:内核繁忙轮询)。

7、在new api(napi)中,当数据包到达时,在硬件中断请求之后,通过软件中断请求进行数据包处理。

8、dpdk在供应用程序运行的用户空间实现数据包处理功能,从用户空间通过polling模型在数据包到达时立即进行割取(参照非专利文献1)。详细地说,dpdk是用于在用户空间进行以往linux kernel(注册商标)进行的nic(network interface card:网络接口卡)的控制的框架。与linux kernel中的处理的最大的不同是,具有被称为pmd(pullmode driver:轮询模式驱动)的基于轮询的接收机构。通常,在linux kernel中,响应于向nic的数据的到达而发生中断,并以此为契机执行接收处理。另一方面,pmd由专用线程持续进行数据到达的确认、接收处理。通过排除上下文切换、中断等开销,能够进行高速的数据包处理。dpdk极大地提高了数据包处理的性能和吞吐量,并能为数据平面/应用程序处理确保更多的时间。不过,dpdk占有性地使用cpu(central processing unit)、nic等计算机资源。

9、非专利文献2中记载了服务器内网络延迟控制装置(kbp:kernel busy poll)。kbp在kernel内通过polling模型持续监视数据包到达。由此,抑制softirq,实现低延迟的数据包处理。

10、接着,对dpdk系统进行说明。

11、[dpdk系统构成]

12、图23是表示进行具备加速器11的hw10的控制的dpdk系统的构成的图。

13、dpdk系统具有hw10、数据包处理api(application programming interface:应用程序编程接口)14以及应用程序(apl)20。

14、apl20是在apl的执行之前进行的数据包处理。apl20在此为apl1、apl2。

15、数据包处理api14是向nic或加速器卸载数据包处理时的api。数据包处理api14是配置于user space(用户空间)上的数据高速传输中间软件是dpdk。

16、dpdk在供apl20运行的user space中实现数据包处理功能,通过从user space用polling模型在数据包到达时立即进行割取,可以减小数据包传输延迟。即,dpdk由于利用polling(通过cpu对队列进行busy poll)进行数据包的割取(参照滞留在缓冲器中的数据包的内容,针对该数据包的处理,考虑到接下来进行的处理而从缓冲器中删除符合的队列的项目),所以没有等待而延迟小。

17、hw10进行apl1、apl2之间的数据收发的通信。在以下的说明中,将apl1、apl2接受来自hw10的数据包的数据的流动称为rx侧接收,将apl1、apl2向hw10发送数据包的数据的流动称为tx侧发送。

18、hw10具备加速器1。此外,hw10还可以具备用于连接到通信网络的nic(物理nic)。

19、加速器11是根据来自cpu的输入,高速进行特定的运算的计算单元硬件。具体而言,加速器11是gpu(graphics processing unit:图形处理器)、fpga(field programmablegate array:现场可编程门阵列)等pld(programmable logic device:可编程逻辑器件)。在图23中,加速器11具备:多个ip核(intellectual property core:知识产权核)12、由以先入先出的列表结构保持数据的rx队列(queue:队列)和tx队列构成的物理队列13。ip核12是构成fpga、ic、lsi等半导体的可再利用的电路组件的设计信息,有时也被称为设备核(core处理器)。

20、将apl1、apl2的处理的一部分卸载到加速器11,实现仅通过软件(cpu处理)无法达到的性能和功率效率。

21、假定将如上所述的加速器11应用于构成nfv(network functionsvirtualization:网络功能虚拟化)、sdn(software defined network:软件定义网络)的数据中心等大型服务器集群的情况。

22、用dpdk等轮询模式将数据传输至加速器的现有应用程序(apl20、apl1、apl2),在初始化时固定地关联应用程序使用的物理队列13而运行(参照图23的虚线框)。应用程序的线程(以下,称为应用程序线程)经由与加速器11对应的ring buffer16(参照图24)进行收发处理。应用程序线程15在此是pollingthread。

23、图24是说明基于图23的dpdk系统的轮询的接收处理的图。

24、应用程序线程(pollingthread)15和数据包处理api14配置于用户空间(userspace)30上。

25、在基于轮询的接收处理中,存在应当传输的数据时将该数据的指针储存在ringbuffer16中(参照图24的附图标记a)。

26、为了抑制从加速器11起的延迟,应用程序线程15轮询ring buffer16,在存在应当传输的数据时获取该数据的指针进行接收处理(参照图24的附图标记b)。此时,就应用程序线程15而言,由于轮询cpu使用率成为100%,功耗增大。

27、就dpdk而言,由于应用程序线程15轮询数据包到达,因此延迟小,但功耗增大。如图23所示,在存在多个应用程序apl1、apl2的情况下,功耗的增大的影响非常大。

28、现有技术文献

29、专利文献

30、专利文献1:日本特开2018-32156号公报

31、非专利文献

32、非专利文献1:the linux foundation projectsdpdk,[online],[令和3年11月5日检索],互联网〈http://www.dpdk.org/〉

33、非专利文献2:kei fujimoto、kenichi matsui、masayuki akutsu,“kbp:kernelenhancements for low-latency networking without application customization invirtual server”,ieee ccnc 2021。

技术实现思路

1、发明所要解决的问题

2、但是,在基于轮询模型的数据包传输中,存在下述问题。

3、在dpdk中,kernel thread由于进行polling(通过cpu对队列进行busy poll)而独占cpu核。因此,即使是例如间歇性的数据包接收,在dpdk中无论有无数据包到达,都始终100%使用cpu,因此存在功耗变大的问题。

4、关于kbp,也存在上述与dpdk同样的问题。即,kbp在kernel内通过polling模型持续监视数据包到达,由此能够抑制softirq,实现低延迟的数据包处理。但是,由于持续监视数据包到达的kernel thread独占cpu核,总是使用cpu时间,所以存在功耗变高的问题。

5、本发明是鉴于这样的背景而完成的,本发明的问题在于,在多个应用程序中使用搭载在物理服务器上的加速器资源时,抑制从加速器向应用程序的数据传输延迟,同时削减用于数据的轮询的cpu的功耗。

6、用于解决问题的方案

7、为解决所述的问题,提供了一种服务器内数据传输装置,在应用程序中使用包括加速器的设备时进行从所述设备向所述应用程序的数据传输,其特征在于,具备:数据包到达监视部,监视所述设备和与所述应用程序对应的应用程序线程之间的通信并测量数据包到达定时;以及轮询控制部,在所述数据包到达监视部感测到数据包的到达的数据包到达时唤醒所述应用程序线程并使所述应用程序线程进行数据包处理,在没有所述数据包的到达的期间使所述应用程序线程sleep(睡眠)。

8、发明效果

9、根据本发明,在多个应用程序中使用搭载在物理服务器上的加速器资源时,能够抑制从加速器向应用程序的数据传输延迟,同时能够削减用于数据轮询的cpu的功耗。

本文地址:https://www.jishuxx.com/zhuanli/20240801/241119.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。