CN116431356B - 一种基于智能网卡的云网络缓存加速方法与系统 - Google Patents
一种基于智能网卡的云网络缓存加速方法与系统 Download PDFInfo
- Publication number
- CN116431356B CN116431356B CN202310696389.7A CN202310696389A CN116431356B CN 116431356 B CN116431356 B CN 116431356B CN 202310696389 A CN202310696389 A CN 202310696389A CN 116431356 B CN116431356 B CN 116431356B
- Authority
- CN
- China
- Prior art keywords
- key
- data packet
- request
- cache
- network card
- 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
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 55
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012545 processing Methods 0.000 claims description 91
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 9
- 238000001514 detection method Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提出一种基于智能网卡的云网络缓存加速方法与系统,属于缓存加速技术领域。本发明在智能网卡硬件中实现一层缓存加速系统,使得用户的请求可以在硬件处理并返回回复。这种方法在实现比DPDK内核旁路方案更优性能的同时,能够有效减少主机CPU资源的使用,且无需分配巨页内存,无需修改现有的云网络缓存应用,更具通用性,适用于同类云网络缓存应用。
Description
技术领域
本发明属于缓存加速技术领域,尤其涉及一种基于智能网卡的云网络缓存加速方法与系统。
背景技术
随着电子商务、网络搜索、社交网络等网络服务的快速增长,网络应用创造和使用的数据越来越多。在大规模网络服务和云供应商场景中,现代数据库需要应对成百上千的请求,对吞吐量与时延都有较高要求。然而,基于硬盘的数据库的速度和延迟不足以满足当今越来越快的网络速度,高速的内存缓存应用应运而生,满足了数据库对高吞吐、低时延的需求。但随着云数据中心网络速率的不断提升,内存内缓存也开始出现性能瓶颈。这些云网络缓存应用的请求是由linux网络堆栈处理的,由于linux网络堆栈更加注重通用性,处理大量缓存请求显得低效且缓慢,云网络缓存应用受到了网络堆栈引入的延迟和吞吐量问题的困扰。而摩尔定律近年出现衰减趋势,年均晶体管密度提升率越来越小,导致CPU性能受限,为了提高数据中心的计算能力,只有增加服务器资源,导致服务器需求越来越大,进一步也就导致数据中心能耗的升高。如何提高CPU利用率,将CPU用于有效任务的同时,提高应用的吞吐量,降低应用的尾时延,成为一个开放的问题。
现有解决方案主要依靠内核旁路、硬件加速以及优化现有的应用程序。内核旁路解决方案通过将网络数据包的处理转移到用户空间的网络堆栈来提高云网络缓存的性能,不同于linux操作系统的通用性,内核旁路方案专注于网络应用中数据包的高性能处理。通过让用户空间直接访问底层硬件,应用程序可以从用户空间执行数据包I/O。硬件加速使用FPGA、可编程交换机或是ASIC等专用硬件实现高速缓存。另一方面则是通过对应用程序的直接优化,如多核处理等,以提升整体性能。
目前,硬件加速方案需要购买专用的硬件,成本通常较高,且开发不灵活、周期长,不适用于现有的数据中心。内核旁路方案可以实现较高的性能和较低的成本,但也具有其固有的缺点。首先,用户空间的网络堆栈代替linux网络堆栈需要重新设计云网络缓存应用程序,以适应用户空间的专用堆栈,这往往需要第三方的内核模块及网络驱动。其次,放弃linux网络处理意味着放弃了linux内核提供的安全机制,如iptables和内存隔离等。为了实现同样的安全机制,我们将需要重新添加基于硬件或软件的安全组件,这增加了系统的复杂性和可维护性。第三,内核旁路方法即使在系统低负载的情况下也有很高的CPU开销,以保证网络处理的高速率。在后摩尔时代下,这样的代价是难以承受的。
现有技术中的一种方案为内核旁路技术DPDK(Data Plane Development Kit),其是一组快速处理数据包的开发平台及接口。传统的处理数据包的方法是CPU中断法,即网卡驱动收到数据包后通过中断通知CPU进行处理,然后CPU复制数据并交给协议栈。当有大量的数据时,这种方法将产生大量的CPU中断,这将使CPU无法运行其他程序。DPDK则采用轮询的方式来实现数据包的处理过程。DPDK重新加载网卡驱动,网卡驱动在收到数据包后不会中断通知CPU,而是通过零拷贝技术将数据包存入内存,然后应用层程序可以通过DPDK提供的接口直接从内存中读取数据包。这种方式节省了CPU中断时间和内存拷贝时间,为应用层提供了一种简单、方便、高效的数据包处理方式,使网络应用的开发更加方便。
然而上述方案的缺点在于:(1)缺乏访问硬件的安全机制;由于用户空间直接处理数据包,内核旁路方案消除了内核强制的安全策略,如内存隔离和防火墙,导致其需要额外添加特定的硬件扩展,如IOMMU和SR-IOV,或是基于软件的隔离来维持安全策略。这会进一步加深方案的复杂程度,导致系统维护成本变高。(2)资源消耗高;需要分配内存巨页,以及独占CPU核,以轮询处理数据包,牺牲CPU利用率来获得低延迟和高吞吐。即便在低负载的情况下也会造成较高的CPU使用率,造成资源的浪费。(3)可维护性差;内核旁路方案需要对现有应用程序进行广泛的重新设计与修改,以便适用于专用的网络堆栈以实现高性能。
现有技术中的另一种方案为硬件加速技术,如使用专用硬件、可编程交换机、智能网卡等进行加速或卸载,由于这些设备用作专用的卸载或处理,可以达到所有方案中最高的吞吐量和最低的延时。然而上述方案的缺点在于:(1)成本较高;使用硬件加速方案需要额外添加专用硬件,这些硬件的成本往往偏高,并不适用于大规模的数据中心。且部分方案需要用到昂贵的片上内存资源,容易造成资源的浪费。(2)开发周期较长;专用硬件研发周期较长,无法适应快速变化的数据中心。
可见,对于云网络缓存应用的网络处理,如何在满足缓存应用高性能、低时延的同时,降低主机CPU资源的消耗,是一个亟待解决的问题。
发明内容
本发明针对现有技术中的不足,提出一种基于智能网卡的云网络缓存加速方案。
本发明第一方面提出一种基于智能网卡的云网络缓存加速方法。在所述智能网卡上配置云网络缓存加速系统,所述云网络缓存加速系统包括请求处理模块、存储模块、请求统计模块和控制器,所述请求统计模块包括用于统计已缓存键的第一计数器和用于统计未缓存键的第二计数器;所述方法包括:响应于所述智能网卡接收到数据包,所述请求处理模块根据所述数据包的协议类型和目的端口确定所述数据包的请求类型。
其中,当所述数据包的请求类型为缓存GET请求时,所述请求处理模块解析出所述数据包的键,在所述存储模块中查找与所述数据包的键对应的键值对,并更新所述请求统计模块中的键统计结果。
当所述存储模块中存在与所述数据包的键对应的键值对时,所述请求处理模块获取所述键值对,并将所述键值对写入返回数据包,由所述智能网卡以所述返回数据包来回复所述缓存GET请求,同时更新所述第一计数器的已缓存键计数。当所述存储模块中不存在与所述数据包的键对应的键值对时,所述请求处理模块将所述数据包发送至内核进行处理,同时更新所述第二计数器的未缓存键计数。
其中,当所述数据包的请求类型为缓存SET请求时,所述请求处理模块将所述数据包发送至所述内核进行处理,删除所述存储模块中与所述数据包的键对应的键值对。
根据本发明第一方面的方法,所述方法还包括:所述请求统计模块从所述第一计数器中获取已缓存键的计数值,并确定计数值低于第一阈值的已缓存键作为低频键,从所述第二计数器中获取未缓存键的计数值,并确定计数值高于第二阈值的未缓存键作为高频键,将所述低频键和所述高频键发送至所述控制器;所述控制器删除所述存储模块中已缓存的所述低频键,并将未缓存的所述高频键缓存至所述存储模块,同时重置所述请求统计模块。
根据本发明第一方面的方法,所述控制器删除所述存储模块中已缓存的所述低频键时,向所述智能网卡发送请求类型为所述缓存SET请求的数据包,并将所述数据包的键设置为所述低频键。
根据本发明第一方面的方法,所述内核为Linux内核,所述内核处理所述数据包时,将所述数据包发送至用户程序层的缓存服务端进行缓存处理。
本发明第二方面提出一种基于智能网卡的云网络缓存加速系统。在所述智能网卡上配置所述云网络缓存加速系统,所述云网络缓存加速系统包括请求处理模块、存储模块、请求统计模块和控制器,所述请求统计模块包括用于统计已缓存键的第一计数器和用于统计未缓存键的第二计数器;其中:响应于所述智能网卡接收到数据包,所述请求处理模块根据所述数据包的协议类型和目的端口确定所述数据包的请求类型。
其中,当所述数据包的请求类型为缓存GET请求时,所述请求处理模块解析出所述数据包的键,在所述存储模块中查找与所述数据包的键对应的键值对,并更新所述请求统计模块中的键统计结果。
当所述存储模块中存在与所述数据包的键对应的键值对时,所述请求处理模块获取所述键值对,并将所述键值对写入返回数据包,由所述智能网卡以所述返回数据包来回复所述缓存GET请求,同时更新所述第一计数器的已缓存键计数。当所述存储模块中不存在与所述数据包的键对应的键值对时,所述请求处理模块将所述数据包发送至内核进行处理,同时更新所述第二计数器的未缓存键计数。
其中,当所述数据包的请求类型为缓存SET请求时,所述请求处理模块将所述数据包发送至所述内核进行处理,删除所述存储模块中与所述数据包的键对应的键值对。
根据本发明第二方面的系统,所述请求统计模块从所述第一计数器中获取已缓存键的计数值,并确定计数值低于第一阈值的已缓存键作为低频键,从所述第二计数器中获取未缓存键的计数值,并确定计数值高于第二阈值的未缓存键作为高频键,将所述低频键和所述高频键发送至所述控制器;所述控制器删除所述存储模块中已缓存的所述低频键,并将未缓存的所述高频键缓存至所述存储模块,同时重置所述请求统计模块。
根据本发明第二方面的系统,所述控制器删除所述存储模块中已缓存的所述低频键时,向所述智能网卡发送请求类型为所述缓存SET请求的数据包,并将所述数据包的键设置为所述低频键。
根据本发明第二方面的系统,所述内核为Linux内核,所述内核处理所述数据包时,将所述数据包发送至用户程序层的缓存服务端进行缓存处理。
本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第一方面所述的一种基于智能网卡的云网络缓存加速方法中的步骤。
本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第一方面所述的一种基于智能网卡的云网络缓存加速方法中的步骤。
综上,本发明提出的技术方案基于智能网卡,在智能网卡硬件中实现一层缓存加速系统,使得用户的请求可以在硬件处理并返回回复。这种方法在实现比DPDK内核旁路方案更优性能的同时,能够有效减少主机CPU资源的使用,且无需分配巨页内存,无需修改现有的云网络缓存应用,更具通用性,适用于同类云网络缓存应用。
具体解决以下技术问题:(1)基于智能网卡的云网络缓存加速架构;在智能网卡硬件中实现了云网络缓存加速系统,能够在保证云网络缓存应用的高性能和低时延的同时,减少主机CPU资源的消耗。(2)设计了高频请求缓存键值对的检测机制;设计了高频请求缓存键值对的检测机制,通过计数、采样、频率检测等方式,保持存储模块中缓存的键值对的高访问频率,使得更多的缓存请求在所述缓存加速系统中直接返回。(3)设计了基于智能网卡缓存请求的快速路径;设计了GET缓存请求处理的快速路径,若所述缓存GET请求在本系统的缓存加速系统中发生命中,则通过所述智能网卡硬件的快速路径将该请求直接返回,无需经过内核及缓存服务端软件的进一步处理,极大地降低了网络处理时延。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的云网络缓存加速系统的结构示意图。
图2为根据本发明实施例的控制器以高频键替换低频键的流程示意图。
图3为根据本发明实施例的加速缓存和非加速缓存的路径示意图。
图4为根据本发明实施例的一种电子设备的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在数据中心网络中,本方案选择使用智能网卡对云网络缓存应用请求负载进行加速,在智能网卡硬件中实现缓存加速系统,以缓解内存内缓存的网络通信性能瓶颈。设计了高频请求缓存键值对的检测机制,使得本系统可以通过控制器动态更新存储模块,保持存储模块中缓存的键值对为高频访问的键值对;设计了基于智能网卡缓存请求的快速路径通过所述智能网卡硬件的快速路径将该请求直接返回,无需经过内核及缓存服务端软件的进一步处理,极大地降低了网络处理时延,且无需消耗过多主机CPU资源。
本发明相对于现有的内核旁路、硬件加速方案,无需占用内存巨页资源,无需独占CPU资源,在加速目标负载、降低处理时延的同时,可以用更低的主机CPU利用率实现更高的缓存应用吞吐量。
本发明第一方面提出一种基于智能网卡的云网络缓存加速方法。如图1所示,在所述智能网卡上配置云网络缓存加速系统,所述云网络缓存加速系统包括请求处理模块、存储模块、请求统计模块和控制器,所述请求统计模块包括用于统计已缓存键的第一计数器和用于统计未缓存键的第二计数器。
具体地,在智能网卡上实现了三个模块:请求处理模块、存储模块和请求统计模块;并以控制器进行数据获取和重置、缓存键值对和解析协议的更新。
请求统计模块包括已缓存键计数器和未缓存键的频率检测模块。键计数器为所有已缓存的键维持一个计数器,更新已缓存到存储模块的键命中次数;频率统计模块使用Sketch算法实时检测未缓存到存储模块的键出现频率。统计结果会周期性的上报给控制器,并重置已有数据,以适应快速变化的云数据中心。
存储模块用于存储访问频率最高的键值对,由控制器进行周期性的更新,去除低访问频率的键值对并更新高访问频率的键值对,使存储模块中的缓存键值对可以动态维持高访问频率。
请求处理模块用于过滤、解析、处理或快速返回缓存请求,更新键统计结果给请求统计模块以及从存储模块获取或删除缓存键值对。
所述方法包括:响应于所述智能网卡接收到数据包,所述请求处理模块根据所述数据包的协议类型和目的端口确定所述数据包的请求类型。
其中,当所述数据包的请求类型为缓存GET请求时,所述请求处理模块解析出所述数据包的键,在所述存储模块中查找与所述数据包的键对应的键值对,并更新所述请求统计模块中的键统计结果。
当所述存储模块中存在与所述数据包的键对应的键值对时,所述请求处理模块获取所述键值对,并将所述键值对写入返回数据包,由所述智能网卡以所述返回数据包来回复所述缓存GET请求,同时更新所述第一计数器的已缓存键计数。当所述存储模块中不存在与所述数据包的键对应的键值对时,所述请求处理模块将所述数据包发送至内核进行处理,同时更新所述第二计数器的未缓存键计数。
其中,当所述数据包的请求类型为缓存SET请求时,所述请求处理模块将所述数据包发送至所述内核进行处理,删除所述存储模块中与所述数据包的键对应的键值对。
具体地,数据包到达智能网卡后,本发明的缓存加速系统中的请求处理模块首先根据数据包协议类型和目的端口,过滤出缓存GET请求和SET请求,对于其他数据包则继续送往内核处理。
当所述缓存请求类型为GET请求时,请求处理模块将解析出请求数据包中的键,根据该键查找存储模块中是否有对应的键值对,并更新所述请求统计模块中的键统计结果。
当所述存储模块中存在所述键时:所述请求处理模块会获取该键值对,并将其写入返回数据包,由智能网卡直接回复该GET请求;并更新所述请求统计模块中对应已缓存键的计数器;当所述存储模块中不存在所述键时:所述请求处理模块会直接将其送往内核处理;并更新所述请求统计模块中未缓存键的频率统计结果。
当所述缓存请求类型为SET请求时,请求处理模块会直接将其送往内核处理,并删除所述存储模块中对应的键值对。
根据本发明第一方面的方法,所述方法还包括:所述请求统计模块从所述第一计数器中获取已缓存键的计数值,并确定计数值低于第一阈值的已缓存键作为低频键,从所述第二计数器中获取未缓存键的计数值,并确定计数值高于第二阈值的未缓存键作为高频键,将所述低频键和所述高频键发送至所述控制器;所述控制器删除所述存储模块中已缓存的所述低频键,并将未缓存的所述高频键缓存至所述存储模块,同时重置所述请求统计模块。
根据本发明第一方面的方法,所述控制器删除所述存储模块中已缓存的所述低频键时,向所述智能网卡发送请求类型为所述缓存SET请求的数据包,并将所述数据包的键设置为所述低频键。
具体地,如图2所示,高频请求缓存键值对的检测机制包括:在请求统计模块中通过对GET请求的键进行计数或通过最小计数草图算法记录访问频率。控制器周期性抽样获取请求统计模块中已缓存的低频访问键和未缓存的高频访问键,并重置请求统计模块中的数据,以适应流量动态变化的云数据中心。随后控制器根据抽样获取的结果,用未缓存的高频访问键值对替换存储模块中的低频访问键值对,以保持存储模块中缓存的键值对的高访问频率。
请求统计模块中的键计数器维护当前存储模块中缓存的所有键的计数器;当所述缓存GET请求发生命中时,请求处理模块将更新对应的键计数器。
请求统计模块中的访问频率检测模块维护当前未缓存到存储模块中键的访问频率,通过最小计数草图算法得到并存储访问频率;当所述缓存GET请求未发生命中时,请求处理模块将更新访问频率检测模块中键的访问频率。
控制器周期性对请求统计模块中的数据进行抽样,获得已缓存到存储模块中的低频访问键和未缓存到存储模块中的高频访问键,并重置统计模块数据;随后更新存储模块,将其中已缓存的低频键值对替换为未缓存的高频键值对。
根据本发明第一方面的方法,所述内核为Linux内核,所述内核处理所述数据包时,将所述数据包发送至用户程序层的缓存服务端进行缓存处理。
基于智能网卡缓存请求的快速路径如图3所示,若GET缓存请求在本系统的缓存加速系统中发生命中,则通过所述智能网卡硬件的快速路径将该请求直接返回,无需经过内核及缓存服务端软件的进一步处理,极大地降低了网络处理时延,且无需消耗过多主机CPU资源。并且所述高频请求缓存键值对的检测机制,使得所述缓存加速系统中存储模块能够动态地更新为高频访问的键值对,从而有更多的缓存请求能够发生缓存命中,并通过智能网卡的硬件快速路径直接返回。
对于在本系统中发生命中的缓存GET请求,直接通过智能网卡硬件的快速路径由网卡处理,得到相应的键值对并返回给客户端。对于在本系统中未发生命中的缓存GET请求和其他数据包,智能网卡送往Linux内核和缓存服务端应用继续处理。
可见,基于智能网卡的云网络缓存加速带来的技术效果包括:软硬件结合的高性能:本方案使用软硬件结合的方式,通过智能网卡硬件加速云网络缓存应用,相对软件方案具有更高性能,相对纯硬件方案具有更低成本。无应用更改需求:本方案不需要对云网络缓存应用进行任何额外的修改,即可对云网络缓存应用进行加速。主机CPU占用率降低:本方案能够在满足高性能的同时降低主机CPU资源的使用,使得CPU资源可以用于其他处理。
本发明第二方面提出一种基于智能网卡的云网络缓存加速系统。在所述智能网卡上配置所述云网络缓存加速系统,所述云网络缓存加速系统包括请求处理模块、存储模块、请求统计模块和控制器,所述请求统计模块包括用于统计已缓存键的第一计数器和用于统计未缓存键的第二计数器;其中:响应于所述智能网卡接收到数据包,所述请求处理模块根据所述数据包的协议类型和目的端口确定所述数据包的请求类型。
其中,当所述数据包的请求类型为缓存GET请求时,所述请求处理模块解析出所述数据包的键,在所述存储模块中查找与所述数据包的键对应的键值对,并更新所述请求统计模块中的键统计结果。
当所述存储模块中存在与所述数据包的键对应的键值对时,所述请求处理模块获取所述键值对,并将所述键值对写入返回数据包,由所述智能网卡以所述返回数据包来回复所述缓存GET请求,同时更新所述第一计数器的已缓存键计数。当所述存储模块中不存在与所述数据包的键对应的键值对时,所述请求处理模块将所述数据包发送至内核进行处理,同时更新所述第二计数器的未缓存键计数。
其中,当所述数据包的请求类型为缓存SET请求时,所述请求处理模块将所述数据包发送至所述内核进行处理,删除所述存储模块中与所述数据包的键对应的键值对。
根据本发明第二方面的系统,所述请求统计模块从所述第一计数器中获取已缓存键的计数值,并确定计数值低于第一阈值的已缓存键作为低频键,从所述第二计数器中获取未缓存键的计数值,并确定计数值高于第二阈值的未缓存键作为高频键,将所述低频键和所述高频键发送至所述控制器;所述控制器删除所述存储模块中已缓存的所述低频键,并将未缓存的所述高频键缓存至所述存储模块,同时重置所述请求统计模块。
根据本发明第二方面的系统,所述控制器删除所述存储模块中已缓存的所述低频键时,向所述智能网卡发送请求类型为所述缓存SET请求的数据包,并将所述数据包的键设置为所述低频键。
根据本发明第二方面的系统,所述内核为Linux内核,所述内核处理所述数据包时,将所述数据包发送至用户程序层的缓存服务端进行缓存处理。
本发明第三方面公开了一种电子设备。所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现本公开第一方面所述的一种基于智能网卡的云网络缓存加速方法中的步骤。
图4为根据本发明实施例的一种电子设备的结构图,如图4所示,电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、近场通信(NFC)或其他技术实现。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本公开的技术方案相关的部分的结构图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本发明第四方面公开了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本公开第一方面所述的一种基于智能网卡的云网络缓存加速方法中的步骤。
综上,本发明提出的技术方案基于智能网卡,在智能网卡硬件中实现一层缓存加速系统,使得用户的请求可以在硬件处理并返回回复。这种方法在实现比DPDK内核旁路方案更优性能的同时,能够有效减少主机CPU资源的使用,且无需分配巨页内存,无需修改现有的云网络缓存应用,更具通用性,适用于同类云网络缓存应用。
具体解决以下技术问题:(1)基于智能网卡的云网络缓存加速架构;在智能网卡硬件中实现了云网络缓存加速系统,能够在保证云网络缓存应用的高性能和低时延的同时,减少主机CPU资源的消耗。(2)设计了高频请求缓存键值对的检测机制;设计了高频请求缓存键值对的检测机制,通过计数、采样、频率检测等方式,保持存储模块中缓存的键值对的高访问频率,使得更多的缓存请求在所述缓存加速系统中直接返回。(3)设计了基于智能网卡缓存请求的快速路径;设计了GET缓存请求处理的快速路径,若所述缓存GET请求在本系统的缓存加速系统中发生命中,则通过所述智能网卡硬件的快速路径将该请求直接返回,无需经过内核及缓存服务端软件的进一步处理,极大地降低了网络处理时延。
请注意,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于智能网卡的云网络缓存加速方法,其特征在于:
在所述智能网卡上配置云网络缓存加速系统,所述云网络缓存加速系统包括请求处理模块、存储模块、请求统计模块和控制器,所述请求统计模块包括用于统计已缓存键的第一计数器和用于统计未缓存键的第二计数器;
所述方法包括:
响应于所述智能网卡接收到数据包,所述请求处理模块根据所述数据包的协议类型和目的端口确定所述数据包的请求类型;
其中,当所述数据包的请求类型为缓存GET请求时,所述请求处理模块解析出所述数据包的键,在所述存储模块中查找与所述数据包的键对应的键值对,并更新所述请求统计模块中的键统计结果;
当所述存储模块中存在与所述数据包的键对应的键值对时,所述请求处理模块获取所述键值对,并将所述键值对写入返回数据包,由所述智能网卡以所述返回数据包来回复所述缓存GET请求,同时更新所述第一计数器的已缓存键计数;
当所述存储模块中不存在与所述数据包的键对应的键值对时,所述请求处理模块将所述数据包发送至内核进行处理,同时更新所述第二计数器的未缓存键计数;
其中,当所述数据包的请求类型为缓存SET请求时,所述请求处理模块将所述数据包发送至所述内核进行处理,删除所述存储模块中与所述数据包的键对应的键值对。
2.根据权利要求1所述的一种基于智能网卡的云网络缓存加速方法,其特征在于,所述方法还包括:
所述请求统计模块从所述第一计数器中获取已缓存键的计数值,并确定计数值低于第一阈值的已缓存键作为低频键,从所述第二计数器中获取未缓存键的计数值,并确定计数值高于第二阈值的未缓存键作为高频键,将所述低频键和所述高频键发送至所述控制器;
所述控制器删除所述存储模块中已缓存的所述低频键,并将未缓存的所述高频键缓存至所述存储模块,同时重置所述请求统计模块。
3.根据权利要求2所述的一种基于智能网卡的云网络缓存加速方法,其特征在于,所述控制器删除所述存储模块中已缓存的所述低频键时,向所述智能网卡发送请求类型为所述缓存SET请求的数据包,并将所述数据包的键设置为所述低频键。
4.根据权利要求3所述的一种基于智能网卡的云网络缓存加速方法,其特征在于,所述内核为Linux内核,所述内核处理所述数据包时,将所述数据包发送至用户程序层的缓存服务端进行缓存处理。
5.一种基于智能网卡的云网络缓存加速系统,其特征在于:
在所述智能网卡上配置所述云网络缓存加速系统,所述云网络缓存加速系统包括请求处理模块、存储模块、请求统计模块和控制器,所述请求统计模块包括用于统计已缓存键的第一计数器和用于统计未缓存键的第二计数器;其中:
响应于所述智能网卡接收到数据包,所述请求处理模块根据所述数据包的协议类型和目的端口确定所述数据包的请求类型;
其中,当所述数据包的请求类型为缓存GET请求时,所述请求处理模块解析出所述数据包的键,在所述存储模块中查找与所述数据包的键对应的键值对,并更新所述请求统计模块中的键统计结果;
当所述存储模块中存在与所述数据包的键对应的键值对时,所述请求处理模块获取所述键值对,并将所述键值对写入返回数据包,由所述智能网卡以所述返回数据包来回复所述缓存GET请求,同时更新所述第一计数器的已缓存键计数;
当所述存储模块中不存在与所述数据包的键对应的键值对时,所述请求处理模块将所述数据包发送至内核进行处理,同时更新所述第二计数器的未缓存键计数;
其中,当所述数据包的请求类型为缓存SET请求时,所述请求处理模块将所述数据包发送至所述内核进行处理,删除所述存储模块中与所述数据包的键对应的键值对。
6.根据权利要求5所述的一种基于智能网卡的云网络缓存加速系统,其特征在于:
所述请求统计模块从所述第一计数器中获取已缓存键的计数值,并确定计数值低于第一阈值的已缓存键作为低频键,从所述第二计数器中获取未缓存键的计数值,并确定计数值高于第二阈值的未缓存键作为高频键,将所述低频键和所述高频键发送至所述控制器;
所述控制器删除所述存储模块中已缓存的所述低频键,并将未缓存的所述高频键缓存至所述存储模块,同时重置所述请求统计模块。
7.根据权利要求6所述的一种基于智能网卡的云网络缓存加速系统,其特征在于,所述控制器删除所述存储模块中已缓存的所述低频键时,向所述智能网卡发送请求类型为所述缓存SET请求的数据包,并将所述数据包的键设置为所述低频键。
8.根据权利要求7所述的一种基于智能网卡的云网络缓存加速系统,其特征在于,所述内核为Linux内核,所述内核处理所述数据包时,将所述数据包发送至用户程序层的缓存服务端进行缓存处理。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现权利要求1-4任一项所述的一种基于智能网卡的云网络缓存加速方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1-4任一项所述的一种基于智能网卡的云网络缓存加速方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310696389.7A CN116431356B (zh) | 2023-06-13 | 2023-06-13 | 一种基于智能网卡的云网络缓存加速方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310696389.7A CN116431356B (zh) | 2023-06-13 | 2023-06-13 | 一种基于智能网卡的云网络缓存加速方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116431356A CN116431356A (zh) | 2023-07-14 |
CN116431356B true CN116431356B (zh) | 2023-08-22 |
Family
ID=87089419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310696389.7A Active CN116431356B (zh) | 2023-06-13 | 2023-06-13 | 一种基于智能网卡的云网络缓存加速方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116431356B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637318A (zh) * | 2020-12-17 | 2021-04-09 | 哈尔滨工业大学(威海) | 一种面向存储完整性的智能网关系统、装置及其控制方法 |
CN113704261A (zh) * | 2021-08-26 | 2021-11-26 | 平凯星辰(北京)科技有限公司 | 基于云存储的键值存储系统 |
CN114598746A (zh) * | 2022-03-07 | 2022-06-07 | 中南大学 | 基于智能网卡的服务器间负载均衡性能优化方法 |
CN114640716A (zh) * | 2022-05-11 | 2022-06-17 | 军事科学院系统工程研究院网络信息研究所 | 一种基于快速网络路径的云网络缓存加速系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102044023B1 (ko) * | 2013-03-14 | 2019-12-02 | 삼성전자주식회사 | 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 |
-
2023
- 2023-06-13 CN CN202310696389.7A patent/CN116431356B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637318A (zh) * | 2020-12-17 | 2021-04-09 | 哈尔滨工业大学(威海) | 一种面向存储完整性的智能网关系统、装置及其控制方法 |
CN113704261A (zh) * | 2021-08-26 | 2021-11-26 | 平凯星辰(北京)科技有限公司 | 基于云存储的键值存储系统 |
CN114598746A (zh) * | 2022-03-07 | 2022-06-07 | 中南大学 | 基于智能网卡的服务器间负载均衡性能优化方法 |
CN114640716A (zh) * | 2022-05-11 | 2022-06-17 | 军事科学院系统工程研究院网络信息研究所 | 一种基于快速网络路径的云网络缓存加速系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116431356A (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cai et al. | Understanding host network stack overheads | |
US9965441B2 (en) | Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics | |
US20200192715A1 (en) | Workload scheduler for memory allocation | |
Varvello et al. | Multi-layer packet classification with graphics processing units | |
Flajslik et al. | Network Interface Design for Low Latency {Request-Response} Protocols | |
Liao et al. | A new server I/O architecture for high speed networks | |
US20190102346A1 (en) | Offload of data lookup operations | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
WO2017176533A1 (en) | System and method for a database proxy | |
CN112929299B (zh) | 基于fpga加速卡的sdn云网络实现方法、装置及设备 | |
CN114640716A (zh) | 一种基于快速网络路径的云网络缓存加速系统和方法 | |
US20200364080A1 (en) | Interrupt processing method and apparatus and server | |
Zhang et al. | Compucache: Remote computable caching using spot vms | |
EP4083776A1 (en) | Systems, methods, devices, and apparatuses for adaptive near storage computation | |
CN111431757A (zh) | 虚拟网络的流量采集方法及装置 | |
CN113468220A (zh) | 一种数据查询方法、装置、设备及介质 | |
Alian et al. | Data direct I/O characterization for future I/O system exploration | |
CN111857992A (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN117240935A (zh) | 基于dpu的数据平面转发方法、装置、设备及介质 | |
Li et al. | MobileSwap: Cross-device memory swapping for mobile devices | |
CN116431356B (zh) | 一种基于智能网卡的云网络缓存加速方法与系统 | |
CN115996203B (zh) | 网络流量分域方法、装置、设备和存储介质 | |
Marts et al. | MPI tag matching performance on ConnectX and ARM | |
Li | HPSRouter: A high performance software router based on DPDK | |
Tang et al. | Towards high-performance packet processing on commodity multi-cores: current issues and future directions |
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 |