本发明属于网络传输,特别涉及一种基于lro超时和中断itr超时的联合中断控制方法和装置。
背景技术:
1、网络中通常是以数据包为单位进行信息传递的。能够传输的最大数据包大小称为mtu,以字节为单位。rfc标准定义以太网的默认mtu为1500字节,当软件要发送的数据包大于该mtu大小后,tso(tcp segmentation offload,tcp分段卸载)技术就按照mtu对数据包进行切分,将切分好的数据包分片,通过网络发送给对端。
2、与发送方向相对应地,网卡芯片的接收通路采用一种将多个数据包分片(tcp分片)进行聚合的技术(lro,large receive offload)。其中为了防止聚合一个超级长包,传统lro会在每个接收队列内部使用一个超时计数器,当超时后停止当前数据流聚合,将已经聚合的数据写入到主机内存,并将描述符回写给主机。随后产生中断告知主机软件。其目的是将网卡接收到的数据包,在传递给操作系统之前进行合并,减少cpu中断处理次数,从而减少cpu的工作负荷,提高网络传输性能。
3、此外,网卡中断模块还可以通过中断速率限制(itr,time-based interruptthrottling)功能,防止给主机上报中断过频。只有当itr计数器超时后,中断才可以上报给主机软件。例如通过中断时间戳的时间值和系统时间值之间的差值判断是否大于软件配置的阈值,来决定当前中断是否可以上报给主机软件,用于节省带宽,提升中断抑制效果。
4、然而,上述现有技术存在以下不足。首先,当开启lro功能后,为了防止一直没有接收到后续数据分片的数据包,导致某个数据包长时间占用lro聚合流的资源,或者防止逻辑硬件一直在聚合,从而产生一个超级长的数据包,每个接收队列都需要使用一个超时计数器,每个中断向量也使用一个计数器。中断模块和lro模块都会有大量计数器一直在工作状态,这将会耗费大量的资源和功耗。其次,为了达到提高网络处理性能,最佳情况是当lro超时停止聚合后,软件能够立即收到中断,处理本次lro的数据。但lro超时停止和中断模块上报中断时间没有任何耦合关系,无法确保同步。如果lro超时停止聚合时间较长,中断超时多次,该队列lro才超时一次,就会出现实际逻辑已经处理一部分lro的数据,但是前面几次上报给主机软件的中断,并未告知主机有lro的数据可以处理,直到lro超时后才给中断模块中断请求,然后中断模块等待中断超时后,再将处理的lro数据告知软件,会存在前面cpu有空闲时间,但是没有处理数据的情况;或者某个队列lro超时较短,该队列lro超时多次,但是中断还没有超时的情况。上述两种情况都会导致cpu需要突发处理大量数据。
技术实现思路
1、本发明的目的在于提供一种基于lro超时和中断itr超时的联合中断控制方法和装置,旨在节省软件cpu资源和芯片的逻辑资源。
2、根据本发明的第一方面,提供了一种基于lro超时和中断itr超时的联合中断控制方法,包括:
3、将dma接收队列的中断请求映射到中断向量上,并复用所述中断向量的itr超时计数器;
4、当所述itr超时计数器的计时值达到第一时间间隔时,向所述dma接收队列反映射一个lro超时脉冲,用于指示所述dma接收队列停止聚合当前数据流,并将已聚合的数据流写入主机内存;
5、当所述itr超时计数器的计时值达到第二时间间隔时,将所述dma接收队列产生的中断请求上报给主机端。
6、优选地,所述第一时间间隔和所述第二时间间隔之和为中断itr超时间隔。
7、优选地,所述将已聚合的数据流写入主机内存,进一步包括:
8、将所述dma接收队列已聚合的接收数据和对应的描述符通过dma写入到主机内存。
9、优选地,在所述将已聚合的数据流写入主机内存之后,该方法还包括:
10、生成中断请求,将所述中断请求发送到中断处理模块,以使所述dma接收队列自动开始新数据流的聚合。
11、优选地,该方法还包括:
12、根据链路延迟状态,动态配置所述第二时间间隔,以使确保在上报所述中断请求前,所述dma接收队列已经将聚合的数据包写入到所述主机内存中。
13、根据本发明的第二方面,提供了一种基于lro超时和中断itr超时的联合中断控制装置,包括:
14、映射单元,用于将dma接收队列的中断请求映射到中断向量上,并复用所述中断向量的itr超时计数器;
15、反映射单元,用于当所述itr超时计数器的计时值达到第一时间间隔时,向所述dma接收队列反映射一个lro超时脉冲,用于指示所述dma接收队列停止聚合当前数据流,并将已聚合的数据流写入主机内存;
16、中断单元,用于当所述itr超时计数器的计时值达到第二时间间隔时,将所述dma接收队列产生的中断请求上报给主机端。
17、相比于现有技术,本发明的技术方案具备以下优点:
18、1、减少了芯片内部计数器的使用,节省了芯片资源和功耗。以256接收队列和64中断向量为例,可以从传统的320个计数器减少到1个计数器和128个寄存器。并且随着接收队列的增加,节省芯片资源和功耗的效果更加明显。通过将多个接收队列可编程地映射到一个中断向量,还能够大幅节省中断向量。
19、2、实现了lro聚合包长和中断间隔可配置。主机软件可以根据接收到数据包的长度来实时动态调整中断间隔,从而协同自适应调整lro聚合包长,实现软硬件处理融合一体。根据实际运用场景的链路延迟,软件对第二时间间隔进行动态可编程,保证lro停止聚合的数据包和描述符写入到主机内存后,再上报中断。
20、3、将中断超时和接收队列lro超时相结合,能够将停止聚合的数据包通过中断及时地告知主机,并且减少软件无效处理lro聚合报文的次数。主机软件只需要处理该中断映射的队列,因而有效地降低了cpu利用率。
21、4、本发明的方案具有广泛的适用性。不依赖pcie的中断模式,该方法对int-x、msi和msix中断均适用,并且可以根据不同带宽的网卡来调节第一时间间隔和第二时间间隔进行适配。此外该方案适用于虚拟化和非虚拟化场景。
22、本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可以通过在说明书、权利要求书以及附图中所指出的结构和流程来实现和获取。
1.一种基于lro超时和中断itr超时的联合中断控制方法,其特征在于,包括:
2.根据权利要求1所述的基于lro超时和中断itr超时的联合中断控制方法,其特征在于,所述第一时间间隔和所述第二时间间隔之和为中断itr超时间隔。
3.根据权利要求1所述的基于lro超时和中断itr超时的联合中断控制方法,其特征在于,所述将已聚合的数据流写入主机内存,进一步包括:
4.根据权利要求3所述的基于lro超时和中断itr超时的联合中断控制方法,其特征在于,在所述将已聚合的数据流写入主机内存之后,该方法还包括:
5.根据权利要求1所述的基于lro超时和中断itr超时的联合中断控制方法,其特征在于,该方法还包括:
6.一种基于lro超时和中断itr超时的联合中断控制装置,其特征在于,包括:
7.根据权利要求6所述的基于lro超时和中断itr超时的联合中断控制装置,其特征在于,所述第一时间间隔和所述第二时间间隔之和为中断itr超时间隔。
8.根据权利要求6所述的基于lro超时和中断itr超时的联合中断控制装置,其特征在于,所述反映射单元进一步用于:
9.根据权利要求8所述的基于lro超时和中断itr超时的联合中断控制装置,其特征在于,所述反映射单元进一步用于:
10.根据权利要求6所述的基于lro超时和中断itr超时的联合中断控制装置,其特征在于,还包括: