CN115905042A - 一种数据处理方法及相关设备 - Google Patents
一种数据处理方法及相关设备 Download PDFInfo
- Publication number
- CN115905042A CN115905042A CN202110921892.9A CN202110921892A CN115905042A CN 115905042 A CN115905042 A CN 115905042A CN 202110921892 A CN202110921892 A CN 202110921892A CN 115905042 A CN115905042 A CN 115905042A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- computing device
- access request
- address
- 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
Images
Classifications
-
- 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
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供一种数据处理方法及相关设备。其中,该方法应用于计算设备,所述计算设备包括内存,所述内存包括第一内存区域和第二内存区域,该方法包括:计算设备确定数据访问请求所访问的数据是否为热点数据;所述计算设备在确定所述数据访问请求所访问的待访问数据为热点数据时,为所述数据访问请求从第一内存区域分配内存地址;所述计算设备根据所述内存地址访问所述待访问数据。上述方法能够提高计算设备的缓存命中率,减小内存读写带宽,提高数据读写效率和性能。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种数据处理方法及相关设备。
背景技术
在整个计算机***中,存储介质包括缓存、内存、硬盘等多层存储介质。其中缓存的访问速度最快,但价格也最贵,其次为内存、然后为硬盘。为了提高数据的访问速度,一般会将计算机的处理器所处理的数据存储在缓存中,如果处理器能够直接在缓存中命中数据,则数据的访问速度是最快的,但是由于缓存的价格比较贵,所以容量有限,只会将部分数据存储在缓存中。内存为比缓存低一级的存储,速度比缓存慢,但比硬盘块,容量比缓存大,但也只是缓存部分数据,如果在数据在缓存中没有命中,但如果能在内存中命中,也可以提高数据的访问效率,如果数据在缓存及内存中都没有命中,则需要从硬盘中读取,则数据的访问效率最低,时延最长。缓存和内存中的数据都是暂时存在,一旦掉电,数据将会丢失,而硬盘中的数据在掉电后数据不会丢失,所以硬盘中存储了所有的数据。
目前,计算设备(例如NOF***中的目标器,即存储设备)在接收到数据访问请求时,例如写请求写入数据至计算设备,需要先从计算设备的内存中申请内存地址,然后判断所述内存地址是否在缓存中命中,如果在缓存中命中,则直接将数据写入内存地址对应的缓存中,如果没有命中,则需要将内存地址调入缓存,建立内存地址与缓存的对应关系,从而影响数据的写入效率。相关技术中,计算设备在分配内存地址时,是随机分配的,分配的内存地址也是分散的,这样导致缓存的命中率比较低,从而影响数据的访问效率。
发明内容
本发明实施例公开了一种数据处理方法及相关设备,能够提高CPU共用缓存命中率,减小内存读写带宽,提高IO业务性能。
第一方面,本申请提供了一种数据处理方法,应用于计算设备,所述计算设备包括内存,所述内存包括第一内存区域及第二内存区域,所述方法包括:所述计算设备确定数据访问请求所访问的待访问数据是否为热点数据;所述计算设备在确定所述数据访问请求所访问的待访问数据为热点数据时,为所述数据访问请求从所述第一内存区域分配内存地址;所述计算设备根据所述内存地址访问所述待访问数据。
在本申请提供的方案中,计算设备的内存预先被划分为多个内存区域,然后对接收到的数据访问请求进行判断,确定待访问的数据是否为热点数据,并根据判断结果从不同内存区域为其分配内存地址,最后根据分配的内存地址访问的待访问数据,这样可以提高计算设备共用缓存的命中率,减小内存读写带宽,提高数据处理效率和性能。
结合第一方面,在第一方面一种可能的实现方式中,所述第一内存区域对应的存储空间小于或等于所述计算设备的共用缓存对应的存储空间。
在本申请提供的方案中,计算设备在对内存进行区域划分时,将考虑计算设备的共用缓存的大小,确保所划分的第一内存区域不超过共用缓存的大小,从而确保从第一内存区域分配的内存地址所占用的存储空间不会超过共用缓存,提高计算设备的共用缓存的命中率,减小内存读写带宽。
结合第一方面,在第一方面的一种可能的实现方式中,所述第一内存区域是一段地址连续的内存区域。
在本申请提供的方案中,计算设备在为访问请求分配内存地址时,从地址连续的第一内存区域分配内存地址,可以减小地址分配的随机性,避免所分配的内存地址是分散的,从而提高计算设备共用缓存的命中率,提高数据的访问效率。
结合第一方面,在第一方面的一种可能的实现方式中,所述第一内存区域被分割为多个内存页,所述多个内存页按照地址顺序构成无锁环形队列,所述计算设备从所述无锁环形队列中为所述数据访问请求分配一个或多个内存页。
在本申请提供的方案中,计算设备将第一内存区域分割为多个内存页,并构成无锁环形队列,使得无锁环形队列与第一内存区域对应,在从第一内存区域分配内存地址时,直接通过无锁环形队列分配一个或多个内存页实现,提高了内存地址分配效率以及数据的访问效率。
结合第一方面,在第一方面的一种可能的实现方式中,所述第一内存区域被划分为第三内存区域和第四内存区域,当所述数据访问请求的大小小于预设阈值时,从所述第三内存区域为所述数据访问请求分配内存地址;当所述数据访问请求的大小大于或等于预设阈值时,从所述第四内存区域为所述数据访问请求分配内存地址。
在本申请提供的方案中,计算设备对第一内存区域进行了进一步的划分得到第三内存区域和第四内存区域,并在分配内存地址时对数据访问请求的大小进行判断,然后根据判断结果为其分配对应的内存区域的内存地址,这样可以保证在多个数据访问请求并发的场景中,仍旧能够提高计算设备的共用缓存的命中率,提高数据访问效率。
结合第一方面,在第一方面的一种可能的实现方式中,所述数据访问请求为写请求,所述计算设备确定所述内存地址映射至所述计算设备的共用缓存时,将所述写请求中携带的所述待访问数据写入所述内存地址对应的共用缓存中,并将所述待访问数据从所述缓存存储至所述计算设备的持久性存储介质;所述计算设备确定所述内存地址没有映射至所述计算设备的共用缓存时,将所述内存地址映射至所述共用缓存,将所述待访问数据写入所述共用缓存,并将所述待访问数据从所述共用缓存存储至所述计算设备的持久性存储介质。
结合第一方面,在第一方面的一种可能的实现方式中,所述数据访问请求为在所述待访问数据没有在所述内存中命中的读请求,所述计算设备确定所述内存地址映射至所述计算设备的共用缓存时,则将从所述计算设备的持久性内存中读取的所述待访问数据存储至所述计算设备的共用缓存;所述计算设备确定所述内存地址没有映射至所述计算设备的共用缓存时,则将所述内存地址映射至所述计算设备的共用缓存,将从所述计算设备的持久性内存中读取的所述待访问数据存储至所述计算设备的共用缓存。
第二方面,本申请提供了一种计算设备,包括:确定单元,用于确定数据访问请求所访问的数据是否为热点数据;地址分配单元,用于在确定单元确定所述数据访问请求所访问的待访问数据为热点数据时,为所述数据访问请求从第一内存区域分配内存地址;访问单元,用于根据所述内存地址访问所述待访问数据。
结合第二方面,在第二方面的一种可能的实现方式中,所述第一内存区域对应的存储空间小于或等于所述计算设备的共用缓存对应的存储空间。
结合第二方面,在第二方面的一种可能的实现方式中,所述第一内存区域是一段地址连续的内存区域。
结合第二方面,在第二方面的一种可能的实现方式中,所述第一内存区域被分割为多个内存页,所述多个内存页按照地址顺序构成无锁环形队列;所述分配单元,具体用于:从所述无锁环形队列中为所述数据访问请求分配一个或多个内存页。
结合第二方面,在第二方面的一种可能的实现方式中,所述第一内存区域被划分为第三内存区域和第四内存区域,所述分配单元,还用于:当所述数据访问请求的大小小于预设阈值时,从所述第三内存区域为所述数据访问请求分配内存地址;当所述数据访问请求的大小大于或等于预设阈值时,从所述第四内存区域为所述数据访问请求分配内存地址。
结合第二方面,在第二方面的一种可能的实现方式中,所述数据访问请求为写请求,所述访问单元,具体用于:确定所述内存地址映射至所述计算设备的共用缓存时,将所述写请求中携带的所述待访问数据写入所述内存地址对应的共用缓存中,并将所述待访问数据从所述缓存存储至所述计算设备的持久性存储介质;确定所述内存地址没有映射至所述计算设备的共用缓存时,将所述内存地址映射至所述共用缓存,将所述待访问数据写入所述共用缓存,并将所述待访问数据从所述共用缓存存储至所述计算设备的持久性存储介质。
结合第二方面,在第二方面的一种可能的实现方式中,所述数据访问请求为在所述待访问数据没有在所述内存中命中的读请求,所述访问单元,具体用于:确定所述内存地址映射至所述计算设备的共用缓存时,则将从所述计算设备的持久性内存中读取的所述待访问数据存储至所述计算设备的共用缓存;确定所述内存地址没有映射至所述计算设备的共用缓存时,则将所述内存地址映射至所述计算设备的共用缓存,将从所述计算设备的持久性内存中读取的所述待访问数据存储至所述计算设备的共用缓存。
第三方面,本申请提供了一种计算设备,所述计算设备包括存储器和处理器,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中的程序代码执行上述第一方面以及结合上述第一方面中的任意一种实现方式的方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当该计算机程序被处理器执行时,可以实现上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的方法的流程。
第五方面,本申请提供了一种计算机程序产品,该计算机程序产品包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的方法的流程。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种***架构的示意图;
图2是本申请实施例提供的一种划分内存区域的示意图;
图3是本申请实施例提供的一种数据写入方法的流程示意图;
图4是本申请实施例提供的一种数据读取方法的流程示意图;
图5是本申请实施例提供的另一种数据写入方法的流程示意图;
图6是本申请实施例提供的另一种数据读取方法的流程示意图;
图7是本申请实施例提供的一种计算设备的结构示意图;
图8是本申请实施例提供的另一种计算设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
首先,结合附图对本申请中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。
客户服务器又可以称为客户端,具体可以包括物理机、虚拟机、容器等,用于产生或消费数据,例如应用服务器、分布式文件***服务器等。
计算设备包括存储设备,存储设备又可以称为服务端,用于对客户端产生的数据访问请求进行相应的处理,具体可以包括外置集中式存储或分布式存储等形态的能够存储数据的设备,例如存储服务器、分布式数据库服务器等。
数据访问请求主要包括数据写请求和数据读请求,即客户端将产生的数据写入到计算设备的存储单元中,或者从计算设备的存储单元中读取数据。计算设备的存储单元为计算设备用于进行数据持久化存储的设备,例如固态硬盘(solid state disk,SSD)等。
计算设备的缓存(cache)和内存:在计算设备中,cache属于CPU内部存储空间,内存相对于CPU而言属于外设,它们之间可以通过高速串行计算机扩展总线标准(peripheralcomponent interconnect express,PCIe)接口连接,cache相较于内存,其存储空间更小。在存储设备处理数据访问请求时,将首先为其分配内存地址,然后判断该内存地址是否被映射至计算设备的cache中,若已经被映射至计算设备的cache中,则叫做cache命中,此时可以直接利用cache完成数据处理(数据的读取和写入);若没有映射至计算设备的cache中,则叫做cache未命中,此时需要将内存地址映射至缓存,然后再通过cache完成数据读取和写入。
远程直接数据存取(remote direct memory access,RDMA)通信协议是一种用于进行RDMA操作的计算设备所遵循的一套协议规范,目前有三种支持RDMA的通信协议,分别是无限带宽(infiniBand,IB)协议、以太网(RDMA over converged ethernet,RoCE)协议、因特网广域(internet wide area RDMA protocal,IWARP)协议,这三种协议都可以使用同一套API来使用,但它们有着不同的物理层和链路层。在计算设备与客户端之间通过RDMA进行通信时,会在客户端的网卡中创建发送队列(send queue,SQ)和接收队列(receivequeue,RQ),相应的会在计算设备的网卡中创建与该发送队列相对应的RQ和SQ,发送队列和接收队列形成队列对(queue pair,QP),将所述队列的地址映射给应用的虚拟地址,应用即可直接通过所述QP将数据传输至所述计算设备的网卡中,进而可以将数据存储于计算设备的内存中。
本申请实施例的技术方案可以应用于任何具有多层存储介质的计算设备中,尤其是对IO处理性能要求较高的场景,例如,分布式存储、高性能计算(high performancecomputing,HPC)等。例如,在分布式存储中,计算设备将同时连接大量的客户服务器,计算设备需要支持每个客户服务器直接访问SSD,计算设备的内存使用比较分散时,分布式存储***中可使用本申请实施例提供的数据处理方法,从而可以解决数据在进行读写时缓存命中率低的问题,进而提高数据读写效率和处理性能。
图1示出了本申请实施例的一种***架构的示意图。如图1所示,该***包括:客户服务器110和存储服务器120,客户服务器110和存储服务器120通过网络进行连接,客户服务器110包括CPU1110和内存1120,并连接有RDMA通信单元,这里以网络接口控制器(network interface controller,NIC)1130为例进行说明,应理解,RDMA通信单元包括但不限于NIC1130;存储服务器120包括CPU1210和内存1220,并连接有NIC1230和存储单元,存储单元用于对数据进行持久化存储,这里以SSD1240为例进行说明,应理解,存储单元包括但不限于SSD1240。CPU1210中包括共用缓存(即cache),CPU会从共用缓存中存取数据,对于写入存储服务器的数据,CPU会首先存储至缓存中,对于从存储服务器读取的数据,CPU会首先在缓存中读取,如果在缓存中没有命中,则会将内存或者SSD中的数据读入缓存,由于缓存中的容量有限,但缓存达到一定水位的时候,则会将缓存中访问频率比较少的数据通过淘汰算法淘汰至内存。
具体地,客户服务器110通过运行的启动器(图未示),存储服务器120通过运行目标器(图未示)建立客户服务器110与存储服务器120之间的基于网络连接的非易失性存储(non-volatile memory express over fabrics,NOF)连接。以下实施例以客户服务器110与存储服务器120通过NOF连接为例进行说明,但在实际应用中,客户服务器110与存储服务器也可以为其他连接。
在本发明实施例中,存储服务器120在启动后,对内存1220进行初始化处理,将内存1220划分为多个内存区域,例如第一内存区域和第二内存区域,第一内存区域的存储空间小于或等于共用缓存的存储空间。具体地,在对内存1220进行区域划分时,CPU1210首先向内存1220申请第一存储空间,该第一存储空间是内存1220中一段物理连续的存储空间,然后按照存储服务器120的内存页大小对该存储空间进行页面切割,需要说明的是,内存页的大小为CPU1210共用缓存行(cache line)的整数倍,其一般取值为4096个字节,在完成切割之后,将得到多个存储页面,最后将该多个存储页面按照地址大小顺序依次放入无锁环形队列中,该无锁环形队列对应的内存区域即为第一内存区域。应理解,当第一内存区域包含多个内存区域时(例如第三内存区域和第四内存区域),则将分别对该多个内存区域进行页面切割,并将每次切割之后得到的多个存储页面分别放入与该多个内存区域对应的多个无锁环形队列中。
示例性的,如图2所示,内存1220包含热点内存区域(即第一内存区域)和普通内存区域(即第二内存区域),其中,第一内存区域包含第三内存区域和第四内存区域,第三内存区域对应的内存大小为K1,第四内存区域对应的内存大小为K2,第二内存区域对应的内存大小为K3。以内存页大小H对第三内存区域进行页面切割,得到多个存储页面,例如P1、P2、…、Pn等,将该多个存储页面按照地址大小顺序依次放入无锁环形队列Q1中,同理,以内存页大小H对第四内存区域进行页面切割,得到P1、P2、…、Pn等多个存储页面,将该多个存储页面按照地址大小顺序依次放入无锁环形队列Q2中。之后,若需要向第三内存区域或第四内存区域申请内存,其实质就是从Q1或Q2中获取存储页面,若需要释放内存,则表示将存储页面重新放回Q1或Q2中,另外,K1和K2的大小可以根据实际需要进行设置,本申请对此不作限定。
对于划分了区域的内存,存储服务器120在进行数据读写操作时,对于所接收的数据访问请求,会判断待访问数据的类别,如果是访问频率比较高的热数据,则分配第一内存区域的地址,如果是普通数据,则分配第二内存区域的地址。
例如,以客户服务器110向存储服务器120写入数据为例,客户服务器110通过CPU1110产生数据并将产生的数据存储至内存1120中,然后通过NIC1130向存储服务器120发送数据写入请求,该数据写入请求中携带待写入数据,存储服务器120接收到数据写入请求之后,需要为待写入数据分配内存地址,此时存储服务器120将会判断该数据写入请求中携带的待写入数据的类别,若待写入数据是热点数据,则将从第一内存区域中为待写入数据分配内存地址,由于第一内存区域中的地址只会分配给热点数据,而热点数据会被经常访问,所以所述写内存地址在CPU1210的缓存中命中该内存地址的概率提高,对于内存地址在CPU1210的缓存中命中写入请求,数据会被直接写入内存地址对应的缓存地址处,而对于未在缓存中命中的内存地址,CPU1210会首先将所述内存地址映射至缓存,即建立所述内存地址与缓存地址的映射,然后将数据写入缓存地址处。对于写入缓存的数据,CPU1210会进一步将缓存中的数据发送至SSD1240,由SSD1240对其进行持久化存储,SSD1240在完成存储之后,通知CPU1210,CPU1210通知NIC1230,NIC1230通过QP向客户服务器110回复写数据完成消息。
可以看出,在上述图1所示的***架构中,存储服务器将内存划分为多个内存区域,在处理来自客户服务器的访问请求时,根据待访问数据的类别,为其分配不同内存区域中的内存地址,热点数据分配的内存地址集中在一个范围内,从而提高CPU缓存命中率,提高数据读写效率。
结合图1所示的***架构的示意图,下面将对数据写流程进行详细描述,以客户服务器110写入数据到存储服务器120为例,如图3所示,该流程包括:
S301:存储服务器120接收与所述存储服务器120连接的客户服务器110发送的数据写请求。
可选的,客户服务器110和存储服务器120可以是基于IB、RoCE或IWARP任一个协议建立RDMA连接。
应理解,存储服务器120和客户服务器110在建立RDMA连接的过程中将会协商创建QP,在创建QP时将会创建关联的发送队列SQ和接收队列RQ,在创建完成之后,存储服务器120和客户服务器110可以利用QP进行通信。可以理解,在存储服务器120和客户服务器110建立RDMA连接之后,客户服务器110可以通过RDMA方式远程操作存储服务器120的内存。客户服务器110向存储服务器发送数据写请求,该数据写请求中携带待写入数据。
S302:存储服务器120根据待写入数据的类别,为所述数据写请求分配第一内存区域的地址。
具体地,存储服务器120的内存预先被划分为了几个内存区域,在接收到客户服务器110发送的数据写请求之后,通过对该数据写请求进行解析,识别待写入数据的类别,当确定待写入数据为热点数据时,则为该数据写请求分配热点内存区域(如上述第一内存区域)的内存地址。需要说明的是,热点数据可以是访问频率超过预设阈值的数据、或者是优先级高于预设优先级的应用产生的数据、或者是时延要求低于预设时延值的数据,应理解,热点数据的定义包括但不限于上述提到的几类数据,本申请对此不作限定。
可选的,存储服务器120可以通过多种方式对待写入数据的类别进行识别,确定其是否为热点数据,例如可以通过待写入数据的来源、该数据写请求是否携带热点标识、产生该数据写请求的应用的优先级等方式判断待写入数据的类别,并为其分配相对应的内存地址。其中,热点标识用于对数据写请求进行标识,其可以是某些应用的名称或一段字符串或一段乱码等,本申请对其具体形式不作限定。
示例性的,客户服务器110在发送数据写请求时根据实际业务需求在其中加入热点标识,例如对于带宽和时延要求较高的应用,客户服务器110将会在数据写请求中携带热点标识,存储服务器120在接收到该数据写请求之后,对该数据写请求进行解析,当发现其中携带热点标识时,存储服务器120确定待写入的数据为热点数据,需要从第一内存区域申请内存,由于热点数据只会分配第一存储区域内的地址,而所分配的地址由于上次也是被分配给热点数据,有可能还没有被淘汰出共用缓存,所以所分配的地址有很大的概率在共用缓存中命中,如果在共用缓存中命中,则数据可以被直接写入共用缓存。
进一步的,存储服务器120从第一内存区域对应的无锁环形队列中申请存储页面,在从无锁环形队列中申请存储页面时,为了提高申请效率、减少存储页面申请冲突,不需要逐个进行申请,而是可以一次性批量申请多个存储页面。
示例性的,数据写请求所请求的数据量为S,内存页大小为H,则存储服务器120计算(S+H-1)除以H的值,然后对计算得到的结果进行向下取整,这样可以保证在所请求的数据量不足一个存储页面时,仍旧能够申请到一个存储页面,最后一次性申请取整之后的多个存储页面。
需要说明的是,当从无锁缓存队列中申请存储页面失败时,存储服务器120会将该数据写请求设置为等待内存状态并将其置于等待队列中。
S303:存储服务器120确定所分配的内存地址映射至共用缓存,将待写入数据写入共用缓存中。
具体地,当从无锁缓存队列中成功申请到存储页面后,将为该数据写请求分配存储页面对应的内存地址,然后存储服务器120进一步判断所分配的内存地址是否映射至共用缓存中,若已经映射至共用缓存中,则直接将待写入数据写入共用缓存中,若没有映射至共用缓存中,则会将该内存地址先映射至共用缓存中,然后再将待写入数据写入映射得到的共用缓存中。
S304:存储服务器120将待写入数据进行持久化存储。
具体地,存储服务器120的CPU1210将缓存中的数据发送至SSD1240,由SSD1240对数据进行持久化存储。
S305:存储服务器120向客户服务器110回复写数据完成消息。
具体地,SSD1240在完成数据持久化存储之后通知CPU1210,之后,CPU1210通过存储服务器120的NIC1230向客户服务器110回复写数据完成消息,从而完成整个数据写入流程。
可以看出,存储服务器在处理数据写请求时,通过对待写入数据类别的判断,为其分配第一内存区域中的内存地址,从而提高CPU缓存命中率,实现仅利用CPU的缓存即可完成数据的写入,不需要存储服务器内存的参与,可以减小内存带宽消耗,减小数据写入时延,提高数据写入效率和性能。
图3所述的方法流程详细阐述了数据从客户服务器110写入存储服务器120的SSD1240的过程,相应的,客户服务器110还可以从SSD1240中读取数据,下面将对数据读流程进行详细描述,如图4所示,该流程包括:
S401:存储服务器120接收与所述存储服务器120连接的客户服务器110发送的数据读请求。
具体地,客户服务器110中的应用产生数据读请求,然后通过NIC1130以RDMA的方式将该数据读请求发送到存储服务器120的NIC1230中,该数据读请求中包括待读取数据的逻辑区块地址(logical block address,LBA)地址。
S402:存储服务器120确定所述待读取数据是否被缓存。
具体地,存储服务器120根据待读取数据的LBA地址遍历内存1220中的数据表,所述数据表中记录了存储在内存中或者缓存中的数据LBA对应的内存地址,若在所述数据表中查找到所述内存地址,且所述内存地址还对应有缓存地址,则从缓存中读取待读取数据,若所述数据表中只有内存地址,则从内存中读取待读取数据,若没有在所述数据表中找到所述数据的LBA,则所述待读取数据没有被缓存,则继续执行后续步骤。
S403:存储服务器120根据待读取数据的类别,为所述数据读请求分配第一内存区域的地址。
具体地,存储服务器120通过对该数据读请求进行解析,识别出待读取数据为热点数据,然后为该数据读请求分配第一内存区域的内存地址。
,进一步的,存储服务器120从第一内存区域对应的无锁环形队列中申请存储页面,当从无锁环形队列中成功申请到存储页面,则为数据读请求分配该存储页面对应的内存地址,当从无锁环形队列中申请存储页面失败,则将该数据读请求设置为等待内存状态并将其置于等待队列中。
S404:存储服务器120确定所分配的内存地址映射至共用缓存,将待读取数据从SSD1240读取至所述共用缓存中。
具体地,当从无锁环形队列中成功申请到存储页面后,为其分配存储页面对应的内存地址,然后存储服务器120进一步判断所分配的内存地址是否映射至共用缓存中,若已经映射至共用缓存中,则直接将待读取数据从SSD1240读取至共用缓存中,若没有映射至共用缓存中,则将分配的内存地址先映射至共用缓存中,然后再将待读取数据从SSD1240读取至映射得到的共用缓存中。
S405:存储服务器120将待读取数据发送给客户服务器110。
具体地,存储服务器120将数据从SSD1240读取至CPU1210的共用缓存中后,通过NIC1230将共用缓存中的数据写入客户服务器110的内存1120中。
S406:存储服务器120向客户服务器110回复读数据完成消息。
需要说明的是,图4所示的方法实施例与图3所示的方法实施例基于同一思想,在具体实现过程中可以相互参照,为了简洁,在此不再赘述。
参见图5,图5是本申请实施例提供的另一种数据写入方法的流程示意图。如图5所示,该流程包括:
S501:客户服务器110将数据写请求发送至存储服务器120。
S502:存储服务器120解析该数据写请求,判断待写入数据是否为热点数据,若是,则执行步骤S503,若不是,则执行步骤S510。
S503:存储服务器120判断该数据写请求所请求的数据量是否小于第一阈值,若小于第一阈值,则执行步骤S504,若大于等于第一阈值,则执行步骤S507。
具体地,存储服务器120在对内存1220进行划分时,可以对热点内存区域(如上述第一内存区域)进行更进一步的细分,将其分为第三内存区域和第四内存区域,其各自对应一个无锁环形队列,例如第三内存区域对应无锁环形队列Q1,第四内存区域对应无锁环形队列Q2。
可选的,第三内存区域对应的内存小于第四内存区域对应的内存,第三内存区域用于处理数据量较小的IO请求,第四内存区域用于处理数据量较大的IO请求,存储服务器120可以根据数据写请求所请求的数据量,选择从第三内存区域或第四内存区域申请内存,第一阈值可以根据实际需要进行设置,例如可以设置为1M比特,本申请对此不作限定。
S504:存储服务器120从第三内存区域申请内存。
具体地,存储服务器120从第三内存区域对应的无锁环形队列Q1中申请存储页面,为了提高申请效率,减小在多个IO请求并发的情况下存储页面申请冲突,可以一次性批量申请多个存储页面。
S505:存储服务器120判断是否从第三内存区域成功申请内存,若成功,则执行步骤S506,若失败,则执行步骤S509。
具体地,存储服务器120在从Q1中申请存储页面时,若重复申请N次仍旧失败,则存储服务器120确定本次申请失败,N为大于1的正整数。
S506:存储服务器120确定所申请得到的内存映射至共用缓存,将数据写入共用缓存中。
具体地,若存储服务器120从Q1或Q2中成功申请到存储页面,则将进一步判断所申请得到的内存是否映射至共用缓存中,若已经映射至共用缓存中,则存储服务器120可以直接利用共用缓存进行数据处理,可以直接将数据写入共用缓存中,从而可以减小内存带宽消耗,提高处理效率和性能。
S507:存储服务器120从第四内存区域申请内存。
具体地,存储服务器120从第四内存区域对应的无锁环形队列Q2中申请存储页面,可以一次性批量申请多个存储页面。
S508:存储服务器120判断是否从第四内存区域成功申请内存,若成功,则执行步骤S506,若失败,则执行步骤S509。
S509:存储服务器120将该数据写请求设置为等待内存状态并将其置于等待队列中。
具体地,由于第三内存区域和第四内存区域的存储空间是有限的,可能无法同时支持多个IO请求,因此存储服务器120维护有一个等待队列,当第三内存区域或第四内存区域所剩余的内存资源不足以支持当前IO请求时,将该IO请求设置为等待内存状态并将其置于该等待队列中,当第三内存区域或第四内存区域的内存资源被释放后,再继续执行该等待队列中的IO请求。
S510:存储服务器120从第二内存区域申请内存。
具体地,对于待写入数据为非热点数据的数据写请求,例如一些数据管理相关的请求或数据量较大且对时延要求较低的请求,存储服务器120直接从第二内存区域申请内存,从而保证第三内存区域和第四内存区域有足够的内存空间支持对时延和性能要求较高的IO请求。
S511:存储服务器120将缓存中的数据进行持久化存储。
具体地,存储服务器120中的CPU1210将缓存中的数据发送至SSD1240,SSD1240在接收到数据之后对其进行持久化存储。
S512:存储服务器120向客户服务器110回复写数据完成消息。
具体地,SSD1240在完成数据持久化存储之后通知CPU1210,之后,存储服务器120通过NIC1230向客户服务器110回复写数据完成消息。
可以看出,存储服务器通过对热点内存区域进行更细致的划分得到多个不同的内存区域,并分别利用不同的内存区域处理数据量不同的IO请求,实现在多个IO请求并发的情况下仍旧能够提高缓存命中率,进而提高处理效率和性能。
参见图6,图6是本申请实施例提供的另一种数据读取方法的流程示意图。如图6所示,该流程包括:
S601:客户服务器110将数据读请求发送至存储服务器120。
具体地,该数据读请求中包括待读取数据的LBA地址。
S602:存储服务器120确定待读取数据是否被缓存,若是,则执行步骤S612,若不是,则执行步骤S603。
S603:存储服务器120解析该数据读请求,判断待读取数据是否为热点数据,若是,则执行步骤S604,若不是,则执行步骤S611。
S604:存储服务器120判断该数据读请求所请求的数据量是否小于第一阈值,若小于第一阈值,则执行步骤S605,若大于等于第一阈值,则执行步骤S607。
S605:存储服务器120从第三内存区域申请内存。
具体地,存储服务器120从第三内存区域对应的无锁环形队列Q1中申请存储页面。
S606:存储服务器120判断是否从第三内存区域成功申请内存,若成功,则执行步骤S607,若失败,则执行步骤S610。
S607:存储服务器120确定所申请得到的内存映射至共用缓存,将数据读取至共用缓存中。
具体地,若存储服务器120从Q1或Q2中成功申请存储页面,则将进一步判断所申请得到的内存是否映射至共用缓存中,若已经映射至共用缓存中,则存储服务器直接将SSD1240中数据读取至共用缓存中,若没有映射至共用缓存中,则需要先将其映射至共用缓存中后,再将SSD1240中的数据读取至映射得到的共用缓存中。
S608:存储服务器120从第四内存区域申请内存。
具体地,存储服务器120从第四内存区域对应的无锁环形队列Q2中申请存储页面。
S609:存储服务器120判断是否从第四内存区域成功申请内存,若成功,则执行步骤S607,若失败,则执行步骤S610。
S610:存储服务器120将该数据读请求设置为等待内存状态并将其置于等待队列中。
S611:存储服务器120从第二内存区域申请内存。
具体地,对于待读取数据为非热点数据的数据读请求,例如一些数据管理相关的请求或数据量较大且对时延要求较低的请求,存储服务器120直接从第二内存区域申请内存,从而保证第三内存区域和第四内存区域有足够的内存空间支持对时延和性能要求较高的IO请求。
S612:存储服务器120将缓存中的数据发送给客户服务器110。
具体地,存储服务器120通过NIC1230将数据写入客户服务器110内存1120中。
S613:存储服务器120向客户服务器110回复读数据完成消息。
需要说明的是,图7所示的方法实施例与图6所示的方法实施例基于同一思想,在具体实现过程中可以相互参照,为了简洁,在此不再赘述。
上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
参见图7,图7是本申请实施例提供的一种计算设备的结构示意图。如图7所示,该计算设备700包括确定单元710、地址分配单元720和访问单元730。其中,
确定单元710,用于确定数据访问请求所访问的数据是否为热点数据;
地址分配单元720,用于在确定单元710确定所述数据访问请求所访问的待访问数据为热点数据时,为所述数据访问请求从第一内存区域分配内存地址;
访问单元730,用于根据所述内存地址访问所述待访问数据。
作为一个实施例,所述第一内存区域对应的存储空间小于或等于所述计算设备的共用缓存对应的存储空间。
作为一个实施例,所述第一内存区域是一段地址连续的内存区域。
作为一个实施例,所述第一内存区域被分割为多个内存页,所述多个内存页按照地址顺序构成无锁环形队列;所述地址分配单元720,具体用于:从所述无锁环形队列中为所述数据访问请求分配一个或多个内存页。
作为一个实施例,所述第一内存区域被划分为第三内存区域和第四内存区域,所述地址分配单元720,还用于:当所述数据访问请求的大小小于预设阈值时,从所述第三内存区域为所述数据访问请求分配内存地址;当所述数据访问请求的大小大于或等于预设阈值时,从所述第四内存区域为所述数据访问请求分配内存地址。
作为一个实施例,所述数据访问请求为写请求,所述访问单元730,具体用于:确定所述内存地址映射至所述计算设备的共用缓存时,将所述写请求中携带的所述待访问数据写入所述内存地址对应的共用缓存中,并将所述待访问数据从所述缓存存储至所述计算设备的持久性存储介质;确定所述内存地址没有映射至所述计算设备的共用缓存时,将所述内存地址映射至所述共用缓存,将所述待访问数据写入所述共用缓存,并将所述待访问数据从所述共用缓存存储至所述计算设备的持久性存储介质。
作为一个实施例,所述数据访问请求为在所述待访问数据没有在所述内存中命中的读请求,所述访问单元730,具体用于:确定所述内存地址映射至所述计算设备的共用缓存时,则将从所述计算设备的持久性内存中读取的所述待访问数据存储至所述计算设备的共用缓存;确定所述内存地址没有映射至所述计算设备的共用缓存时,则将所述内存地址映射至所述计算设备的共用缓存,将从所述计算设备的持久性内存中读取的所述待访问数据存储至所述计算设备的共用缓存。
应理解,上述计算设备的结构仅仅作为一种示例,不应构成具体的限定,可以根据需要对计算设备的各个单元进行增加、减少或合并。此外,计算设备中的各个单元的操作和/或功能分别为了实现上述图3、图4、图5和图6所描述的方法的相应流程,为了简洁,在此不再赘述。
参见图8,图8是本申请实施例提供的另一种计算设备的结构示意图。如图8所示,该计算设备800包括:处理器810、通信接口820以及存储器830,所述处理器810、通信接口820以及存储器830通过内部总线840相互连接。
所述计算设备800可以是图1中的存储服务器。图1中的存储服务器所执行的功能实际上是由所述存储服务器的处理器810来执行。
所述处理器810可以由一个或者多个通用处理器构成,例如中央处理器(centralprocessing unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
总线840可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线840可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但不表示仅有一根总线或一种类型的总线。
存储器830可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器830也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器830还可以包括上述种类的组合。程序代码可以是用来实现计算设备700所示的功能单元,或者用于实现图3、图4、图5和图6所示的方法实施例中以存储服务器为执行主体的方法步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤,以及实现上述图7所描述的任意一个功能单元的功能。
本申请实施例还提供了一种计算机程序产品,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述所涉及的设备的各组成单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
还应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (12)
1.一种数据处理方法,其特征在于,应用于计算设备,所述计算设备包括内存,所述内存包括第一内存区域及第二内存区域,所述方法包括:
所述计算设备确定数据访问请求所访问的待访问数据是否为热点数据;
所述计算设备在确定所述数据访问请求所访问的待访问数据为热点数据时,为所述数据访问请求从所述第一内存区域分配内存地址;
所述计算设备根据所述内存地址访问所述待访问数据。
2.如权利要求1所述的方法,其特征在于,所述第一内存区域对应的存储空间小于或等于所述计算设备的共用缓存对应的存储空间。
3.如权利要求2所述的方法,其特征在于,所述第一内存区域是一段地址连续的内存区域。
4.如权利要求2所述的方法,其特征在于,所述第一内存区域被分割为多个内存页,所述多个内存页按照地址顺序构成无锁环形队列;
所述计算设备为所述数据访问请求从所述第一内存区域分配内存地址具体包括:
所述计算设备从所述无锁环形队列中为所述数据访问请求分配一个或多个内存页。
5.如权利要求1-3任一项所述的方法,其特征在于,所述第一内存区域被划分为第三内存区域和第四内存区域,所述计算设备为所述数据写请求从所述第一内存区域分配内存地址具体包括:
当所述数据访问请求的大小小于预设阈值时,从所述第三区域为所述数据访问请求分配内存地址;
当所述数据访问请求的大小大于或等于预设阈值时,从所述第四区域为所述数据访问请求分配内存地址。
6.一种计算设备,其特征在于,包括:
确定单元,用于确定数据访问请求所访问的数据是否为热点数据;
地址分配单元,用于在确定单元确定所述数据访问请求所访问的待访问数据为热点数据时,为所述数据访问请求从第一内存区域分配内存地址;
访问单元,用于根据所述内存地址访问所述待访问数据。
7.如权利要求6所述的计算设备,其特征在于,所述第一内存区域对应的存储空间小于或等于所述计算设备的共用缓存对应的存储空间。
8.如权利要求7所述的计算设备,其特征在于,所述第一内存区域是一段地址连续的内存区域。
9.如权利要求7所述的计算设备,其特征在于,所述第一内存区域被分割为多个内存页,所述多个内存页按照地址顺序构成无锁环形队列;所述分配单元,具体用于:
从所述无锁环形队列中为所述数据访问请求分配一个或多个内存页。
10.如权利要求6-8任一项所述的计算设备,其特征在于,所述第一内存区域被划分为第三内存区域和第四内存区域,所述地址分配单元,还用于:
当所述数据访问请求的大小小于预设阈值时,从所述第三内存区域为所述数据访问请求分配内存地址;
当所述数据访问请求的大小大于或等于预设阈值时,从所述第四内存区域为所述数据访问请求分配内存地址。
11.一种计算设备,其特征在于,所述计算设备包括存储器和处理器,所述处理器执行所述存储器中存储的计算机指令,使得所述计算设备执行权利要求1-5任一项所述的方法。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时实现权利要求1-5任一项所述的方法的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110921892.9A CN115905042A (zh) | 2021-08-11 | 2021-08-11 | 一种数据处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110921892.9A CN115905042A (zh) | 2021-08-11 | 2021-08-11 | 一种数据处理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115905042A true CN115905042A (zh) | 2023-04-04 |
Family
ID=86480054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110921892.9A Pending CN115905042A (zh) | 2021-08-11 | 2021-08-11 | 一种数据处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115905042A (zh) |
-
2021
- 2021-08-11 CN CN202110921892.9A patent/CN115905042A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10810135B2 (en) | Data transmission method, apparatus, device, and system | |
US12001681B2 (en) | Distributed storage system and data processing method | |
EP3252613B1 (en) | Resource management for peripheral component interconnect-express domains | |
US10496427B2 (en) | Method for managing memory of virtual machine, physical host, PCIE device and configuration method thereof, and migration management device | |
JP6262360B2 (ja) | 計算機システム | |
CN105511964B (zh) | I/o请求的处理方法和装置 | |
WO2020143434A1 (zh) | 读写请求处理方法、装置、电子设备以及存储介质 | |
US20200334384A1 (en) | Method of dynamically configuring fpga and network security device | |
CN112579311B (zh) | 访问固态硬盘的方法及存储设备 | |
CN116204456A (zh) | 数据访问方法及计算设备 | |
EP4177763A1 (en) | Data access method and related device | |
CN113760560A (zh) | 一种进程间通信方法以及进程间通信装置 | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
CN115129621B (zh) | 一种内存管理方法、设备、介质及内存管理模块 | |
CN109086008B (zh) | 固态硬盘的数据处理方法以及固态硬盘 | |
CN112346871A (zh) | 一种请求处理方法及微服务*** | |
WO2016008338A1 (zh) | 一种i/o请求处理方法及存储*** | |
WO2018032519A1 (zh) | 一种资源分配方法、装置及numa*** | |
US20200272526A1 (en) | Methods and systems for automated scaling of computing clusters | |
CN115811509A (zh) | 一种总线通信方法及相关设备 | |
CN115905042A (zh) | 一种数据处理方法及相关设备 | |
WO2016201998A1 (zh) | 一种缓存分配、数据访问、数据发送方法、处理器及*** | |
JP2024501713A (ja) | データアクセス方法および関連デバイス | |
CN110046040B (zh) | 分布式任务处理方法及***和存储介质 | |
KR20170116941A (ko) | 현재 확인 메시지에서 다음 rdma 동작을 위한 타겟 버퍼 어드레스의 피기배킹 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |