CN116700595A - 一种基于缓存的数据处理方法、***及设备 - Google Patents
一种基于缓存的数据处理方法、***及设备 Download PDFInfo
- Publication number
- CN116700595A CN116700595A CN202210184399.8A CN202210184399A CN116700595A CN 116700595 A CN116700595 A CN 116700595A CN 202210184399 A CN202210184399 A CN 202210184399A CN 116700595 A CN116700595 A CN 116700595A
- Authority
- CN
- China
- Prior art keywords
- server
- data
- address
- cache
- memory
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 238000000034 method Methods 0.000 claims description 59
- 238000012545 processing Methods 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 13
- 238000012790 confirmation Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 10
- 239000004744 fabric Substances 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- RGNPBRKPHBKNKX-UHFFFAOYSA-N hexaflumuron Chemical compound C1=C(Cl)C(OC(F)(F)C(F)F)=C(Cl)C=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F RGNPBRKPHBKNKX-UHFFFAOYSA-N 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种基于缓存的数据处理方法,当第一服务器需要将自身内存中的第一数据写入第二服务器的内存时,第一服务器中的处理器将第一数据拷贝至第一缓存中,该第一缓存为第一服务器中的缓存。在完成拷贝后,处理器向网卡发送写请求,以使得网卡根据该写请求以RDMA的方式将第一缓存中的第一数据写入第二服务器的内存中。即,网卡在向第二服务器发送第一数据时,是从第一缓存中读取的第一数据,并非是从内存中读取第一数据,从而使得处理器在向第一缓存中拷贝完第一数据后,就可以访问第一数据所占用的内存,无需等待第二服务器写完成后才访问,提高处理器的工作效率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种基于缓存的数据处理方法、***及设备。
背景技术
远程直接内存访问(remote direct memory access,RDMA)是一种可以绕过远端主机操作***访问其内存数据的技术。由于RDMA可以不经过操作***实现数据存取,不仅节省了大量中央处理器(central processing unit,CPU)资源,还可以提高***吞吐量,降低***中通信时延。例如图1所示的应用场景图,在该应用场景中服务器1为本地服务器、服务器2为远端服务器,交换机用于连接服务器1与服务器2。在处理器1上运行的应用程序通过调用网卡上的驱动程序与服务器1建立数据通道,以通过该数据通道使用服务器2所注册的内存区域执行RDMA读操作和写操作。具体地,服务器1通过网卡1向服务器2发送读请求或写请求,服务器2中的网卡2完成读写操作,无需处理器2参与操作。
然而,随着数据量的不断增大,对数据处理效率的要求也越来越高,如何提高数据处理效率是急需解决的技术问题。
发明内容
为解决上述问题,本申请提供了一种基于缓存的数据处理方法、***及设备,以提高数据处理效率。
在本申请的第一方面,提供了一种基于缓存的数据处理方法,该方法应用于第一服务器,该第一服务器包括处理器和网卡。在需要将第一服务器内存中的第一数据写入第二服务器的内存时,处理器将第一数据拷贝至第一缓存中,该第一缓存为第一服务器中的缓存。在拷贝完成后,处理器向网卡发送写请求,该写请求指示网卡以RDMA方式将第一缓存中的第一数据写入第二服务器的内存中。网卡根据写请求从第一缓存中获取第一数据,并通过RDMA方式将第一数据发送给第二服务器。
在该方案中,当第一服务器需要将自身内存中的第一数据写入第二服务器的内存时,第一服务器中的处理器将第一数据拷贝至第一缓存中,该第一缓存为第一服务器中的缓存。在完成拷贝后,处理器向网卡发送写请求,以使得网卡根据该写请求以RDMA的方式将第一缓存中的第一数据写入第二服务器的内存中。即,网卡在向第二服务器发送第一数据时,是从第一缓存中读取的第一数据,并非是从内存中读取第一数据,从而使得处理器在向第一缓存中拷贝完第一数据后,就可以访问第一数据所占用的内存,无需等待第二服务器写完成后才访问,提高处理器的工作效率。
在一种可能的实现方式中,在处理器将第一数据拷贝至第一缓存中,允许处理器访问存储第一数据的内存,以提高处理器的处理效率。
在一种可能的实现方式中,第二服务器在完成写操作后,向网卡发送确认报文,以使得网卡通过确认报文可以获知第二服务器完成针对第一数据的写操作。
在一种可能的实现方式中,第一缓存可以为处理器中的内存中的部分存储空间,或者第一缓存为网卡的内存中的部分存储空间。
在一种可能的实现方式中,网卡向第二服务器发送第一数据时,将通过网络设备以RDMA方式将第一数据发送给第二服务器。其中,第一服务器与第二服务器通过网络设备通信。
在本申请第二方面,提供了一种基于缓存的数据处理方法,包括:网络设备接收第一服务器发送的第一读请求,该第一读请求包括第一地址和第一数据长度。其中,第一请求用于以RDMA方式从第二服务器的内存获取从第一地址开始存储的第一数据刹那高度的第一目标数据。第一服务器和第二服务器通过网络设备通信。网络设备根据第一读请求向第二服务器发送第二读请求,该第二读请求包括第二地址和第二数据长度,用于指示以RDMA方式从第二服务器的内存获取从第二地址开始存储的第二数据长度的第二目标数据。网络设备以RDMA方式向所述第一服务器发送第一读响应,该第一读响应包括所述第一目标数据。其中,当第二地址为第一地址时,第二数据长度大于第一数据长度,所述第二目标数据包括第一目标数据;当第二地址为第一地址偏移第一数据长度后得到的地址时,第二目标数据为位于第一目标数据后的数据。
在该方案中,当第一服务器需要从第二服务器读取数据时,位于第一服务器和第二服务器之间的网络设备在接收到第一服务器发送的第一读请求后,将第一读请求中的第一数据长度修改为第二数据长度,以从第二服务器中读取第二数据长度的数据。其中,第二数据长度大于第一数据长度,或者第二数据长度对应的第二目标数据位于所要读取的第一目标数据之后。即,在网络设备侧实现预取功能,不仅加快读取速度,还可以避免对第一服务器中处理器的改动。
在一种可能的实现方式中,网络设备还可以存储第一地址和第一数据长度的第一对应关系,以便根据该第一对应关系向第一服务器发送第一目标数据。
在一种可能的实现方式中,网络设备接收第二服务器发送的第二目标数据,并根据第一对应关系以及第二目标数据向第一服务器发送第一读响应。
在一种可能的实现方式中,网络设备还可以根据第二读请求建立第二对应关系。当第二地址为第一地址时,第二对应关系包括第一地址、第二数据长度以及第二目标数据之间的对应关系;或者第二对应关系包括第一地址偏移第一长度后得到的地址、第二数据长度减去第一数据长度得到的数据长度以及第二目标数据中去掉第一目标数据后的数据之间的对应关系。当第二地址为第一地址偏移第一长度后得到的地址时,第二对应关系包括第二地址、第二数据长度以及第二目标数据之间的对应关系。
在一种可能的实现方式中,网络设备在接收到第一读请求后,根据第一读请求确定第二缓存中是否存储有第一目标数据,该第二缓存为网络设备中的缓存。当第二缓存中未存储有第一目标数据时,网络设备向第二服务器发送第二读请求。该第二读请求中第二地址为第一地址,第二数据长度大于第一数据长度,第二目标数据包括第一目标数据。当第二缓存中存储有第一目标数据时,网络设备向第二服务器发送第二读请求。该第二读请求中第二地址为第一地址偏移第一数据长度后得到的地址,第二目标数据为位于第一目标数据后的数据。
在一种可能的实现方式中,网络设备接收第一服务器发送的写报文,该写报文指示以RDMA方式向第二服务器的内存的第三地址中写入第三目标数据。网络设备确定第二缓存中是否存储第三地址对应的数据。当第二缓存存储第三地址对应的数据时,网络设备利用第三目标数据更新第二缓存存储的第三地址所对应的数据。
在本申请第三方面,提供了一种基于缓存的数据处理***,该***包括第一服务器、第二服务器,该第一服务器与第二服务器以远程直接内存访问RDMA方式通信;第一服务器,用于执行第一方面或第一方面中任一可能的实现方式中所述的方法,以向第二服务器的内存中写入数据。
在一种可能的实现方式中,***还包括:网络设备,该第一服务器与第二服务器通过所述网络设备通信;网络设备,用于执行第二方面或第二方面中任一可能的实现方式中所述的方法,以从第二服务器中获取数据并发送给第一服务器。
在本申请第四方面,提供了一种服务器,所述服务器包括:处理器、网卡和存储器;所述存储器,用于存储指令或计算机程序;所述处理器和所述网卡,用于执行所述存储器中的所述指令或计算机程序,以使得所述服务器执行第一方面或第一方面中任一可能的实现方式中所述的方法。
在本申请第五方面,提供了一种网络设备,所述设备包括:处理器和存储器;所述存储器,用于存储指令或计算机程序;所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述网络设备执行第二方面或第二方面中任一可能的实现方式中所述的方法。
在本申请第六方面,提供了一种基于缓存的数据处理装置,该装置包括拷贝单元、处理单元、获取单元和发送单元。拷贝单元,用于在需要将第一服务器内存中的第一数据写入第二服务器的内存时,将所述第一数据拷贝至第一缓存中,所述第一缓存为所述第一服务器中的缓存。处理单元,用于向所述网卡发送写请求,所述写请求指示所述网卡以远程直接内存访问RDMA方式将所述第一缓存中的所述第一数据写入所述第二服务器的内存中。获取单元,用于根据所述写请求从所述第一缓存中获取所述第一数据。发送单元,用于通过所述RDMA方式将所述第一数据发送给所述第二服务器。该装置还可以包括用于实现第一方面及其各实现方式的其他单元。
在本申请第七方面,提供了另一种基于缓存的数据处理装置,该装置包括接收单元和发送单元。接收单元用于接收第一服务器发送的第一读请求,所述第一读请求包括第一地址和第一数据长度,所述第一读请求用于以远程直接内存访问RDMA方式从第二服务器的内存获取从所述第一地址开始存储的所述第一数据长度的第一目标数据,所述第一服务器和所述第二服务器通过所述网络设备通信。发送单元,用于根据所述第一读请求向所述第二服务器发送第二读请求,所述第二读请求包括第二地址和第二数据长度,所述第二读请求用于以所述RDMA方式从所述第二服务器的内存获取从所述第二地址开始存储的第二数据长度的第二目标数据;其中,当所述第二地址为所述第一地址时,所述第二数据长度大于所述第一数据长度,所述第二目标数据包括所述第一目标数据;当所述第二地址为所述第一地址偏移所述第一数据长度后得到的地址时,所述第二目标数据为位于所述第一目标数据后的数据。发送单元,还用于以所述RDMA方式向所述第一服务器发送第一读响应,所述第一读响应包括所述第一目标数据。该装置还可以包括用于实现第二方面及其各实现方式的其他单元。
在本申请第八方面,提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行以上第一方面或第一方面中任一可能的实现方式中所述的方法,或者执行以上第二方面或第二方面中任一可能的实现方式中所述的方法。
在本申请第九方面,提供了一种计算机程序产品,其特征在于,所述计算机程序产品包括程序或代码,所述程序或代码在计算机上运行时,实现第一方面或第一方面中任一可能的实现方式中所述的方法,或者实现第二方面或第二方面中任一可能的实现方式中所述的方法。
通过本申请提供的技术方案,当第一服务器需要将自身内存中的第一数据写入第二服务器的内存时,第一服务器中的处理器将第一数据拷贝至第一缓存中,该第一缓存为第一服务器中的缓存。在完成拷贝后,处理器向网卡发送写请求,以使得网卡根据该写请求以RDMA的方式将第一缓存中的第一数据写入第二服务器的内存中。即,网卡在向第二服务器发送第一数据时,是从第一缓存中读取的第一数据,并非是从内存中读取第一数据,从而使得处理器在向第一缓存中拷贝完第一数据后,就可以访问第一数据所占用的内存,无需等待第二服务器写完成后才访问,提高处理器的工作效率。
附图说明
图1为一种RDMA访问远端服务器的应用场景图;
图2为本申请实施例提供的一种基于缓存的数据处理方法流程图;
图3为本申请实施例提供的另一种基于缓存的数据处理方法流程图;
图4为本申请实施例提供的一种预取数据流程图;
图5为本申请实施例提供的一种多级缓存应用场景示意图;
图6为本申请实施例提供的一种基于缓存的数据处理装置的结构示意图;
图7为本申请实施例提供的另一种基于缓存的数据处理装置的结构示意图;
图8为本申请实施例提供的一种网络设备结构示意图;
图9为本申请实施例提供的另一种网络设备结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
为便于理解本申请所提供的技术方案,下面将对本申请所涉及的技术背景进行说明。
本地服务器通过RDMA方式向远端服务器写数据时,本地服务器将建立网卡与存储数据的内存之间的映射关系,从而使得网卡通过该映射关系直接从内存中读取向远端服务器写入的数据。在网卡与内存建立映射关系期间,本地服务器中的处理器不允许访问上述内存,以避免在写操作的过程中由于处理器的访问导致所要写的数据被修改。当完成写操作后,本地服务器将释放映射关系,以使得处理器可以访问上述内存。例如,图1中,需要将存储器1中内存1所存储的第一数据写入存储器2中,建立网卡1与内存1的映射关系,以使得网卡1直接通过数据总线访问内存1中的第一数据。当第一数据被写入存储器2后,服务器2向服务器1发送确认报文,以通知服务器1完成写操作,进而服务器1释放映射关系,使得处理器1可以访问内存1。
通过上述写操作流程可知,本地服务器中的处理器需要等待写操作完成后,才可以访问相应内存,影响处理器的工作,导致数据处理效率较低。
另外,当本地服务器需要从远端服务器读取数据时,在本地服务器的处理器中集成的预取算法可以预取部分数据到本地内存或缓存中,从而可以读取效率。然而,在本地服务器的处理器中集成预取算法需要对处理器进行较大的改动,增加处理成本。
基于此,本申请提供了一种基于缓存的数据处理方法,针对写操作,当需要将第一服务器内存中的第一数据写入第二服务器的内存时,第一服务器的处理器先将第一数据从内存中拷贝到第一缓存中。当拷贝完成后,第一服务器的网卡在向第二服务器写第一数据时,直接访问第一缓存,无需访问第一数据所占用的内存,进而使得处理器在写操作期间即可访问第一所述所占用的内存,无需等待写操作完成,提高处理器的处理效率。
针对读操作,当第一服务器需要从第二服务器读取数据时,位于第一服务器和第二服务器之间的网络设备在接收到第一服务器发送的第一读请求后,将第一读请求中的第一数据长度修改为第二数据长度,以从第二服务器中读取第二数据长度的数据。其中,第二数据长度大于第一数据长度,或者第二数据长度对应的第二目标数据位于所要读取的第一目标数据之后。即,在网络设备侧实现预取功能,不仅加快读取速度,还可以避免对第一服务器中处理器的改动。
为便于理解本申请所提供的技术方案,下面将结合附图进行说明。
参见图2,该图为本申请实施例提供的一种基于缓存的数据处理方法流程图,如图2所示,该方法应用于第一服务器,该第一服务器包括处理器和网卡,该方法包括:
S201:在需要将第一服务器内存中的第一数据写入第二服务器的内存时,处理器将第一数据拷贝至第一缓存中。
本实施例中,当第一服务器需要将自身内存中所存储的第一数据向第二服务器的内存中写入时,第一服务器中的处理器先从内存中拷贝一份第一数据至第一缓存中。其中,第一缓存为第一服务器中的缓存,其可以为处理器的内存中的部分存储空间,或者为网卡的内存中的部分存储空间。
S202:处理器向网卡发送写请求,该写请求指示网卡以RDMA方式将第一缓存中的第一数据写入第二服务器的内存中。
在处理器向第一缓存中拷贝第一数据后,处理器向网卡发送写请求,以通过该写请求指示网卡以RDMA方式将第一缓存中的第一数据写入第二服务器的内存中。其中,写请求中包括目标地址,该目标地址为第二服务器的内存中的地址,用于指示第二服务器以目标地址为基地址在内存中写入第一数据。
S203:网卡根据写请求从第一缓存中获取第一数据,并通过RDMA方式将第一数据发送给第二服务器。
本实施例中,网卡在接收到处理器发送的写请求后,根据该写请求从第一缓存中获取第一数据,并以RDMA方式将第一数据发送给第二服务器的网卡,由第二服务器的网卡将第一数据写入第二服务器的内存。具体地,第一服务器的网卡向第二服务器的网卡不仅发送第一数据,还发送目标地址,以使得第二服务器的网卡以目标地址为基地址开始向内存中写入第一数据。
通常情况下,第一服务器与第二服务器通过网络设备通信,例如通过交换机通信,因此,第一服务器的网卡向第二服务器发送第一数据时,将通过网络设备以RDMA方式将第一数据发送给第二服务器。
由于网卡在向第二服务器发送第一数据时,是从第一缓存中获取的,因此当处理器将第一数据拷贝至第一缓存后,便可以允许处理器访问第一数据所占用的内存,无需等到写操作完成后才允许访问,从而使得处理器可以尽快利用第一数据所占用的内存执行后续操作。
本实施例中,网卡在向第二服务器发送第一数据后,将等待第二服务器执行写操作过程,以便在第二服务器完成针对第一数据的写操作后,网卡接收第二服务器发送的确认报文,该确认报文指示第二服务器完成针对第一数据的写操作。进一步地,当网卡在预设时间内未接收到第二服务器发送的确认报文,则可以确认第二服务器写失败,则网卡向第二服务器重传第一数据。
可见,当第一服务器需要将自身内存中的第一数据写入第二服务器的内存时,第一服务器中的处理器将第一数据拷贝至第一缓存中,该第一缓存为第一服务器中的缓存。在完成拷贝后,处理器向网卡发送写请求,以使得网卡根据该写请求以RDMA的方式将第一缓存中的第一数据写入第二服务器的内存中。即,网卡在向第二服务器发送第一数据时,是从第一缓存中读取的第一数据,并非是从内存中读取第一数据,从而使得处理器在向第一缓存中拷贝完第一数据后,就可以访问第一数据所占用的内存,无需等待第二服务器写完成后才访问,提高处理器的工作效率。
参见图3,该图为本申请实施例提供的另一种基于缓存的数据处理方法流程图,如图3所示,该方法应用于网络设备,该方法包括:
S301:网络设备接收第一服务器发送的第一读请求,该第一读请求包括第一地址和第一数据长度。
本实施例中,当第一服务器需要从第二服务器的内存中读取第一目标数据时,将通过网络设备向第二服务器发送第一读请求,该第一读请求包括第一地址和第一数据长度,用于指示以RDMA方式从第二服务器的内存获取从第一地址开始存储的第一数据长度的第一目标数据。
S302:网络设备根据第一读请求向第二服务器发送第二读请求,该第二读请求包括第二地址和第二数据长度。
本实施例中,网络设备在接收到第一服务器发送的第一读请求后,将对第一读请求中的第一数据长度进行修改,修改为第二数据长度。在获取第二数据长度后,向第二服务器发送第二读请求,该第二读请求包括第二地址和第二数据长度,以从第二服务器中获取从第二地址开始存储的第二数据长度的第二目标数据。其中,第二地址可以为第一地址,或者为第一地址偏移第一数据长度后得到的地址。当第二地址为第一地址时,第二数据长度大于第一数据长度,第二目标数据中包括第一目标数据;当第二地址为第一地址偏移第一数据长度后得到的地址时,第二数据长度可以等于第一数据长度,第二目标数据中不包括第一目标数据,但第二目标数据为位于第一目标数据后的数据。其中,第二数据长度的具体取值可以根据实际应用情况进行确定。
关于第二地址的具体表现形式,可以分为以下情况:
一种是,网络设备在接收到第一读请求后,可以根据第一读请求确定本地缓存(第二缓存)中是否存储有第一目标数据,如果第二缓存中存储有第一目标数据,则第二地址为第一地址偏移第一数据长度后得到的地址,第二数据长度可以等于第一数据长度,第二目标数据为位于第一目标数据后的数据。例如,第一读请求中包括地址1和2KB(读取数据的长度),其中地址1和2KB用于确定所要读取的目标数据1,网络设备在确定第二缓存中包括第一服务器所要读取的目标数据1时,则网络设备将地址1偏移长度2KB后得到地址2,第二数据长度也为2KB,则向第二服务器发送的第二读请求中包括地址2和2KB,以从第二服务器中预取目标数据2(地址2和2KB确定的目标数据)。
另一种是,如果第二缓存中未存储有第一目标数据,则第二地址等于第一地址,第二数据长度大于第一数据长度,从而使得获取的第二目标数据中包括第一目标数据。例如,第一读请求中包括地址1和2KB(读取数据的长度),其中地址1和2KB用于确定所要读取的目标数据1,网络设备在确定第二缓存中不包括目标数据1时,则网络设备将读取的数据长度由2KB修改为4KB,则向第二服务器发送的第二读请求中包括地址1和4KB,以从第二服务器中预取目标数据2,该目标数据2中包括第一服务器所要获取的目标数据1。
S303:网络设备以RDMA方式向第一服务器发送第一读响应,该第一读响应包括第一目标数据。
本实施例中,网络设备以RDMA方式向第一服务器发送第一读响应可以分为以下两种情况:
一种是,当网络设备的第二缓存中存储有第一目标数据时,网络设备以DMA方式从第二缓存中获取第一目标数据,进而通过第一读响应将第一目标数据发送给第一服务器。
另一种是,当网络设备的第二缓存中未存储有第二目标数据时,网络设备在向第二服务器发送第二读请求之前,可以在本地存储第一服务器、第一地址、第一数据长度的第一对应关系。当网络设备接收到第二服务器发送的第二目标数据后,根据第一对应关系以及第二目标数据向第一服务器发送第一读响应。当网络设备向第一服务器发送第一读响应后,可以删除第一对应关系。
其中,当网络设备接收到第二服务器发送的第二目标数据后,还可以根据第二读请求建立第二对应关系,该第二对应关系包括第二地址、第二数据长度以及第二目标数据。对于第二地址为第一地址、第二数据长度大于第一数据长度的情况下,在建立第二对应关系时,可以分为以下情况:一种是,建立第一地址、第二数据长度以及第二目标数据之间的对应关系;另一种是,建立第一地址偏移第一数据长度后得到的地址、第二数据长度减去第一数据长度得到的数据长度以及第二目标数据中去掉第一目标数据后的数据之间的对应关系。对于第二地址为第一地址偏移第一长度后得到的地址时,第二对应关系包括第二地址、第二数据长度以及第二目标数据之间的对应关系。
在第一服务器通过网络设备向第二服务器的内存写数据时,不仅需要将所要写的数据转发给第二服务器,还需要判断第二缓存中是否存储有相同写入地址所对应的数据,如果有,则需要对第二缓存中的数据进行更新,从而保证第二缓存中的数据和第二服务器内存中的数据保持一致。具体为,网络设备接收第一服务器发送的写报文,该写报文指示以RDMA方式向第二服务器的内存的第三地址中写入第三目标数据;网络设备确定第二缓存中是否存储第三地址所对应的数据;在第二缓存中存储第三地址对应的数据时,所述网络设备利用第三目标数据更新第二缓存存储的第三地址对应的数据。
可见,当第一服务器需要从第二服务器读取数据时,位于第一服务器和第二服务器之间的网络设备在接收到第一服务器发送的第一读请求后,将第一读请求中的第一数据长度修改为第二数据长度,以从第二服务器中读取第二数据长度的数据。其中,第二数据长度大于第一数据长度,或者第二数据长度对应的第二目标数据位于所要读取的第一目标数据之后。即,在网络设备侧实现预取功能,不仅加快读取速度,还可以避免对第一服务器中处理器的改动。
为便于理解本申请实施例的具体实现,参见图4所示的应用场景示意图,在该应用场景中,服务器1通过交换机从服务器2的内存中读取数据,具体过程:
1、服务器1发送RDMA READ请求报文1,携带远端内存地址RA1和请求的数据大小2KB;
2、交换机在第一次接收到RDMA READ请求报文1后,将转发给远端服务器报文中的请求数据长度修改为4KB,并记录下RA1和即将缓存的数据长度2KB;
3、服务器2由于收到4KB的RDMA READ请求报文2,实际返回4个1KB的回复报文;
4、交换机在接收到4KB RDMA READ回复报文的前2KB后,将其转发给服务器1;
5、交换机在接收到4KB RDMA READ回复报文的后2KB后,将其缓存至交换机的内存中;
6、服务器1向交换机发送RDMA READ请求报文3,携带的远端内存地址RA2=RA1+2KB,请求的数据大小为2KB。
7、当交换机第二次收到服务器1发送的RDMA READ请求报文3时,先查询缓存中是否缓存有请求的远端数据,发现缓存命中,直接以DMA方式读取,并向服务器1返回2KB RDMAREAD回复报文,不再与远端服务器通信。
在一些应用场景中,第一服务器与第二服务器之间存在多级网络设备,针对多级网络设备中的每级网络设备,均可以使用其部分内存作为缓存实现预取功能,提高访问速度。如图5所示的应用场景图,在该应用场景下以包括服务器1、交换机1、交换机2、交换机3以及服务器2为例进行说明。在该应用场景下,服务器1中的缓存为处理器对应的部分内存,交换机1-交换机3使用其部分内存作为缓存以实现读操作下的数据预取。其中,从服务器2中预取的数据可以存储在交换机3的缓存中,或者存储在交换机2的缓存中,或者存储在交换机1中的缓存中等。
基于上述方法实施例,本申请实施例提供了一种基于缓存的数据处理装置,下面将结合附图进行说明。
参见图6,该图为本申请实施例提供的一种基于缓存的数据处理装置,该装置600可以实现上述第一服务器的功能,第一服务器包括处理器和网卡,该装置600包括:拷贝单元601、处理单元602、获取单元603和发送单元604。
拷贝单元601,用于在需要将第一服务器内存中的第一数据写入第二服务器的内存时,将所述第一数据拷贝至第一缓存中,所述第一缓存为所述第一服务器中的缓存。
处理单元602,用于向所述网卡发送写请求,所述写请求指示所述网卡以远程直接内存访问RDMA方式将所述第一缓存中的所述第一数据写入所述第二服务器的内存中。
获取单元603,用于根据所述写请求从所述第一缓存中获取所述第一数据。
发送单元604,用于通过所述RDMA方式将所述第一数据发送给所述第二服务器。
在一种可能的实现方式中,在所述处理器将所述第一数据拷贝至所述第一缓存后,允许所述处理器访问存储所述第一数据的内存。
在一种可能的实现方式中,所述装置还包括:接收单元;
接收单元,用于接收所述第二服务器发送的确认报文,所述确认报文指示所述第二服务器完成针对所述第一数据的写操作。
在一种可能的实现方式中,所述第一缓存为所述处理器的内存中的部分存储空间,或者所述第一缓存为所述网卡的内存中的部分存储空间。
在一种可能的实现方式中,发送单元604,具体用于通过网络设备以所述RDMA方式将所述第一数据发送给所述第二服务器,所述第一服务器与所述第二服务器通过所述网络设备通信。
需要说明的是,本实施例中各个单元的实现可以参见上述方法实施例中的相关描述,本实施例在此不再赘述。
参见图7,该图为本申请实施例提供的另一种基于缓存的数据处理装置的结果示意图,如图7所示,装置700应用于网络设备,可以实现上述网络设备的功能,包括:接收单元701、发送单元702。
接收单元701,用于接收第一服务器发送的第一读请求,所述第一读请求包括第一地址和第一数据长度,所述第一读请求用于以远程直接内存访问RDMA方式从第二服务器的内存获取从所述第一地址开始存储的所述第一数据长度的第一目标数据,所述第一服务器和所述第二服务器通过所述网络设备通信。
发送单元702,用于根据所述第一读请求向所述第二服务器发送第二读请求,所述第二读请求包括第二地址和第二数据长度,所述第二读请求用于以所述RDMA方式从所述第二服务器的内存获取从所述第二地址开始存储的第二数据长度的第二目标数据;
其中,当所述第二地址为所述第一地址时,所述第二数据长度大于所述第一数据长度,所述第二目标数据包括所述第一目标数据;当所述第二地址为所述第一地址偏移所述第一数据长度后得到的地址时,所述第二目标数据为位于所述第一目标数据后的数据。
发送单元702,还用于以所述RDMA方式向所述第一服务器发送第一读响应,所述第一读响应包括所述第一目标数据。
在一种可能的实现方式中,所述装置还包括:存储单元,用于存储所述第一地址以及所述第一数据长度的第一对应关系。
在一种可能的实现方式中,接收单元701还用于接收所述第二服务器发送的所述第二目标数据;
发送单元702具体用于根据所述第一对应关系以及所述第二目标数据向所述第一服务器发送所述第一读响应。
在一种可能的实现方式中,所述装置还包括建立单元;该建立单元用于根据所述第二读请求建立第二对应关系。当所述第二地址为所述第一地址时,所述第二对应关系包括所述第一地址、第二数据长度以及所述第二目标数据之间的对应关系;或者所述第二对应关系包括所述第一地址偏移所述第一长度后得到的地址、所述第二数据长度减去所述第一数据长度得到的数据长度以及所述第二目标数据中去掉所述第一目标数据后的数据之间的对应关系;当所述第二地址为所述第一地址偏移所述第一长度后得到的地址时,所述第二对应关系包括所述第二地址、所述第二数据长度以及所述第二目标数据之间的对应关系。
在一种可能的实现方式中,发送单元702,包括确定子单元和发送子单元。
确定子单元,用于根据所述第一读请求确定第二缓存中是否存储有所述第一目标数据,所述第二缓存为所述网络设备中的缓存;
发送子单元,用于在所述第二缓存中未存储有所述第一目标数据时,所述网络设备向所述第二服务器发送第二读请求,所述第二读请求中第二地址为所述第一地址,所述第二读请求中的第二数据长度大于所述第一数据长度,所述第二目标数据包括所述第一目标数据;在所述第二缓存中存储有所述第一目标数据时,所述网络设备向所述第二服务器发送第二读请求,所述第二读请求中第二地址为所述第一地址偏移所述第一数据长度后得到的地址,所述第二目标数据为位于所述第一目标数据后的数据。
在一种可能的实现方式中,所述装置还包括:确定单元和更新单元;
接收单元701,具体用于接收所述第一服务器发送的写报文,所述写报文指示以远程直接内存访问RDMA的方式向所述第二服务器的内存的第三地址中写入第三目标数据;
确定单元,用于定第二缓存是否存储所述第三地址所对应的数据;
更新单元,用于在所述第二缓存存储所述第三地址对应的数据时,利用所述第三目标数据更新所述第二缓存存储的所述第三地址所对应的数据。
需要说明的是,本实施例中各个单元的实现可以参见上述方法实施例,本实施例在此不再赘述。
图8为本申请实施例提供的一种网络设备的结构示意图。该网络设备例如可以是上述方法实施例中的网络设备,或者也可以是图7所示实施例中装置700的设备实现。
该网络设备800包括:处理器810、通信接口820和存储器830。网络设备800中的处理器810的数量可以一个或多个,图8中以一个处理器为例。本申请实施例中,处理器810、通信接口820和存储器830可通过总线***或其它方式连接,其中,图8中以通过总线***840连接为例。
处理器810可以是CPU、网络处理器(network processor,NP)、或者CPU和NP的组合。处理器810还可以进一步包括硬件芯片。上述硬件芯片可以是特定应用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器830可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器830也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器830还可以包括上述种类的存储器的组合。
可选地,存储器830存储有操作***和程序、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,程序可包括各种操作指令,用于实现各种操作。操作***可包括各种***程序,用于实现各种基础业务以及处理基于硬件的任务。处理器810可以读取存储器830中的程序,实现本申请实施例提供的方法。
其中,存储器830可以为网络设备800中的存储器件,也可以为独立于网络设备800的存储装置。
总线***840可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线***840可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
图9是本申请实施例提供的一种网络设备900的结构示意图,该网络设备例如可以是方法实施例中的网络设备,或者也可以是图7所述实施例中装置700的设备实现。
网络设备900包括:主控板910和接口板930。
主控板910也称为主处理单元(main processing unit,MPU)或路由处理卡(routeprocessor card),主控板910用于对网络设备900中各个组件进行控制和管理,包括路由计算、设备管理、设备维护、协议处理等。主控板910包括:中央处理器911和存储器912。
接口板930也称为线路处理单元(line processing unit,LPU)、线卡(line card)或业务板。接口板930用于提供各种业务接口并实现数据包的转发。业务接口包括而不限于以太网接口、POS(Packet over SONET/SDH)接口等,以太网接口例如是以太口、千兆以太口、灵活以太网业务接口(Flexible Ethernet Clients,FlexE Clients)等。接口板930包括:中央处理器931、网络处理器932、转发表项存储器934和物理接口卡(physicalinterface card,PIC)933。
接口板930上的中央处理器931用于对接口板930进行控制管理并与主控板910上的中央处理器911进行通信。
网络处理器932用于实现报文的转发处理。网络处理器932的形态可以是转发芯片。具体而言,上行报文的处理包括:报文入接口的处理,转发表查找;下行报文的处理包括转发表查找等等。
物理接口卡933用于实现物理层的对接功能,原始的流量由此进入接口板930,以及处理后的报文从该物理接口卡933发出。物理接口卡933包括至少一个物理接口,物理接口也称物理口。物理接口卡933也称为子卡,可安装在接口板930上,负责将光电信号转换为报文并对报文进行合法性检查后转发给网络处理器932处理。在一些实施例中,接口板903的中央处理器931也可执行网络处理器932的功能,比如基于通用CPU实现软件转发,从而物理接口卡933中不需要网络处理器932。
可选地,网络设备900包括多个接口板,例如网络设备900还包括接口板940,接口板940包括:中央处理器941、网络处理器942、转发表项存储器944和物理接口卡943。
可选地,网络设备900还包括交换网板920。交换网板920也可以称为交换网板单元(switch fabric unit,SFU)。在网络设备有多个接口板930的情况下,交换网板920用于完成各接口板之间的数据交换。例如,接口板930和接口板940之间可以通过交换网板920通信。
主控板910和接口板930耦合。例如。主控板910、接口板930和接口板940,以及交换网板920之间通过***总线与***背板相连实现互通。在一种可能的实现方式中,主控板910和接口板930之间建立进程间通信协议(inter-process communication,IPC)通道,主控板910和接口板930之间通过IPC通道进行通信。
在逻辑上,网络设备900包括控制面和转发面,控制面包括主控板910和中央处理器931,转发面包括执行转发的各个组件,比如转发表项存储器934、物理接口卡933和网络处理器932。控制面执行路由器、生成转发表、处理信令和协议报文、配置与维护设备的状态等功能,控制面将生成的转发表下发给转发面,在转发面,网络处理器932基于控制面下发的转发表对物理接口卡933收到的报文查表转发。控制面下发的转发表可以保存在转发表项存储器934中。在一些实施例中,控制面和转发面可以完全分离,不在同一设备上。
应理解,本申请实施例中接口板940上的操作与接口板930的操作一致,为了简洁,不再赘述。应理解,本实施例的网络设备900可对应于上述各个方法实施例中的网络设备,该网络设备900中的主控板910、接口板930和/或接口板940可以实现上述各个方法实施例中的各种步骤,为了简洁,在此不再赘述。
应理解,主控板可能有一块或多块,有多块的时候可以包括主用主控板和备用主控板。接口板可能有一块或多块,网络设备的数据处理能力越强,提供的接口板越多。接口板上的物理接口卡也可以有一块或多块。交换网板可能没有,也可能有一块或多块,有多块的时候可以共同实现负荷分担冗余备份。在集中式转发架构下,网络设备可以不需要交换网板,接口板承担整个***的业务数据的处理功能。在分布式转发架构下,网络设备可以有至少一块交换网板,通过交换网板实现多块接口板之间的数据交换,提供大容量的数据交换和处理能力。所以,分布式架构的网络设备的数据接入和处理能力要大于集中式架构的设备。可选地,网络设备的形态也可以是只有一块板卡,即没有交换网板,接口板和主控板的功能集成在该一块板卡上,此时接口板上的中央处理器和主控板上的中央处理器在该一块板卡上可以合并为一个中央处理器,执行两者叠加后的功能,这种形态设备的数据交换和处理能力较低(例如,低端交换机或路由器等网络设备)。具体采用哪种架构,取决于具体的组网部署场景。
在一些可能的实施例中,上述网络设备可以实现为虚拟化设备。例如,虚拟化设备可以是运行有用于发送报文功能的程序的虚拟机(virtual machine,VM),虚拟机部署在硬件设备上(例如,物理服务器)。虚拟机指通过软件模拟的具有完整硬件***功能的、运行在一个完全隔离环境中的完整计算机***。可以将虚拟机配置为网络设备。例如,可以基于通用的物理服务器结合网络功能虚拟化(network functions virtualization,NFV)技术来实现网络设备。网络设备为虚拟主机、虚拟路由器或虚拟交换机。本领域技术人员通过阅读本申请即可结合NFV技术在通用物理服务器上虚拟出具有上述功能的网络设备,此处不再赘述。
应理解,上述各种产品形态的网络设备,具有上述方法实施例中网络设备的任意功能,此处不再赘述。
本申请实施例还提供了一种芯片,包括处理器和接口电路。接口电路用于接收指令并传输至处理器。处理器,例如可以是图7示出的装置700的一种具体实现形式,可以用于执行上述基于缓存的数据处理方法。其中,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得该芯片***实现上述任一方法实施例中的方法。
可选地,该芯片***中的处理器可以为一个或多个。该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
可选地,该芯片***中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本申请并不限定。示例性的,存储器可以是非瞬时性处理器,例如只读存储器ROM,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
示例性的,该芯片***可以例如是FPGA、ASIC、***芯片(system on chip,SoC),、CPU、NP、数字信号处理电路(digital signal processor,DSP)、微控制器(microcontroller unit,MCU)、PLD或其他集成芯片。
本申请实施例还提供了一种基于缓存的数据处理***,所述***包括第一服务器、第二服务器,所述第一服务器与所述第二服务器以远程直接内存访问RDMA方式通信;
所述第一服务器,用于执行上述基于缓存的数据处理方法,以向所述第二服务器的内存中写入数据。
在一种可能的实现方式中,所述***还包括:网络设备,所述第一服务器与所述第二服务器通过所述网络设备通信;所述网络设备,用于执行上述的基于缓存的数据处理方法,以从所述第二服务器中获取数据并发送给所述第一服务器。
本申请实施例还提供了一种计算机可读存储介质,包括指令或计算机程序,当其在计算机上运行时,使得计算机执行以上实施例提供的基于缓存的数据处理方法。
本申请实施例还提供了一种包含指令或计算机程序的计算机程序产品,当其在计算机上运行时,使得计算机执行以上实施例提供的就有缓存的数据处理方法。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑业务划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各业务单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件业务单元的形式实现。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的业务可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些业务存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (16)
1.一种基于缓存的数据处理方法,其特征在于,所述方法应用于第一服务器,所述第一服务器包括处理器和网卡,所述方法包括:
在需要将所述第一服务器内存中的第一数据写入第二服务器的内存时,所述处理器将所述第一数据拷贝至第一缓存中,所述第一缓存为所述第一服务器中的缓存;
所述处理器向所述网卡发送写请求,所述写请求指示所述网卡以远程直接内存访问RDMA方式将所述第一缓存中的所述第一数据写入所述第二服务器的内存中;
所述网卡根据所述写请求从所述第一缓存中获取所述第一数据,并通过所述RDMA方式将所述第一数据发送给所述第二服务器。
2.根据权利要求1所述的方法,其特征在于,在所述处理器将所述第一数据拷贝至所述第一缓存后,允许所述处理器访问存储所述第一数据的内存。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述网卡接收所述第二服务器发送的确认报文,所述确认报文指示所述第二服务器完成针对所述第一数据的写操作。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一缓存为所述处理器的内存中的部分存储空间,或者所述第一缓存为所述网卡的内存中的部分存储空间。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述网卡通过所述RDMA方式将所述第一数据发送给所述第二服务器,包括:
所述网卡通过网络设备以所述RDMA方式将所述第一数据发送给所述第二服务器,所述第一服务器与所述第二服务器通过所述网络设备通信。
6.一种基于缓存的数据处理方法,其特征在于,所述方法包括:
网络设备接收第一服务器发送的第一读请求,所述第一读请求包括第一地址和第一数据长度,所述第一读请求用于以远程直接内存访问RDMA方式从第二服务器的内存获取从所述第一地址开始存储的所述第一数据长度的第一目标数据,所述第一服务器和所述第二服务器通过所述网络设备通信;
所述网络设备根据所述第一读请求向所述第二服务器发送第二读请求,所述第二读请求包括第二地址和第二数据长度,所述第二读请求用于以所述RDMA方式从所述第二服务器的内存获取从所述第二地址开始存储的第二数据长度的第二目标数据;
其中,当所述第二地址为所述第一地址时,所述第二数据长度大于所述第一数据长度,所述第二目标数据包括所述第一目标数据;当所述第二地址为所述第一地址偏移所述第一数据长度后得到的地址时,所述第二目标数据为位于所述第一目标数据后的数据;
所述网络设备以所述RDMA方式向所述第一服务器发送第一读响应,所述第一读响应包括所述第一目标数据。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述网络设备存储所述第一地址以及所述第一数据长度的第一对应关系。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述网络设备接收所述第二服务器发送的所述第二目标数据;
所述网络设备以所述RDMA方式向所述第一服务器发送第一读响应包括:
所述网络设备根据所述第一对应关系以及所述第二目标数据向所述第一服务器发送所述第一读响应。
9.根据权利要求8所述的方法,其特征在于,还包括:
所述网络设备根据所述第二读请求建立第二对应关系;
当所述第二地址为所述第一地址时,所述第二对应关系包括所述第一地址、第二数据长度以及所述第二目标数据之间的对应关系;或者所述第二对应关系包括所述第一地址偏移所述第一长度后得到的地址、所述第二数据长度减去所述第一数据长度得到的数据长度以及所述第二目标数据中去掉所述第一目标数据后的数据之间的对应关系;
当所述第二地址为所述第一地址偏移所述第一长度后得到的地址时,所述第二对应关系包括所述第二地址、所述第二数据长度以及所述第二目标数据之间的对应关系。
10.根据权利要求6-9任一项所述的方法,其特征在于,所述网络设备根据所述第一读请求向所述第二服务器发送第二读请求,包括:
所述网络设备根据所述第一读请求确定第二缓存中是否存储有所述第一目标数据,所述第二缓存为所述网络设备中的缓存;
在所述第二缓存中未存储有所述第一目标数据时,所述网络设备向所述第二服务器发送第二读请求,所述第二读请求中第二地址为所述第一地址,所述第二读请求中的第二数据长度大于所述第一数据长度,所述第二目标数据包括所述第一目标数据;
在所述第二缓存中存储有所述第一目标数据时,所述网络设备向所述第二服务器发送第二读请求,所述第二读请求中第二地址为所述第一地址偏移所述第一数据长度后得到的地址,所述第二目标数据为位于所述第一目标数据后的数据。
11.根据权利要求6-10任一项所述的方法,其特征在于,所述方法还包括:
所述网络设备接收所述第一服务器发送的写报文,所述写报文指示以远程直接内存访问RDMA的方式向所述第二服务器的内存的第三地址中写入第三目标数据;
所述网络设备确定第二缓存是否存储所述第三地址所对应的数据;
在所述第二缓存存储所述第三地址对应的数据时,所述网络设备利用所述第三目标数据更新所述第二缓存存储的所述第三地址所对应的数据。
12.一种基于缓存的数据处理***,其特征在于,所述***包括第一服务器、第二服务器,所述第一服务器与所述第二服务器以远程直接内存访问RDMA方式通信;
所述第一服务器,用于执行权利要求1-5任一项所述的方法,以向所述第二服务器的内存中写入数据。
13.根据权利要求12所述的***,其特征在于,所述***还包括:网络设备,所述第一服务器与所述第二服务器通过所述网络设备通信;
所述网络设备,用于执行所述权利要求6-11任一项所述的方法,以从所述第二服务器中获取数据并发送给所述第一服务器。
14.一种服务器,其特征在于,所述服务器包括:处理器、网卡和存储器;
所述存储器,用于存储指令或计算机程序;
所述处理器和所述网卡,用于执行所述存储器中的所述指令或计算机程序,以使得所述服务器执行权利要求1-5任意一项所述的方法。
15.一种网络设备,其特征在于,所述设备包括:处理器和存储器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述网络设备执行权利要求6-11任意一项所述的方法。
16.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行以上权利要求1-5任意一项所述的方法,或者执行以上权利要求6-11任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210184399.8A CN116700595A (zh) | 2022-02-25 | 2022-02-25 | 一种基于缓存的数据处理方法、***及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210184399.8A CN116700595A (zh) | 2022-02-25 | 2022-02-25 | 一种基于缓存的数据处理方法、***及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116700595A true CN116700595A (zh) | 2023-09-05 |
Family
ID=87834402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210184399.8A Pending CN116700595A (zh) | 2022-02-25 | 2022-02-25 | 一种基于缓存的数据处理方法、***及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116700595A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112044A (zh) * | 2023-10-23 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 基于网卡的指令处理方法、装置、设备和介质 |
-
2022
- 2022-02-25 CN CN202210184399.8A patent/CN116700595A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112044A (zh) * | 2023-10-23 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 基于网卡的指令处理方法、装置、设备和介质 |
CN117112044B (zh) * | 2023-10-23 | 2024-02-06 | 腾讯科技(深圳)有限公司 | 基于网卡的指令处理方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108270676B (zh) | 一种基于Intel DPDK的网络数据处理方法及装置 | |
CN106688208B (zh) | 利用机架规模架构中的池化存储器进行的网络通信 | |
US8898665B2 (en) | System, method and computer program product for inviting other virtual machine to access a memory space allocated to a virtual machine | |
US20170161090A1 (en) | Communication control program, communication control method, and information processing device | |
CN111654519B (zh) | 用于传输数据处理请求的方法和装置 | |
WO2006090408A2 (en) | Input/output tracing in a protocol offload system | |
US9858096B2 (en) | Communication device migration method of extension function and communication system | |
CN111881476B (zh) | 对象存储控制方法、装置、计算机设备及存储介质 | |
CN110661690A (zh) | 用于发夹式传输网络业务的技术 | |
EP4357901A1 (en) | Data writing method and apparatus, data reading method and apparatus, and device, system and medium | |
CN109683818B (zh) | 一种数据存储方法、设备及存储介质 | |
CN113472624A (zh) | 一种基于vDPA实现虚拟网络数据包转发的方法及应用 | |
WO2024082944A1 (zh) | 一种多处理器数据交互方法、装置、设备及存储介质 | |
CN110659222A (zh) | 用于将高速缓存行降级到共享高速缓存的技术 | |
CN116700595A (zh) | 一种基于缓存的数据处理方法、***及设备 | |
US20240022501A1 (en) | Data Packet Sending Method and Device | |
EP2913759A1 (en) | Memory access processing method based on memory chip interconnection, memory chip, and system | |
CN110471627B (zh) | 一种共享存储的方法、***及装置 | |
CN106790162B (zh) | 虚拟网络优化方法与*** | |
CN117240935A (zh) | 基于dpu的数据平面转发方法、装置、设备及介质 | |
US10255213B1 (en) | Adapter device for large address spaces | |
US10579310B2 (en) | System and method for reliably persisting storage writes at high speed | |
CN104572315A (zh) | 实现子***间通信的方法、通信实体及分布式通信*** | |
WO2022267909A1 (zh) | 一种数据读写方法以及相关装置 | |
CN113204517B (zh) | 一种电力专用以太网控制器的核间共享方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |