CN117687738A - 一种缓存控制方法、装置和计算机设备 - Google Patents
一种缓存控制方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN117687738A CN117687738A CN202211079656.8A CN202211079656A CN117687738A CN 117687738 A CN117687738 A CN 117687738A CN 202211079656 A CN202211079656 A CN 202211079656A CN 117687738 A CN117687738 A CN 117687738A
- Authority
- CN
- China
- Prior art keywords
- cache
- control logic
- data
- cache control
- computing node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000012545 processing Methods 0.000 claims abstract description 48
- 230000008569 process Effects 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 28
- 230000008030 elimination Effects 0.000 claims description 18
- 238000003379 elimination reaction Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 14
- 238000013473 artificial intelligence Methods 0.000 claims description 10
- 230000009286 beneficial effect Effects 0.000 abstract description 4
- 238000013461 design Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 16
- 238000007726 management method Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000000926 separation method Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000001680 brushing effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- VQLYBLABXAHUDN-UHFFFAOYSA-N bis(4-fluorophenyl)-methyl-(1,2,4-triazol-1-ylmethyl)silane;methyl n-(1h-benzimidazol-2-yl)carbamate Chemical compound C1=CC=C2NC(NC(=O)OC)=NC2=C1.C=1C=C(F)C=CC=1[Si](C=1C=CC(F)=CC=1)(C)CN1C=NC=N1 VQLYBLABXAHUDN-UHFFFAOYSA-N 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种缓存控制方法、装置和计算机设备,涉及数据处理计算领域。该方法可以包括:计算节点在内核态获取缓存访问请求,所述缓存访问请求指示对待处理数据的缓存需求;所述计算节点在所述内核态对所述缓存访问请求进行处理时,调用所述缓存访问请求关联的缓存控制逻辑的机器指令,并在运行所述缓存控制逻辑的机器指令时,与所述计算节点的后端存储节点交互,以从所述后端存储节点读取所述待处理数据,或者向所述后端存储节点写入所述待处理数据的镜像数据。该方法有助于计算节点根据业务实现缓存控制逻辑的实时、快速的切换,尽量满足极致性能的目标。
Description
技术领域
本申请涉及数据处理技术领域,特别涉及一种缓存控制方法、装置和计算机设备。
背景技术
数据处理单元(data processing unit,DPU)是最新发展起来的专用处理器的一个大类,是继中央处理器(central processing unit,CPU)、图形处理器(graphicsprocessing unit,GPU)之后,数据中心场景中的第三颗重要的算力芯片,能够为高带宽、低延迟、数据密集的计算场景提供计算引擎。随着DPU的快速发展,目前业界广泛采用DPU卸载来降低算力消耗和在数据路径上进行IO随路加速,从而,DPU加速系统从“以CPU为中心”向“以数据为中心”的演进。
例如,在一些设计中,通过虚拟机卸载到DPU直通盘框的方式,来卸载主机的文件系统客户端以及为主机提供第四代扩展文件系统(Fourth extended file system,EXT4)卸载,可以节省主机侧的计算资源消耗,并且实现主机无盘化。
然而,这种方式会导致端到端IO路径变长,增大IO时延也带来较大的性能问题。同时,主机侧采用的标准内核的缓存控制逻辑也不再满足性能要求。
发明内容
本申请实施例提供一种缓存控制方法、装置和计算机设备,有助于计算节点根据业务实现缓存控制逻辑的实时、快速的切换,尽量满足极致性能的目标。
第一方面,本申请实施例提供了一种缓存控制方法,该方法包括:计算节点在内核态获取缓存访问请求,所述缓存访问请求指示对待处理数据的缓存需求;所述计算节点在所述内核态对所述缓存访问请求进行处理时,调用所述缓存访问请求关联的缓存控制逻辑的机器指令,并在运行所述缓存控制逻辑的机器指令时,与所述计算节点的后端存储节点交互,以从所述后端存储节点读取所述待处理数据,或者向所述后端存储节点写入所述待处理数据的镜像数据。
上述方法可以适用于涉及文件存储缓存系统的计算机设备,适用于需要实现缓存控制逻辑与缓存数据分离、同时对性能较高要求的场景中,包括但不限于Linux内核的页面缓存(page cache)系统、分布式存储的集群文件缓存系统等。进一步的,该方法适用于计算节点将本地文件系统卸载至DPU的场景中,计算节点在访问存储节点时,可以通过DPU实现存储相关的计算,而不必消耗计算节点CPU的计算资源。由于计算节点可以通过网络与存储节点连接,而目前的存储节点中又可以设置有存储控制器,因此,计算节点在访问存储节点时,除了可以通过DPU实现存储相关的计算,也可以通过存储节点中的存储控制器实现存储相关的计算。应理解,本申请实施例的缓存控制方案主要是对计算节点侧与缓存控制相关的算法的改进,对于计算节点如何与后端存储节点、或者如何通过CPU与后端存储节点进行交互不做限定,相关实现可以参考现有相关设计,在此不再赘述。
通过上述方法,可以将缓存控制逻辑与数据分离,在需要的情况下,通过在内核态即时、动态地加载所需的缓存控制逻辑的通用字节码并进行编译和运行,能够在不中断业务的情况下,使得计算节点在内核态使用多种AI算法或者IO业务模型,同时不存在跨态穿越的开销,也不存在跨内核态/用户态通信的性能问题,能够满足控制逻辑与数据分离场景下的性能要求。
结合第一方面,在一种可能的设计中,所述方法还可以包括:所述计算节点在内核启动时,将所述缓存控制逻辑的通用字节码从用户空间加载至内核空间;所述计算节点在内核态将所述缓存控制逻辑的通用字节码编译为所述缓存控制逻辑的机器指令;所述计算节点在所述内核空间存储所述缓存控制逻辑的机器指令。
通过上述方法,计算节点可以在内核启动时,实现所需的缓存控制逻辑的通用字节码的动态加载。
结合第一方面,在一种可能的设计中,所述方法还包括:所述计算节点在用户态获取多个缓存控制模型的源代码,每个缓存控制模型关联一种缓存控制逻辑;所述计算节点在所述用户态将所述多个缓存控制模型的源代码编译为相应的通用字节码;所述计算节点在用户空间存储所述多个缓存控制模型的通用字节码。在一个可选的实现中,所述多个缓存控制模型可以关联不同的人工智能AI算法或者输入输出IO业务模型。
通过上述方法,计算节点可以在用户态获取不同缓存控制模型的源代码并编译为通用字节码。该方法可以将算法的配置或升级与用户态解耦,使得计算节点可以在内核态使用多种AI算法或者业务模型的控制逻辑,在涉及算法升级时,无需重启业务或者重启操作系统,有助于保障业务连续性。
结合第一方面,在一种可能的设计中,所述方法还可以包括:所述计算节点在内核空间的缓存模块建立钩子函数,所述钩子函数用于所述缓存模块调用所述缓存控制逻辑的机器指令。
通过上述方法,作为示例,计算节点可以在内核空间的缓存模块上建立钩子,以便在内核空间注入不同的缓存控制模型,从而满足多种模型的缓存控制要求。
结合第一方面,在一种可能的设计中,在所述缓存访问请求为读请求时,所述缓存控制逻辑包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;或者,面向所述后端存储节点的数据预取控制逻辑。
结合第一方面,在一种可能的设计中,在所述缓存访问请求为写请求时,所述缓存控制逻辑包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;面向缓存数据的告警管理控制逻辑;面向所述后端存储节点的镜像控制逻辑;或者,面向缓存数据的数据回滚控制逻辑。
应理解,此处仅是对缓存访问请求为读请求或者写请求时,可能涉及的缓存控制逻辑的示例说明而非任何限定。
结合第一方面,在一种可能的设计中,所述计算节点基于数据处理单元DPU卸载本地文件系统,所述计算节点与所述计算节点的后端存储节点交互,包括:所述计算节点通过所述DPU直通所述后端存储节点。
通过上述方法,计算节点可以是使用DPU进行能力卸载场景中的计算节点,该计算节点使用本申请实施例的缓存控制方法后,可以通过DPU实现与后端存储节点的交互。
第二方面,本申请实施例提供了一种缓存控制装置,包括:获取单元,用于在内核态获取缓存访问请求,所述缓存访问请求指示对待处理数据的缓存需求;处理单元,用于在所述内核态对所述缓存访问请求进行处理时,调用所述缓存访问请求关联的缓存控制逻辑的机器指令,并在运行所述缓存控制逻辑的机器指令时,与计算节点的后端存储节点交互,以从所述后端存储节点读取所述待处理数据,或者向所述后端存储节点写入所述待处理数据的镜像数据。
结合第二方面,在一种可能的设计中,所述处理单元还用于:在内核启动时,将所述缓存控制逻辑的通用字节码从用户空间加载至内核空间;在内核态将所述缓存控制逻辑的通用字节码编译为所述缓存控制逻辑的机器指令;所述装置还包括:存储单元,用于在所述内核空间存储所述缓存控制逻辑的机器指令。
结合第二方面,在一种可能的设计中,所述处理单元还用于:在用户态获取多个缓存控制模型的源代码,每个缓存控制模型关联一种缓存控制逻辑;在所述用户态将所述多个缓存控制模型的源代码编译为相应的通用字节码;所述装置的存储单元用于在用户空间存储所述多个缓存控制模型的通用字节码。
结合第二方面,在一种可能的设计中,所述多个缓存控制模型关联不同的人工智能AI算法或者输入输出IO业务模型。
结合第二方面,在一种可能的设计中,所述处理单元还用于:在内核空间的缓存模块建立钩子函数,所述钩子函数用于所述缓存模块调用所述缓存控制逻辑的机器指令。
结合第二方面,在一种可能的设计中,在所述缓存访问请求为读请求时,所述缓存控制逻辑包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;或者,面向所述后端存储节点的数据预取控制逻辑。
结合第二方面,在一种可能的设计中,在所述缓存访问请求为写请求时,所述缓存控制逻辑包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;面向缓存数据的告警管理控制逻辑;面向所述后端存储节点的镜像控制逻辑;或者,面向缓存数据的数据回滚控制逻辑。
结合第二方面,在一种可能的设计中,所述缓存控制装置基于数据处理单元DPU卸载本地文件系统,所述处理单元与计算节点的后端存储节点交互,包括:所述处理节点通过所述DPU直通所述后端存储节点。
第三方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器;所述存储器存储有计算机程序;所述处理器用于调用所述存储器中存储的计算机程序,以执行如上第一方面以及第一方面任一可能设计所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如上第一方面以及第一方面任一可能设计所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包含有计算机可执行指令,该计算机可执行指令用于使计算机执行如上第一方面以及第一方面任一可能设计所述的方法。
上述第二方面至第五方面中任一方面可以达到的技术效果可以参照上述第一方面中有益效果的描述,此处不再重复赘述。
附图说明
图1示出了一种基于Fuse的计算节点的架构示意图;
图2示出了一种DPU虚拟化场景的系统架构示意图;
图3示出了本申请实施例的缓存控制原理的示意图;
图4示出了本申请实施例的缓存控制方法的流程示意图;
图5示出了本申请实施例的针对读请求的流程示意图;
图6示出了本申请实施例的针对写请求的流程示意图;
图7示出了本申请实施例的缓存控制装置的结构示意图;
图8示出了本申请实施例的计算机设备的结构示意图。
具体实施方式
为了便于理解本申请的实施例的技术方案,下面先对本申请实施例涉及的部分用语进行介绍。
1、数据处理单元(data processing unit,DPU):
是以数据为中心构造的专用处理器,采用软件定义技术路线支撑基础设施层资源虚拟化,支持存储、安全、服务质量管理等基础设施层服务。
2、虚拟机(virtual machine),VM):
是一种虚拟环境,其工作方式类似于计算机中的计算机。VM运行在其主机的一个隔离分区上,拥有自己的CPU能力、内存、操作系统(如Windows、Linux、macOS等)和其他资源。管理程序可以将主机的资源与硬件分开,并适当地配置它们,以便VM可以使用它们。
3、文件系统(file system):
文件系统是操作系统用于明确存储设备(常见的是磁盘,也可以是基于NANDFlash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
文件系统由三部分组成:文件系统的接口,对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,文件系统负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
4、虚拟文件系统(virtual file system,VFS):
VFS是一个内核(kernel)软件层,是物理文件系统与服务之间的一个接口层,VFS对操作系统的每个文件系统的所有细节进行抽象,使得不同的文件系统在操作系统内核以及操作系统中运行的其它进程看来都是相同的。严格来说,VFS不是一种实际的文件系统,只存在于内存中,不存在于任何外存空间。VFS在系统启动时建立,在系统关闭时消亡。
5、用户空间文件系统(file system in userspace,Fuse):
FUSE是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统(例如glusterfs和lustre)使用FUSE实现。Linux中用于支持用户空间文件系统的内核模块称为Fuse,Fuse有时特指Linux下的用户空间文件系统。
图1示出了一种基于Fuse的计算节点(或称为主机(host))的架构示意图。如图1所示,计算节点的内存可以被操作系统分成两块:用户空间(user space)和内核空间(kernelspace)。其中,内核空间用于运行内核代码,用户空间用于运行用户程序代码。当进程运行在内核空间时处于内核态,当进程运行在用户空间时处于用户态。内核空间可以执行任意命令,调用系统的一切资源。用户空间只能执行简单的运算,不能直接调用系统资源,必须是通过系统接口(system call)才能向内核空间发出指令,由内核模块调用系统的相应资源后向用户空间反馈结果。
参阅图1所示,用户空间文件系统可以通过Fuse提供的用户空间库(libfuse)(函数库)向内核模块(Fuse)注册自身的文件处理函数,并生成fuse设备/dev/fuse。/dev/fuse是内核空间里的fuse文件系统和用户空间文件系统的通信媒介。用户空间文件系统可以通过读取/dev/fuse的内容,获取内核空间中fuse文件系统发来的请求;而内核空间中的fuse文件系统,则把请求写入/dev/fuse,等待用户空间文件系统处理。
当用户空间的应用程序要访问用户空间文件系统时,通过glibc中的函数进行系统调用。处理这些系统调用的VFS中的函数会调用Fuse在内核空间的文件系统。内核空间中的Fuse文件系统将用户的请求,发送给用户空间文件系统。用户空间文件系统收到请求后,进行处理,并将结果返回给内核中的Fuse文件系统。最后,内核中的Fuse文件系统将数据返回给用户空间的应用程序。
6、glibc:
是linux系统中最底层的应用程序接口(application program interface,API),几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,本身也提供了许多其它一些必要功能服务的实现。
7、Virtio-FS:
Virtio-FS是一种在主机(host)/客机(guest)之间共享文件的文件系统,使得不同客机之间能够以快速、一致、安全的方式共享一个主机目录树结构。
通常,Virtio-FS方案使用Fuse协议在host和guest之间通信。在host端实现一个fuse server操作host上的文件,然后把guest kernel当作fuse client在guest内挂载fuse,server和client之间使用Virtio来做传输层来承载Fuse协议,而不是传统结构上的/dev/fuse设备。为了支持在不同guest中同时mmap(MAP_SHARED)同一个文件,Virtio-FS把文件mmap进qemu的进程地址空间并让不同guest使用DAX访问该内存空间,这样就绕过了guest pagecache达到不同guest都访问同一份数据的目的,同时也在多个guest之间共享了内存,节省了内存资源。
在一些设计中,虚拟机可以作为主机,DPU可以作为客机,DPU可以用于卸载虚拟机的部分能力(例如文件系统能力),Virtio-FS方案可以使用Fuse协议在虚拟机和DPU之间通信,使得DPU卸载虚拟机的算力。
图2示出了一种DPU虚拟化场景的系统架构示意图。如图2所示,该系统可以包括主机210(计算节点的一个示例)、DPU 220以及存储节点集群(包括一个或多个存储节点230,可以包括盘框)。其中,主机210可以包括虚拟机,虚拟机的内核空间可以包括块(block)、Dev、VFS、Fuse、存储缓存模块、Virtio等功能模块。DPU 220用于卸载主机虚拟机的部分能力,例如可以包括块服务、文件服务进程等功能模块,文件服务进程可以包括本地文件系统以及文件系统客户端。存储节点集群作为DPU的后端存储,用于为DPU提供数据存储服务。
在一些设计中,DPU可以支持虚拟化存储(例如VMTurbo-storage)的方式,主机的虚拟机可以使用Virtio直通DPU的方式,将虚拟机本地文件系统卸载到DPU后端的存储节点集群,由DPU提供本地文件系统能力,既可以节省主机侧计算资源消耗,又可以满足主机第四代扩展文件系统(Fourth extended file system,EXT4)性能,实现主机无盘化。
8、钩子(hook):
钩子编程(hooking),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统(例如Windows系统、Unix系统等)、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。
钩子通常用于在某个函数的上下文做自定义的处理来实现。例如,Hook机制允许应用程序拦截并处理消息或指定事件,当指定的消息发出后,Hook程序就可以在消息到达目标窗口之前将其捕获,从而得到对消息的控制权,进而可以对该消息进行处理或修改,加入所需的功能。钩子按使用范围分,可分为线程钩子和系统钩子,其中,系统钩子具有相当大的功能,几乎可以实现对所有系统消息的拦截、处理和监控。
本申请实施例中,在计算节点的缓存模块建立钩子,通过注册函数或者回调方法,来对缓存控制逻辑的机器指令进行反向的调用,该缓存控制逻辑作为代理对象可以用于修改参数或者替换返回值等。
9、刷盘:
刷盘是指将缓存(cache)的数据写到硬盘或其它存储介质上。
10、淘汰:
淘汰是指释放cache的数据。
11、回滚:
回滚是指当程序或数据出错时,将程序或数据恢复到最近的一个正确版本的行为。
然而,不论是在图1所示的计算节点还是在图2所示的系统中,均是采用标准内核的缓存控制逻辑,关于预取、淘汰等算法的控制逻辑比较固定,在一些场景下,采用标准内核的缓存控制逻辑不再满足相关性能要求。例如以下三个方面的性能要求:
(1)内核对小文件元数据/数据无预取能力,且后端存储节点集群的高时延要求更加精准的Cache数据预测能力。而该预测能力的准确性与IO业务模型强相关,因此需要引入人工智能(artificial intelligence,AI)算法或多模适配算法。
(2)大文件的顺序读预取策略效率低(后台预取任务由cache miss触发,预取窗口可调整范围小,不能并发预取)。
(3)在DPU卸载虚拟机能力(简称为DPU虚拟化)的场景下,传统的最近最少使用(least recently used,LRU)淘汰算法不一定是最优解,需要根据业务变化支持更多种类的算法。
针对以上问题,本申请实施例提供了一种缓存控制方法和装置,通过在计算节点的用户空间以可编程的方式实现多种缓存模型的字节码的输入和存储,并根据业务实时、快速地将不同缓存模型的字节码注入内核空间,以在内核空间运行相应的缓存控制逻辑的机器指令,来对缓存访问请求进行处理和响应,有助于根据业务实现缓存控制逻辑的实时、快速的切换,并尽量满足极致性能的目标。其中,方法和装置是基于同一技术构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
需要说明的是,本申请的具体实施例中,仅以图2所示的DPU虚拟化场景为例介绍该缓存控制方案,并不限定该缓存控制方案的应用场景,在其它实施例中,该缓存控制方案还可以应用于其它系统,例如分布式存储的集群文件缓存系统、大数据存储系统等,在此不再赘述。本申请实施例中“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a和b和c,其中a,b,c可以是单个,也可以是多个。
以及,除非有特别说明,本申请实施例提及“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的优先级或者重要程度。例如,第一控制模型、第二控制模型、和第三控制模型,只是为了区分不同的业务关联的控制模型,而不是表示这三个控制模型的优先级或者重要程度等的不同。
下面结合附图及实施例对本申请的缓存控制原理进行详细介绍。
图3示出了本申请实施例的缓存控制原理的示意图。
如图3所示,计算节点可以包括用户空间和内核空间。其中,该计算节点可以是图1所示的未使用DPU进行能力卸载的计算节点,或者是图2所示的使用DPU进行能力卸载的虚拟机。或者,该计算节点还可以是用于提供存储缓存、并支持不中断业务切换控制模块的服务的计算节点,本申请实施例对该计算节点的部署方式或者产品形态不做限定,在此不再赘述。
计算节点的用户空间可以包括字节码编译器和字节码存储模块。该字节码编译器可以将用户态输入的多种缓存控制模型(例如表示为控制模型一、控制模型二、控制模型三等)的源代码编译成相应的通用字节码,每个缓存控制模型关联一种缓存控制逻辑,每个缓存控制模型的通用字节码可以保存在该字节码存储模块中。
应理解,本申请实施例中,多个缓存控制模型可以关联不同的AI算法或者IO业务模型。在实际应用中对不同缓存控制模型关联的AI算法或者IO业务模型不做限定。
在内核运行时,字节码存储模块中的相关字节码可以被注入(或称为加载)至内核空间。
计算节点的内核空间可以包括机器码编译器、缓存控制逻辑机器指令存储模块、缓存模块和文件访问历史数据库。在一个可选的实施方式中,该内核空间可以包括用于发出(或者转发)缓存访问请求的功能模块,例如Fuse模块,缓存模块可以从Fuse模块获取缓存访问请求。在另一个可选的实施例中,该内核空间还可以包括Virtio模块,该计算节点可以通过Virtio模块,利用DPU卸载计算节点的部分能力(例如文件系统能力),以及利用DPU访问DPU的后端存储节点。
在内核态,该机器码编译器可以对注入内核空间的字节码进行即时动态编译,快速转换成相应的机器指令,该机器指令可以存储在该缓存控制逻辑机器指令存储模块中。示例地,该机器指令可以适用于但不限于以下系统:X86、ARM、MIPS或者PPC。
缓存模块上可以预先建立有钩子,该钩子可以包括多处钩子执行点(或者称为控制点),任一钩子执行点可以用于调用缓存控制逻辑机器指令存储模块中的相关缓存控制逻辑的机器指令。
Fuse模块可以向缓存模块发送缓存访问请求。缓存模块在获取到缓存访问请求后,可以通过该缓存访问请求涉及到的钩子执行点,自动调用该缓存控制逻辑机器指令存储模块中的至少一项缓存控制逻辑的机器指令,并在内核空间运行相关缓存控制逻辑机器指令,来对该缓存访问请求进行处理响应,包括但不限于面向缓存模块的缓存数据/后端存储节点的数据,来实施刷盘、淘汰、预取、写镜像数据等处理控制。在需要的情况下,正在运行的相关缓存控制逻辑机器指令,还可以与文件访问历史数据库进行交互(例如预取控制逻辑等),或者,还可以与后端存储节点集群进行交互(例如刷盘控制逻辑、写镜像控制逻辑等),在此不再赘述。
当用户空间发生控制模型的变更时,用户态切换控制模型关联的缓存控制逻辑,生成对应的通用字节码,并将切换后的通用字节码注入内核空间,并可采用与上文描述的相同方式被编译、存储、调用和运行,来实现业务。从而,计算节点可以不中断业务的情况下,通过原子性地切换缓存控制模型以及重新向内核空间注入该控制模块的通用字节码,实现缓存控制逻辑的实时切换。并且,由于缓存控制逻辑运行在内核空间,可以实现AI算法就近访问数据,更加满足极致性能的目标。
以上方案,一方面,可以通过源代码生成通用字节码,不需要通过链接器(linker)链接成linux的可执行与可链接(executable and linkable format,ELF)格式,而是在程序执行前实时编译成机器指令,可以提高运行效率。另一方面,在发生AI算法或者IO业务模型改变时,既不需要升级内核的缓存模块,也不需要重启业务或者重启操作系统,不影响业务的连续性,同时还使得可以在内核空间使用用户态的人工智能(artificialintelligence,AI)控制算法(例如智能预取等)。再一方面,该方案不仅可以实现缓存控制逻辑与数据分离(或称为缓存控制模块与数据模块的解耦分离),还无需数据模块将cache状态信息、业务访问记录等同步给控制模块,不存在跨态穿越的开销,也不存在跨内核态/用户态通信的性能问题,能够满足控制逻辑与数据分离场景下的性能要求。
本申请实施例的缓存控制方法,可以应用于图3所示的计算节点,或者应用于计算节点中配置的虚拟机上。
参阅图4所示,该方法可以包括以下步骤:
S410:计算节点在内核态获取缓存访问请求。所述缓存访问请求指示对待处理数据的缓存需求。
其中,上述计算节点可以是如图1所示的计算节点。或者,该计算节点可以是如图2所示的虚拟机,虚拟机可以通过Virtio接口连接到DPU,该DPU可以用于卸载虚拟机的部分能力,比如文件系统能力,在此不再赘述。
实施S410时,基于所应用的场景不同,缓存访问请求的来源也不同。例如,在应用于图1或图2所示的基于Fuse的场景中时,计算节点可以是从内核空间的Fuse文件系统获取来自于用户空间的应用程序的缓存访问请求。在未应用Fuse的场景中,计算节点可以是从应用程序或者请求队列中获取缓存访问请求,本申请实施例对此不做限定。
本申请实施例中,缓存访问请求指示对待处理数据的缓存需求。
在一个示例中,该缓存访问请求可以是对计算节点的内核的缓存模块的读请求,用于从该缓存模块中读取缓存数据。待处理数据是待从缓存模块读取的缓存数据。
在另一示例中,该缓存访问请求可以是针对计算节点的内核的缓存模块的写请求,用于将待处理数据写入该缓存模块。待处理数据是待写入缓存模块的数据。
在实际应用中,根据缓存访问请求的触发场景,缓存访问请求中可以携带不同的信息来指示对待处理数据的缓存需求。例如,缓存访问请求中可以包括业务标识,该业务标识可以关联用户层业务,并可以指示业务的缓存需求。或者,该缓存访问请求可以包括读操作标识以及读操作标识对应的缓存地址,该读操作标识指示该缓存访问请求为读请求,该缓存地址用于指示待读取数据的缓存地址。或者,该缓存访问请求可以包括写操作标识以及待写入数据,该写操作标识指示该缓存访问请求为写请求,该待写入数据为待写入缓存模块的数据。本申请实施例中,主要关注缓存控制逻辑的配置与使用,并不限定缓存访问请求的生成方式以及携带的内容,在此不再赘述。
S420:计算节点在所述内核态对所述缓存访问请求进行处理时,可以调用所述缓存访问请求关联的缓存控制逻辑的机器指令,并在运行所述缓存控制逻辑的机器指令时,与所述计算节点的后端存储节点交互,以从所述后端存储节点读取所述待处理数据,或者向所述后端存储节点写入所述待处理数据的镜像数据。
本申请实施例中,实施S420之前,计算节点可以将用于内核的缓存模块的缓存控制逻辑与数据分离,计算节点例如可以在用户态获取多个缓存控制模型的源代码,每个缓存控制模型关联一种缓存控制逻辑。计算节点可以在所述用户态将所述多个缓存控制模型的源代码编译为相应的通用字节码,并在用户空间存储所述多个缓存控制模型的通用字节码。
缓存访问请求关联的缓存控制逻辑的机器指令可以是在内核启动时即时编译并存储在计算节点的内核空间的。在实施S420之前,计算节点例如可以执行以下步骤:在内核启动时,将所述缓存控制逻辑的通用字节码从用户空间加载至内核空间,在内核态将所述缓存控制逻辑的通用字节码编译为所述缓存控制逻辑的机器指令,在所述内核空间存储所述缓存控制逻辑的机器指令。那么在实施S420时,计算节点的缓存模块可以在对所述缓存访问请求进行处理时,可以根据需要调用所述缓存访问请求关联的缓存控制逻辑的机器指令并运行。
示例地,该多个缓存控制模型可以包括对应于以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;面向所述后端存储节点的数据预取控制逻辑;面向缓存数据的告警管理控制逻辑;面向所述后端存储节点的镜像控制逻辑;或者,面向缓存数据的数据回滚控制逻辑。
为例便于理解,下面结合图5和图6,以缓存访问请求为读请求或者写请求为例,对本申请实施例的缓存控制方法进行介绍。
示例地,在所述缓存访问请求为读请求时,缓存访问请求关联的缓存控制逻辑可以包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;或者,面向所述后端存储节点的数据预取控制逻辑。如图5所示,针对读请求的缓存控制方法可以包括以下步骤:
S501:缓存模块获取到读请求后,为读请求准备缓存资源。
如果缓存资源申请失败,则进入S502:缓存模块调用面向缓存数据的刷盘控制逻辑或者面向缓存数据的淘汰控制逻辑。在S503:在内核空间运行该刷盘控制逻辑来执行刷盘任务,以将缓存数据写到后端存储节点,或者,在S503:运行淘汰控制逻辑来执行淘汰任务,以释放缓存的数据,并等待读请求重试(例如状态表示为进行中(pending))。
如果缓存资源申请成功,则进入S504:缓存模块可以查找缓存。
如果缓存命中,则读请求成功,S505:缓存模块可以向Fuse返回读取到的数据。进一步的,S506:缓存模块还可以释放缓存资源。
如果缓存未命中,则进入S507:缓存模块可以调用面向所述后端存储节点的数据预取控制逻辑。进一步的,S508:在内核空间运行该数据预取控制逻辑,通过与文件访问历史数据库或者后端存储节点的交互,为读请求进行数据预取。读请求完成后进入S505,缓存模块可以向Fuse返回读取到的数据。进一步的,S506:缓存模块还可以释放缓存资源。
示例地,在缓存访问请求为写请求时,缓存访问请求关联的缓存控制逻辑可以包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;面向缓存数据的告警管理控制逻辑;面向所述后端存储节点的镜像控制逻辑;或者,面向缓存数据的数据回滚控制逻辑。如图6所示,针对写请求的缓存控制方法可以包括以下步骤:
S601:缓存模块获取到写请求后,为写请求准备缓存资源。
如果缓存资源申请失败,则进入S602:缓存模块调用面向缓存数据的刷盘控制逻辑或者面向缓存数据的淘汰控制逻辑。在S603:在内核空间运行该刷盘控制逻辑来执行刷盘任务,以将缓存数据写到后端存储节点,或者,在S603:运行淘汰控制逻辑来执行淘汰任务,以释放缓存的数据,并等待读请求重试(例如状态表示为进行中(pending))。
如果缓存资源申请成功,则进入S604:缓存模块开始针对写请求写本地缓存。
如果写缓存失败,则进入S605:调用面向缓存数据的告警管理控制逻辑。进一步的,在S606:在内核空间运行告警管理控制逻辑时,进行告警并记录告警日志。进一步的,S607:写请求完成。
如果写缓存成功,则进入S608:缓存模块可以调用面向后端存储节点的镜像控制逻辑。进一步的,在S609:在内核空间运行该镜像控制逻辑时,缓存模块可以执行向后端存储节点写缓存的镜像数据的任务。
如果写镜像数据成功,则进入S611:释放资源。S607,写请求完成。
如果写镜像数据失败,则进入S610:调用数据回滚控制逻辑回滚本地数据。S611:释放资源。S607,写请求完成。
由此,基于图5和图6所示的流程图,介绍了本申请实施例的缓存控制方案中,针对读请求的处理流程以及针对写请求的处理流程,通过预先对计算节点的内核空间或者用户空间的功能配置,使得内核空间的缓存模块可以根据读/写流程涉及的不同控制点,调用相应的缓存控制逻辑的机器指令并运行,以对相应的缓存访问请求进行处理,提升运行性能。该方案可以在用户态以可编程的方式实现多种缓存控制模型的源代码配置、编译以及动态加载至内核态,允许计算节点原子性的替换缓存控制模型,以及实现缓存控制逻辑的实时切换。并且,缓存控制逻辑的机器指令能够运行在内核态,可以实现算法就近访问数据,尽量满足极致性能的目标。
基于相同的技术构思,本申请实施例还提供一种缓存控制装置,用于实现上述方法实施例。该装置可以包括执行上述方法实施例中任意一种可能的实现方式的模块/单元;这些模块/单元可以通过硬件实现,也可以通过硬件执行相应的软件实现。
示例性的,该装置可以如图7所示,包括:获取单元701,用于在内核态获取缓存访问请求,所述缓存访问请求指示对待处理数据的缓存需求;处理单元702,用于在所述内核态对所述缓存访问请求进行处理时,调用所述缓存访问请求关联的缓存控制逻辑的机器指令,并在运行所述缓存控制逻辑的机器指令时,与计算节点的后端存储节点交互,以从所述后端存储节点读取所述待处理数据,或者向所述后端存储节点写入所述待处理数据的镜像数据。
在一种可能的实现方式中,所述处理单元702还用于:在内核启动时,将所述缓存控制逻辑的通用字节码从用户空间加载至内核空间;在内核态将所述缓存控制逻辑的通用字节码编译为所述缓存控制逻辑的机器指令;所述装置还包括存储单元703,用于在所述内核空间存储所述缓存控制逻辑的机器指令。
在一种可能的实现方式中,所述处理单元702还用于:在用户态获取多个缓存控制模型的源代码,每个缓存控制模型关联一种缓存控制逻辑;在所述用户态将所述多个缓存控制模型的源代码编译为相应的通用字节码;所述装置的存储单元用于在用户空间存储所述多个缓存控制模型的通用字节码。
在一种可能的实现方式中,所述多个缓存控制模型关联不同的人工智能AI算法或者输入输出IO业务模型。
在一种可能的实现方式中,所述处理单元702还用于:在内核空间的缓存模块建立钩子函数,所述钩子函数用于所述缓存模块调用所述缓存控制逻辑的机器指令。
在一种可能的实现方式中,在所述缓存访问请求为读请求时,所述缓存控制逻辑包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;或者,面向所述后端存储节点的数据预取控制逻辑。
在一种可能的实现方式中,在所述缓存访问请求为写请求时,所述缓存控制逻辑包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;面向缓存数据的告警管理控制逻辑;面向所述后端存储节点的镜像控制逻辑;或者,面向缓存数据的数据回滚控制逻辑。
在一种可能的实现方式中,所述缓存控制装置基于数据处理单元DPU卸载本地文件系统,所述处理单元与计算节点的后端存储节点交互,包括:所述处理节点通过所述DPU直通所述后端存储节点。
基于相同的技术构思,本申请实施例还提供一种计算机设备。该计算机设备包括如图8所示的处理器801,以及与处理器801连接的通信接口802。
处理器801可以是通用处理器,微处理器,特定集成电路(application specificintegrated circuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件,分立门或者晶体管逻辑器件,或一个或多个用于控制本申请方案程序执行的集成电路等。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
通信接口802,用于与其他设备通信,如PCI总线接口、以太网,无线接入网(radioaccess network,RAN),无线局域网(wireless local area networks,WLAN)等。
在本申请实施例中,处理器801用于调用通信接口802执行接收和/或发送的功能,并执行如前任一种可能实现方式所述的方法。
进一步的,该计算机设备还可以包括存储器803以及通信总线804。
存储器803,用于存储程序指令和/或数据,以使处理器801调用存储器803中存储的指令和/或数据,实现处理器801的上述功能。存储器803可以是只读存储器(read-onlymemory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器803可以是独立存在,例如片外存储器,通过通信总线804与处理器801相连接。存储器803也可以和处理器801集成在一起。
通信总线804可包括一通路,用于在上述组件之间传送信息。
示例性的,处理器801可以通过通信接口802执行以下步骤:用于在内核态获取缓存访问请求,所述缓存访问请求指示对待处理数据的缓存需求;用于在所述内核态对所述缓存访问请求进行处理时,调用所述缓存访问请求关联的缓存控制逻辑的机器指令,并在运行所述缓存控制逻辑的机器指令时,与计算节点的后端存储节点交互,以从所述后端存储节点读取所述待处理数据,或者向所述后端存储节点写入所述待处理数据的镜像数据。
在一种可能的实现方式中,所述处理器801还用于:在内核启动时,将所述缓存控制逻辑的通用字节码从用户空间加载至内核空间;在内核态将所述缓存控制逻辑的通用字节码编译为所述缓存控制逻辑的机器指令;存储器803用于在所述内核空间存储所述缓存控制逻辑的机器指令。
在一种可能的实现方式中,所述处理器801还用于:在用户态获取多个缓存控制模型的源代码,每个缓存控制模型关联一种缓存控制逻辑;在所述用户态将所述多个缓存控制模型的源代码编译为相应的通用字节码;所述存储器803用于在用户空间存储所述多个缓存控制模型的通用字节码。
在一种可能的实现方式中,所述多个缓存控制模型关联不同的人工智能AI算法或者输入输出IO业务模型。
在一种可能的实现方式中,所述处理器801还用于:在内核空间的缓存模块建立钩子函数,所述钩子函数用于所述缓存模块调用所述缓存控制逻辑的机器指令。
在一种可能的实现方式中,在所述缓存访问请求为读请求时,所述缓存控制逻辑包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;或者,面向所述后端存储节点的数据预取控制逻辑。
在一种可能的实现方式中,在所述缓存访问请求为写请求时,所述缓存控制逻辑包括以下至少一项:面向缓存数据的刷盘控制逻辑;面向缓存数据的淘汰控制逻辑;面向缓存数据的告警管理控制逻辑;面向所述后端存储节点的镜像控制逻辑;或者,面向缓存数据的数据回滚控制逻辑。
在一种可能的实现方式中,所述缓存控制装置基于数据处理单元DPU卸载本地文件系统,所述处理器与计算节点的后端存储节点交互,包括:所述处理器通过所述DPU直通所述后端存储节点。
基于相同的技术构思,本申请实施例还提供一种计算系统,包括如上述实施例所述的计算机设备,以及至少一个通过硬件接口与所述计算机设备连接的DPU、至少一个通过网络与所述计算机设备连接的存储节点。
基于相同的技术构思,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可读指令,当所述计算机可读指令在计算机上运行时,使得上述方法实施例中计算节点所执行的步骤被执行。
基于相同的技术构思,本申请实施例提供还一种包含指令的计算机程序产品,当其在计算机上运行时,使得上述方法实施例中计算节点所执行的步骤被执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (19)
1.一种缓存控制方法,其特征在于,包括:
计算节点在内核态获取缓存访问请求,所述缓存访问请求指示对待处理数据的缓存需求;
所述计算节点在所述内核态对所述缓存访问请求进行处理时,调用所述缓存访问请求关联的缓存控制逻辑的机器指令,并在运行所述缓存控制逻辑的机器指令时,与所述计算节点的后端存储节点交互,以从所述后端存储节点读取所述待处理数据,或者向所述后端存储节点写入所述待处理数据的镜像数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述计算节点在内核启动时,将所述缓存控制逻辑的通用字节码从用户空间加载至内核空间;
所述计算节点在内核态将所述缓存控制逻辑的通用字节码编译为所述缓存控制逻辑的机器指令;
所述计算节点在所述内核空间存储所述缓存控制逻辑的机器指令。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述计算节点在用户态获取多个缓存控制模型的源代码,每个缓存控制模型关联一种缓存控制逻辑;
所述计算节点在所述用户态将所述多个缓存控制模型的源代码编译为相应的通用字节码;
所述计算节点在用户空间存储所述多个缓存控制模型的通用字节码。
4.根据权利要求3所述的方法,其特征在于,所述多个缓存控制模型关联不同的人工智能AI算法或者输入输出IO业务模型。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
所述计算节点在内核空间的缓存模块建立钩子函数,所述钩子函数用于所述缓存模块调用所述缓存控制逻辑的机器指令。
6.根据权利要求1-5中任一项所述的方法,其特征在于,在所述缓存访问请求为读请求时,所述缓存控制逻辑包括以下至少一项:
面向缓存数据的刷盘控制逻辑;
面向缓存数据的淘汰控制逻辑;或者,
面向所述后端存储节点的数据预取控制逻辑。
7.根据权利要求1-5中任一项所述的方法,其特征在于,在所述缓存访问请求为写请求时,所述缓存控制逻辑包括以下至少一项:
面向缓存数据的刷盘控制逻辑;
面向缓存数据的淘汰控制逻辑;
面向缓存数据的告警管理控制逻辑;
面向所述后端存储节点的镜像控制逻辑;或者,
面向缓存数据的数据回滚控制逻辑。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述计算节点基于数据处理单元DPU卸载本地文件系统,所述计算节点与所述计算节点的后端存储节点交互,包括:
所述计算节点通过所述DPU直通所述后端存储节点。
9.一种缓存控制装置,其特征在于,包括:
获取单元,用于在内核态获取缓存访问请求,所述缓存访问请求指示对待处理数据的缓存需求;
处理单元,用于在所述内核态对所述缓存访问请求进行处理时,调用所述缓存访问请求关联的缓存控制逻辑的机器指令,并在运行所述缓存控制逻辑的机器指令时,与计算节点的后端存储节点交互,以从所述后端存储节点读取所述待处理数据,或者向所述后端存储节点写入所述待处理数据的镜像数据。
10.根据权利要求9所述的装置,其特征在于,所述处理单元还用于:
在内核启动时,将所述缓存控制逻辑的通用字节码从用户空间加载至内核空间;
在内核态将所述缓存控制逻辑的通用字节码编译为所述缓存控制逻辑的机器指令;
所述装置还包括:
存储单元,用于在所述内核空间存储所述缓存控制逻辑的机器指令。
11.根据权利要求9或10所述的装置,其特征在于,所述处理单元还用于:
在用户态获取多个缓存控制模型的源代码,每个缓存控制模型关联一种缓存控制逻辑;
在所述用户态将所述多个缓存控制模型的源代码编译为相应的通用字节码;
所述装置的存储单元用于:在用户空间存储所述多个缓存控制模型的通用字节码。
12.根据权利要求11所述的装置,其特征在于,所述多个缓存控制模型关联不同的人工智能AI算法或者输入输出IO业务模型。
13.根据权利要求9-12中任一项所述的装置,其特征在于,所述处理单元还用于:
在内核空间的缓存模块建立钩子函数,所述钩子函数用于所述缓存模块调用所述缓存控制逻辑的机器指令。
14.根据权利要求9-13中任一项所述的装置,其特征在于,在所述缓存访问请求为读请求时,所述缓存控制逻辑包括以下至少一项:
面向缓存数据的刷盘控制逻辑;
面向缓存数据的淘汰控制逻辑;或者,
面向所述后端存储节点的数据预取控制逻辑。
15.根据权利要求9-13中任一项所述的装置,其特征在于,在所述缓存访问请求为写请求时,所述缓存控制逻辑包括以下至少一项:
面向缓存数据的刷盘控制逻辑;
面向缓存数据的淘汰控制逻辑;
面向缓存数据的告警管理控制逻辑;
面向所述后端存储节点的镜像控制逻辑;或者,
面向缓存数据的数据回滚控制逻辑。
16.根据权利要求9-15中任一项所述的装置,其特征在于,所述缓存控制装置基于数据处理单元DPU卸载本地文件系统,所述处理单元与计算节点的后端存储节点交互,包括:
所述处理节点通过所述DPU直通所述后端存储节点。
17.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;
所述存储器存储有计算机程序;
所述处理器用于调用所述存储器中存储的计算机程序,以执行权利要求1-8任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-8任一项所述的方法。
19.一种计算机程序产品,其特征在于,包含有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211079656.8A CN117687738A (zh) | 2022-09-05 | 2022-09-05 | 一种缓存控制方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211079656.8A CN117687738A (zh) | 2022-09-05 | 2022-09-05 | 一种缓存控制方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117687738A true CN117687738A (zh) | 2024-03-12 |
Family
ID=90130729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211079656.8A Pending CN117687738A (zh) | 2022-09-05 | 2022-09-05 | 一种缓存控制方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687738A (zh) |
-
2022
- 2022-09-05 CN CN202211079656.8A patent/CN117687738A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10733019B2 (en) | Apparatus and method for data processing | |
US9753669B2 (en) | Real time cloud bursting | |
US9621643B1 (en) | System and method for joining containers running on multiple nodes of a cluster | |
US9158362B2 (en) | System and method for power reduction by sequestering at least one device or partition in a platform from operating system access | |
US20210089343A1 (en) | Information processing apparatus and information processing method | |
US8713582B2 (en) | Providing policy-based operating system services in an operating system on a computing system | |
US9760400B1 (en) | System and method for joining containers running on multiple nodes of a cluster | |
US11221866B2 (en) | Accelerator loading method, system, and apparatus | |
WO2012177359A2 (en) | Native cloud computing via network segmentation | |
KR102043276B1 (ko) | 워크 로드에 따라 동적 자원 할당 가능한 상호 연결 패브릭 스위칭 장치 및 방법 | |
CN115858103B (zh) | 用于开放堆栈架构虚拟机热迁移的方法、设备及介质 | |
US20190007483A1 (en) | Server architecture having dedicated compute resources for processing infrastructure-related workloads | |
JP2022550447A (ja) | アプリケーションのグループ向けにカスタマイズされたルートプロセス | |
CN114510321A (zh) | 资源调度方法、相关装置和介质 | |
US20240211246A1 (en) | Method and Apparatus for Upgrading Client Software | |
CN116820764A (zh) | 一种计算资源的提供方法、系统、电子设备及存储介质 | |
US9542319B2 (en) | Method and system for efficient communication and command system for deferred operation | |
JP2007280397A (ja) | 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム | |
US11868805B2 (en) | Scheduling workloads on partitioned resources of a host system in a container-orchestration system | |
CN117687738A (zh) | 一种缓存控制方法、装置和计算机设备 | |
US11507512B2 (en) | Fault tolerant cluster data handling | |
US11635970B2 (en) | Integrated network boot operating system installation leveraging hyperconverged storage | |
US11860785B2 (en) | Method and system for efficient communication and command system for deferred operation | |
WO2023097703A1 (en) | A storage server forsecure and performant execution of user code in a data center storage | |
US10788987B2 (en) | Data storage system employing service infrastructure for functional modules |
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 |