CN113849277B - 网卡测试方法、装置、计算机设备及计算机可读存储介质 - Google Patents

网卡测试方法、装置、计算机设备及计算机可读存储介质 Download PDF

Info

Publication number
CN113849277B
CN113849277B CN202111455101.4A CN202111455101A CN113849277B CN 113849277 B CN113849277 B CN 113849277B CN 202111455101 A CN202111455101 A CN 202111455101A CN 113849277 B CN113849277 B CN 113849277B
Authority
CN
China
Prior art keywords
network card
virtual machine
test
queue
operating system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111455101.4A
Other languages
English (en)
Other versions
CN113849277A (zh
Inventor
杨绍军
曾佳栋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phytium Technology Co Ltd
Original Assignee
Phytium Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phytium Technology Co Ltd filed Critical Phytium Technology Co Ltd
Priority to CN202111455101.4A priority Critical patent/CN113849277B/zh
Publication of CN113849277A publication Critical patent/CN113849277A/zh
Application granted granted Critical
Publication of CN113849277B publication Critical patent/CN113849277B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本申请提供一种网卡测试方法、装置、计算机设备及计算机可读存储介质,涉及计算机技术领域,方法包括:在所述宿主机操作系统中启动所述虚拟机,以触发所述虚拟机测试系统执行;在所述虚拟机测试系统中执行网卡测试程序,所述网卡测试程序与待测试的网卡通信,所述网卡测试程序和所述虚拟机测试系统均运行于内核态;在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口执行网卡测试任务,并根据执行所述网卡测试任务时所述网卡从发包装置接收的数据包以及所述网卡向所述发包装置发送的数据包,得到所述网卡的测试结果。本申请能够降低计算复杂度以及减少资源占用。

Description

网卡测试方法、装置、计算机设备及计算机可读存储介质
技术领域
本申请实施例涉及计算机技术领域,具体而言,涉及一种网卡测试方法、装置、计算机设备及计算机可读存储介质。
背景技术
云计算是基于互联网的服务增加、使用和交付模式,云计算的根本是计算资源、网络资源和存储资源的虚拟化。随着云计算的蓬勃发展,各种虚拟化平台(虚拟机)被不断推出。在这些虚拟机的研发过程中,需要对其中的各种模块和功能进行测试。其中,对虚拟机的网卡性能进行测试,是其中重要的一项任务。
现有技术中,可以通过在虚拟机的虚拟机操作系统上运行数据平面开发套件(Data Plane Development Kit)测试程序,基于虚拟机操作系统的多种接口或模块调用,对虚拟机的网卡性能进行测试。
但是,现有技术的方法会导致虚拟机的资源开销较大。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种网卡测试方法、装置、计算机设备及计算机可读存储介质,以解决现有技术中虚拟机的网卡测试时虚拟机的资源开销较大的问题。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种网卡测试方法,应用于计算机设备,所述计算机设备上部署有:宿主机操作系统、虚拟机,其中,所述宿主机操作系统与所述虚拟机通信连接,所述虚拟机中部署有虚拟机测试系统,所述虚拟机测试系统为所述虚拟机的操作系统,所述虚拟机测试系统提供与网卡测试关联的调用接口;所述方法包括:
在所述宿主机操作系统中启动所述虚拟机,以触发所述虚拟机测试系统执行;
在所述虚拟机测试系统中执行网卡测试程序,所述网卡测试程序与待测试的网卡通信,所述网卡测试程序和所述虚拟机测试系统均运行于内核态;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口执行网卡测试任务,并根据执行所述网卡测试任务时所述网卡从发包装置接收的数据包以及所述网卡向所述发包装置发送的数据包,得到所述网卡的测试结果。
通过上述方式,首先,针对虚拟机,摒弃了现有的虚拟机的Linux操作系统,而是在宿主机的虚拟机中部署虚拟机测试系统,该虚拟机测试系统作为虚拟机的操作系统,仅提供与网卡测试关联的调用接口,而无需像现有的Linux操作系统一样实现复杂的调用接口,可以通过极少量的程序代码实现小型操作系统的初始化。因此,在启动虚拟机以触发所述虚拟机测试系统执行时,仅需要占用较少的系统资源即可以完成虚拟机测试系统的初始化。其次,在虚拟机测试系统执行时,在虚拟机测试系统中执行网卡测试程序。该网卡测试程序作为虚拟机测试系统的子集,与虚拟机测试系统均工作在内核态,使得虚拟机测试系统初始化完成后,可以直接调用网卡测试程序即可以使得网卡测试程序运行,而无需经过用户态向内核态的系统调用,而是直接在内核态中调用系统调用接口以实现网卡测试,从而避免内核态和应用态切换所带来的资源开销。因此,应用本实施例,能够极大降低计算复杂度以及减少资源占用。由于本实施例能够极大降低计算复杂度以及减少资源占用,因此,可以较好地适用于仿真环境中,极大提升仿真的速度。
作为一种可选的实施方式,所述在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口执行网卡测试任务,并根据执行所述网卡测试任务时所述网卡从发包装置接收的数据包以及所述网卡向所述发包装置发送的数据包,得到所述网卡的测试结果,包括:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口分配大页内存,并控制内存管理单元建立内存映射;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,并根据扫描结果启动所述网卡;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,将所述网卡接收的由所述发包装置发送的数据包保存至所述大页内存中,并通过所述网卡向所述发包装置发送接收到的数据包;
在所述网卡测试程序中根据保存至所述大页内存中的数据包以及向所述发包装置发送的数据包,确定所述网卡的测试结果。
通过上述方式,提前为网卡测试任务分配大页内存,进而,在虚拟机测试系统内部扫描到网卡后启动网卡测试任务,将网卡测试任务执行过程中由网卡接收和发送的数据包都保存在大页内存中。这样,首先,不需要依赖宿主机操作系统,也不需要执行人工的配置,可以简化处理过程,其次,网卡测试任务执行的过程中,可以避免缺页中断的产生。
作为一种可选的实施方式,所述在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口分配大页内存,包括:
在所述网卡测试程序中,调用所述虚拟机测试系统的内存分配接口,分配所述大页内存。
通过上述方式,内存分配接口为虚拟机测试系统为网卡测试程序提供的用于分配大页内存的接口函数的,当网卡测试程序运行时,由于网卡测试程序运行在内核态,因此,可以直接在内核态下调用该内存分配接口为网卡测试任务分配大页内存,从而可以提升运行速度,减少资源占用。
作为一种可选的实施方式,所述在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,并根据扫描结果启动所述网卡,包括:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,确定所述网卡以及所述网卡对应的网卡驱动程序;
调用所述网卡对应的网卡驱动程序初始化所述网卡;
建立第一环形队列和第二环形队列;
建立所述第一环形队列与所述网卡中的第三环形队列的映射关系;
建立所述第二环形队列与所述网卡中的第四环形队列的映射关系;
调用所述网卡对应的网卡驱动程序启动所述网卡;
其中,所述第一环形队列和第二环形队列位于所述大页内存中,所述第一环形队列用于存储从所述网卡接收的数据包,所述第二环形队列用于存储待发送至所述网卡的数据包;
所述第三环形队列和所述第四环形队列位于所述网卡中,所述第三环形队列用于保存所述网卡从所述发包装置接收的数据包,所述第四环形队列用于保存待发送至所述发包装置的数据包。
通过上述方式,在虚拟机测试系统中初始化网卡之后,建立内存中的发送接收队列与网卡中的接收发送队列的映射关系,这种映射关系使得网卡在接收到数据后可以直接将数据传输到内存,网卡测试任务进而可以在内核态下从内存的队列中读取数据,从而实现零拷贝机制的同时省去系统调用接口,进一步提升程序执行效率以及减少资源占用。
作为一种可选的实施方式,所述建立第一环形队列和第二环形队列之前,还包括:
根据预设的队列数量,调用所述虚拟机测试系统的大页内存管理模块接口,从所述大页内存中分配与所述队列数量匹配的数据缓存单元;
所述建立第一环形队列和第二环形队列,包括:
将所分配的各数据缓存单元分别分配至各第一环形队列和第二环形队列,以建立第一环形队列和第二环形队列。
通过上述方式,相比于现有技术中巨页内存机制需要调用内存重映射系统调用函数进行虚拟地址和物理地址的转换,本申请由于预先分配了大块连续物理内存,因此,只需通过简单的申请内存大小偏移量加减运算操作,即可计算出分配给数据缓存单元的虚拟地址和物理地址,不存在系统调用的开销,从而有效提高了内存分配的代码执行效率。
作为一种可选的实施方式,所述在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,将所述网卡接收的由所述发包装置发送的数据包保存至所述大页内存中,并通过所述网卡向所述发包装置发送接收到的数据包,包括:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,由所述网卡将从所述发包装置接收到的数据包从所述第三环形队列发送至所述第一环形队列对应的数据缓存单元;
修改所述第一环形队列对应的数据缓存单元中的数据包的目的地址,得到待发送数据包;
将所述待发送数据包存储至所述第二环形队列对应的数据缓存单元中进行发送。
通过上述方式,基于上述虚拟机测试系统提供的调用接口创建并执行上述网卡测试任务,以从网卡接收数据包并通过网卡向发包装置发送数据包,在实现零拷贝的同时,还能够省去系统调用以及内存重映射,从而进一步提升程序执行速度,减少系统资源占用。
作为一种可选的实施方式,所述在所述网卡测试程序中根据保存至所述大页内存中的数据包以及向所述发包装置发送的数据包,确定所述网卡的测试结果,包括:
在所述网卡测试程序中根据所述第一环形队列对应的数据缓存单元中的数据包的数量,以及从所述第二环形队列对应的数据缓存单元中向所述网卡发送的数据包的数量,确定所述网卡的测试结果。
通过上述方式,能够使得确定网卡测试结果的效率得到极大提升。
作为一种可选的实施方式,所述方法还包括:
在所述计算机设备上电后,在所述宿主机操作系统中配置所述虚拟机的操作系统为所述虚拟机测试系统。
通过上述方式,在计算机设备上电之后,将虚拟机的操作系统配置成上述的虚拟机测试系统,使得虚拟机运行的是虚拟机测试系统而不是现有的需要和宿主机操作系统交互的Linux系统,从而可以基于该虚拟机测试系统实现轻量化的网卡测试。
作为一种可选的实施方式,所述在所述宿主机操作系统中配置所述虚拟机的操作系统为所述虚拟机测试系统,包括:
根据用户在所述宿主机操作系统中输入的配置参数,配置所述虚拟机的操作系统为所述虚拟机测试系统。
通过上述方式,由用户在宿主机操作系统中配置虚拟机的操作系统为虚拟机测试系统,当不需要使用虚拟机操作系统时,还可以再配置为现有的Linux操作系统,从而保证系统的兼容性和灵活性。
第二方面,本申请实施例提供一种网卡测试装置,应用于计算机设备,所述计算机设备上部署有:宿主机操作系统、虚拟机,其中,所述宿主机操作系统与所述虚拟机通信连接,所述虚拟机中部署有虚拟机测试系统,所述虚拟机测试系统为所述虚拟机的操作系统,所述虚拟机测试系统提供与网卡测试关联的调用接口;所述装置包括:
启动模块,用于在所述宿主机操作系统中启动所述虚拟机,以触发所述虚拟机测试系统执行;
第一执行模块,用于在所述虚拟机测试系统中执行网卡测试程序,所述网卡测试程序与待测试的网卡通信,所述网卡测试程序和所述虚拟机测试系统均运行于内核态;
第二执行模块,用于在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口执行网卡测试任务,并根据执行所述网卡测试任务时所述网卡从发包装置接收的数据包以及所述网卡向所述发包装置发送的数据包,得到所述网卡的测试结果。
作为一种可选的实施方式,所述第二执行模块具体用于:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口分配大页内存,并控制内存管理单元建立内存映射;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,并根据扫描结果启动所述网卡;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,将所述网卡接收的由所述发包装置发送的数据包保存至所述大页内存中,并通过所述网卡向所述发包装置发送接收到的数据包;
在所述网卡测试程序中根据保存至所述大页内存中的数据包以及向所述发包装置发送的数据包,确定所述网卡的测试结果。
作为一种可选的实施方式,所述第二执行模块具体用于:
在所述网卡测试程序中,调用所述虚拟机测试系统的内存分配接口,分配所述大页内存。
作为一种可选的实施方式,所述第二执行模块具体用于:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,确定所述网卡以及所述网卡对应的网卡驱动程序;
调用所述网卡对应的网卡驱动程序初始化所述网卡;
建立第一环形队列和第二环形队列;
建立所述第一环形队列与所述网卡中的第三环形队列的映射关系;
建立所述第二环形队列与所述网卡中的第四环形队列的映射关系;
调用所述网卡对应的网卡驱动程序启动所述网卡;
其中,所述第一环形队列和第二环形队列位于所述大页内存中,所述第一环形队列用于存储从所述网卡接收的数据包,所述第二环形队列用于存储待发送至所述网卡的数据包;
所述第三环形队列和所述第四环形队列位于所述网卡中,所述第三环形队列用于保存所述网卡从所述发包装置接收的数据包,所述第四环形队列用于保存待发送至所述发包装置的数据包。
作为一种可选的实施方式,所述第二执行模块具体用于:
根据预设的队列数量,调用所述虚拟机测试系统的大页内存管理模块接口,从所述大页内存中分配与所述队列数量匹配的数据缓存单元;
所述建立第一环形队列和第二环形队列,包括:
将所分配的各数据缓存单元分别分配至各第一环形队列和第二环形队列,以建立第一环形队列和第二环形队列。
作为一种可选的实施方式,所述第二执行模块具体用于:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,由所述网卡将从所述发包装置接收到的数据包从所述第三环形队列发送至所述第一环形队列对应的数据缓存单元;
修改所述第一环形队列对应的数据缓存单元中的数据包的目的地址,得到待发送数据包;
将所述待发送数据包存储至所述第二环形队列对应的数据缓存单元中进行发送。
作为一种可选的实施方式,所述第二执行模块具体用于:
在所述网卡测试程序中根据所述第一环形队列对应的数据缓存单元中的数据包的数量,以及从所述第二环形队列对应的数据缓存单元中向所述网卡发送的数据包的数量,确定所述网卡的测试结果。
作为一种可选的实施方式,所述装置还包括:
配置模块,用于在所述计算机设备上电后,在所述宿主机操作系统中配置所述虚拟机的操作系统为所述虚拟机测试系统。
作为一种可选的实施方式,所述配置模块具体用于:
根据用户在所述宿主机操作系统中输入的配置参数,配置所述虚拟机的操作系统为所述虚拟机测试系统。
第三方面,本申请实施例提供一种计算机设备,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器执行所述机器可读指令,以执行时执行上述第一方面所述的网卡测试方法的步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面所述的网卡测试方法的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为现有技术中虚拟机的网卡测试的流程示意图;
图2为本申请实施例提供的网卡测试方法所应用的系统架构图;
图3为本申请实施例提供的网卡测试方法的流程示意图;
图4为本申请实施例提供的网卡测试方法的另一流程示意图;
图5为本申请实施例提供的网卡测试方法的又一流程示意图;
图6为本申请实施例提供的网卡测试方法的再一流程示意图;
图7为现有技术中的零拷贝示意图;
图8为本申请的零拷贝示意图;
图9为本申请实施例提供的网卡测试方法的完整流程示意图;
图10为本申请实施例提供的网卡测试装置的模块结构图;
图11为本申请实施例提供的网卡测试装置的另一模块结构图;
图12为本申请实施例提供的计算机设备120结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。 应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。 此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了使得本领域技术人员能够使用本申请内容,结合特定应用场景“基于Linux操作系统的网卡的测试”,给出以下实施方式。对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。虽然本申请主要围绕基于Linux操作系统的网卡的测试进行描述,但是应该理解,这仅是一个示例性实施例。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
目前,在对虚拟机的网卡性能进行测试时,需要在虚拟机操作系统上运行数据平面开发套件(Data Plane Development Kit,简称DPDK)测试程序以完成测试。图1为现有技术中虚拟机的网卡测试的流程示意图,如图1所示,现有技术中虚拟机的网卡测试过程包括:
S101、将待测试的网卡插入宿主机的物理插槽。
S102、将发包装置的网卡端口连接至宿主机网卡端口。
S103、上电启动宿主机。
其中,宿主机上安装有支持基于Linux内核的虚拟化解决方案(Kernel-basedVirtual Machine,简称KVM)的Linux操作系统软件。
S104、进入宿主机Linux操作系统,基于网卡设备编号绑定虚拟化输入输出驱动。
S105、进入宿主机Linux操作系统,配置内存巨页功能,并预留内存巨页供虚拟机使用。
S106、进入宿主机Linux操作系统,配置虚拟机管理工具(例如QEMU)参数。
具体的,使用-kernel参数指定虚拟机操作系统镜像为支持DPDK网卡测试程序的Linux操作系统镜像,使用-device参数添加步骤S104中的网卡设备编号,使用-smp参数指定虚拟中央处理单元(Virtual Central Processing Unit,简称VCPU)数量,使用-m参数指定内存大小,使用-mem-path参数指定内存巨页参数,并携带-mem-prealloc等参数。
S107、进入宿主机操作系统,使用步骤S106中配置的参数控制虚拟机管理工具运行,完成虚拟机的创建和启动。
S108、进入虚拟机操作系统,执行DPDK中的某个网卡测试程序实例。
S109、网卡测试程序调用DPDK库函数初始化中央处理单元(Central ProcessingUnit,简称CPU)中支撑网卡驱动和测试任务运行的功能模块。
其中,上述功能模块包括:任务管理子模块、配置子模块、日志子模块、内存管理子模块、终端处理子模块、定时器子模块。
S110、网卡测试程序调用DPDK中的外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)驱动扫描网卡设备。
S111、网卡测试程序调用内存管理子模块的接口函数从巨页内存空间中分配并创建数据缓存单元内存池。
S112、网卡测试程序调用网卡驱动程序初始化并启动网卡。
S113、网卡测试程序调用任务管理子模块接口函数并启动收发包测试任务。
S114、网卡测试程序执行收发包测试任务,并根据任务执行结果确定网卡测试结果。
上述各步骤中涉及的调用,例如网卡驱动程序的调用以及任务管理子模块接口函数的调用,均需要基于Linux操作系统进行调用。
在现有技术的上述测试过程中,在上述步骤S106中配置虚拟机操作系统镜像时,是指定虚拟机操作系统镜像为支持DPDK网卡测试程序的Linux操作系统镜像,因此,虚拟机的操作系统为Linux操作系统。相应的,网卡测试程序是基于Linux操作系统执行的。因此,在上述步骤S109中网卡测试程序需要初始化CPU中的各种模块,相应的,网卡测试程序在执行网卡测试任务时,均是按照Linux操作系统的机制,基于虚拟机的Linux操作系统进行系统调用。由于Linux操作系统的复杂性,需要进行复杂的进程管理、内存管理、设备驱动管理等模块和服务的首先,因此,基于虚拟机的Linux操作系统完成虚拟机的网卡性能测试时,需要占用较多的资源,从而导致虚拟化平台的资源开销较大。另外,现有技术中的网卡测试程序工作在用户态,而虚拟机的操作系统工作在内核态,系统调用时的开销较大,也会导致虚拟化平台的资源开销较大。
受限于现有技术的这一问题,使得现有技术的方法在某些场景下无法适用。例如,随着CPU芯片设计的体量越来越大,仿真速度成为制约硅前验证进度的重要障碍。例如对于上述的网卡性能测试,如果利用上述现有技术中的网卡性能测试方法,则会由于资源开销较大、处理复杂而极大影响仿真的速度。
本申请实施例基于上述的问题,提出一种网卡测试方法,在虚拟机中部署轻量化的虚拟机测试系统作为虚拟机的操作系统,该虚拟机测试系统仅提供与网卡测试相关的调用接口,而无需像现有的Linux操作系统提供复杂的功能,从而使得运行在该虚拟机测试系统之上的网卡测试程序的执行复杂度有了极大的降低,极大减少资源的占用。同时,在虚拟机测试系统之上运行的网卡测试程序与虚拟机操作系统均工作在内核态,可以避免内核态与用户态之间的系统调用,极大减少了因为系统调用而带来的资源占用。由于本申请实施例能够极大降低计算复杂度以及减少资源占用,因此,可以较好地适用于仿真环境中,极大提升仿真的速度。
本申请实施例的方法可以应用在多种场景中,可以包括但不限于应用在仿真环境中。例如,该方法可以应用在虚拟化产品的CPU的IO性能测试、虚拟化产品的网卡外设的性能测试、虚拟化产品的网络性能评估、CPU芯片设计阶段硅前网卡性能验证、CPU芯片设计阶段硅后网卡性能验证等。
图2为本申请实施例提供的网卡测试方法所应用的系统架构图,如图2所示,该方法涉及计算机设备以及发包装置。在本申请中,该计算机设备也可以称为宿主机。宿主机是安装了操作系统和虚拟机管理工具的计算机设备。即,宿主机上部署有宿主机操作系统和虚拟机,宿主机操作系统和虚拟机之间可以通信连接。具体的,参照图2,宿主机由硬件平台、宿主机操作系统、虚拟机管理工具以及运行在宿主机上的虚拟机组成。以下对这些部分进行解释说明。
1、硬件平台
硬件平台可以指包括计算资源、网络资源和存储资源的计算机硬件系统。为了支持在宿主机中创建和运行虚拟机,硬件平台可以配备多个CPU、内存、磁盘以及网卡等组件,以及硬件辅助虚拟化的内存管理单元(Memory Management Unit,简称MMU)和输入输出外设内存管理单元(Input/Uutput Memory Management Unit,简称IOMMU)。其中,网卡例如可以是支持单根输入输出虚拟化(Single Root I/O Virtualization,简称SR-IOV)功能的网卡。
可选的,本申请中所涉及的待测试的网卡,可以是上述的硬件平台中的网卡。
上述硬件平台可以为服务器,也可以为仿真机,可以根据实际需求灵活选择。例如,将本申请应用于仿真环境时,上述硬件平台可以为仿真机。
2、宿主机操作系统
宿主机操作系统可以指运行于宿主机硬件平台之上的系统软件,负责对硬件资源初始化和管理,并为应用层软件提供系统调用接口。
可选的,本申请中的宿主机操作系统可以为Linux操作系统。
3、虚拟机管理软件
虚拟机管理软件可以指通过调用宿主机操作系统所提供的系统调用接口实现的能在宿主机上配置、创建、维护虚拟机的应用软件。
示例性的,上述虚拟机管理软件可以为QEMU。
4、虚拟机
虚拟机可以指利用上述的虚拟机管理软件创建的虚拟计算机。虚拟机本质上是运行于宿主机操作系统中的一个进程。
虚拟机作为一种虚拟的计算机,其上可以部署操作系统以及运行在操作系统之上的程序。如前文所述的,现有技术中虚拟机上部署的操作系统为Linux操作系统,Linux操作系统的实现复杂,因此运行在其上的程序需要执行复杂的系统调用才能实现其功能。而在本申请中,摒弃了原有的Linux操作系统,在虚拟机中部署并运行轻量化的虚拟机测试系统作为虚拟机的操作系统,并基于运行在该虚拟机测试系统之上的网卡测试程序来实现网卡测试的功能。
具体的,虚拟机中部署的上述虚拟机测试系统基于虚拟机设备树提供的硬件特性信息,通过极少量的C语言和汇编代码,实现小型操作系统的初始化。该虚拟机测试系统仅提供与网卡测试关联的调用接口,包括CPU管理、内存管理、MMU管理、串口打印等,而简化了一般的Linux操作系统复杂的进程管理、内存关联、设备驱动管理等模块的实现,省去了各种抽象层的封装。
相应的,运行在上述虚拟机测试系统之上的网卡测试程序,在本申请中运行于内核态。网卡测试程序经过虚拟机测试系统、虚拟机管理软件以及宿主机操作系统与网卡以及发包装置通信,进而实现网卡性能测试的功能。
以上,对宿主机上的各组成部分进行了说明。另外,继续参照图2,本申请还涉及发包装置。在本申请中,发包装置可以是专用的发包仪器,或者,也可以是安装了发包软件的计算机设备。发包装置可以通过双绞线或者光线电缆等媒介连接至宿主机的物理网口。用户可以通过发包装置内置的发包软件向所连接的网口发送数据包,并通过发包装置本地的网口接收数据包。
以下,对本申请的网卡测试方法的处理流程进行说明。
图3为本申请实施例提供的网卡测试方法的流程示意图,该方法的执行主体为上述的计算机设备,如前文所述的,该计算机设备上部署有宿主机操作系统和虚拟机,宿主机操作系统和虚拟机之间可以通信连接。并且,该虚拟机中部署有虚拟机测试系统,该虚拟机测试系统为虚拟机的操作系统,该虚拟机测试系统仅提供与网卡测试关联的调用接口。该虚拟机测试系统上可以运行网卡测试程序。如图3所示,该方法包括:
S301、在宿主机操作系统中启动虚拟机,以触发所述虚拟机测试系统执行。
可选的,虚拟机中部署了上述虚拟机测试系统,即在宿主机中为虚拟机安装了该虚拟机测试系统的程序代码。相应的,在宿主机上电之后,可以在宿主机操作系统中创建并启动虚拟机,当虚拟机启动之后,虚拟机测试系统作为虚拟机的操作系统自动执行。
虚拟机测试系统执行时,首先基于虚拟机设备树提供的硬件特性信息,通过极少量的C语言和汇编代码,进行小型操作系统的初始化,具体的,仅提供与网卡测试关联的调用接口,包括CPU管理、内存管理、MMU管理、串口打印等。在初始化完成后,可以进一步执行后续的处理过程。
S302、在上述虚拟机测试系统中执行网卡测试程序。
其中,上述网卡测试程序与待测试的网卡通信,并且,该网卡测试程序和上述虚拟机测试系统均运行于内核态。
可选的,上述待测试网卡可以为前述的宿主机的硬件平台中的网卡。下述实施例中均将上述待测试的网卡简称为网卡。
可选的,虚拟机测试系统完成初始化之后,可以调用上述网卡测试程序,以使得网卡测试程序开始运行。如前文所述的,网卡测试程序运行于虚拟机测试系统之上,即作为虚拟机测试系统之上的程序。可以在虚拟机测试系统初始化完成后调用该网卡测试程序使其开始运行。
内核态与用户态是操作系统的两种运行级别,当一个任务或进程执行系统调用而陷入内核代码中执行时,称为任务或进程处于内核态。此时,处理器处于内核代码中执行,可以执行任意的指令。当任务或进程执行自身的代码时,称为任务或进程处于用户态。此时,处理器处于用户代码中执行,仅能执行非特权指令。
对于现有的虚拟机来说,虚拟机中的软件程序由内核态程序和应用态程序两部分组成。
其中,内核态程序工作在内核态,其对于系统的资源具有较高的访问权限。操作系统和外设驱动程序属于内核态程序,通过系统调用接口函数为应用态程序提供服务。应用态程序工作在应用态,其对系统资源的访问被严格限制。现有的用于实现网卡测试的网卡测试程序即工作在应用态。因此,现有的网卡测试是由应用态调用内核态来完成。在此过程中,系统调用提供服务时需要进行CPU执行权限的上下文,相应的,会存在程序指令和数据的入栈出栈的额外开销,即内核态和应用态切换的系统调用开销,使得资源占用较多。
而在本申请中,虚拟机测试系统作为虚拟机的操作系统,工作在内核态,同时,网卡测试程序也工作在内核态。具体的,网卡测试程序可以作为虚拟机测试系统的一个子集工作在内核态,当虚拟机测试系统初始化完成后,直接调用网卡测试程序即可以使得网卡测试程序运行,而不需要像前述的现有技术的处理步骤S108一样执行一个网卡测试程序实例。网卡测试程序在运行时,无需经过用户态向内核态的系统调用,而是直接在内核态中调用系统调用接口以实现网卡测试,从而避免内核态和应用态切换所带来的资源开销。
S303、在上述网卡测试程序中基于上述虚拟机测试系统提供的调用接口执行网卡测试任务,并根据执行该网卡测试任务时上述网卡从发包装置接收的数据包以及上述网卡向上述发包装置发送的数据包,得到上述网卡的测试结果。
可选的,宿主机中为虚拟机安装了该虚拟机测试系统的程序代码,当网卡测试程序开始执行后,执行该程序代码。具体的,在网卡测试程序中调用虚拟机测试系统提供的调用接口执行网卡测试任务,在该网卡测试任务执行过程中,网卡测试程序可以统计网卡从发包装置接收的数据包,并控制网卡向发包装置发送数据包,并根据统计的接收到的数据包的数量以及发送的数据包的数量,确定网卡的测试结果。
本实施例中,首先,针对虚拟机,摒弃了现有的虚拟机的Linux操作系统,而是在宿主机的虚拟机中部署虚拟机测试系统,该虚拟机测试系统作为虚拟机的操作系统,仅提供与网卡测试关联的调用接口,而无需像现有的Linux操作系统一样实现复杂的调用接口,可以通过极少量的程序代码实现小型操作系统的初始化。因此,在启动虚拟机以触发所述虚拟机测试系统执行时,仅需要占用较少的系统资源即可以完成虚拟机测试系统的初始化。其次,在虚拟机测试系统执行时,在虚拟机测试系统中执行网卡测试程序。该网卡测试程序作为虚拟机测试系统的子集,与虚拟机测试系统均工作在内核态,使得虚拟机测试系统初始化完成后,可以直接调用网卡测试程序即可以使得网卡测试程序运行,而无需经过用户态向内核态的系统调用,而是直接在内核态中调用系统调用接口以实现网卡测试,从而避免内核态和应用态切换所带来的资源开销。因此,应用本实施例,能够极大降低计算复杂度以及减少资源占用。由于本实施例能够极大降低计算复杂度以及减少资源占用,因此,可以较好地适用于仿真环境中,极大提升仿真的速度。
作为一种可选的实施方式,可以通过配置,使得在上述步骤S301中启动虚拟机后,能够触发上述虚拟机测试系统执行。
可选的,在上述计算机设备上电后,在上述宿主机操作系统中配置虚拟机的操作系统为上述虚拟机测试系统。
可选的,可以预先将上述虚拟机测试系统的程序代码安装在宿主机中,同时,还可以将虚拟机的Linux操作系统安装在宿主机中。安装完成后,宿主机即存在两种供虚拟机使用的操作系统。进而,在宿主机上电之后,可以通过在宿主机操作系统中进行配置,以选择将Linux操作系统作为虚拟机的操作系统,或者,选择将上述虚拟机测试系统作为虚拟机的操作系统。当选择虚拟机测试系统作为虚拟机的操作系统后,在宿主机操作系统中创建和启动虚拟机之后,会自动运行虚拟机测试系统。
在宿主机上电之后,将虚拟机的操作系统配置成上述的虚拟机测试系统,使得虚拟机运行的是虚拟机测试系统而不是现有的需要和宿主机操作系统交互的Linux系统,从而可以基于该虚拟机测试系统实现轻量化的网卡测试。
一种可选方式中,可以由用户根据实际需要在宿主机操作系统中进行上述的配置。
具体的,根据用户在宿主机操作系统中输入的配置参数,配置虚拟机的操作系统为上述虚拟机测试系统。
例如,在仿真环境中进行网卡性能测试时,用户预先在宿主机上安装虚拟机测试系统的程序代码。进而,当宿主机上电启动时,用户通过输入特定的按键指令进入宿主机操作系统,并在宿主机操作系统中输入相应的配置参数,以配置虚拟机的操作系统为上述虚拟机测试系统。
示例性的,宿主机操作系统为Linux操作系统,用户输入特定的按键指令进入该Linux操作系统后,可以配置QEMU参数。具体的,可以使用-kernel参数指定虚拟机操作系统镜像为虚拟机测试系统镜像,即配置虚拟机操作系统为上述虚拟机测试系统。除此之外,用户还可以使用-device参数添加网卡设备编号,使用-smp参数指定VCPU的数量,以及使用-m参数指定内存大小等。
本实施例中,由用户在宿主机操作系统中配置虚拟机的操作系统为虚拟机测试系统,当不需要使用虚拟机操作系统时,还可以再配置为现有的Linux操作系统,从而保证系统的兼容性和灵活性。
以下,对前述步骤S303中在网卡测试程序中完成网卡测试的过程进行说明。
图4为本申请实施例提供的网卡测试方法的另一流程示意图,如图4所示,上述步骤S303可以包括:
S401、在上述网卡测试程序中基于上述虚拟机测试系统提供的调用接口分配大页内存,并控制内存管理单元建立内存映射。
可选的,在执行具体的网卡测试任务之前,首先在本步骤中基于上述调用接口分配大页内存,并控制MMU建立内存映射,以供后续的网卡测试任务使用。
对于Linux操作系统来说,通常采用分页机制来管理内存,内存的分页可以分为普通页和大页(huge page),其中,一个普通页的大小例如可以为48KB,一个大页的大小可以为2MB。
在本步骤中,提前为网卡测试任务分配大页内存并控制内存管理单元建立内存映射。首先,由于大页内存相对于普通内存来说容量更大,因此,对于网卡测试任务来说,可以提前拥有足够使用的物理地址连续内存。相应的,可以使得后续网卡测试任务中使用的内存是物理地址连续内存。例如,分配的大页内存为2M,即该2M的内存是物理地址连续的,则后续为网卡测试任务分配内存时,可以容易地从该2M的连续内存中分配到供网卡测试任务使用的连续内存。而如果预先并为提前分配大页内存,则为网卡测试任务分配到的内存可能出现跨内存页,即无法保证内存的物理地址连续。
其次,还可以避免缺页中断的产生。其中,缺页中断可以是指:当CPU需要处理的内存页不在内存中时,CPU会产生一个缺页异常,针对缺页异常,一般的操作系统会进行如下操作:第一,将上下文切换到缺页异常处理函数;第二,根据系统缺页处理算法,将需要访问的页从磁盘复制到内存,当内存不够时,将内存中不常用的页复制到磁盘;第三,缺页异常返回,将上下文切换回触发缺页异常的进程。因此,如果缺页异常出现较多,需要进行上述的操作较多,会导致程序执行的效率下降。而通过在本步骤中预先为网卡测试任务分配大页内存并建立内存映射,可避免内存缺页的产生,因而无需频繁进行缺页异常相对的操作。
另外,如前述图1中所述的,现有技术中需要在前述步骤S105中配置内存巨页功能,并且在步骤S106中配置内存巨页参数,因此需要人工的配置才能完成内存的分配,而在本申请中,通过本步骤自动为网卡测试任务分配大页内存,无需人为配置,因此,还可以简化配置,极大提升处理效率。
S402、在上述网卡测试程序中基于上述虚拟机测试系统提供的调用接口进行网卡扫描,并根据扫描结果启动网卡。
可选的,在配置虚拟机管理工具参数时,可以将待测试的网卡的设备编号配置虚拟机的网卡。进而,在本步骤中,基于虚拟机测试系统提供的调用接口扫描到配置的待测试的网卡后,可以启动该网卡。
S403、在上述网卡测试程序中基于上述虚拟机测试系统提供的调用接口创建并执行网卡测试任务,将网卡接收的由发包装置发送的数据包保存至上述大页内存中,并通过网卡向发包装置发送接收到的数据包。
可选的,在网卡测试程序中,基于虚拟机测试系统提供的调用接口,可以根据测试端口的数量以及队列的数量,创建并执行网卡测试任务。所创建的网卡测试任务可以为一个,也可以为多个。当网卡测试任务为多个时,多个网卡测试任务可以并行执行,并在每个网卡测试任务中分别将网卡接收的数据包保存至大页内存中,并通过网卡向发包装置发送接收到的数据包。
其中,上述测试端口的数量以及队列的数量,可以是在网卡测试程序内预设的固定值,或者,也可以在宿主机操作系统中进行配置。
S404、在上述网卡测试程序中根据保存至上述大页内存中的数据包以及向上述发包装置发送的数据包,确定网卡的测试结果。
可选的,可以分别对保存至大页内存中的数据包以及发送的数据包进行数量统计,根据统计的结果确定网卡的测试结果。
示例性的,可以根据保存至大页内存中的数据包以及发送的数据包统计丢包率,如果丢包率小于预设的阈值,则可以确定网卡的测试结果正常,否则,可以确定网卡的测试结果异常。
又例如,还可以对预设时段内保存至大页内存中的数据与预设的接收阈值进行比较,得到第一差值,以及对预设时段内发送的数据包与预设的发送阈值进行比较,得到第二差值,如果第一差值和第二差值中存在较大的值,则可以确定网卡的测试结果异常。
本实施例中,提前为网卡测试任务分配大页内存,进而,在虚拟机测试系统内部扫描到网卡后启动网卡测试任务,将网卡测试任务执行过程中由网卡接收和发送的数据包都保存在大页内存中。这样,首先,不需要依赖宿主机操作系统,也不需要执行人工的配置,可以简化处理过程,其次,网卡测试任务执行的过程中,可以避免缺页中断的产生。
作为一种可选的实施方式,上述步骤S401的一种可选方式包括:
在上述网卡测试程序中,调用上述虚拟机测试系统的内存分配接口,分配上述大页内存。
内存分配接口为虚拟机测试系统为网卡测试程序提供的用于分配大页内存的接口函数,当网卡测试程序运行时,由于网卡测试程序运行在内核态,因此,可以直接在内核态下调用该内存分配接口为网卡测试任务分配大页内存,从而可以提升运行速度,减少资源占用。
图5为本申请实施例提供的网卡测试方法的又一流程示意图,如图5所示,上述步骤S402的一种可选方式包括:
S501、在上述网卡测试程序中基于上述虚拟机测试系统提供的调用接口进行网卡扫描,确定上述网卡以及上述网卡对应的网卡驱动程序。
可选的,虚拟机测试系统可以提供一外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)操作函数接口供网卡测试程序调用。调用PCI操作函数接口后,可以从虚拟机管理软件提供的设备树信息中查找到前述配置的-device参数所指定的网卡设备编号,进而初始化网卡PCI配置空间,并产生一个PCI主桥配置句柄。网卡测试程序基于该句柄对网卡进行PCI相关的初始化和寄存器的读写。
在上述过程中,通过虚拟机测试系统提供的PCI操作函数接口可以直接确定网卡以及网卡驱动程序,而现有技术中需要基于Linux操作系统的调用才可以完成上述过程,因此,通过本步骤可以极大减少系统调用开销,提升代码执行效率。
S502、调用上述网卡对应的网卡驱动程序初始化网卡。
可选的,上述网卡驱动程序也可以是运行在虚拟机测试系统之上且运行在内核态的程序,通过调用该网卡驱动程序的接口,可以触发该网卡驱动程序执行,以进行网卡的初始化。同样的,该初始化网卡的步骤不需要基于Linux操作系统执行,可以极大减少系统调用开销,提升代码执行效率。
S503、建立第一环形队列和第二环形队列。
S504、建立上述第一环形队列与网卡中的第三环形队列的映射关系。
S505、建立上述第二环形队列与网卡中的第四环形队列的映射关系。
其中,上述第一环形队列和第二环形队列位于上述大页内存中,上述第一环形队列用于存储从网卡接收的数据,上述第二环形队列用于存储待发送至网卡的数据。上述第三环形队列和上述第四环形队列位于网卡中,上述第三环形队列用于保存网卡从发包装置接收的数据,上述第四环形队列用于保存待发送至发包装置的数据。
可选的,第一环形队列为大页内存中的接收队列,第二环形队列为大页内存中的发送队列,第三环形队列为网卡中的接收队列,第四环形队列为网卡中的发送队列。在本实施例中,建立第一环形队列与第三环形队列的映射关系,并建立第二环形队列与第四环形队列的映射关系,能够使得在网卡测试程序从网卡接收数据包时以及通过网卡向发包装置发送数据包时,能够在实现零拷贝机制的同时,省去了系统调用接口。具体的发送和接收数据包的过程将在下述实施例中详细说明。
S506、调用网卡对应的网卡驱动程序启动网卡。
可选的,通过调用网卡驱动程序的接口,可以在网卡驱动程序中可以使能网卡混杂模式,并检查网卡连接状态,使得网卡硬件进入正常的收发数据包状态。
本实施例中,在虚拟机测试系统中初始化网卡之后,建立内存中的发送接收队列与网卡中的接收发送队列的映射关系,这种映射关系使得网卡在接收到数据后可以直接将数据传输到内存,网卡测试任务进而可以在内核态下从内存的队列中读取数据,从而实现零拷贝机制的同时省去系统调用接口,进一步提升程序执行效率以及减少资源占用。
作为一种可选的实施方式,在上述步骤S503中建立第一环形队列和第二环形队列之前,还可以通过如下过程首先为第一环形队列和第二环形队列在内存中分配对应的数据缓存单元。
可选的,根据预设的队列数量,调用上述虚拟机测试系统的大页内存管理模块接口,从上述大页内存中分配与该队列数量匹配的数据缓存单元。
其中,上述队列数量可以是前述步骤S403中所涉及的队列的数量,该队列的数量可以是在网卡测试程序内设置的固定值,或者,还可以在宿主机操作系统中进行配置。基于该队列数量,同时结合前述步骤S403中涉及的测试段控件网卡测试程序可以调用虚拟机测试系统的大页内存管理模块接口,从已经分配的大页内存中分配与该队列数量匹配的数据缓存单元。
相比于现有技术中巨页内存机制需要调用内存重映射系统调用函数进行虚拟地址和物理地址的转换,由于本申请中在前述步骤S401中预先分配了大块连续物理内存,因此,在本实施例中,只需通过简单的申请内存大小偏移量加减运算操作,即可计算出分配给数据缓存单元的虚拟地址和物理地址,不存在系统调用的开销,从而有效提高了内存分配的代码执行效率。
在分配了与队列数量匹配的数据缓存单元的基础上,上述步骤S503可以包括:
将所分配的各数据缓存单元分别分配至各第一环形队列和第二环形队列,以建立第一环形队列和第二环形队列。
分配完成后,第一环形队列和第二环形队列具有了实际的内存空间,进而,可以执行后续的映射关系建立以及数据接收和发送等。
基于上述所建立的第一环形队列和第二环形队列、第一环形队列与第三环形队列的映射关系以及第二环形队列与第四环形队列的映射关系,上述步骤S403中执行网卡测试任务时可以按照如下过程执行。
图6为本申请实施例提供的网卡测试方法的再一流程示意图,如图6所示,上述步骤S403的一种可选方式包括:
S601、在上述网卡测试程序中基于上述虚拟机测试系统提供的调用接口创建并执行上述网卡测试任务,由网卡将从发包装置接收到的数据包从上述第三环形队列发送至上述第一环形队列对应的数据缓存单元。
可选的,网卡测试程序可以根据在宿主机操作系统中配置的VCPU的数量以及队列数量,调用虚拟机测试系统提供的任务创建接口函数创建并启动上述网卡测试任务。如前文所述的,该网卡测试任务可以为一个,也可以为多个。
针对每个网卡测试任务,在其启动之后,可以调用网卡驱动程序不断轮询网卡接收寄存器,等待接收数据包。
同时,用户可以在发包装置的控制交互界面中配置发包速率和目的地址,以控制发包装置向待测试的网卡发送数据包。
S602、修改上述第一环形队列对应的数据缓存单元中的数据包的目的地址,得到待发送数据包。
S603、将上述待发送数据包存储至上述第二环形队列对应的数据缓存单元中进行发送。
在上述步骤S601-S603中,发包装置向网卡发送数据包之后,网卡相应接收到数据包。网卡接收到数据包之后,首先进入上述第三环形队列进行处理,控制直接内存访问(Direct Memory Access,简称DMA)将数据包直接传输至上述第一环形队列对应的数据缓存单元。同时,网卡测试任务调用网卡驱动程序接口轮询网卡硬件寄存器对应的内存配置空间的收包状态位,判断是否接收到数据包,如果接收到数据包,则由网卡测试程序直接访问上述第一环形队列对应的数据缓存单元,从中读取数据包后,将数据包的目的地址修改为发包装置的网卡地址,得到待发送数据包,并将待发送数据包存储至上述第二环形队列中,由网卡测试任务将第二环形队列中的数据包发送至网卡的第四环形队列中,并从第四环形队列发送至发包装置。
上述的处理过程中相对于现有的零拷贝机制进行了优化。具体的,图7为现有技术中的零拷贝示意图,图8为本申请的零拷贝示意图,参照图7和图8,在现有技术中,由于网卡测试程序运行在用户态,因此,数据包从网卡拷贝到内存的过程中,需要执行系统调用以及内存重映射。而在本申请中,由于网卡测试程序运行在内核态,因此,数据从网卡拷贝到内存的过程中,无需执行系统调用以及内存重映射,即可直接将数据包从网卡拷贝至第一环形队列对应的数据缓存单元中。
本实施例中,基于上述虚拟机测试系统提供的调用接口创建并执行上述网卡测试任务,以从网卡接收数据包并通过网卡向发包装置发送数据包,在实现零拷贝的同时,还能够省去系统调用以及内存重映射,从而进一步提升程序执行速度,减少系统资源占用。
另一实施例中,基于上述所建立的第一环形队列和第二环形队列、第一环形队列与第三环形队列的映射关系以及第二环形队列与第四环形队列的映射关系,上述步骤S404中确定网卡的测试结果时可以按照如下过程执行。
可选的,在上述网卡测试程序中根据上述第一环形队列对应的数据缓存单元中的数据包的数量,以及从上述第二环形队列对应的数据缓存单元中向网卡发送的数据包的数量,确定网卡的测试结果。
示例性的,网卡测试程序可以按照预设的统计周期进行统计,当达到统计周期后,网卡测试程序分别统计上述第一环形队列对应的数据缓存单元中的数据包的第一数量,以及上述第二环形队列对应的数据缓存单元中的数据包的第二数量,根据第一数量和第二数量判断出网卡的丢包率,同时,还可以统计出网卡的收包速率和发包速率等,从而得到网卡的测试结果。可选的,网卡测试程序可以在一个统计周期内,动态更新上述第一数量以及第二数量,例如,每当网卡向第一环形队列发送数据包,网卡测试程序则根据发送的数据包的数量增加上述第一数量,同时,每当向第二环形队列写入数据包并将其转发至网卡,则根据转发的数据包的数量增加上述第二数量。
图9为本申请实施例提供的网卡测试方法的完整流程示意图,如图9所示,该流程包括:
S901、将网卡插入宿主机的物理插槽。
S902、将发包装置的网卡端口连接至宿主机的网卡端口。
S903、上电启动安装有支持KVM虚拟化功能的Linux操作系统软件的宿主机。
S904、进入宿主机操作系统,基于系统中网卡设备编号绑定到虚拟化输入输出驱动。
S905、进入宿主机操作系统,配置QEMU参数。
S906、进入宿主机操作系统,使用上述步骤S905中配置的参数控制QEMU程序运行,完成虚拟机创建并启动虚拟机。
S907、虚拟机启动后,作为虚拟机的操作系统的虚拟机测试系统自动执行,完成小型操作系统的初始化,并在初始化完成后执行网卡测试程序。
S908、网卡单元测试程序调用虚拟机测试系统的调用接口,预先分配大页内存,并控制MMU建立内存映射。
S909、网卡单元测试程序调用虚拟机测试系统的PCI操作函数接口扫描网卡设备,发现网卡设备后,匹配到对应的网卡驱动程序。
S910、网卡单元测试程序根据测试端口的数量和队列的数量,计算需要分配的数据缓存单元数量,并调用大页内存管理模块接口函数从大页内存中分配并创建数据缓存单元。
S911、网卡单元测试程序调用网卡驱动程序接口初始化网卡、建立第一环形队列和第二环形队列,并建立第一环形队列和第二环形队列与网卡中的第三环形队列和第四环形队列之间的映射关系。
S912、网卡单元测试程序调用网卡驱动程序接口启动网卡,并使能网卡混杂模式功能,检查网卡连接状态,网卡硬件进入正常收发包状态。
S913、网卡单元测试程序根据CPU的数量和队列的数量,调用虚拟机单元测试系统提供的任务创建接口函数创建并启动网卡测试任务。
S914、测试任务不断轮询网卡接收寄存器状态,等待接收数据包。
S915、接收用户在发包装置控制交互界面配置的发包速率和目的地址,以通过发包速率和目的地址控制发包装置向宿主机网卡发送数据包。
S916、测试任务轮询网卡接收寄存器状态发现有数据包,更新数据包目的地址为发包装置网卡地址,并转发数据包给发包装置,同时统计接收和发送数据包数量和字网卡单元测试程序,每间隔一段时间计算接收和发送数据包速率并输出统计信息节数。
S917、网卡单元测试程序周期性计算接收和发送数据包速率并输出统计信息。
上述各步骤的具体处理过程可以参见前述实施例,此处不再赘述。
基于同一发明构思,本申请实施例中还提供了与网卡测试方法对应的网卡测试装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述网卡测试方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
图10为本申请实施例提供的网卡测试装置的模块结构图,应用于计算机设备,所述计算机设备上部署有:宿主机操作系统、虚拟机,其中,所述宿主机操作系统与所述虚拟机通信连接,所述虚拟机中部署有虚拟机测试系统,所述虚拟机测试系统为所述虚拟机的操作系统,所述虚拟机测试系统提供与网卡测试关联的调用接口。参照图10,所述装置包括:
启动模块1001,用于在所述宿主机操作系统中启动所述虚拟机,以触发所述虚拟机测试系统执行。
第一执行模块1002,用于在所述虚拟机测试系统中执行网卡测试程序,所述网卡测试程序与待测试的网卡通信,所述网卡测试程序和所述虚拟机测试系统均运行于内核态。
第二执行模块1003,用于在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口执行网卡测试任务,并根据执行所述网卡测试任务时所述网卡从发包装置接收的数据包以及所述网卡向所述发包装置发送的数据包,得到所述网卡的测试结果。
作为一种可选的实施方式,所述第二执行模块1003具体用于:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口分配大页内存,并控制内存管理单元建立内存映射;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,并根据扫描结果启动所述网卡;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,将所述网卡接收的由所述发包装置发送的数据包保存至所述大页内存中,并通过所述网卡向所述发包装置发送接收到的数据包;
在所述网卡测试程序中根据保存至所述大页内存中的数据包以及向所述发包装置发送的数据包,确定所述网卡的测试结果。
作为一种可选的实施方式,所述第二执行模块1003具体用于:
在所述网卡测试程序中,调用所述虚拟机测试系统的内存分配接口,分配所述大页内存。
作为一种可选的实施方式,所述第二执行模块1003具体用于:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,确定所述网卡以及所述网卡对应的网卡驱动程序;
调用所述网卡对应的网卡驱动程序初始化所述网卡;
建立第一环形队列和第二环形队列;
建立所述第一环形队列与所述网卡中的第三环形队列的映射关系;
建立所述第二环形队列与所述网卡中的第四环形队列的映射关系;
调用所述网卡对应的网卡驱动程序启动所述网卡;
其中,所述第一环形队列和第二环形队列位于所述大页内存中,所述第一环形队列用于存储从所述网卡接收的数据包,所述第二环形队列用于存储待发送至所述网卡的数据包;
所述第三环形队列和所述第四环形队列位于所述网卡中,所述第三环形队列用于保存所述网卡从所述发包装置接收的数据包,所述第四环形队列用于保存待发送至所述发包装置的数据包。
作为一种可选的实施方式,所述第二执行模块1003具体用于:
根据预设的队列数量,调用所述虚拟机测试系统的大页内存管理模块接口,从所述大页内存中分配与所述队列数量匹配的数据缓存单元;
所述建立第一环形队列和第二环形队列,包括:
将所分配的各数据缓存单元分别分配至各第一环形队列和第二环形队列,以建立第一环形队列和第二环形队列。
作为一种可选的实施方式,所述第二执行模块1003具体用于:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,由所述网卡将从所述发包装置接收到的数据包从所述第三环形队列发送至所述第一环形队列对应的数据缓存单元;
修改所述第一环形队列对应的数据缓存单元中的数据包的目的地址,得到待发送数据包;
将所述待发送数据包存储至所述第二环形队列对应的数据缓存单元中进行发送。
作为一种可选的实施方式,所述第二执行模块1003具体用于:
在所述网卡测试程序中根据所述第一环形队列对应的数据缓存单元中的数据包的数量,以及从所述第二环形队列对应的数据缓存单元中向所述网卡发送的数据包的数量,确定所述网卡的测试结果。
图11为本申请实施例提供的网卡测试装置的另一模块结构图,如图11所示,所述装置还包括:
配置模块1004,用于在所述计算机设备上电后,在所述宿主机操作系统中配置所述虚拟机的操作系统为所述虚拟机测试系统。
作为一种可选的实施方式,所述配置模块1004具体用于:
根据用户在所述宿主机操作系统中输入的配置参数,配置所述虚拟机的操作系统为所述虚拟机测试系统。
本申请实施例还提供了一种计算机设备120,如图12所示,为本申请实施例提供的计算机设备120结构示意图,包括:处理器121、存储器122,可选的,还可以包括总线123。所述存储器122存储有所述处理器121可执行的机器可读指令,当计算机设备120运行时,所述处理器121与所述存储器122之间通过总线123通信,所述机器可读指令被所述处理器111执行时执行上述方法实施例中的方法步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述网卡测试方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (12)

1.一种网卡测试方法,其特征在于,应用于计算机设备,所述计算机设备上部署有:宿主机操作系统、虚拟机,其中,所述宿主机操作系统与所述虚拟机通信连接,所述虚拟机中部署有虚拟机测试系统,所述虚拟机测试系统为所述虚拟机的操作系统,所述虚拟机测试系统提供与网卡测试关联的调用接口;所述方法包括:
在所述宿主机操作系统中启动所述虚拟机,以触发所述虚拟机测试系统执行;
在所述虚拟机测试系统中执行网卡测试程序,所述网卡测试程序与待测试的网卡通信,所述网卡测试程序和所述虚拟机测试系统均运行于内核态;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口执行网卡测试任务,并根据执行所述网卡测试任务时所述网卡从发包装置接收的数据包以及所述网卡向所述发包装置发送的数据包,得到所述网卡的测试结果。
2.根据权利要求1所述的方法,其特征在于,所述在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口执行网卡测试任务,并根据执行所述网卡测试任务时所述网卡从发包装置接收的数据包以及所述网卡向所述发包装置发送的数据包,得到所述网卡的测试结果,包括:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口分配大页内存,并控制内存管理单元建立内存映射;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,并根据扫描结果启动所述网卡;
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,将所述网卡接收的由所述发包装置发送的数据包保存至所述大页内存中,并通过所述网卡向所述发包装置发送接收到的数据包;
在所述网卡测试程序中根据保存至所述大页内存中的数据包以及向所述发包装置发送的数据包,确定所述网卡的测试结果。
3.根据权利要求2所述的方法,其特征在于,所述在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口分配大页内存,包括:
在所述网卡测试程序中,调用所述虚拟机测试系统的内存分配接口,分配所述大页内存。
4.根据权利要求2所述的方法,其特征在于,所述在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,并根据扫描结果启动所述网卡,包括:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口进行网卡扫描,确定所述网卡以及所述网卡对应的网卡驱动程序;
调用所述网卡对应的网卡驱动程序初始化所述网卡;
建立第一环形队列和第二环形队列;
建立所述第一环形队列与所述网卡中的第三环形队列的映射关系;
建立所述第二环形队列与所述网卡中的第四环形队列的映射关系;
调用所述网卡对应的网卡驱动程序启动所述网卡;
其中,所述第一环形队列和第二环形队列位于所述大页内存中,所述第一环形队列用于存储从所述网卡接收的数据包,所述第二环形队列用于存储待发送至所述网卡的数据包;
所述第三环形队列和所述第四环形队列位于所述网卡中,所述第三环形队列用于保存所述网卡从所述发包装置接收的数据包,所述第四环形队列用于保存待发送至所述发包装置的数据包。
5.根据权利要求4所述的方法,其特征在于,所述建立第一环形队列和第二环形队列之前,还包括:
根据预设的队列数量,调用所述虚拟机测试系统的大页内存管理模块接口,从所述大页内存中分配与所述队列数量匹配的数据缓存单元;
所述建立第一环形队列和第二环形队列,包括:
将所分配的各数据缓存单元分别分配至各第一环形队列和第二环形队列,以建立第一环形队列和第二环形队列。
6.根据权利要求5所述的方法,其特征在于,所述在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,将所述网卡接收的由所述发包装置发送的数据包保存至所述大页内存中,并通过所述网卡向所述发包装置发送接收到的数据包,包括:
在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口创建并执行所述网卡测试任务,由所述网卡将从所述发包装置接收到的数据包从所述第三环形队列发送至所述第一环形队列对应的数据缓存单元;
修改所述第一环形队列对应的数据缓存单元中的数据包的目的地址,得到待发送数据包;
将所述待发送数据包存储至所述第二环形队列对应的数据缓存单元中进行发送。
7.根据权利要求5所述的方法,其特征在于,所述在所述网卡测试程序中根据保存至所述大页内存中的数据包以及向所述发包装置发送的数据包,确定所述网卡的测试结果,包括:
在所述网卡测试程序中根据所述第一环形队列对应的数据缓存单元中的数据包的数量,以及从所述第二环形队列对应的数据缓存单元中向所述网卡发送的数据包的数量,确定所述网卡的测试结果。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
在所述计算机设备上电后,在所述宿主机操作系统中配置所述虚拟机的操作系统为所述虚拟机测试系统。
9.根据权利要求8所述的方法,其特征在于,所述在所述宿主机操作系统中配置所述虚拟机的操作系统为所述虚拟机测试系统,包括:
根据用户在所述宿主机操作系统中输入的配置参数,配置所述虚拟机的操作系统为所述虚拟机测试系统。
10.一种网卡测试装置,其特征在于,应用于计算机设备,所述计算机设备上部署有:宿主机操作系统、虚拟机,其中,所述宿主机操作系统与所述虚拟机通信连接,所述虚拟机中部署有虚拟机测试系统,所述虚拟机测试系统为所述虚拟机的操作系统,所述虚拟机测试系统提供与网卡测试关联的调用接口;所述装置包括:
启动模块,用于在所述宿主机操作系统中启动所述虚拟机,以触发所述虚拟机测试系统执行;
第一执行模块,用于在所述虚拟机测试系统中执行网卡测试程序,所述网卡测试程序与待测试的网卡通信,所述网卡测试程序和所述虚拟机测试系统均运行于内核态;
第二执行模块,用于在所述网卡测试程序中基于所述虚拟机测试系统提供的调用接口执行网卡测试任务,并根据执行所述网卡测试任务时所述网卡从发包装置接收的数据包以及所述网卡向所述发包装置发送的数据包,得到所述网卡的测试结果。
11.一种计算机设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器执行所述机器可读指令,以执行时执行如权利要求1至9任一所述的网卡测试方法的步骤。
12.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至9任一所述的网卡测试方法的步骤。
CN202111455101.4A 2021-12-02 2021-12-02 网卡测试方法、装置、计算机设备及计算机可读存储介质 Active CN113849277B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111455101.4A CN113849277B (zh) 2021-12-02 2021-12-02 网卡测试方法、装置、计算机设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111455101.4A CN113849277B (zh) 2021-12-02 2021-12-02 网卡测试方法、装置、计算机设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN113849277A CN113849277A (zh) 2021-12-28
CN113849277B true CN113849277B (zh) 2022-02-18

Family

ID=78982641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111455101.4A Active CN113849277B (zh) 2021-12-02 2021-12-02 网卡测试方法、装置、计算机设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN113849277B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117294783B (zh) * 2023-11-24 2024-03-22 南京华芯科晟技术有限公司 芯片验证方法、装置和设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105190557A (zh) * 2012-10-16 2015-12-23 思杰系统有限公司 用于通过多级api集成在公共与私有云之间进行桥接的系统和方法
CN108989145A (zh) * 2018-06-26 2018-12-11 郑州云海信息技术有限公司 一种网卡虚拟化特性的测试方法及装置
CN109361693A (zh) * 2018-11-21 2019-02-19 南京中孚信息技术有限公司 虚拟设备通信方法和装置
CN113259164A (zh) * 2021-05-18 2021-08-13 广州锦行网络科技有限公司 基于虚拟化构建真实路由系统实现虚实组网的方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7908522B2 (en) * 2007-10-24 2011-03-15 Inventec Corporation Network card testing method
CN102662836B (zh) * 2012-03-28 2015-06-03 易云捷讯科技(北京)有限公司 一种虚拟机评测系统及方法
CN109948310B (zh) * 2018-12-29 2020-12-01 华为技术有限公司 一种锁定方法及相关电子设备
CN111813495A (zh) * 2020-06-12 2020-10-23 北京金山云网络技术有限公司 节点测试方法和装置、存储介质和电子装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105190557A (zh) * 2012-10-16 2015-12-23 思杰系统有限公司 用于通过多级api集成在公共与私有云之间进行桥接的系统和方法
CN108989145A (zh) * 2018-06-26 2018-12-11 郑州云海信息技术有限公司 一种网卡虚拟化特性的测试方法及装置
CN109361693A (zh) * 2018-11-21 2019-02-19 南京中孚信息技术有限公司 虚拟设备通信方法和装置
CN113259164A (zh) * 2021-05-18 2021-08-13 广州锦行网络科技有限公司 基于虚拟化构建真实路由系统实现虚实组网的方法

Also Published As

Publication number Publication date
CN113849277A (zh) 2021-12-28

Similar Documents

Publication Publication Date Title
CN110063051B (zh) 用于重新配置服务器的系统和方法以及服务器
CN108243118B (zh) 转发报文的方法和物理主机
US10409628B2 (en) Managing virtual machine instances utilizing an offload device
US10768972B2 (en) Managing virtual machine instances utilizing a virtual offload device
CN107783913B (zh) 一种应用于计算机的资源访问方法和计算机
US8645605B2 (en) Sharing multiple virtual functions to a host using a pseudo physical function
US10645051B2 (en) Memory-mapped input/output (I/O) channel
US20150370582A1 (en) At least one user space resident interface between at least one user space resident virtual appliance and at least one virtual data plane
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
CN115988218B (zh) 一种虚拟化视频编解码系统、电子设备和存储介质
CN109417488A (zh) 虚拟网络功能资源管理的方法和设备
US11036649B2 (en) Network interface card resource partitioning
CN116320469B (zh) 一种虚拟化视频编解码系统及方法、电子设备和存储介质
CN115988217A (zh) 一种虚拟化视频编解码系统、电子设备和存储介质
CN115269213A (zh) 数据接收方法、数据发送方法、装置、电子设备及介质
CN113849277B (zh) 网卡测试方法、装置、计算机设备及计算机可读存储介质
US10467078B2 (en) Crash dump extraction of guest failure
CN103092676A (zh) 虚拟机集群的模拟输入输出方法、装置及系统
US11467946B1 (en) Breakpoints in neural network accelerator
JP7093979B2 (ja) デバイスプロキシ装置及びそれを含む計算機システム
CN107797845B (zh) 用于访问容器的方法和装置
CN115904617A (zh) 一种基于sr-iov技术的gpu虚拟化实现方法
CN112346390B (zh) 光模块控制方法、装置、设备及计算机可读存储介质
US11481255B2 (en) Management of memory pages for a set of non-consecutive work elements in work queue designated by a sliding window for execution on a coherent accelerator
US10877552B1 (en) Dynamic power reduction through data transfer request limiting

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant