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

优化基于远程直接数据存取的网络应用性能的方法及系统与流程

2021-11-09 21:45:00 来源:中国专利 TAG:


1.本发明涉及存储系统技术领域,尤其涉及一种优化基于远程直接数据存取的网络应用性能的方法及系统。


背景技术:

2.tcp/ip协议与以太网的结合已成为当前主流的网络解决方案,硬件厂商和操作系统开发者通力合作提供了持续的性能改进,以期适应各种不同的业务场景和数据爆炸式增长的需要。在linux中,内核通过中断与硬件进行交互;tcp/ip协议栈作为内核不可缺少的一部分,运行于内核空间,负责数据流的解析与控制,向应用层提交用户数据。在tcp/ip协议栈处理消息流之前,任何来自硬件的消息流都被首先缓存到属于内核空间的内存。任何来自硬件的消息流被存放到前述的内存空间后,都会向内核注册中断,提示内核新的数据已经准备好。硬件通过中断通知内核数据已经准备好,内核需要对此进行一些额外工作。现今网络上的数据流量越来越大,网卡向内核发起中断请求的频率也越来越高,导致内核忙于处理硬件中断,也影响内核响应其它请求。新的napi的引入,一定程度的降低了内核上下文切换的资源开销。但其实napi是结合了轮询与中断机制,在数据流量较少时,其会退化为中断机制;在数据流量较多时,其会退化为轮询机制。硬件厂商为网卡引入了多队列机制,每个队列承载一些连接的流量,结合cpu亲和性技术,将所有的流量分布到指定的cpu内核集合。但依然无法解决问题,内核所承担的压力并没有降低到可接受的水平。同时数据流依然需要被传送到内核空间的内存。以socket编程为例,tcp/ip协议处理的是以sk_buf结构包裹的硬件送达的数据流。tcp/ip协议对sk_buf按照规则进行拆包并分发,虽然tcp/ip协议栈在内核中使用巧妙的编程技术大幅降低了其在内核中的内存拷贝开销,但是最终的数据都要呈现在用户空间,内核空间到用户空间的内存拷贝开销则无法避免。
3.rdma作为一种新的网络应用开发技术,代表了未来网络应用开发的趋势。越来越多的项目也开始使用rdma的技术基础

用户空间驱动作为发掘其各自项目性能潜力的利器。rdma通过在硬件和用户空间可访问内存之间建立直接通路减少了数据的内存拷贝开销,同时减少了用户空间和内核空间的上下文切换。rdma技术需要用户空间事先分配内存(记为ca,用户空间可直接访问),并绑定映射到硬件。任何时候硬件发送或接收的消息都需要经过ca,而消息在发送之前必然需要占用一块新的内存空间(记为nm)准备(初始化)数据,之后将数据从nm拷贝到ca,或者在消息接收之后必然需要占用一块新的内存空间(记为nm)存储数据,并将数据从ca拷贝到nm。在基于rdma的网络模块基础上构建的存储软件中所有的消息传输过程都会经历从nm拷贝到mr的过程,每次内存拷贝都会消耗比较可观的cpu周期,取消这个内存拷贝过程会一定程度提升系统性能。


技术实现要素:

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.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
55.图1为本发明提供的优化基于远程直接数据存取的网络应用性能的方法的一实施例的框图;
56.图2为本发明提供的优化基于远程直接数据存取的网络应用性能的系统的一实施例的示意图。
具体实施方式
57.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
58.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
59.基于上述目的,本发明实施例的第一个方面,提出了一种优化基于远程直接数据存取的网络应用性能的的实施例。如图1所示,其包括如下步骤:
60.步骤s101、生成内存空间,其中,所述内存空间包括预设数量内存段;
61.步骤s103、响应于业务流程触发消息创建请求,通过基于权重的优先权队列接收消息创建请求,将所述消息创建请求入队所述基于权重的优先权队列;
62.步骤s105、从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求,为出队的所述消息创建请求分配所述内存空间中的内存段;
63.步骤s107、基于分配的内存段生成待传输消息;
64.步骤s109、基于远程直接数据存取传输所述待传输消息,并在所述待传输消息传输完成后,释放所述分配的内存段。
65.具体的,分配一块内存空间ca,内存空间的大小设置为能够满足需求的内存总量,将内存空间分割为n个内存段,一个内存段成为一个chunk,可以将内存空间表示为ca={c1,c2,c
n


,c
n
},ca包含n个chunk,c
n
表示ca中的第n个chunk,c
n
表示ca中的第n个chunk,其中1≤n≤n。
66.当系统的业务流程触发消息创建请求时,通过基于权重的优先级队列(wpq)接收消息创建请求,将消息创建请求入队wpq,与此同时,从wpq的所有入队的消息创建请求中决定下一个要被处理的消息创建请求。
67.wpq以优先级为最主要的参考维度来调度获取下一个消息,相较于其他的优先级队列,wpq能较好地提高了低优先级消息类型被处理的概率,不至于在系统充斥大量高优先级消息的情况下,低优先级消息类型在长时间内处于饥饿状态。
68.为出队的消息创建请求分配内存空间中的内存段,分配好内存段之后,在内存段上将消息创建请求初始化,生成待传输的消息,基于远程直接数据存取(remote direct memory access,简称rdma)将待传输的消息发送到目的地或接收待传输的消息并存储在内存段,在消息的发送或接收操作完成后通知系统该操作完成,系统根据收到的操作完成信息,释放该内存段的空间。
69.通过统一管理rdma存取的内存空间,将消息直接使用该内存空间来进行初始化以及传输,降低了总的内存需求,降低了内存拷贝的开销,并且还通过wpq对申请内存的消息创建请求进行调度,有效控制了不同类型的消息获得内存的时机及响应时效,不会长时间占用内存也不出现消息长时间处于饥饿的状态,提高了系统性能及消息传输效率。
70.在一些实施方式中,所述基于权重的优先权队列包含多个先进先出队列;
71.将所述消息创建请求入队所述基于权重的优先权队列,包括:将所述消息创建请求入队所述基于权重的优先权队列的先进先出队列。
72.在一些实施方式中,方法还包括:配置消息类型及所述消息类型携带的优先级;
73.将所述消息创建请求入队所述基于权重的优先权队列的先进先出队列,包括:基于所述消息创建请求中的消息类型携带的优先级将所述消息创建请求入队所述基于权重的优先权队列的先进先出队列中。
74.在一些实施方式中,从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求,包括:
75.根据所述基于权重的优先权队列的消息调度机制从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求。
76.在一些实施方式中,从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求,为出队的所述消息创建请求分配所述内存空间中的内存段,包括:
77.从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求;
78.判断所述内存空间内是否有空闲的内存段,若是有空闲的所述内存段,则为出队的所述消息创建请求分配空闲的所述内存段。
79.在一些实施方式中,生成内存空间,还包括:
80.基于每个所述内存段生成每个所述内存段对应的元数据,其中,所述对应的元数据包括所述内存段的状态信息。
81.在一些实施方式中,释放分配的所述内存段,还包括:
82.将所述内存段对应的元数据的状态信息修改为未占用状态。
83.在一些实施方式中,基于分配的所述内存段生成待传输消息,包括:
84.驱动业务流程为分配的所述内存段填充数据信息以生成待传输消息。
85.在一些实施方式中,配置消息类型及所述消息类型携带的优先级,包括:
86.基于系统架构和功能配置消息类型及所述消息类型携带的优先级。
87.下面根据具体的实施例对本发明的多个实施方式进行说明。
88.首先,在生成内存空间,并内存空间分成chunk后,定义每个chunk对应的描述该chunk状态的元数据meta,用ua表示与ca中的chunk对应的元数据集合,
89.ua={u
1rw
,u
2rw
,u
nrw


,u
nrw
}
90.ua中的meta与ca中的chunk一一对应,ua包含n个meta,u
nrw
表示第n个chunk所对应的meta,其中r位表示是否读占用,w位表示是否写占用,r和w均表示状态,读写不可同时占用同一chunk,取值只有0和1两种,0表示未占用,1表示占用。例如,u
201
表示ua中的第2个元素,描述ca中的第2个chunk的状态信息,u
201
表示当前chunk的写被占用。
91.同时,提前配置好存储软件中所有用到的消息类型及其对应的优先级以初始化wpq能力,消息类型及对应的优先级可以通过配置文件或在代码中固化。
92.用qa表示wpq的一个实例,qa={q1,q2,q
m


,q
m
}。
93.其中,qa中的每一个q表示一个fifo队列(先进先出队列),qa包含m个q,下标m表示其对应的q的优先级值,即qa包含的所有fifo队列的优先级,1≤m≤m。记某一优先级为m的消息类型的一个消息创建请求为d
mi
,其中i表示消息创建请求的序号。
94.任何需要申请ca的消息都先触发消息创建请求d
mi
,d
mi
会进入qa,根据其优先级值m,最终d
mi
会进入q
m
,这个过程称之为入队,
95.q
m

