CN115933975A - 数据处理方法、计算设备及计算机系统 - Google Patents
数据处理方法、计算设备及计算机系统 Download PDFInfo
- Publication number
- CN115933975A CN115933975A CN202211505876.2A CN202211505876A CN115933975A CN 115933975 A CN115933975 A CN 115933975A CN 202211505876 A CN202211505876 A CN 202211505876A CN 115933975 A CN115933975 A CN 115933975A
- Authority
- CN
- China
- Prior art keywords
- cache
- access request
- request information
- data
- target data
- 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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据处理方法、计算设备及计算机系统。其中,第一缓存节点运行在计算机系统中,所述计算机系统中部署有计算设备;第一缓存节点基于计算节点发送的访问指令,生成访问请求信息;所述访问请求信息中包括计算信息;确定所述访问请求信息对应本地缓存的缓存地址;将所述访问请求信息及所述缓存地址发送至所述计算设备,以供所述计算设备基于所述缓存地址,访问所述本地缓存以响应所述访问请求信息并按照所述计算信息对请求访问的目标数据进行计算处理。本申请实施例提供的技术方案降低了计算节点的计算开销,提高了处理效率。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种数据处理方法、计算设备及计算机系统。
背景技术
存算分离技术是指将计算与存储进行解耦合,由不同系统进行数据的存储和计算。由于数据存储通常选择持久性存储,存储在远端,如果每次计算均需要从远端的存储系统中获取所有数据,那么会显著降低处理效率,为了解决这一问题,出现了存储分离架构,存储分离架构通过作为两者中间桥梁的缓存系统作为cache(缓存)层解决所有数据都需要从存储系统拉取的问题,例如将一些热数据或中间数据保存至缓存系统中。缓存系统若存在计算节点请求访问的数据,计算节点可以直接从缓存系统获取数据并进行计算处理。
然而,即便采用这种存储分离架构,计算节点的计算开销仍然很大。
发明内容
本申请实施例提供一种数据处理方法、计算设备及计算机系统,用以解决现有技术中计算节点的技术开销较大的技术问题。
第一方面,本申请实施例中提供了一种数据处理方法,应用于第一缓存节点,所述第一缓存节点运行在计算机系统中,所述计算机系统中部署有计算设备;所述方法包括:
基于计算节点发送的访问指令,生成访问请求信息;所述访问请求信息中包括计算信息;
确定所述访问请求信息对应本地缓存的缓存地址;
将所述访问请求信息及所述缓存地址发送至所述计算设备,以供所述计算设备基于所述缓存地址,访问所述本地缓存以响应所述访问请求信息并按照所述计算信息对请求访问的目标数据进行计算处理。
第二方面,本申请实施例中提供了一种数据处理方法,应用于计算设备,所述计算设备配置于计算机系统中,所述计算机系统运行第一缓存节点,所述方法包括:
获取所述第一缓存节点发送的访问请求信息以及缓存地址;所述访问请求信息中包括计算信息;所述访问请求信息基于计算节点发送的访问指令而生成;
基于所述缓存地址,访问所述计算机系统的本地缓存;
响应所述访问请求信息,并按照所述计算信息对请求访问的目标数据进行计算处理。
第三方面,本申请实施例中提供了一种计算设备,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,以实现如上述第二方面所述的数据处理方法。
第四方面,本申请实施例中提供了一种计算机系统,包括处理组件以及存储组件;所述处理组件用以连接计算设备;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行以运行第一缓存节点,执行如上述第一方面所述的数据处理方法。
本申请实施例中,在运行缓存节点的计算机系统中部署计算设备,计算节点向缓存节点发送访问指令,缓存节点基于访问指令,生成访问请求信息;所述访问请求信息中包括计算信息,之后确定所述访问请求信息对应本地缓存的缓存地址,并将所述访问请求信息及所述缓存地址发送至所述计算组件设备,计算组件设备即可以基于所述缓存地址,访问所述本地缓存;响应所述访问请求信息并按照所述计算信息对请求访问的目标数据进行计算处理。本申请实施例的技术方案提供了存储随路计算能力,实现了对请求访问的数据进行在线计算,从而无需计算节点的计算处理,降低了计算节点的计算开销,且避免了数据传输延迟等问题,提高了处理效率。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请的技术方案应用于其中的一种系统架构示意图;
图2示出了本申请提供的一种数据处理方法一个实施例的流程图;
图3示出了本申请实施例在一个实际应用中SQE的数据结构示意图;
图4a示出了本申请实施例在一个实际应用中的进行数据读取的交互示意图;
图4b示出了本申请实施例在一个实际应用中的进行数据读取的交互示意图;
图4c示出了本申请实施例在一个实际应用中的进行数据写入的交互示意图;
图5示出了本申请实施例在一个实际应用中缓存节点访问计算设备的交互示意图;
图6示出了本申请实施例在一个实际应用中队列映射示意图;
图7示出了本申请提供的一种数据处理方法又一个实施例的流程图;
图8示出了本申请提供的一种数据处理装置一个实施例的结构示意图;
图9示出了本申请提供的一种数据处理装置又一个实施例的结构示意图;
图10示出了本申请提供的一种计算设备一个实施例的结构示意图;
图11示出了本申请提供的一种计算机系统一个实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
为了便于理解本申请的技术方案,下面首先对本申请中可能涉及的技术术语进行相应解释说明:
外部设备:是指计算机系统中除主机以外的其他设备,包括输入设备(如键盘、鼠标等)、输出设备(如显示器、打印机等)、外部存储器(如硬盘、软盘、光盘)等。外部设备按照工作方式的不同,可以分为字符设备(character device)、块设备(block device)、网络通信设备等设备类型。I/O(Input/Output)操作即描述了计算机系统对外部设备的访问,例如可以包括数据I/O(读写数据)、网络IO(网络请求和响应)等。本申请实施例中所涉及的计算设备即是一种外部设备,用来进行加速计算处理。
内核空间及用户空间:操作系统的核心是内核(kernel),可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证内核的安全,现在的操作系统一般都强制用户进程不能直接操作内核。具体的实现方式基本都是由操作系统将虚拟地址空间划分为两部分,一部分为内核空间,另一部分为用户空间。运行在用户空间的应用也被称为用户态,运行在内核空间的程序也被称为内核态。运行在用户空间的应用可以通过系统调用方式访问内核空间,在内核空间中可以实现数据读写、内存分配等操作。其中,I/O操作即涉及从用户空间通过系统调用访问内核空间,也就是说,应用只是发起了I/O操作的调用,具体I/O操作由内核程序来完成。
虚拟化设备:利用I/O虚拟化技术,对外部设备虚拟化获得。
AIO(Asynchronized io):异步io,是指应用提交访问请求之后,无需等待IO操作的完成,而是可以继续处理别的事情,io操作完成后,会以某种方式通知应用。
io_uring:一种异步io技术,io_uring技术提供缓冲队列,能够在用户空间和内核空间之间共享以避免内存拷贝。io_uring技术在内核空间注册内存,该内存可以通过mmap(memory map,一种内存映射文件的方式)映射到用户空间,在内存中通过缓冲队列实现用户空间和内核空间的通信。该缓冲队列可以为环形队列,用户态和内核态都可以从缓冲队列中读取数据和放入数据等。该缓冲队列可以包括提交队列(英文:Submission Queue,简称:SQ),以及完成队列(英文:Completion Queue,简称:CQ),SQ中的元素是SQE(SubmissionQueue Entry,提交队列条目),CQ中的元素为CQE(Completion Queue Entry,完成队列条目);SQE和CQE可以存储提交的请求信息或者请求信息的索引,而请求信息存放在额外的数组中。
virtio:一种I/O半虚拟化技术,是对半虚拟化Hypervisor(虚拟机监视器)中的一组通用外部设备的抽象,其是一种前后端架构,包括设备驱动、虚拟化设备、以及设备驱动与虚拟化设备进行通信的虚拟化队列(Vring)。其中,虚拟化设备通过对外部设备模拟获得,在虚拟机场景中,设备驱动位于虚拟机中,是虚拟化设备在虚拟机中对应的驱动;虚拟化设备由Hypervisor基于外部设备虚拟化获得。在虚拟机中看到的外部设备,即是由Hypervisor虚拟化获得。其中,虚拟化队列可以是环形队列,设备驱动以及虚拟化设备都可以从中读取数据和写入数据等。设备驱动将访问请求信息保存到虚拟队列中,然后通知虚拟化设备,虚拟化设备可以从虚拟队列中获取到访问请求信息进行处理。其中,该虚拟化队列例如可以包括可用队列(Available Ring)及已用队列(Used Ring),可用队列和已用队列可以存储操作地址或者存储操作地址的索引,操作地址存放在额外的数据表中,每个操作地址可以指向一个内存空间。
虚拟机:指在一个物理主机中通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。该物理主机相对虚拟机为宿主机(Host),该虚拟机相对物理主机为客户机(Guest)。
云计算:云计算是计算机技术发展最快的趋势之一,它涉及通过网络提供托管服务。云计算环境将计算资源和存储资源作为服务提供给最终用户。最终用户可以向提供的服务发出请求以进行处理。服务的处理能力通常受到配置资源的限制。云计算是一种服务交付模式,旨在实现,按需网络访问共享的可配置计算资源池(例如,网络、网络带宽、服务器、处理、内存、存储、应用程序、虚拟机和服务),这些资源可以通过最小的管理工作或与服务提供商的交互来快速调配和发布。
VFS(Virtual File System,虚拟文件系统):采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统,即为各类文件系统提供了一个统一的操作界面和应用编程接口。
块层:内核空间中用来访问存储设备的模块接口。
文件系统(file system):是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索等的系统。
PCIe(peripheral component interconnect express):一种高速串行计算机扩展总线标准。
MEM(memory):存储介质。
PMEM(Persistent Memory):持久存储介质。
NVMe(Non-Volatile Memory express):非易失性内存主机控制器接口规范,用于访问通过PCIe总线附加的非易失性存储介质。
SSD(Solid State Disk):固态硬盘,NVMe硬盘即是指一种基于NVMe实现的固态硬盘。
POSIX(Portable Operating System Interface):可移植操作系统接口。
HDFS:Hadoop Distributed File System,Hadoop分布式文件系统,是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。本申请实施例所涉及的缓存节点可以是指HDFS中负责进行数据存储的数据节点。
API:Application Program Interface,应用程序编程接口。
本申请实施例的技术方案可以应用于采用存储分离架构的存算分离场景中,特别是存算分离的云计算场景。随着云计算和云存储的发展,为计算资源和持久性存储都提供了可扩展的弹性。但是,通常作为持久性存储的云存储后端带宽受限,如果计算需要的数据每次都需要从云存储后端去拉取,那么会显著降低处理的效率,同时如果每次都需要将计算的中间结果写透到云存储后端不仅增加了无谓的开销,也显著降低了处理效率,因此为了解决这一问题,出现了存储分离的架构,存储分离的架构通过一个cache层来解决所有数据都需要到后端拉取的问题,例如将热数据和中间数据保存在cache层中。
cache层可以由单个缓存节点或者多个缓存节点构成的分布式文件系统实现,作为进行数据计算的计算层也可以由单个计算节点或者多个计算节点构成的分布式计算系统实现,该分布式计算系统可以是本申请对此不进行限制。
发明人研究发现,即便可以采用分布式文件系统提供存储分离的解决方案,然而计算节点的计算开销仍然是比较大,因此想到是否可以在数据访问过程中,对数据进行在线计算,既可以降低计算节点的计算开销,也可以避免传输延迟等问题,以显著提高计算效率。为了实现这一技术方案,发明人经过一系列研究提出本申请的技术方案,缓存节点所在计算机系统中部署计算设备,计算节点可以利用缓存节点支持的预定义接口发送访问指令,缓存节点基于访问指令,生成访问请求信息;访问请求信息中包括计算信息,之后确定访问请求信息对应本地缓存的缓存地址,并将访问请求信息及缓存地址发送至计算设备,计算设备即可以基于缓存地址,访问本地缓存以响应访问请求信息并按照计算信息对请求访问的目标数据进行计算处理。计算设备与缓存节点部署在计算机系统中,计算设备可以直接访问缓存节点的本地缓存,并对请求访问的目标数据直接进行计算处理,无需由计算节点执行,实现了在访问同时进行计算,也即实现了存储随路计算,因此,通过计算设备,提供了存储随路计算能力,实现了对请求访问的数据进行在线计算,从而无需计算节点的计算处理,降低了计算节点计算开销,且避免了数据传输延迟等问题,提高了处理效率。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示出了本申请实施例的技术方案可以应用于其中的一种系统架构示意图,计算节点101可以向缓存节点102发送访问指令,缓存节点102可以使用MEM、PMEM和/或NVMe硬盘等一个或多个存储介质103作为本地缓存,以对存储系统100中的热数据或中间数据等进行缓存。存储系统100可以使用统一的、可靠的持久化存储方案,如云存储、或者其它类型的网络存储系统等。缓存节点102可以通过存储系统100对应的API(应用程序接口)访问存储系统100等。
其中,缓存节点102作为中间cache层用于存储存储系统100中的至少部分数据,cache层可以采用单个缓存节点102实现,当然,实际应用中,也可以作为分布式文件系统作为中间cache层,由多个缓存节点102构成,如图1中所示。
在采用分布式文件系统的情况下,可以由分布式计算系统进行数据计算,分布式计算系统可以下发数据计算任务至各个计算节点101,每个计算节点101可以基于控制节点下发的数据计算任务,向对应的缓存节点发送访问指令等。为了实现本申请技术方案,可以预先配置预定义接口,计算节点101可以通过调用预定义接口来实现对缓存节点102的访问,并触发执行本申请的技术方案,当然该预定义接口可以兼容原有接口,以实现原有访问流程。例如分布式文件系统为HDFS的情况下,该预定义接口可以是HDFS提供的用于上层系统访问HDFS的API。
其中,计算节点101以及缓存节点102实际应用中可以运行在同一个计算机系统中,当然,也可以运行在不同计算机系统中,不同缓存节点102或不同计算节点101可以运行在一个计算机系统或者不同计算机系统中,本申请对此不进行限定。缓存节点102所在的计算机系统可以通过I/O接口接入计算设备104,计算设备104作为外部设备可以提供数据计算功能,以实现计算加速目的。需要说明的是,图1系统架构图为逻辑示意图,不代表实际的硬件结构。
其中,缓存节点102可以运行在计算机系统构建的虚拟机中,当然,计算节点101也可以运行在计算机系统构建的虚拟机中,本申请对此不进行限定。
本申请的计算机系统中的主机部分所包含的各个组件可以分布在一个或多个物理机器上,本申请对此不进行限定,其具体实现结构在下文实施例中会进行介绍。
以下对本申请实施例的技术方案的实现细节进行详细阐述。
图2为本申请实施例提供的一种数据处理方法一个实施例的流程图,本实施例的技术方案由第一缓存节点执行,该第一缓存节点运行在计算机系统中,计算机系统部署计算设备;该计算设备为计算机系统的外部设备,可以通过I/O接口等接入计算机系统的主机部分等,该方法可以包括以下几个步骤:
201:基于计算节点发送的访问指令,生成访问请求信息。
该访问请求信息中可以包括计算信息,此外还可以包括访问操作数据等,计算信息可以包含在访问指令中,由计算节点提供等。该计算信息例如可以包括算子,用于指示数据计算方式等,其可以由操作符以及参数等构成。
其中,访问指令可以包括数据写指令或数据读指令。对于数据写指令,可以包含请求写入的目标数据,该访问操作数据中可以包括该目标数据,当然,缓存节点也可以将目标数据存入目标内存中,目标内存可以是第一缓存节点在计算机系统中所申请获得,访问操作数据中可以包括目标数据在该目标内存中对应的操作地址,操作地址可以指向目标数据在目标内存中的内存空间;对于数据读指令中,该访问操作数据中可以包括数据标识,此外还可以包括目标内存中的操作地址,用于存放目标数据,以便缓存节点可以获取等,同样操作地址指向目标内存中的内存空间。根据不同存储介质类型,如对于MEM或PMEN,操作地址可以是内存地址;对于NVMe硬盘,操作地址可以包括数据块标识,此外还可以包括目标数据在数据块中的起始地址以及数据长度等信息。
可选地,可以为计算节点提供预定义接口,计算节点调用预定义接口发送访问指令。第一缓存节点可以是基于计算节点利用预定义接口发送的访问指令,生成访问请求信息。第一缓存节点可以是在检测计算节点利用预定义接口发送的访问指令的情况下,再生成访问请求信息,并执行本申请实施例的技术方案实现随路计算,若计算节点并非利用预定义接口发送的访问指令,则可以只执行访问操作而不进行随路计算。该预定义接口可以是计算节点能够访问第一缓存节点的API。
202:确定访问请求信息对应本地缓存的缓存地址。
本地缓存可以使用MEM、PMEM和/或NVMe硬盘等存储介质等实现。
203:将访问请求信息及缓存地址发送至计算设备。
其中,计算设备即可以基于缓存地址,访问本地缓存以响应访问请求信息并按照计算信息对请求访问的目标数据进行计算处理。
本实施例中,计算节点可以通过预定义接口发送访问指令,从而可以通过缓存节点将计算信息下推至计算设备,由计算设备执行访问操作,并对请求访问的目标数据进行计算处理,计算设备与缓存节点部署在计算机系统中,计算设备可以直接访问缓存节点的本地缓存,并对请求访问的目标数据直接进行计算处理,无需由计算节点执行,实现了在访问同时进行计算,也即实现了存储随路计算,因此,本实施例通过预定义接口和计算设备,提供了存储随路计算能力,实现了对请求访问的数据进行在线计算,从而无需计算节点的计算处理,降低了计算节点计算开销,且避免了数据传输延迟等问题,提高了处理效率。
一些实施例中,访问请求信息中可以包括第一缓存节点的目标内存对应的操作地址;计算设备还用于基于操作地址,将目标数据对应的计算结果写入目标内存;该方法还可以包括:从目标内存中获取计算结果。
其中,该计算结果可以包括执行成功消息或执行失败消息等,此外,对于数据读指令,还可以包括请求访问的目标数据或者目标数据在目标内存中的操作地址等。
第一缓存节点即可以从目标内存中获取计算结果,并可以将计算结果反馈给计算节点等。
其中,第一缓存节点是运行在用户空间中,由于用户空间无法直接访问计算设备,需要从用户空间通过系统调用访问内核空间,在内核空间实现对计算设备的访问,为了提高访问效率,进一步提高处理效率,发明人研究发现,io_uring技术实现了用户空间和内核空间的通信,可以避免进行内存拷贝,而virtio技术提供的半虚拟化方式通过设备驱动实现了对外部设备的访问,也可以避免进行一次内存拷贝,如果将两者技术结合来实现对外部设备的访问是否可以提高访问效率,然而发明人又研究发现,virtio技术支持块设备、网络设备等设备类型,这类设备的驱动程序对操作系统暴露的是块设备、网络设备等设备类型的接口,如果应用基于io_uring技术访问虚拟化设备时,需要先将访问请求转换为外部设备的设备类型对应的请求,再将设备类型对应的请求转换成vring中的元素,仍然需要进行请求映射和内存拷贝,从而增加了访问延迟,降低了访问效率。发明人又经过进一步思考发现,io_uring技术及virtio技术均使用了用以进行共享的队列,基于此发现,可以在计算机系统中创建计算设备对应的设备驱动,设备驱运行在内核空间,内核空间与用户空间共享在目标内存中的缓冲队列;计算设备虚拟化获得的虚拟化设备与设备驱动共享虚拟化队列,因此,一些实施例中,用户空间与内核空间共享在目标内存中的缓冲队列,计算设备对应有在内核空间运行的设备驱动;计算设备虚拟化获得虚拟化设备;虚拟化设备与设备驱动共享虚拟化队列;则将访问请求信息及缓存地址发送至计算设备可以包括:
将访问请求信息以及缓存地址提交至缓冲队列中,由设备驱动从缓冲队列中获取访问请求信息以及缓存地址,并将访问请求信息以及缓存地址映射至虚拟化队列中;虚拟化设备用于从虚拟化队列中获取访问请求信息以及缓存地址并发送至计算设备。
在一个实现方式中,内核空间和用户空间可以是指计算机系统创建的虚拟机的内核空间和用户空间,当然,内核空间和用户空间也可以是指计算机系统的物理主机所提供的内核空间和用户空间等。
在一个实现方式中,在虚拟机提供内核空间和用户空间的情况下,一个计算设备可以结合实际需求,虚拟化生成多个虚拟化设备,并对应不同设备驱动,以支持与多个虚拟机中的缓存节点的通信等。
其中,内核空间和用户空间可以是基于io_uring技术实现访问。设备驱动、虚拟化设备及虚拟化队列可以是基于virtio技术创建。
此外,本申请实施例的技术方案可以应用于云计算场景,计算机系统为云计算系统提供的硬件设备,所创建的虚拟机可以例如可以作为云服务器等,虚拟机中可以运行用于执行不同处理操作的一个或多个应用等,也可以是云应用等。上述实施例通过缓冲队列与虚拟化队列之间的映射,只需进行一次请求映射,避免了多级请求映射和内存拷贝,即可以实现第一缓存节点对计算设备的访问,提高了访问效率。
一些实施例中,虚拟化设备可以将计算设备的计算结果提交至虚拟化队列中,设备驱动可以从虚拟化队列中获取计算结果,并将计算结果映射至缓冲队列中;
则从目标内存中获取计算结果可以是:从缓冲队列中获得计算结果。
一些实施例中,为了进一步提高访问效率,设备驱动可以保持访问请求信息中的操作地址不变,将访问请求信息映射至虚拟化队列中。
也即缓冲队列以及虚拟化队列对应该访问请求信息的操作地址不变,该操作地址指向目标内存的一内存空间,从而外部设备可以直接访问目标内存,无需进行内存拷贝,即可以实现请求信息的处理。
一些实施例中,缓冲队列以及虚拟化队列可以分别包括两个队列,缓冲队列包括第一队列及第二队列;虚拟化队列包括第三队列以及第四队列;计算结果可以具体提交至第四队列中;第一缓存节点可以是将访问请求信息提交至第一队列中,设备驱动从第一队列中获取该访问请求信息。
设备驱动将访问请求信息映射至虚拟化队列中可以是将访问请求信息映射至第三队列中。
设备驱动从虚拟化队列中获取响应结果可以是从第四队列中获取计算结果。
设备驱动将计算结果映射至缓冲队列中可以是将计算结果映射至第二队列中。
第一队列以及第三队列存放执行操作的数据,第二队列以及第四队列存放完成操作返回的结果等。具体的,第一队列用于第一缓存节点写入以及设备驱动读取;而第二队列用于设备驱动写入以及第一缓存节点读取;第三队列用于设备驱动写入以及虚拟化设备读取,而第四队列用于虚拟化设备写入以及设备驱动读取。
在实际应用中,缓冲队列可以是基于io_uring技术实现,其对应的第一队列可以为SQ,第二队列为CQ;虚拟化队列可以是基于virtio技术实现,其对应的第三队列可以为Available Ring,第四队列可以是Used Ring。
SQ、CQ、Available Ring、以及Used Ring可以均为环形队列,从队尾出队,从队头入队,例如第一缓存节点基于访问请求信息可以生成SQE,并添加至SQ的队尾,设备驱动从SQ的队头获取SQE,以获得访问请求信息;设备驱动基于响应结果生成CQE并添加至CQ的队尾,目标应用从CQ的头部获取CQE,以获得计算结果等。
其中,SQE可以包括访问操作数据以及计算信息等,因此,缓冲队列还可以包括数组,用以保存访问操作数据以及计算信息,或者保存访问操作数据以及计算信息的指针等,SQE可以保存指向该数组的索引信息等。此外,基于io_uring技术标准,SQE的数据结构可以包括多个字段信息,例如可以包括opcode字段用于保存操作码,flags字段用于保存标志位集合、fd字段用于保存文件描述符、addr字段用于保存访问操作数据及计算信息或者指向数组的索引信息等、user_data字段用于保存用户数据等,当然,本申请对SQE的具体数据结构不进行限定。
其中,该数组可以是iov(i/o Virtualization,i/o虚拟化)数组,当然本申请对此并不进行限定。数组保存指针情况下,数组中的每个条目指向保存访问操作数据及计算信息的内存空间,为了便于理解,参见图3的SQE示意图中,SQE的addr字段可以指向iov数组,iov数组的每个条目保存指针,可以指向保存不同信息的内存空间,例如:IOV[0]指向的内存空间可以保存如下一些信息:Sub_op:表示计算信息,如算子;Parameter_iov_num:表示算子所需要的参数对应的iov条目数目;Buffer_iov_num:表示算子所对应的内存空间对应的iov条目数目;Cache_iov_num:表示算子所对应的本地缓存所对应的iov条目数目;IOV[1]~[2],两个iov条目指向的内存空间中保存算子所需参数(Parameter)等,IOV[3]指向的内存空间的相关信息(date buffer),如操作地址;IOV[4]指向的内存空间用于保存本地缓存的相关描述信息,如缓存类型(MEM、PMEM、NVMe硬盘)、缓存地址等。
当然,结合实际应用情况,在无需一些信息的情况下,iov数组中的相应条目可以为空。需要说明的是,此处仅是举例说明iov数组的实现情况,不应作为对本申请的限定。
iov数组对应的数组信息即可以从缓冲队列映射至虚拟化队列中,可选地,可以仅是将SQE中的addr字段的索引信息映射至虚拟化队列中,从而通过虚拟化队列中映射的索引信息可以索引至iov数组从而获得访问操作数据,当然,也可以是将iov数组对应的访问操作数据映射至虚拟化队列中,从而可以直接从虚拟化队列中获得该访问操作数据,本申请对此不进行限定。
其中,CQE用于存放执行结果,如成功或失败等对应的返回值,基于io_uring技术标准,CQE其可以由user_data字段、flags字段以及存储计算结果的res字段构成等,本申请对此不进行限定。
其中,Available Ring用于存放待处理的操作地址或者操作地址的索引信息,操作地址可以存在描述符数组中(Descriptor Table),该操作地址可以指向一内存空间,因此Available Ring在的每一个条目指向一内存空间。基于virtio技术标准,DescriptorTable的每个描述符的数据结构可以包括addr字段用于保存操作地址,len字段用于保存对应内存空间的长度信息、flags字段用于保存控制信息以及next字段用于保存下一个描述符标识等。Available Ring中每个条目的数据结构例如可以包括控制信息flags,下一个描述符标识,以及当前描述符标识等,当然本申请对此不进行限定。
Used Ring用于存放已处理完成的操作地址或者操作地址的索引信息等。基于virtio技术标准,Used Ring中每个条目的数据结构相较于Available Ring,还可以包括len字段用于保存内存长度等,当然本申请对此不进行限定。
基于io_uring技术,第一缓存节点可以具体是利用io_uring接口将访问请求信息提交至缓冲队列中。io_uring接口为io_uring技术实现的系统调用接口,从而实现对缓冲队列的读写。
一些实施例中,设备驱动可以按照虚拟化队列对应的第一格式要求,将访问请求信息进行格式转换,并将提交至虚拟化队列中;按照缓冲队列对应的第二格式要求,将计算结果进行格式转换并提交至缓冲队列中。
第一格式要求规定了虚拟化队列中每个条目的数据结构,从而据此可以将访问请求信息进行格式转换,第二格式要求规定了缓冲队列中每个条目的数据结构,从而据此可以将计算结果进行格式转换。
其中,可以预先配置格式对应关系,也即缓冲队列中每个条目包含的字段与虚拟化队列中每个条目包含的字段的对应关系,从而即可以实现映射,该对应关系可以结合实际需求进行设定,本申请对此不进行具体限定。
由上文描述可知,计算节点发出的访问指令可以分为数据读指令以及数据写指令。一些实施例中,确定访问请求对应本地缓存的缓存地址可以包括:
在访问指令为数据读指令的情况下,确定请求访问的目标数据是否位于本地缓存中;在请求访问的目标数据位于本地缓存中时,确定目标数据在本地缓存中的缓存地址。
其中,一些实施例中,确定请求访问的目标数据是否位于本地缓存中可以包括:查询元数据信息以确定请求访问的目标数据是否位于本地缓存中。
其中,可以是查询本地保存的元数据信息,或者在分布式文件系统场景下,还可以是从控制节点中查询元数据信息。
元数据信息中可以保存不同数据在本地缓存中的缓存地址等信息。
一些实施例中,访问请求信息中可以包括第一缓存节点对应的目标内存的操作地址,计算设备用于将对目标数据进行计算处理获得的结果数据写入目标内存;则该方法还可以包括:从目标内存获得结果数据,并可以结果数据反馈给计算节点。
为了便于理解该数据读取流程,如图4a所示的交互示意图中,计算节点向第一缓存节点发送访问指令11,访问指令中可以包括数据计算所用算子;第一缓存节点402可以基于请求访问的目标数据的数据标识等,查询元数据信息12,确定本地缓存中是否保存该目标数据,并获得目标数据在本地缓存中的缓存地址13等。其中,目标数据可能命中多个数据块,该多个数据块分别对应的缓存地址可以列表形式发送至第一缓存节点402,具体可以是以scatter-gather list(简称SGL,分散聚集列表,一种数据组织形式)发送。
第一缓存节点可以将算子、缓存地址及第一缓存节点402对应的目标内存403的操作地址等发送至计算设备14。
计算设备从本地缓存中读取目标数据15,并按照算子对目标数据进行计算处理获得结果数据,之后可以将结果数据发送至目标内存16。
计算设备可以向第一缓存节点通知该计算结果17;第一缓存节点获得计算结果之后,可以向计算节点通知该计算结果18,还可以从目标内存获取结果数据并反馈给计算节点。
一些实施例中,本地缓存中可能未存储该目标数据,因此该方法还可以包括:
在请求访问的目标数据未在本地缓存中时,确定在本地缓存中为目标数据分配的存储空间;从存储系统或者第二缓存节点中读取目标数据;将目标数据写入存储空间;将存储空间对应的缓存地址作为目标数据在本地缓存中的缓存地址。
在本地缓存中可能未该目标数据情况下,可以首先在本地缓存中为目标数据分配对应的存储空间,可以从存储系统读取该目标数据并存入该存储空间,在分布式文件系统实现场景下,也可以从存储有该目标数据的第二缓存节点中读取该目标数据。该存储空间对应的缓存地址,也即为目标数据在本地缓存中的缓存地址。
一些实施例中,由上文描述可知,确定请求访问的目标数据是否位于本地缓存中可以包括:查询元数据信息以确定请求访问的目标数据是否位于本地缓存;
则将目标数据写入存储空间之后,该方法还可以包括:基于缓存地址以及目标数据,更新元数据信息。
为了便于理解,如图4b中所示的数据读取流程的交互示意图中,计算节点向第一缓存节点发送访问指令21,访问指令中可以包括数据计算所用算子;第一缓存节点查询元数据信息22,确定本地缓存中未保存该目标数据,则可以为目标数据分配对应的存储空间23。第一缓存节点向存储系统或第二缓存节点发送读取请求24,以读取该目标数据25,之后可以将目标数据存入本地缓存26。该存储空间对应的缓存地址即为目标数据在本地缓存中的缓存地址。
第一缓存节点可以将算子、缓存地址及第一缓存节点对应的目标内存的操作地址等发送至计算设27。
计算设备从本地缓存中读取目标数据28,并按照算子对目标数据进行计算处理获得结果数据,之后可以将结果数据发送至目标内存29。
计算设备可以向第一缓存节点通知该计算结果30;第一缓存节点获得计算结果之后,可以将计算结果通知计算节点,还可以从目标内存获取结果数据并反馈给计算节点。
一些实施例中,确定访问请求对应的本地缓存的缓存地址可以包括:
在访问指令为数据写指令的情况下,确定在本地缓存中为目标数据分配的存储空间;将存储空间的缓存地址作为访问请求对应的缓存地址。
一些实施例中,该方法还可以包括:将计算节点请求写入的目标数据保存至第一缓存节点对应的目标内存;访问请求信息中包括目标数据在目标内存中的操作地址;计算设备用于基于操作地址从目标内存中获取目标数据,并基于缓存地址,将对目标数据进行计算处理获得的结果数据写入存储空间。
一些实施例中,该方法还可以包括:根据目标数据以及缓存地址,更新元数据信息;元数据信息用于查询本地缓存中是否保存目标数据。
一些实施例中,该方法还可以包括:在访问请求为数据写请求的情况下,为请求写入的目标数据进行加锁;在目标数据写入成功的情况下,对目标数据进行解锁。
其中,为请求写入的目标数据进行加锁可以是为目标数据写入的文件进行加锁。通过加锁设置可以避免发生数据不一致的情况,确定操作完成之前其它节点不对文件进行写操作等。
其中,为请求写入的目标数据进行加锁,例如可以是在元数据信息中设置锁标识等,在访问请求为数据写请求的情况下,可以首先查询元数据信息中该目标数据是否设置锁标识,若是,则可以结束流程,若否再为请求写入的目标数据进行加锁。
一些实施例中,该方法还可以包括:将本地缓存中存储的结果数据同步至存储系统。
为了便于理解,如图4c中所示的数据写入流程的交互示意图中,计算节点向第一缓存节点发送访问指令31,访问指令中可以包括数据计算所用算子;第一缓存节点可以查询元数据信息32,为请求写入的目标数据进行加锁,并分配对应的存储空间33。
第一缓存节点可以将算子、存储空间的缓存地址及第一缓存节点对应的目标内存的操作地址等发送至计算设备34。
计算设备从目标内存中获取目标数据,并按照算子对目标数据进行计算处理获得结果数据35;计算设备将结果数据写入本地缓存的存储空间中36。
计算设备可以向第一缓存节点通知该计算结果37。第一缓存节点获得计算结果之后,可以更新元数据信息38,并可以将计算结果反馈给计算节点39。
此外,如果需要执行同步操作,第一缓存节点可以将本地缓存写入的结果数据同步至存储系统40。
此外,作为又一个实施例,在访问指令为数据写指令的情况下,可以将计算节点请求写入的目标数据保存至存储系统。也即可以直接将目标数据写入后端的存储系统,支持数据写透。
上述一个或多个实施例中,计算设备可以直接访问本地缓存,对于本地缓存为MEM或PMEM,计算设备可以通过PCle通道访问本地缓存,对于NVMe硬盘,计算设备可以采用P2P(peer to peer点对点)通道访问本地缓存等,因此,计算设备可以无需经由文件系统,可以实现对数据直接管理。
本申请实施例中,通过第一缓存节点可以直接解析元数据信息,实现对计算设备的访问,使得第一缓存节点可以利用计算设备的计算能力进行数据在线计算,实现随路计算目的,提高处理效率。
此外,本申请实施例中,计算设备可以对第一缓存节点中作为本地缓存的MEM、PMEM和NVMe硬盘等各种存储介质进行访问,需要处理的目标数据可以分布在多个存储介质上,提高了扩展能力。
本申请实施例中,通过定义面向计算节点的预定义接口,为计算节点使用计算设备进行随路计算提供了支持。
本申请实施例中,在计算设备虚拟化为虚拟化设备的情况下,算子、缓存地址以及操作地址等操作信息可以由设备驱动直接发送至计算设备,不触碰操作信息,可以由计算设备决定具体执行的类型等,因此,对计算设备的能力进行扩展时,可以保持针对预定义接口的统一。
一个实际应用中,第一缓存节点可以运行在虚拟机的用户空间,计算设备对应有在虚拟机的内核空间运行的设备驱动;用户空间与内核空间共享在目标内存中的缓冲队列,计算设备虚拟化获得虚拟化设备;虚拟化设备与设备驱动共享虚拟化队列;以基于io_uring技术和virtio技术实现本申请技术方案为例,参见图5中所示的交互示意图中,计算节点可以通过预定义接口向虚拟机(VM)发送访问指令,虚拟机(VM)的用户空间运行的第一缓存节点基于访问指令,查询元数据信息,生成访问请求信息,并确定对应本地缓存的缓存地址,之后可以调用io_uring接口将访问请求信息以及缓存地址等提交至预先在VM的内核空间注册的目标内存中的缓冲队列io_uring中,其中,缓存队列可以包括SQ以及CQ,问请求信息以及缓存地址等具体提交至SQ中,运行在内核空间的设备驱动作为内核程序可以访问该缓冲队列,并从中获得访问请求信息和缓存地址等,之后设备驱动可以通过格式转换,并保持对应目标内存中的操作地址不变,将访问请求信息和缓存地址等从SQ中映射至虚拟化队列vring中,映射示意图可以如图6中所示。虚拟化设备,也即virtio设备可即可以从虚拟化队列中获得访问请求信息和缓存地址,并由计算设备基于缓存地址,访问本地缓存以响应访问请求信息并按照计算信息对请求访问的目标数据进行计算处理。
virtio设备还可以将响应结果提交至虚拟化队列中,设备驱动即可以从虚拟化队列中获取该响应结果,并将其映射至缓冲队列,具体可以映射至CQ中,目标应用可以从缓冲队列,也即CQ中获得响应结果。
其中,计算设备可以通过P2P通道访问作为本地缓存的NVMe硬盘,以及通过PCLe通道访问作为本地缓存的MEN或PMEM。
其中,io_uring作为VM上用户空间和内核空间之间的界面,SQ/CQ对的个数可以由软件决定,可以选择任一个SQ/CQ进行写入等;内核空间的设备驱动将io-uring的SQE/CQE映射到vring上,vring的数量可以结合CPU核数确定等;
虚拟化设备可以以标准的PCIe或者MMIO(Memory-mapped I/O,内存映射I/O)等设备形式存在,负责对应的处理。
io_uring中使用的目标内存可以在内核空间中提前进行注册,设备驱动负责io_uring和vring之间格式的转换,但是不会修改操作地址,从而虚拟化设备可以直接访问目标内存来进行处理,避免数据的多次内存拷贝。
图7为本申请实施例提供的一种数据处理方法又一个实施例的流程图,本实施例可以由计算设备执行,从计算设备执行角度进行方案描述,需要说明的是,计算设备所执行的相关操作在上述一个或多个实施例中已经进行了详细阐述,此处将不再赘述。其中计算设备配置于计算机系统中,计算机系统运行第一缓存节点,该方法可以包括以下几个步骤:
701:获取第一缓存节点发送的访问请求信息以及缓存地址。
其中,访问请求信息中包括计算信息;访问请求信息基于计算节点发送的访问指令而生成。
其中,该访问请求信息以及缓存地址可以是经由计算设备虚拟化获得的虚拟化设备以及对应的设备驱动而获得。
702:基于缓存地址,访问计算机系统的本地缓存。
703:响应访问请求信息,并按照计算信息对请求访问的目标数据进行计算处理。
一些实施例中,访问请求信息中可以包括操作地址;响应访问请求信息,并按照计算信息对请求访问的目标数据进行计算处理可以包括:
在访问指令为数据读指令的情况下,基于缓存地址,从本地缓存中获取对应的目标数据;
按照计算信息对目标数据进行计算处理,获得结果数据;
将结果数据存储至操作地址对应的目标内存;第一缓存节点用于从目标内存获取结果数据。
一些实施例中,访问请求信息中可以包括操作地址;响应访问请求信息,并按照计算信息对请求访问的目标数据进行计算处理可以包括:
在访问指令为数据写指令的情况下,从操作地址中获取请求写入的目标数据;
按照计算信息对目标数据进行计算处理,获得结果数据;
按照缓存地址,将结果数据写入本地缓存中。
图8为本申请实施例提供的一种数据处理装置一个实施例的结构示意图,该装置可以实现为第一缓存节点,第一缓存节点运行在计算机系统中,计算机系统部署计算设备;该装置可以包括:
信息生成模块801,用于基于计算节点发送的访问指令,生成访问请求信息;访问请求信息中包括计算信息;
地址确定模块802,用于确定访问请求信息对应本地缓存的缓存地址;
信息发送模块803,用于将访问请求信息及缓存地址发送至计算设备,以供计算设备基于缓存地址,访问本地缓存以响应访问请求信息并按照计算信息对请求访问的目标数据进行计算处理。
一些实施例中,访问请求信息包括第一缓存节点的目标内存对应的操作地址;计算设备还用于基于操作地址,将目标数据对应的计算结果写入目标内存;该装置还可以包括:结果获取模块,用于从目标内存中获取计算结果。
一些实施例中,第一缓存节点运行在用户空间,用户空间与内核空间共享在目标内存中的缓冲队列,计算设备对应有在内核空间运行的设备驱动;计算设备虚拟化获得虚拟化设备;虚拟化设备与设备驱动共享虚拟化队列;
该信息发送模块可以具体是将访问请求信息以及缓存地址提交至缓冲队列中,由设备驱动从缓冲队列中获取访问请求信息以及缓存地址,并将访问请求信息以及缓存地址映射至虚拟化队列中;虚拟化设备用于从虚拟化队列中获取访问请求信息以及缓存地址并发送至计算设备。一些实施例中,地址确定模块可以具体是在访问指令为数据读指令的情况下,确定请求访问的目标数据是否位于本地缓存中;在请求访问的目标数据位于本地缓存中时,确定目标数据在本地缓存中的缓存地址。
一些实施例中,该地址确定模块还用于在请求访问的目标数据未在本地缓存中时,确定在本地缓存中为目标数据分配的存储空间;从存储系统或者第二缓存节点中读取目标数据;将目标数据写入存储空间;将存储空间对应的缓存地址作为目标数据在本地缓存中的缓存地址。
一些实施例中,访问请求信息中包括第一缓存节点对应的目标内存的操作地址,计算设备用于将对目标数据进行计算处理获得的结果数据写入目标内存;
该装置还可以包括:数据获取模块,用于从目标内存获得结果数据。
一些实施例中,地址确定模块确定请求访问的目标数据是否位于本地缓存中包括:查询元数据信息以确定请求访问的目标数据是否位于本地缓存;
该装置还可以包括:元数据更新模块,用于基于缓存地址以及目标数据,更新元数据信息。
一些实施例中,地址确定模块可以具体是在访问指令为数据写指令的情况下,确定在本地缓存中为目标数据分配的存储空间;将存储空间的缓存地址作为访问请求对应的缓存地址。可以是查询元数据信息以在本地缓存中分配的存储空间。
一些实施例中,信息生成模块还用于将计算节点请求写入的目标数据保存至第一缓存节点对应的目标内存;访问请求信息中包括目标数据在目标内存中的操作地址;计算设备用于基于操作地址从目标内存中获取目标数据,并基于缓存地址,将对目标数据进行计算处理获得的结果数据写入存储空间。
一些实施例中,该装置还可以包括:元数据更新模块,用于基于缓存地址以及目标数据,更新元数据信息。元数据信息用于查询本地缓存中是否保存目标数据。
一些实施例中,地址确定模块还用于在访问指令为数据写指令的情况下,为请求写入的目标数据进行加锁;在目标数据写入成功的情况下,对目标数据进行解锁。
一些实施例中,该装置还可以包括:同步操作,用于将本地缓存中存储的结果数据同步至存储系统。
一些实施例中,该装置还可以包括:数据透传模块,用于在访问指令为数据写指令的情况下,将计算节点请求写入的目标数据保存至存储系统。
图8所述的数据处理装置可以执行图2所示实施例所述的数据处理方法,其实现原理和技术效果不再赘述。对于上述实施例中的数据处理装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图9为本申请实施例提供的一种数据处理装置又一个实施例的结构示意图,该装置可以实现为计算设备或者计算设备虚拟化获得的虚拟化设备,计算设备配置于计算机系统中,计算机系统运行第一缓存节点,该装置包括:
信息获取模块901,用于获取第一缓存节点发送的访问请求信息以及缓存地址;访问请求信息中包括计算信息;访问请求信息基于计算节点发送的访问指令而生成;
响应模块902,用于基于缓存地址,访问计算机系统的本地缓存;响应访问请求信息,并按照计算信息对请求访问的目标数据进行计算处理。
一些实施例中,该响应模块可以具体是在访问指令为数据读指令的情况下,基于缓存地址,从本地缓存中获取对应的目标数据;按照计算信息对目标数据进行计算处理,获得结果数据;将结果数据存储至操作地址对应的目标内存;第一缓存节点用于从目标内存获取结果数据。
一些实施例中,该响应模块可以具体是在访问指令为数据写指令的情况下,从操作地址中获取请求写入的目标数据;按照计算信息对目标数据进行计算处理,获得结果数据;按照缓存地址,将结果数据写入本地缓存中。
图9所述的数据处理装置可以执行图7所示实施例所述的数据处理方法,其实现原理和技术效果不再赘述。对于上述实施例中的数据处理装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例还提供了一种计算设备,如图10所示,该计算设备可以包括存储组件1001以及处理组件1002;存储组件一条或多条计算机指令,其中,一条或多条计算机指令供处理组件调用执行,以实现如图7所述的数据处理方法。
其中,该计算设备可以采用专用集成电路(ASIC)、或现场可编程门阵列(FPGA)实现,当然,也可以采用数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、控制器、微控制器、微处理器或其他形式的集成电路(IC)等实现,本申请对此不进行限定。
本申请实施例还提供了一种计算机系统,如图11所示,计算机系统可以包括存储组件1101以及处理组件1102;其中,存储组件1101可以包括作为本地缓存的一个或多个存储介质,如MEN、PMEM、NVMe硬盘等。
该处理组件1102可以通过I/O接口连接计算设备1103,该计算设备1103的具体实现可以参见图10所示。
存储组件1101中可以存储一条或多条计算机指令,其中,一条或多条计算机指令供处理组件1102调用执行以运行第一缓存节点,执行如图2所述的数据处理方法。
此外,处理组件1102还可以用于运行虚拟机以及虚拟机监视器,并具体在虚拟机的用户空间运行第一缓存节点,以及在虚拟机的内核空间运行设备驱动,以及在虚拟机监视器中运行计算设备的虚拟化设备。
当然,计算机系统必然还可以包括其他部件,例如通信组件等。通信组件被配置为便于计算设备和其他设备之间有线或无线方式的通信等。
其中,上述实施例中所涉及的处理组件可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
上述实施例中所涉及的存储组件被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
需要说明的是,上述计算机系统其可以为物理设备或者云计算平台提供的弹性计算主机等。其可以实现成多个服务器或终端设备组成的分布式集群,也可以实现成单个服务器或单个终端设备。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被计算机执行时可以实现上述图2或图7所示实施例的数据处理方法。该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
本申请实施例还提供了一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,计算机程序被计算机执行时可以实现如上述图2或图7所示实施例的数据处理方法。在这样的实施例中,计算机程序可以是从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被处理器执行时,执行本申请的系统中限定的各种功能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (14)
1.一种数据处理方法,其特征在于,应用于第一缓存节点,所述第一缓存节点运行在计算机系统中,所述计算机系统中部署有计算设备;所述方法包括:
基于计算节点发送的访问指令,生成访问请求信息;所述访问请求信息中包括计算信息;
确定所述访问请求信息对应本地缓存的缓存地址;
将所述访问请求信息及所述缓存地址发送至所述计算设备,以供所述计算设备基于所述缓存地址,访问所述本地缓存以响应所述访问请求信息并按照所述计算信息对请求访问的目标数据进行计算处理。
2.根据权利要求1所述的方法,其特征在于,所述访问请求信息包括所述第一缓存节点的目标内存对应的操作地址;所述计算设备还用于基于所述操作地址,将所述目标数据对应的计算结果写入所述目标内存;
所述方法还包括:
从所述目标内存中获取所述计算结果。
3.根据权利要求1所述的方法,其特征在于,所述第一缓存节点运行在用户空间,所述用户空间与内核空间共享在目标内存中的缓冲队列,所述计算设备对应有在所述内核空间运行的设备驱动;所述计算设备虚拟化获得虚拟化设备;所述虚拟化设备与所述设备驱动共享虚拟化队列;
所述将所述访问请求信息及所述缓存地址发送至所述计算设备包括:
将所述访问请求信息以及所述缓存地址提交至所述缓冲队列中,由所述设备驱动从所述缓冲队列中获取所述访问请求信息以及所述缓存地址,并将所述访问请求信息以及所述缓存地址映射至所述虚拟化队列中;所述虚拟化设备用于从所述虚拟化队列中获取所述访问请求信息以及所述缓存地址并发送至所述计算设备。
4.根据权利要求1所述的方法,其特征在于,所述确定所述访问请求对应本地缓存的缓存地址包括:
在所述访问指令为数据读指令的情况下,确定请求访问的目标数据是否位于本地缓存中;
在请求访问的目标数据位于本地缓存中时,确定所述目标数据在所述本地缓存中的缓存地址。
5.根据权利要求4所述的方法,其特征在于,还包括:
在请求访问的目标数据未在本地缓存中时,确定在所述本地缓存中为所述目标数据分配的存储空间;
从存储系统或者第二缓存节点中读取所述目标数据;
将所述目标数据写入所述存储空间;
将所述存储空间对应的缓存地址作为所述目标数据在所述本地缓存中的缓存地址。
6.根据权利要求5所述的方法,其特征在于,确定请求访问的目标数据是否位于本地缓存中包括:
查询元数据信息以确定请求访问的目标数据是否位于本地缓存;
所述将所述目标数据写入所述存储空间之后,所述方法还包括:
基于所述缓存地址以及所述目标数据,更新所述元数据信息。
7.根据权利要求1所述的方法,其特征在于,所述确定所述访问请求对应的本地缓存的缓存地址包括:
在所述访问指令为数据写指令的情况下,确定在本地缓存中为所述目标数据分配的存储空间;
将所述存储空间的缓存地址作为所述访问请求对应的缓存地址。
8.根据权利要求7所述的方法,其特征在于,还包括:
将所述计算节点请求写入的目标数据保存至所述第一缓存节点对应的目标内存;所述访问请求信息中包括所述目标数据在所述目标内存中的操作地址;所述计算设备用于基于所述操作地址从所述目标内存中获取所述目标数据,并基于所述缓存地址,将对所述目标数据进行计算处理获得的结果数据写入所述存储空间。
9.根据权利要求1所述的方法,其特征在于,所述基于计算节点发送的访问指令,生成访问请求信息包括:
判断计算节点是否利用预定义接口发送的访问指令;
若是,基于所述访问指令,生成访问请求信息。
10.一种数据处理方法,其特征在于,应用于计算设备,所述计算设备配置于计算机系统中,所述计算机系统运行第一缓存节点,所述方法包括:
获取所述第一缓存节点发送的访问请求信息以及缓存地址;所述访问请求信息中包括计算信息;所述访问请求信息基于计算节点发送的访问指令而生成;
基于所述缓存地址,访问所述计算机系统的本地缓存;
响应所述访问请求信息,并按照所述计算信息对请求访问的目标数据进行计算处理。
11.根据权利要求10所述的方法,其特征在于,所述访问请求信息中包括目标内存的操作地址;所述响应所述访问请求信息,并按照所述计算信息对请求访问的目标数据进行计算处理包括:
在所述访问指令为数据读指令的情况下,基于所述缓存地址,从本地缓存中获取对应的目标数据;
按照所述计算信息对所述目标数据进行计算处理,获得结果数据;
将所述结果数据存储至所述操作地址对应的所述目标内存;所述第一缓存节点用于从所述目标内存获取所述结果数据。
12.根据权利要求10所述的方法,其特征在于,所述访问请求信息中包括目标内存的操作地址;所述响应所述访问请求信息,并按照所述计算信息对请求访问的目标数据进行计算处理包括:
在所述访问指令为数据写指令的情况下,从所述操作地址中获取请求写入的目标数据;
按照所述计算信息对所述目标数据进行计算处理,获得结果数据;
按照所述缓存地址,将所述结果数据写入本地缓存中。
13.一种计算设备,其特征在于,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,以实现如权利要求10~12任一项所述的数据处理方法。
14.一种计算机系统,其特征在于,包括处理组件以及存储组件;所述处理组件用以连接计算设备;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行以运行第一缓存节点,执行如权利要求1~9任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211505876.2A CN115933975A (zh) | 2022-11-28 | 2022-11-28 | 数据处理方法、计算设备及计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211505876.2A CN115933975A (zh) | 2022-11-28 | 2022-11-28 | 数据处理方法、计算设备及计算机系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115933975A true CN115933975A (zh) | 2023-04-07 |
Family
ID=86700059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211505876.2A Pending CN115933975A (zh) | 2022-11-28 | 2022-11-28 | 数据处理方法、计算设备及计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115933975A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117041343A (zh) * | 2023-07-05 | 2023-11-10 | 中关村科学城城市大脑股份有限公司 | 请求处理方法、装置、电子设备和计算机可读介质 |
CN117591038A (zh) * | 2024-01-18 | 2024-02-23 | 济南浪潮数据技术有限公司 | 一种数据访问方法、装置、分布式存储系统及设备和介质 |
-
2022
- 2022-11-28 CN CN202211505876.2A patent/CN115933975A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117041343A (zh) * | 2023-07-05 | 2023-11-10 | 中关村科学城城市大脑股份有限公司 | 请求处理方法、装置、电子设备和计算机可读介质 |
CN117041343B (zh) * | 2023-07-05 | 2024-02-23 | 中关村科学城城市大脑股份有限公司 | 请求处理方法、装置、电子设备和计算机可读介质 |
CN117591038A (zh) * | 2024-01-18 | 2024-02-23 | 济南浪潮数据技术有限公司 | 一种数据访问方法、装置、分布式存储系统及设备和介质 |
CN117591038B (zh) * | 2024-01-18 | 2024-06-11 | 济南浪潮数据技术有限公司 | 一种数据访问方法、装置、分布式存储系统及设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11099917B2 (en) | Efficient state maintenance for execution environments in an on-demand code execution system | |
Peter et al. | Arrakis: The operating system is the control plane | |
Zhang et al. | {FlashShare}: Punching Through Server Storage Stack from Kernel to Firmware for {Ultra-Low} Latency {SSDs} | |
US7552298B2 (en) | Method and system for deferred pinning of host memory for stateful network interfaces | |
JP2019023915A (ja) | 要求処理技術 | |
US11093148B1 (en) | Accelerated volumes | |
US9854036B2 (en) | Method for migrating memory data of virtual machine, and related apparatus and cluster system | |
US9390014B2 (en) | Synchronizing updates of page table status indicators and performing bulk operations | |
EP2879053B1 (en) | Virtual machine memory data migration method, related apparatus, and cluster system | |
CN115933975A (zh) | 数据处理方法、计算设备及计算机系统 | |
US10324754B2 (en) | Managing virtual machine patterns | |
US10430378B1 (en) | Fast container distribution with storage acceleration | |
CN109634718B (zh) | 云平台创建镜像的方法及系统 | |
US11048447B2 (en) | Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host CPU and the host CPU transfers object map identifying object of the data | |
US11016817B2 (en) | Multi root I/O virtualization system | |
US11297141B2 (en) | Filesystem I/O scheduler | |
US20140325163A1 (en) | Cross-Partition Shared Memory Attach for Data Processing Environment | |
CN108062239B (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN107949828B (zh) | 用于将应用中的机器代码的执行动态地迁移至虚拟机的方法和装置 | |
CN115757221A (zh) | 访问方法及计算机系统 | |
US10768964B2 (en) | Virtual machine messaging | |
US20200319944A1 (en) | User-space parallel access channel for traditional filesystem using capi technology | |
US20230054696A1 (en) | User-level services for multitenant isolation | |
US11748136B2 (en) | Event notification support for nested virtual machines | |
US11604669B2 (en) | Single use execution environment for on-demand code execution |
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 |