一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

中断管理和数据收发管理的方法、装置及智能网卡与流程

2022-07-10 07:23:40 来源:中国专利 TAG:
1.本发明涉及计算机
技术领域
:,尤其涉及一种中断管理和数据收发管理的方法、装置及智能网卡。
背景技术
::2.对于普通多队列网卡而言,一张网卡上通常有多个网口,其硬件内部通常采用固定分配方式将硬件内部的物理中断均分到这些网口。采用这种中断资源管理的方式,当网卡上部分网口未使用或者一个网口内部的部分物理中断未使用时,未使用的物理中断无法释放出来给其它网口使用,造成中断资源浪费。技术实现要素:3.有鉴于此,本发明实施例提供一种中断管理和数据收发管理的方法、装置及智能网卡,通过在智能网卡内部设置中断映射表并根据中断映射表管理智能网卡内部的中断资源,能够实现动态中断管理功能,从而将智能网卡中的有限中断资源充分利用起来,提升智能网卡的整体性价比。4.为实现上述目的,根据本发明实施例的一个方面,提供了一种用于智能网卡的中断管理方法,包括:5.响应于接收到在所述智能网卡内新建第一网口设备的请求,确定与所述第一网口设备对应的第一中断数目;6.依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断;所述内部状态数组中记录所述智能网卡内部每个物理中断的使用状态;7.将每个所述目标物理中断的中断标识分别写入所述智能网卡的中断映射表中与所述第一网口设备对应的一个映射位置,更新所述内部状态数组中每个所述目标物理中断的使用状态,从而将每个所述目标物理中断与所述第一网口设备绑定;8.其中,所述中断映射表中记录所述智能网卡内每个网口及其对应的一个或多个映射位置。9.可选地。本发明实施例的中断管理方法还包括:10.在依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断之前,确定所述智能网卡内部的空闲中断数目大于等于所述第一中断数目;在依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断之后,更新所述智能网卡内部的空闲中断数目;11.若所述智能网卡内部的空闲中断数目小于所述第一中断数目,则结束当前流程,并返回错误信息。12.可选地,所述智能网卡内部各个物理中断的中断标识采用自增方式编码;依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断,包括:13.按照中断标识从小到大的顺序遍历所述智能网卡内部的物理中断:如果遍历到的物理中断尚未被使用,则将其作为所述目标物理中断,然后判断筛选出的目标物理中断的数目是否等于与所述第一中断数目,若是,则停止遍历、返回新建成功信息,否则继续遍历后续物理中断;如果遍历到的物理中断已经被使用,则继续遍历后续物理中断。14.可选地,本发明实施例的中断管理方法还包括:15.响应于接收到在所述智能网卡内删除第二网口设备的请求,依据所述内部状态数组遍历所述智能网卡内部的物理中断:如果遍历到的物理中断被所述第二网口设备使用,则将其中断标识从所述中断映射表中与所述第二网口设备对应的映射位置中删除,并更新其在所述内部状态数组中的使用状态,从而将其与所述第二网口设备之间的绑定关系解除;如果遍历到的物理中断未被所述第二网口设备使用,则继续遍历后续物理中断。16.可选地,在将每个所述目标物理中断的中断标识分别写入所述智能网卡的中断映射表中与所述第一网口设备对应的一个映射位置之前,所述一个映射位置的字段值为默认值;17.在将其中断标识从所述中断映射表中与所述第二网口设备对应的映射位置中删除之后,将所述中断映射表中与所述第二网口设备对应的映射位置的字段值设置为所述默认值。18.可选地,所述中断标识是通过对对应网口设备的入口地址信息进行哈希处理后得到的。19.根据本发明实施例的第二方面,提供一种用于智能网卡的数据收发管理方法,包括:20.响应于接收到数据收发请求,从所述数据收发请求中解析出网口设备的入口地址信息,根据所述网口设备的入口地址信息确定所述网口设备的中断标识;21.依据所述中断标识和所述智能网卡的中断映射表确定与所述网口设备对应的中断信息;22.根据所述终端信息对所述数据收发请求中的数据包进行处理;23.其中,所述智能网卡内的中断资源是采用本发明实施例第一方面提供的中断管理方法进行管理的。24.根据本发明实施例的第三方面,提供一种用于智能网卡的中断管理装置,包括:25.请求响应模块,响应于接收到在所述智能网卡内新建第一网口设备的请求,确定与所述第一网口设备对应的第一中断数目;26.中断绑定模块,依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断;将每个所述目标物理中断的中断标识分别写入所述智能网卡的中断映射表中与所述第一网口设备对应的一个映射位置,更新所述内部状态数组中每个所述目标物理中断的使用状态,从而将每个所述目标物理中断与所述第一网口设备绑定;27.其中,所述内部状态数组中记录所述智能网卡内部每个物理中断的使用状态;所述中断映射表中记录所述智能网卡内每个网口及其对应的一个或多个映射位置。28.可选地,所述请求响应模块还用于:在依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断之前,确定所述智能网卡内部的空闲中断数目大于等于所述第一中断数目;若所述智能网卡内部的空闲中断数目小于所述第一中断数目,则结束当前流程,并返回错误信息;29.所述中断绑定模块还用于:在依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断之后,更新所述智能网卡内部的空闲中断数目。30.可选地,所述智能网卡内部各个物理中断的中断标识采用自增方式编码;31.所述中断绑定模块依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断,包括:32.按照中断标识从小到大的顺序遍历所述智能网卡内部的物理中断:如果遍历到的物理中断尚未被使用,则将其作为所述目标物理中断,然后判断筛选出的目标物理中断的数目是否等于与所述第一中断数目,若是,则停止遍历、返回新建成功信息,否则继续遍历后续物理中断;如果遍历到的物理中断已经被使用,则继续遍历后续物理中断。33.可选地,所述中断绑定模块还用于:34.响应于接收到在所述智能网卡内删除第二网口设备的请求,依据所述内部状态数组遍历所述智能网卡内部的物理中断:如果遍历到的物理中断被所述第二网口设备使用,则将其中断标识从所述中断映射表中与所述第二网口设备对应的映射位置中删除,并更新其在所述内部状态数组中的使用状态,从而将其与所述第二网口设备之间的绑定关系解除;如果遍历到的物理中断未被所述第二网口设备使用,则继续遍历后续物理中断。35.可选地,在将每个所述目标物理中断的中断标识分别写入所述智能网卡的中断映射表中与所述第一网口设备对应的一个映射位置之前,所述一个映射位置的字段值为默认值;36.所述中断绑定模块还用于:在将其中断标识从所述中断映射表中与所述第二网口设备对应的映射位置中删除之后,将所述中断映射表中与所述第二网口设备对应的映射位置的字段值设置为所述默认值。37.可选地,所述中断标识是通过对对应网口设备的入口地址信息进行哈希处理后得到的。38.根据本发明实施例的第四方面,提供一种用于智能网卡的数据收发管理装置,包括:39.中断标识确定模块,响应于接收到数据收发请求,从所述数据收发请求中解析出网口设备的入口地址信息,根据所述网口设备的入口地址信息确定所述网口设备的中断标识;40.中断信息确定模块,依据所述中断标识和所述智能网卡的中断映射表确定与所述网口设备对应的中断信息;41.数据包处理模块,根据所述终端信息对所述数据收发请求中的数据包进行处理;42.其中,所述智能网卡内的中断资源是采用本发明实施例第一方面提供的中断管理方法进行管理的。43.根据本发明实施例的第五方面,提供一种智能网卡,包括:数据收发管理装置和中断管理装置;其中,44.所述中断管理装置采用本发明实施例第一方面提供的中断管理方法管理所述智能网卡的中断资源、更新所述数据收发管理装置内存储的中断映射表;45.所述数据收发管理装置依据所述中断映射表,采用本发明实施例第二方面提供的数据收发管理方法处理接收到的数据收发请求。46.根据本发明实施例的第六方面,提供一种用于智能网卡的电子设备,包括:47.一个或多个处理器;48.存储装置,用于存储一个或多个程序,49.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例第一或第二方面提供的方法。50.根据本发明实施例的第七方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例第一或第二方面提供的方法。51.上述发明中的一个实施例具有如下优点或有益效果:通过在智能网卡内部设置中断映射表并根据中断映射表管理智能网卡内部的中断资源,能够实现动态中断管理功能,从而将智能网卡中的有限中断资源充分利用起来,提升智能网卡的整体性价比。52.上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明53.附图用于更好地理解本发明,不构成对本发明的不当限定。其中:54.图1是目前中断资源管理方式的示意图;55.图2是本发明实施例可以应用于其中的示例性系统架构图;56.图3是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图;57.图4是部署了本发明实施例的中断管理方法或数据收发管理方法的服务器的示意图;58.图5是本发明实施例的中断管理方法的主要流程的示意图;59.图6是本发明一些实施例的中断管理方法的主要流程示意图;60.图7是本发明实施例的中断管理方法的部署示例的示意图;61.图8是本发明可选实施例中新建网口设备的主要流程示意图;62.图9是本发明可选实施例中删除网口设备的主要流程示意图;63.图10是本发明可选实施例中数据收发管理方法的主要流程示意图;64.图11是本发明实施例的中断管理装置的主要流程的示意图;65.图12是本发明实施例的数据收发管理装置的主要模块的示意图。具体实施方式66.以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。67.每张网卡硬件内部有一个中断向量表,该中断向量表里面保存着与网卡驱动程序交互需要的中断信息。网卡接收和发送数据包的操作都需要根据中断信息通知cpu核进行处理。通常情况下,一个物理中断与一个cpu核绑定。当网卡数据流量特别大时候,单个cpu核无法处理时,需要使用多队列网卡。每个队列对应不同的物理中断,将不同的物理中断绑定到不同的cpu核,能够充分利用多核并行处理特性,提高效率。68.在云计算虚拟化场景中,virtio是一个通用的半虚拟化i/o框架,hypervisor(计算中,为了让多个虚拟机的guestos可以独立运行于同一个物理机hostos上,通常需要在物理机hostos上增加一个虚拟化层来实现,该虚拟化层称为hypervisor)通过它模拟出一系列的虚拟化设备。virtio框架主要包含3个部分:前端驱动(front-end)、后端驱动(back-end)以及virtqueue队列。virtio使用virtqueue来实现i/o机制,通过msix中断来通知cpu核处理数据包流量。每个物理中断其实就是一笔dma写操作,这笔dma写操作里面记录了当前物理中断对应主机内存中的地址、数据和掩码信息。sr-iov技术是一种基于硬件的虚拟化解决方案,它将一个pcie的网络控制器虚拟化成多个pcie设备,每个设备可以直接分配给一个虚拟机,允许在虚拟机之间高效共享pcie设备,并且由于它是在硬件中实现的,因此可以获得能够与本机性能接近的i/o性能。目前,随着云计算虚拟化技术的演进,出现了一些结合sr-iov技术硬件实现virtioback-end的智能网卡,这些智能网卡往往可以通过sr-iov虚拟出多个网口,并且这些智能网卡内部包含一定数量的virtqueue队列资源以实现virtioback-end。与此同时,需要更为灵活的中断管理技术来支持。69.对于普通多队列网卡而言,一张网卡上通常有多个网口。图1是目前中断资源管理方式的示意。如图1所示,每个网口分配的物理中断的数量是固定的,通过基地址(intr_base)和偏移量(intr_offset)可以访问到对应的物理中断。这种中断资源管理方式的硬件设计简单,但是存在中断资源浪费的现象。如图1所示,分配给网口设备net0的物理中断intr2、intr3未使用,分配给网口设备net1的物理中断intr6、intr7未使用,未分配的物理中断intr8未使用。这些未分配或未使用的物理中断无法释放出来给其他网口设备使用,造成中断资源浪费,影响系统性能。一张网卡上的网口数目通常比较少,硬件内部的中断数目又足够多,所以中断资源浪费导致的问题尚不明显。然而,在云计算虚拟化场景中,这种中断资源浪费导致的问题较为突出,主要体现在:70.1、云计算虚拟化场景中,一个物理机上会同时运行多个虚拟机,每个虚拟机通过sr-iov技术与一个或多个pf/vf网口绑定。网口数目变多了,在硬件内部interrupt中断数目一定的情况下,分配到每个网口上的中断数目就没那么充裕了,并且每个网口需要最大支持64个msix中断;71.2、云计算虚拟化场景中,一个物理机上运行着的虚拟机会频繁动态创建删除,删除后的中断如果没有被回收使用,就会形成“空洞”而造成浪费。72.有鉴于此,本发明实施例提出一种用于智能网卡的中断管理方法,通过在智能网卡内部设置中断映射表并根据中断映射表管理智能网卡内部的中断资源,能够实现动态中断管理功能,从而将智能网卡中的有限中断资源充分利用起来,提升智能网卡的整体性价比。73.图2示出了可以应用本发明实施例的中断管理方法或中断管理装置的示例性系统架构200。74.如图2所示,系统架构200可以包括终端设备201、202、203,网络204和服务器205。网络204用以在终端设备201、202、203和服务器205之间提供通信链路的介质。网络204可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。75.用户可以使用终端设备201、202、203通过网络204与服务器205交互,以接收或发送消息等。终端设备201、202、203上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。76.终端设备201、202、203可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。77.服务器205可以是提供各种服务的服务器,例如对用户利用终端设备201、202、203所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息‑‑仅为示例)反馈给终端设备。78.需要说明的是,本发明实施例所提供的中断管理方法可以由服务器205执行,相应地,中断管理装置设置于服务器205中;本发明实施例所提供的中断管理方法也可以由终端设备201、202、203执行,相应地,中断管理装置设置于终端设备201、202、203中。79.应该理解,图2中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。80.下面参考图3,其示出了适于用来实现本发明实施例的终端设备的计算机系统300的结构示意图。图3示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。81.如图3所示,计算机系统300包括中央处理单元(cpu)301,其可以根据存储在只读存储器(rom)302中的程序或者从存储部分308加载到随机访问存储器(ram)303中的程序而执行各种适当的动作和处理。在ram303中,还存储有系统300操作所需的各种程序和数据。cpu301、rom302以及ram303通过总线304彼此相连。输入/输出(i/o)接口305也连接至总线304。82.以下部件连接至i/o接口305:包括键盘、鼠标等的输入部分306;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分307;包括硬盘等的存储部分308;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分309。通信部分309经由诸如因特网的网络执行通信处理。驱动器310也根据需要连接至i/o接口305。可拆卸介质311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器310上,以便于从其上读出的计算机程序根据需要被安装入存储部分308。83.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分309从网络上被下载和安装,和/或从可拆卸介质311被安装。在该计算机程序被中央处理单元(cpu)301执行时,执行本发明的系统中限定的上述功能。84.需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。85.需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。86.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。87.以下以本发明实施例的方法应用于服务端为例,对本发明实施进行详细说明。88.图4是部署了本发明实施例的中断管理方法或数据收发管理方法的服务器的示意图,如图4所示,服务器401上安装一块智能网卡402,在智能网卡402上主要包含两个部分:网卡逻辑403以及管理软件404。其中网卡逻辑可以采用fpga(fieldprogrammablegatearray)实现,管理软件运行在板卡上的一块cpu上。本发明提出的智能网卡动态中断管理和数据收发管理方法的实现包含两个部分:硬件部分实现在网卡逻辑303中,软件部分实现在管理软件304中。本发明实施例的中断管理方法主要在管理软件404中实现,本发明实施例的数据收发管理方法主要在网卡逻辑403中实现。89.图5是本发明实施例的中断管理方法的主要流程的示意图。如图5所示,用于智能网卡的中断管理方法包括步骤s501、步骤s502和步骤s503。90.在步骤s501中,响应于接收到在智能网卡内新建第一网口设备的请求,确定与第一网口设备对应的第一中断数目。91.实际应用过程中,可以预先设定每个网口设备能够分配的最大中断数目。智能网卡内每个网口设备对应的最大中断数目可以根据实际情况进行选择性设定,不同网口设备对应的最大中断数目可以相同或者不同。在确定与第一网口设备对应的第一中断数目时,可以以第一网口设备对应的最大中断数目作为第一中断数目,当然,也可以以小于第一网口设备对应的最大中断数目的某个数值作为第一中断数目。示例性地,网口设备net0对应的最大中断数目为4,在新建网口设备net0时,可以以4作为与网口设备net0对应的第一中断数目,也可以是2或3作为与网口设备net0对应的第一中断数目。92.在步骤s502中,依据第一中断数目和智能网卡的内部状态数组从智能网卡内部筛选未被使用的目标物理中断。93.内部状态数组中记录智能网卡内部每个物理中断的使用状态,包括使用中和未使用。本步骤中,可以先根据智能网卡的内部状态数组确定智能网卡内所有未被使用的物理中断,然后从确定出的物理中断中筛选出与第一中断数目对应的多个物理中断作为目标物理中断。示例性地,第一中断数目为5,根据智能网卡的内部状态数组确定智能网卡内所有未被使用的物理中断为intr0、intr1、intr2、intr3、intr4、intr5、intr6、intr7、intr8、intr9,则从这10个物理中断中随机筛选5个、或按照特定顺序(例如编码从小打到或者从大到小)筛选5个作为目标物理中断。94.在一些可选的实施例中,智能网卡内部各个物理中断的中断标识采用自增方式编码;依据第一中断数目和智能网卡的内部状态数组从智能网卡内部筛选未被使用的目标物理中断,包括:按照中断标识从小到大的顺序遍历智能网卡内部的物理中断:如果遍历到的物理中断尚未被使用,则将其作为目标物理中断,然后判断筛选出的目标物理中断的数目是否等于与第一中断数目,若是,则停止遍历、返回新建成功信息,否则继续遍历后续物理中断;如果遍历到的物理中断已经被使用,则继续遍历后续物理中断。95.图7是本发明实施例的中断管理方法的部署示例的示意图,以图7为例,为net0对应的网卡分配6个物理中断intr0-intr5,为net1对应的网卡分配4个物理中断intr6-intr9,在删除net0设备之后,物理中断intr0-intr5被释放;后续若增加net2设备、且为net设备对应网口分配2个物理中断为intr0、intr1时,暴露给软件的是不连续的中断标识。为网口设备net0分配4个物理中断intr0-intr3,为net1对应的网卡分配4个物理中断intr4-intr7,在删除net0设备之后,物理中断intr0-intr3被释放;后续若增加net2设备、且为net设备对应网口分配4个物理中断为intr0-intr3时,暴露给软件的是连续的中断标识。96.本实施例中,通过按照编码从小到大的顺序筛选未被使用的物理中断,能够最大化地使得各个网口设备所使用的物理中断的编码连续,便于快速了解各个物理中断的使用情况。97.在步骤s503中,将每个目标物理中断的中断标识分别写入智能网卡的中断映射表中与第一网口设备对应的一个映射位置,更新内部状态数组中每个目标物理中断的使用状态,从而将每个目标物理中断与第一网口设备绑定;中断映射表中记录智能网卡内每个网口及其对应的一个或多个映射位置。98.参见图7,与目前直接将队列暴露给软件使用的方式(参见图1)不同,在网卡逻辑303的设计中,本发明增加了一层中断映射表(intr_map_table)映射。在intr_map_table中,给每个网口设备分配固定大小的映射位置(比如64),映射位置的大小决定了一个网口设备支持的最大中断数目。映射位置的大小在intr_map_table反映为映射位置的数量,每个映射位置可以写入一个物理中断的中断标识。当管理软件发起创建一个net设备的请求时,扫描物理中断状态,依次将未使用的物理中断标识填入上述位置。99.可选地,在将每个目标物理中断的中断标识分别写入智能网卡的中断映射表中与第一网口设备对应的一个映射位置之前,一个映射位置的字段值为默认值;在将其中断标识从中断映射表中与第二网口设备对应的映射位置中删除之后,将中断映射表中与第二网口设备对应的映射位置的字段值设置为默认值。100.以图7为例,初始时,intr_map_table中每个映射位置里面都填-1,表示没有分配任何物理中断。当管理软件发起创建一个net设备的请求时,扫描物理中断状态,依次将未使用的物理中断的中断标识填入上述位置。以创建net1设备为例,若intr3、intr4、intr6、intr8未被使用,将intr3、intr4、intr6、intr8依次填入net1设备的intr_map_table中。上层软件访问智能网卡时,仍然以intr_base intr_offset访问硬件,在硬件内部通过intr_map_table映射,找到物理中断intr3、intr4、intr6、intr8。101.与资源占用量很多的中断向量表相比,intr_map_table占用资源量很小:以一个包含128个网口,每个网口最大支持64个物理中断的智能网卡为例,假设其内部包含1000个物理中断,则只需要(10bit(10bit可以表示1024个中断)×64×128=10kb)的存储资源来实现intr_map_table。102.本发明实施例中,物理中断的中断标识用于唯一表示一个物理中断,中断标识的确定方式可以根据实际情况进行选择性设定,例如通过对对应网口设备的入口地址信息进行哈希处理后得到的。103.在依据第一中断数目和智能网卡的内部状态数组从智能网卡内部筛选未被使用的目标物理中断之前,若智能网卡内部的空闲中断数目小于第一中断数目,表明当前智能网卡可供使用的物理中断数不足,此时可以将第一中断数目调整为智能网卡内部的空闲中断数目。当然,也可以结束当前流程,返回错误信息。可选地,在依据第一中断数目和智能网卡的内部状态数组从智能网卡内部筛选未被使用的目标物理中断之前,确定智能网卡内部的空闲中断数目大于等于第一中断数目;在依据第一中断数目和智能网卡的内部状态数组从智能网卡内部筛选未被使用的目标物理中断之后,更新智能网卡内部的空闲中断数目。104.图6是本发明一些可选实施例的中断管理方法的主要流程示意图。105.如图6所示,中断管理方法的主要流程包括:106.步骤s601,响应于接收到在智能网卡内新建第一网口设备的请求,确定与第一网口设备对应的第一中断数目;107.步骤s602,判断智能网卡内部的空闲中断数目是否大于等于第一中断数目;若是则跳转到步骤s603,否则流程结束;108.步骤s603,依据第一中断数目和智能网卡的内部状态数组从智能网卡内部筛选未被使用的目标物理中断;109.步骤s604,将每个目标物理中断的中断标识分别写入智能网卡的中断映射表中与第一网口设备对应的一个映射位置,更新内部状态数组中每个目标物理中断的使用状态,从而将每个目标物理中断与第一网口设备绑定。110.本发明实施例中,当管理软件收到上层应用发来的新建网口设备的请求时,首先检查智能网卡内部的空闲中断数目(freeintrcount)是否大于等于请求的第一中断数目。如果结果为否,则新建网口设备失败,返回错误给上层应用;如果有足够的空闲物理中断,则管理软件遍历智能网卡内部物理中断的使用状态(保存在管理软件的内部状态数组中),如果遍历到的当前物理中断尚未被使用,则将其分配给发送请求的网口设备。将网口设备的intr_map_table的对应位置上填入此物理中断的中断标识,同时更新管理软件内部状态数组及freeintrcounter计数;如果遍历到的当前物理中断已经被其它网口设备使用,则跳过此物理中断,继续遍历后续物理中断。如果当前分配的物理中断数目已经达到要求的第一中断数目,则停止遍历,返回新建成功,否则继续上述遍历过程。111.图8是本发明可选实施例中新建网口设备的主要流程示意图。如图8所示,新建网口设备的主要流程包括:112.步骤s801,接收到在智能网卡内新建第一网口设备的请求,确定与第一网口设备对应的第一中断数目;113.步骤s802,判断智能网卡内部的空闲中断数目是否大于等于第一中断数目;若是则跳转到步骤s803,否则跳转至步骤s808;114.步骤s803,遍历智能网卡内部第i个物理中断,i代表正整数,初始状态下i=1;115.步骤s804,判断第i个物理中断是否被使用;若是,则跳转至步骤s803,否则跳转至步骤s805;116.步骤s805,将第i个物理中断作为目标物理中断,更新intr_map_table以及空闲中断数目,从而将第i个物理中断与第一网口设备绑定;117.步骤s806,判断i是否等于第一中断数目;若是,则跳转至步骤s807,否则,i自增1之后跳转至步骤s803;118.步骤s807,新建设备成功;119.步骤s808,新建设备失败,报告失败原因,例如可用中断数不足。120.当管理软件收到上层应用发来的删除网口设备的请求时,可以依据所述内部状态数组遍历智能网卡内部的物理中断:如果遍历到的物理中断被第二网口设备使用,则将其中断标识从中断映射表中与第二网口设备对应的映射位置中删除,并更新其在内部状态数组中的使用状态,从而将其与第二网口设备之间的绑定关系解除;如果遍历到的物理中断未被第二网口设备使用,则继续遍历后续物理中断。实际应用过程中,可以仅遍历与第二网口设备绑定的各个物理中断,也可以遍历智能网卡内的所有物理中断。121.图9是本发明可选实施例中删除网口设备的主要流程示意图。如图9所示,删除网口设备的主要流程包括:122.步骤s901,接收到在智能网卡内删除第二网口设备的请求;123.步骤s902,遍历智能网卡内部第i个物理中断,i代表正整数,初始状态下i=1;124.步骤s903,判断第i个物理中断是否被第二网口设备使用;若是,则跳转至步骤s904,否则跳转至步骤s902;125.步骤s904,将第i个物理中断从第二网口设备中删除,更新intr_map_table以及空闲中断数目,从而将第i个物理中断与第二网口设备之间的绑定关系解除;126.步骤s905,判断i是否等于智能网卡的物理中断总数i;若是,则跳转至步骤s906,否则,i自增1之后跳转至步骤s902;127.步骤s906,删除设备成功。128.以图7为例,当管理软件收到上层应用发来的删除网口设备的请求时,遍历智能网卡内部物理中断的使用状态(保存在管理软件的内部状态数组中),如果遍历到的当前物理中断被待删除网口设备使用,则将此物理中断从网口设备中删除,将对应的intr_map_table位置设置成-1,更新内部状态数组以将此物理中断设置为未使用状态,最后更新freeintrcount;如果遍历到的当前物理中断未被待删除网口设备使用,则跳到下一个物理中断继续遍历。当遍历到最后一个物理中断后,删除过程结束。实际应用过程中,可以仅遍历与第二网口设备绑定的各个物理中断,也可以遍历智能网卡内的所有物理中断。129.根据本发明实施例的第二方面,提供一种用于智能网卡的数据收发管理方法。图10是本发明可选实施例中数据收发管理方法的主要流程示意图,如图10所示,数据收发管理方法包括:步骤s1001、步骤s1002、步骤s1003和步骤s1004。本实施例中,智能网卡内的中断资源是采用本发明实施例第一方面提供的中断管理方法进行管理的。中断资源管理的具体过程参见本发明实施例第一方面的介绍,此处不再赘述。130.在步骤s1001中,响应于接收到数据收发请求,从数据收发请求中解析出网口设备的入口地址信息。入口地址信息用于唯一表示智能网卡内的一个网口,例如网卡的基地址(intr_base)和偏移量(intr_offset)。131.步骤s1002,根据网口设备的入口地址信息确定网口设备的中断标识。若物理中断的中断标识是采用哈希算法得到的,则在本实施例步骤s1002中,可以根据哈希算法确定网口设备的中断标识。例如对网口设备入口地址的基地址和偏移量进行哈希处理得到中断标识。132.步骤s1003,依据中断标识和智能网卡的中断映射表确定与网口设备对应的中断信息。中断信息包括数据信息、地址信息、掩码信息等。133.步骤s1004,根据终端信息对数据收发请求中的数据包进行处理。例如,根据中断信息向智能网卡的管理软件发起dma写操作,通知cpu和处理数据收发请求中的数据包,从而完成数据包收发过程。134.本发明通过在智能网卡的硬件内部增加一张intr_map_table中断映射表以及在管理软件上增加动态中断管理功能,能够将智能网卡中的有限中断资源充分利用起来,提升智能网卡整体性价比。135.根据本发明实施例的第三方面,提供一种实现本发明实施例第一方面的中断管理方法的装置。图11是本发明实施例的中断管理装置的主要流程的示意图。如图11,用于智能网卡的中断管理装置1100包括:136.请求响应模块1101,响应于接收到在所述智能网卡内新建第一网口设备的请求,确定与所述第一网口设备对应的第一中断数目;137.中断绑定模块1102,依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断;将每个所述目标物理中断的中断标识分别写入所述智能网卡的中断映射表中与所述第一网口设备对应的一个映射位置,更新所述内部状态数组中每个所述目标物理中断的使用状态,从而将每个所述目标物理中断与所述第一网口设备绑定;138.其中,所述内部状态数组中记录所述智能网卡内部每个物理中断的使用状态;所述中断映射表中记录所述智能网卡内每个网口及其对应的一个或多个映射位置。139.可选地,所述请求响应模块还用于:在依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断之前,确定所述智能网卡内部的空闲中断数目大于等于所述第一中断数目;若所述智能网卡内部的空闲中断数目小于所述第一中断数目,则结束当前流程,并返回错误信息;140.所述中断绑定模块还用于:在依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断之后,更新所述智能网卡内部的空闲中断数目。141.可选地,所述智能网卡内部各个物理中断的中断标识采用自增方式编码;142.所述中断绑定模块依据所述第一中断数目和所述智能网卡的内部状态数组从所述智能网卡内部筛选未被使用的目标物理中断,包括:143.按照中断标识从小到大的顺序遍历所述智能网卡内部的物理中断:如果遍历到的物理中断尚未被使用,则将其作为所述目标物理中断,然后判断筛选出的目标物理中断的数目是否等于与所述第一中断数目,若是,则停止遍历、返回新建成功信息,否则继续遍历后续物理中断;如果遍历到的物理中断已经被使用,则继续遍历后续物理中断。144.可选地,所述中断绑定模块还用于:145.响应于接收到在所述智能网卡内删除第二网口设备的请求,依据所述内部状态数组遍历所述智能网卡内部的物理中断:如果遍历到的物理中断被所述第二网口设备使用,则将其中断标识从所述中断映射表中与所述第二网口设备对应的映射位置中删除,并更新其在所述内部状态数组中的使用状态,从而将其与所述第二网口设备之间的绑定关系解除;如果遍历到的物理中断未被所述第二网口设备使用,则继续遍历后续物理中断。146.可选地,在将每个所述目标物理中断的中断标识分别写入所述智能网卡的中断映射表中与所述第一网口设备对应的一个映射位置之前,所述一个映射位置的字段值为默认值;147.所述中断绑定模块还用于:在将其中断标识从所述中断映射表中与所述第二网口设备对应的映射位置中删除之后,将所述中断映射表中与所述第二网口设备对应的映射位置的字段值设置为所述默认值。148.可选地,所述中断标识是通过对对应网口设备的入口地址信息进行哈希处理后得到的。149.根据本发明实施例的第四方面,提供一种实现本发明实施例第二方面的数据收发管理管理方法的装置。图12是本发明实施例的数据收发管理装置的主要模块的示意图。如图12所示,用于智能网卡的数据收发管理装置1200包括:150.中断标识确定模块1201,响应于接收到数据收发请求,从所述数据收发请求中解析出网口设备的入口地址信息,根据所述网口设备的入口地址信息确定所述网口设备的中断标识;151.中断信息确定模块1202,依据所述中断标识和所述智能网卡的中断映射表确定与所述网口设备对应的中断信息;152.数据包处理模块1203,根据所述终端信息对所述数据收发请求中的数据包进行处理;153.其中,所述智能网卡内的中断资源是采用本发明实施例第一方面提供的中断管理方法进行管理的。154.根据本发明实施例的第五方面,提供一种智能网卡,包括:数据收发管理装置和中断管理装置;其中,155.所述中断管理装置采用本发明实施例第一方面提供的中断管理方法管理所述智能网卡的中断资源、更新所述数据收发管理装置内存储的中断映射表;156.所述数据收发管理装置依据所述中断映射表,采用本发明实施例第二方面提供的数据收发管理方法处理接收到的数据收发请求。157.根据本发明实施例的第六方面,提供一种用于智能网卡的电子设备,包括:158.一个或多个处理器;159.存储装置,用于存储一个或多个程序,160.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例第一或第二方面提供的方法。161.根据本发明实施例的第七方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例第一或第二方面提供的方法。162.描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括请求响应模块和中断绑定模块,或者一种处理器包括中断标识确定模块、中断信息确定模块和数据包处理模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,请求响应模块还可以被描述为“从所述智能网卡内部筛选未被使用的目标物理中断的模块”。163.作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:164.响应于接收到在智能网卡内新建第一网口设备的请求,确定与第一网口设备对应的第一中断数目;依据第一中断数目和智能网卡的内部状态数组从智能网卡内部筛选未被使用的目标物理中断;内部状态数组中记录智能网卡内部每个物理中断的使用状态;将每个目标物理中断的中断标识分别写入智能网卡的中断映射表中与第一网口设备对应的一个映射位置,更新内部状态数组中每个目标物理中断的使用状态,从而将每个目标物理中断与第一网口设备绑定;其中,中断映射表中记录智能网卡内每个网口及其对应的一个或多个映射位置;或者,165.响应于接收到数据收发请求,从数据收发请求中解析出网口设备的入口地址信息,根据网口设备的入口地址信息确定网口设备的中断标识;依据中断标识和智能网卡的中断映射表确定与网口设备对应的中断信息;根据终端信息对数据收发请求中的数据包进行处理;其中,智能网卡内的中断资源是采用本发明实施例第一方面提供的中断管理方法进行管理的。166.根据本发明实施例的技术方案,通过在智能网卡内部设置中断映射表并根据中断映射表管理智能网卡内部的中断资源,能够实现动态中断管理功能,从而将智能网卡中的有限中断资源充分利用起来,提升智能网卡的整体性价比。167.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献