d
mi
96.与此同时,qa会从所有的q中决定下一个应该被处理的消息,这个过程称之为出队,假如出队的消息为d
{32}{98}

97.q
32

d
{32}{98}
98.在ca中查询可用的chunk,也即r和w均为0的chunk,若没有空闲chunk,则等待直到有空闲chunk可用;假如找到某一空闲chunk,其编号为1024,并将消息d
{32}{98}
在此c
1024
上进行初始化,记为u
{1024}01
(写操作)或u
{1024}01
(读操作)。至此一个消息的入队及出队操作完成,出队和入队操作可以同时进行。
99.rdma发送c
1024
所承载的数据至目的地(写操作)或接收数据并存放到c
1024
(读操作),并告知网络应用该操作完成。系统根据操作完成的消息得知c
1024
已经使用完毕,回收c
1024
的存储空间,并修改其对应的状态信息为u
{1024}00

100.通过本发明的方案,将消息直接使用该内存空间来进行初始化以及传输,降低了总的内存需求,降低了内存拷贝的开销,并且还有效控制了不同类型的消息获得内存的时机及响应时效,不会长时间占用内存也不出现消息长时间处于饥饿的状态,提高了系统性能及消息传输效率。
101.基于同一发明构思,根据本发明的另一个方面,如图2所示,本发明的实施例还提供了一种优化基于远程直接数据存取的网络应用性能的系统,系统包括:
102.第一生成模块110,所述第一生成模块110配置为生成内存空间,其中,所述内存空间包括预设数量内存段;
103.入队模块120,所述入队模块120配置为响应于业务流程触发消息创建请求,通过基于权重的优先权队列接收消息创建请求,将所述消息创建请求入队所述基于权重的优先权队列;
104.出队模块130,所述出队模块130配置为从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求,为出队的所述消息创建请求分配所述内存空间中的内存段;
105.第二生成模块140,所述第二生成模块140配置为基于分配的内存段生成待传输消息;
106.传输模块150,所述传输模块150配置为基于远程直接数据存取传输所述待传输消息,并在所述待传输消息传输完成后,释放所述分配的内存段。
107.在一些实施方式中,所述基于权重的优先权队列包含多个先进先出队列;
108.将所述消息创建请求入队所述基于权重的优先权队列,包括:将所述消息创建请求入队所述基于权重的优先权队列的先进先出队列。
109.在一些实施方式中,系统还包括配置模块,配置模块配置为:配置消息类型及所述消息类型携带的优先级;
110.将所述消息创建请求入队所述基于权重的优先权队列的先进先出队列,包括:基于所述消息创建请求中的消息类型携带的优先级将所述消息创建请求入队所述基于权重的优先权队列的先进先出队列中。
111.在一些实施方式中,从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求,包括:
112.根据所述基于权重的优先权队列的消息调度机制从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求。
113.在一些实施方式中,从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求,为出队的所述消息创建请求分配所述内存空间中的内存段,包括:
114.从所述基于权重的优先权队列的所有入队的消息创建请求中出队消息创建请求;
115.判断所述内存空间内是否有空闲的内存段,若是有空闲的所述内存段,则为出队的所述消息创建请求分配空闲的所述内存段。
116.在一些实施方式中,第一生成模块还包括第一生成子模块;
117.第一生成子模块配置为:基于每个所述内存段生成每个所述内存段对应的元数据,其中,所述对应的元数据包括所述内存段的状态信息。
118.在一些实施方式中,释放分配的所述内存段,还包括:
119.将所述内存段对应的元数据的状态信息修改为未占用状态。
120.在一些实施方式中,第二生成模块进一步配置为:
121.驱动业务流程为分配的所述内存段填充数据信息以生成待传输消息。
122.在一些实施方式中,配置模块进一步配置为:
123.基于系统架构和功能配置消息类型及所述消息类型携带的优先级。
124.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,在该计算机设备中包括处理器以及存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行如上的方法的步骤。
125.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时执行如上方法的计算机程序。
126.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
127.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
128.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
129.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
130.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
131.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
再多了解一些

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

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

相关文献