1.本公开涉及计算机技术领域,尤其涉及一种数据访问方法、装置、设备及计算机可读存储介质。
背景技术:
2.随着计算机技术的不断发展,固态硬盘已经较为普及,例如,无论个人用户还是企业级数据中心都已经普遍使用固态硬盘,并且固态硬盘的性能也在快速进步。例如,固态硬盘每秒的随机读写次数很高。
3.但是,目前的虚拟磁盘分布式块存储(tcmu)机制或共享内存可能无法支持固态硬盘如此高的读写性能。
技术实现要素:
4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种数据访问方法、装置、设备及计算机可读存储介质,使得当tcmu模块使用uio机制进行io事件通知遇到瓶颈时,动态进入性能模式,使用轮询线程替换字符设备消息通知的方法,提高了数据处理的性能;当共享内存数据传输成为性能瓶颈时,动态进入超高性能模式,使用多个numa节点划分多个共享内存,并行处理io请求,更进一步的提高了数据处理的性能。
5.第一方面,本公开实施例提供一种数据访问方法,包括:
6.获取数据处理模块对第一共享内存进行数据访问的频率;
7.若所述频率大于第一阈值,则启动第一数据轮询线程,所述第一数据轮询线程用于实时访问所述第一共享内存中的数据;
8.若所述频率大于第二阈值,则创建第二共享内存、以及所述第二共享内存对应的第二数据轮询线程和第二转发线程;
9.其中,所述第一阈值小于所述第二阈值;
10.所述第一共享内存对应的第一转发线程和所述第二转发线程用于并行的向所述第一共享内存和所述第二共享内存转发数据;
11.所述第一数据轮询线程和所述第二数据轮询线程用于并行的访问所述第一共享内存和所述第二共享内存中的数据。
12.第二方面,本公开实施例提供一种数据处理装置,包括:
13.工作状态探测模块,用于获取数据处理模块对第一共享内存进行数据访问的频率;
14.数据处理模块,用于若所述频率大于第一阈值,则启动第一数据轮询线程,所述第一数据轮询线程用于实时访问所述第一共享内存中的数据;若所述频率大于第二阈值,则创建第二共享内存对应的第二数据轮询线程;
15.动态多共享内存探测模块,用于若所述频率大于第二阈值,则创建第二共享内存;
16.虚拟磁盘分布式块存储模块,用于若所述频率大于第二阈值,则创建第二共享内
存对饮改的第二转发线程。
17.第三方面,本公开实施例提供一种电子设备,包括:
18.存储器;
19.处理器;以及
20.计算机程序;
21.其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的方法。
22.第四方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现第一方面所述的方法。
23.第五方面,本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序或指令,该计算机程序或指令被处理器执行时实现如上所述的方法。
24.本公开实施例提供的数据访问方法、装置、设备及计算机可读存储介质,通过获取数据处理模块对第一共享内存进行数据访问的频率;若所述频率大于第一阈值,则启动第一数据轮询线程,使得当tcmu模块使用uio机制进行io事件通知遇到瓶颈时,动态进入性能模式,使用轮询线程替换字符设备消息通知的方法,提高了数据处理的性能。若所述频率大于第二阈值,则创建第二共享内存、以及所述第二共享内存对应的第二数据轮询线程和第二转发线程,使得当共享内存数据传输成为性能瓶颈时,动态进入超高性能模式,使用多个numa节点划分多个共享内存,并行处理io请求,更进一步的提高了数据处理的性能。
附图说明
25.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
26.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
27.图1为本公开实施例提供的均衡模式实现原理图;
28.图2为本公开实施例提供的一种数据访问方法流程图;
29.图3为本公开实施例提供的性能模式实现原理图;
30.图4为本公开施例提供的绑定关系图;
31.图5为本公开实施例提供的超高性能模式实现原理图;
32.图6为本公开实施例提供的另一种数据访问方法流程图;
33.图7为公开开实施例提供的另一种数据访问方法实现原理图;
34.图8为本公开实施例提供的一种数据访问装置的结构示意图;
35.图9为本公开实施例提供的电子设备的结构示意图。
具体实施方式
36.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
37.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
38.通常情况下,无论个人用户还是企业级数据中心都已普遍使用固态硬盘,随着固态硬盘技术的发展和成熟,在性能方面也快速进步。
39.tcmu是操作系统提供的一种机制,主要功能是生成虚拟磁盘(虚拟块设备),接收对虚拟块磁盘的输入输出(input/output io)操作,并通过用户态、内核态共享内存完成内核到用户态的数据共享,通过运行在用户空间及内核空间的io机制(uio)实现io事件读写通知。
40.现有的tcmu机制实现原理图(即本公开实施例提供的均衡模式实现原理图)如图1所示,10表示终端设备,该终端设备的内存空间分为两部分,分别为用户空间和内核空间,用户空间包括普通应用程序可以操作和访问的内存空间;内核空间包括操作系统内核可以访问的内存空间,上述内核空间独立于普通的应用程序。
41.11为存在于终端设备的应用程序,12为tcmu生成的虚拟磁盘(块设备),应用程序将这个虚拟磁盘与普通物理磁盘相同对待。13、14、15为内核空间结构,终端用户对应用程序11进行io请求操作,该io请求操作经过操作系统内核的通用块层13和小型计算机系统接口(small computer system intescsi)高层驱动14,再转交给scsi低层驱动15。其中,scsi低层驱动由内核目标子系统(linux-io/targetcore mod lio/tcm)框架16以及tcmu模块17共同实现。
42.当io请求到达tcmu17后,tcmu将io请求数据转发到共享内存18,通过uio机制19生成字符设备110,同时tcmu17向字符设备110发送可读写消息事件,其中,发送可读写消息事件的实现方式可以为:在字符设备中写入自定义的字符或者字符串,该自定义的字符或者字符串用于提示数据处理模块111共享内存18中有io请求数据需要处理。
43.具体的,数据处理模块111实时监测字符设备110,当字符设备有字符或者字符串写入后,数据处理设备110从共享内存111中获取io请求数据,并进行处理,io请求数据经过数据处理模块的处理后,可以根据具体实现,将数据存储到本地的存储设备112、存储阵列113、或者是分布式存储后端114中。
44.针对现有的tcmu通过uio机制实现io可读写事件通知的技术方案,其存在以下两方面的问题:
45.第一方面,基于常用的企业级中央处理器(central processing unitcpu)可以每秒实现40万次的通知。但在使用高速存储设备的场景下,如基于高速串行计算机扩展总线标准(peripheral component interconnect expresspcie)的固态硬盘(solid state drivesssd)每块卡的4k读写性能可以超过100万次,于是tcmu机制无法完全发挥pcie ssd的存储性能,即使用uio机制实现io可读写消息通知成了性能瓶颈。
46.第二方面,当存储后端存在单块高速存储设备时,共享内存的可读写速度大于单块高速存储设备的性能,但是当存储后端存在多块pcie ssd时,多块pcie ssd性能之和是大于共享内存读写速度的,于是共享内存又成了新的性能瓶颈。
47.针对上述两方面的问题,本公开实施例提供了一种数据访问方法,下面结合具体的实施例对该方法进行介绍。
48.图2为本公开实施例提供的数据访问方法流程图。该数据访问方法可以应用于需要使用超高性能的虚拟机或者块存储服务的高速存储设备中,该数据访问方法可以由数据访问装置执行,该装置可以采用硬件或者软件实现,并可集成在任意具有计算能力的电子设备上,例如终端,具体包括掌上电脑、平板电脑、带显示屏的可穿戴设备、台式机、笔记本电脑、一体机、智能家居设备等。
49.图3、图4、图5为本实施例的具体的实现原理图及绑定关系图,下面结合图3、图4、图5,对图2所示的数据访问方法进行介绍,该方法具体步骤如下:
50.s201、获取数据处理模块对第一共享内存进行数据访问的频率。
51.具体的,数据处理模块用于对io请求数据进行处理,基于其单位时间内处理io请求数据的数量,可以统计出数据处理模块数据处理的频率,并将其数据处理的频率通过接口方式提供给工作状态探测模块调用。
52.工作状态探测模块调用数据处理模块提供的数据处理频率的接口,读取到数据处理模块数据处理频率。
53.当数据处理模块数据处理频率没有达到第一阈值时,即没有达到tcmu通过uio机制实现io事件通知的瓶颈时,数据处理模块和tcmu模块为均衡模式。
54.数据处理模块和tcmu模块在均衡模式下,其io请求数据处理方式采用现有的tcmu机制,即通过uio机制进行io可读写消息事件通知,其与图1所示的实现原理相同,在本实施例中不再赘述。
55.其中,第一阈值可以根据具体的内存大小进行自定义配置,本公开实施例对此不做限制。
56.s202、若所述频率大于第一阈值,则启动第一数据轮询线程,所述第一数据轮询线程用于实时访问所述第一共享内存中的数据;
57.具体的,随着io请求越来越多,工作状态探测模块读取到数据处理模块的频率达到第一阈值后,通知数据处理模块、tcmu模块进入性能模式。
58.数据处理模块接收到进入性能模式的通知消息后,会启动第一轮询线程,该第一轮询线程会轮询对共享内存进行访问,具体的,第一轮询线程轮询从共享内存中检查是否有io请求数据,如果有,就会读取出来,并将io请求数据交给数据处理模块进行处理。
59.可选的,若所述频率大于第一阈值,则通知所述数据处理模块启动第一数据轮询线程,包括:若所述频率大于第一阈值,则启动第一数据轮询线程,并停止发送所述第一共享内存的可读写消息事件。
60.具体的,tcmu模块接收到进入性能模式的通知消息后,会停止向字符设备写入自定义字符或字符串,同时数据处理模块不再监测字符设备是否有数据写入。
61.下面结合图3对该模式实现原理进行具体介绍,如图3所示,终端用户对应用程序11进行io请求操作,该io请求经过操作系统内核的通用块层13和scsi高层驱动14,再转交给scsi低层驱动15。其中,scsi低层驱动15由lio/tcm框架16以及tcmu模块17共同实现。
62.io请求到达tcmu模块后17,tcmu将io请求数据存放到共享内存18中。第一轮询线程实时检查共享内存中是否有io请求数据,如果有,就会将该io请求数据读取出来交给数据处理模块进行处理,处理完成后,可以根据具体实现,将数据存储到本地的存储设备112、存储阵列113、或者是分布式存储后端114中。
63.s203、若所述频率大于第二阈值,则创建第二共享内存、以及所述第二共享内存对应的第二数据轮询线程和第二转发线程。
64.具体的,随着io请求进一步的增加,工作状态探测模块检测到数据处理模块数据处理的频率达到第二阈值,即共享内存遇到性能瓶颈,通知数据处理模块、tcmu模块进入超高性能模式。其中,第二阈值为第一共享内存可读写最大带宽。可理解的,所述第一阈值小于所述第二阈值。
65.tcmu接收到进入超高性能模式的通知消息后,新增第二转发线程,同时检查当前的共享内存数量和非统一内存访问(non uniform memory accessnuma)节点的数量,如果共享内存数量没有超过numa节点数量,则通知工作状态探测模块可增加共享内存,工作状态探测模块接收到通知消息后,通知动态多共享内存管理模块新增第二共享内存。
66.其中,numa是指非统一内存访问,是一种用于多处理器的电脑记忆体设计。它是由若干通过高速专用网络连接起来的独立节点构成的系统,各个节点可以是单个的中央处理器cpu或是对称多处理器(symmetrical multi-processingsmp)系统。在numa下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些,简单描述就是,一个物理cpu(一般包括多个逻辑cpu或者说多个核心)构成一个节点(node),这个node不仅包括cpu,还包括一组内存插槽,可以理解的,一个物理cpu以及一块内存构成了一个node。
67.动态多共享内存管理模块接收到新增第二共享内存消息后,新增第二共享内存。
68.数据处理模块接收到进入超高性能模式后,新增第二数据轮询线程。
69.其中,第一共享内存、第一转发线程、第一轮询线程与第一numa节点绑定,第二共享内存、第二转发线程、第二轮询线程与第二numa节点绑定,其绑定关系如图4所示。
70.可理解的是,第一共享内存对应的第一转发线程和所述第二转发线程用于并行的向所述第一共享内存和所述第二共享内存转发数据;第一数据轮询线程和所述第二数据轮询线程用于并行的访问所述第一共享内存和所述第二共享内存中的数据。
71.具体的,结合图5对该模式实现原理进行具体介绍,如图5所示,终端用户对应用程序11进行io请求操作,该io请求操作经过操作系统内核的通用块层13和scsi高层驱动14,再转交给scsi低层驱动15。其中,scsi低层驱动由lio/tcm框架16以及tcmu模块17共同实现。
72.io请求到达tcmu模块17后,基于上述描述的动态多共享内存管理模块51新增第二共享内存基础52上,第一转发线程将io请求数据转发到第一共享内存,第二转发线程将io请求数据转发到第二共享内存,其中,第一转发线程和第二转发线程并行运行。
73.第一轮询线程实时检查第一共享内存是否有io请求数据,如果有,就会将io请求数据读取出来,交给数据处理模块。同时,第二轮询线程实时检查第二共享内存是否有io请求数据请求,如果有,就会将io请求数据请求读取出来,交给数据处理模块处理,其中,第一轮询线程和第二轮询线程并行运行。
74.数据处理模块处理完成后,可以根据具体实现,将数据存储到本地的存储设备112、存储阵列113、或者是分布式存储后端114。
75.可理解的是,本公开实施例中共享内存数量与numa节点数量相关,共享内存数量不超过numa节点数量的情况下,可以根据数据处理模块处理io请求数据频率新增多个共享
内存,本技术对共享内存数量不做限定。
76.可理解的是,本公开实施例三种模式可以根据数据处理模块处理io请求数据频率自动切换,根据数据处理模块处理io请求数据频率可能由均衡模式切换到性能模式再切换到超高性能模式,也可能由均衡模式直接切换到超高性能模式。
77.本公开实施例通过获取数据处理模块对第一共享内存进行数据访问的频率;若所述频率大于第一阈值,则启动第一数据轮询线程,使得当tcmu模块使用uio机制进行io事件通知遇到瓶颈时,动态进入性能模式,使用轮询线程替换字符设备消息通知的方法,提高了数据处理的性能。若所述频率大于第二阈值,则创建第二共享内存、以及所述第二共享内存对应的第二数据轮询线程和第二转发线程,使得当共享内存数据传输成为性能瓶颈时,动态进入超高性能模式,使用多个numa节点划分多个共享内存,并行处理io请求,更进一步的提高了数据处理的性能。
78.另外,本公开实施例通过numa节点与共享内存一一对应,减少了跨numa访问内存带来的额外性能开销,同时动态切换三种工作模式,即能保持在低io请求数据时,不使用轮询造成cpu资源浪费,也能提供超高性能以适应更多应用场景。
79.图6为本公开实施例的另一种数据访问方法,图7为本公开实施例的另一种数据访问方法的实现原理图,在上述实施例的基础上,该数据访问方法还包括以下步骤,下面结合图7对图6所示的另一种数据访问方法进行介绍:
80.s601、创建映射表,所述映射表包括第一对应关系和第二对应关系;所述第一对应关系包括所述第一共享内存的标识、所述第一转发线程的标识和所述第一数据轮询线程的标识;所述第二对应关系包括所述第二共享内存的标识、所述第二转发线程的标识和所述第二数据轮询线程的标识。
81.具体的,进入性能模式后,工作状态探测模块新建映射表,数据处理模块启动第一轮询线程,tcmu模块通过第一转发线程将io请求数据转发到第一共享内存中,可理解的,上述第一共享内存、第一转发线程、第一轮询线程存在对应关系,上述关系称为第一对应关系,将上述对应关系保存到映射表71中。其中,该映射表单独保存在共享内存空间中。
82.当进入超高性能模式后,动态多共享内存管理模块新增第二共享内存,tcmu模块新增第二转发线程,数据处理模块新建第二轮询线程,上述第二共享内存、第二转发线程、第二轮询线程存在对应关系,上述对应关系称为第二对应关系,并将上述对应关系存到上述映射表中。
83.可选的,所述第一对应关系还包括所述第一共享内存的状态信息;所述第二对应关系还包括所述第二共享内存的状态信息。
84.具体的,状态信息用来表示共享内存的存在状态,示例性的,共享内存状态可以包括以下几种:可写入、待缩减、可缩减、缩减完成。
85.可写入状态包括,tcmu模块可以通过共享内存对应的转发线程向共享内存转发io请求数据,该状态为共享内存初始状态。
86.待缩减状态包括,tcmu模块停止向共享内存转发io请求数据。
87.可缩减状态包括,共享内存中的io请求数据已经被对应的轮询线程访问完成,该共享内存可以进行缩减。
88.缩减完成状态包括,上述共享内存已被删除。
89.本公开实施例对状态信息的目的是为了体现共享内存的实时状态,具体分类本实施例不做限定。
90.s602、根据所述第一共享内存的状态信息和所述第二共享内存的状态信息,从所述第一共享内存和所述第二共享内存中确定出目标共享内存,所述目标共享内存是待缩减的共享内存。
91.可选的,目标共享内存可以根据共享内存新增顺序,选择最后一个新增的共享内存作为目标共享内存;
92.具体的,当io请求数据的数量降低后,根据数据处理模块处理io请求数据的频率,会由超高性能模块自动切换到性能模式或者是均衡模式。此时,工作状态探测模块会将映射表中最后一个新增的共享内存作为目标共享内存,并将映射表中该目标共享内存的状态信息改为待缩减。
93.可选的,根据io请求数据占用共享内存的大小,选择被占用最少的共享内存作为目标共享内存。
94.具体的,当io请求数据的数量降低后,根据数据处理模块处理io请求数据的频率,会由超高性能模块自动切换到性能模式或者是均衡模式。工作状态探测模块获取每个共享内存被占用的大小,选择被占用最少的共享内存作为目标共享内存,并将映射表中该目标共享内存的状态信息改为待缩减。
95.可以理解的,确定目标共享内存还可以有其他的方式,本技术对目标共享内存的确定方法不做限定。
96.s603、停止向所述目标共享内存转发新的数据。
97.确定目标共享内存后,tcmu模块停止目标转发线程向目标共享内存发送io请求数据。
98.s604、当目标共享内存中所有的数据被处理后,停止所述目标共享内存对应的目标转发线程和目标数据轮询线程,并删除所述目标共享内存。
99.具体的,工作状态探测模块通过数据处理模块获取目标共享内存对应的目标轮询线程的数据处理状态,当目标轮询线程读取不到io请求数据,表示目标共享内存的io请求数据处理完成。
100.可选的,停止所述目标共享内存对应的目标转发线程之后停止所述目标数据轮询线程。
101.具体的,当目标共享内存的io请求数据处理完成后,工作状态探测模块通知tcmu模块停止目标转发线程的运行,然后通知数据处理模块停止目标数据轮询线程的运行,并将映射表中的目标共享内存的状态信息修改为可缩减。最后通知动态多共享内存管理模块删除目标共享内存,动态多共享内存管理模块删除目标共享内存后,将映射表中目标共享内存对应的记录的状态标记为缩减完成。
102.本公开实施例通过创建映射表,所述映射表包括第一对应关系和第二对应关系;所述第一对应关系包括所述第一共享内存的标识、所述第一转发线程的标识和所述第一数据轮询线程的标识;所述第二对应关系包括所述第二共享内存的标识、所述第二转发线程的标识和所述第二数据轮询线程的标识;根据所述第一共享内存的状态信息和所述第二共享内存的状态信息,从所述第一共享内存和所述第二共享内存中确定出目标共享内存;停
止向所述目标共享内存转发新的数据;当所述目标共享内存中所有的数据被处理后,停止所述目标共享内存对应的目标转发线程和目标数据轮询线程,并删除所述目标共享内存,使得可以根据映射表的对应关系,动态删除目标共享内存,在保证了io请求数据不会丢失,io请求数据安全性的同时,又减少了共享内存的资源占用;同时动态删除目标转发线程和目标轮询线程,减少了cpu资源的浪费。
103.图8为本公开实施例提供的数据访问装置的结构示意图。该数据访问装置可以是如上实施例所述终端设备,或者该用户界面处理装置可以是如上所述终端设备部件或组件。本公开实施例提供的数据访问装置可以执行数据访问方法实施例提供的处理流程,如图7所示,数据访问装置80包括:
104.工作状态探测模块81,用于获取数据处理模块对第一共享内存进行数据访问的频率。
105.数据处理模块82,用于若所述频率大于第一阈值,则启动第一数据轮询线程,所述第一数据轮询线程用于实时访问所述第一共享内存中的数据;若所述频率大于第二阈值,则创建第二共享内存对应的第二数据轮询线程。
106.动态多共享内存探测模块83,用于若所述频率大于第二阈值,则创建第二共享内存。
107.虚拟磁盘分布式块存储模块84,用于若所述频率大于第二阈值,则创建第二共享内存对应的第二转发线程。
108.可选的,若所述频率大于第一阈值,数据处理模块启动第一数据轮询线程时,虚拟磁盘分布式块存储模块84用于:停止发送所述第一共享内存的可读写消息事件。
109.可选的,工作状态探测模块81还用于:创建映射表,所述映射表包括第一对应关系和第二对应关系;所述第一对应关系包括所述第一共享内存的标识、所述第一转发线程的标识和所述第一数据轮询线程的标识;所述第二对应关系包括所述第二共享内存的标识、所述第二转发线程的标识和所述第二数据轮询线程的标识。
110.可选的,工作状态探测模块81用于创建映射表,所述映射表包括第一对应关系和第二对应关系时,具体用于:所述第一对应关系还包括所述第一共享内存的状态信息;所述第二对应关系还包括所述第二共享内存的状态信息。
111.可选的,工作状态探测模块81还用于:根据所述第一共享内存的状态信息和所述第二共享内存的状态信息,从所述第一共享内存和所述第二共享内存中确定出目标共享内存,所述目标共享内存是待缩减的共享内存。
112.可选的,工作状态探测模块81用于从所述第一共享内存和所述第二共享内存中确定出目标共享内存之后,虚拟磁盘分布式块存储模块84还用于:停止向所述目标共享内存转发新的数据。
113.可选的,当所述目标共享内存中所有的数据被处理后,虚拟磁盘分布式块存储模块84还用于:停止所述目标共享内存对应的目标转发线程;数据处理模块82还用于:停止所述目标共享内存对应的目标数据轮询线程;动态多共享内存探测模块83还用于:删除所述目标共享内存。
114.可选的,数据处理模块82用于:停止所述目标共享内存对应的目标数据轮询线程时,具体用于:虚拟磁盘分布式块存储模块84停止所述目标共享内存对应的目标转发线程
之后停止所述目标数据轮询线程。
115.图8所示实施例的数据访问装置可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
116.图9为本公开实施例提供的电子设备的结构示意图。如图8所示,设备90包括:存储器91、处理器92、计算机程序和通讯接口93;其中,计算机程序存储在存储器91中,并被配置为由处理器92执行如上所述的数据访问方法。
117.另外,本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的数据访问方法。
118.此外,本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序或指令,该计算机程序或指令被处理器执行时实现如上所述的数据访问方法。
119.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
120.以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种数据访问方法,其特征在于,所述方法包括:获取数据处理模块对第一共享内存进行数据处理的频率;若所述频率大于第一阈值,则启动第一数据轮询线程,所述第一数据轮询线程用于实时访问所述第一共享内存中的数据;若所述频率大于第二阈值,则创建第二共享内存、以及所述第二共享内存对应的第二数据轮询线程和第二转发线程;其中,所述第一阈值小于所述第二阈值;所述第一共享内存对应的第一转发线程和所述第二转发线程用于并行的向所述第一共享内存和所述第二共享内存转发数据;所述第一数据轮询线程和所述第二数据轮询线程用于并行的访问所述第一共享内存和所述第二共享内存中的数据。2.根据权利要求1所述的方法,其特征在于,若所述频率大于第一阈值,则通知所述数据处理模块启动第一数据轮询线程,包括:若所述频率大于第一阈值,则启动第一数据轮询线程,并停止发送所述第一共享内存的可读写消息事件。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:创建映射表,所述映射表包括第一对应关系和第二对应关系;所述第一对应关系包括所述第一共享内存的标识、所述第一转发线程的标识和所述第一数据轮询线程的标识;所述第二对应关系包括所述第二共享内存的标识、所述第二转发线程的标识和所述第二数据轮询线程的标识。4.根据权利要求3所述的方法,其特征在于,所述第一对应关系还包括所述第一共享内存的状态信息;所述第二对应关系还包括所述第二共享内存的状态信息。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:根据所述第一共享内存的状态信息和所述第二共享内存的状态信息,从所述第一共享内存和所述第二共享内存中确定出目标共享内存,所述目标共享内存是待缩减的共享内存。6.根据权利要求5所述的方法,其特征在于,从所述第一共享内存和所述第二共享内存中确定出目标共享内存之后,所述方法还包括:停止向所述目标共享内存转发新的数据;当所述目标共享内存中所有的数据被处理后,停止所述目标共享内存对应的目标转发线程和目标数据轮询线程,并删除所述目标共享内存。7.根据权利要求6所述的方法,其特征在于,停止所述目标共享内存对应的目标转发线程和目标数据轮询线程,包括:停止所述目标共享内存对应的目标转发线程之后停止所述目标数据轮询线程。8.一种数据访问装置,其特征在于,包括:工作状态探测模块,用于获取数据处理模块对第一共享内存进行数据访问的频率;数据处理模块,用于若所述频率大于第一阈值,则启动第一数据轮询线程,所述第一数
据轮询线程用于实时访问所述第一共享内存中的数据;若所述频率大于第二阈值,则创建第二共享内存对应的第二数据轮询线程;动态多共享内存探测模块,用于若所述频率大于第二阈值,则创建第二共享内存;虚拟磁盘分布式块存储模块,用于若所述频率大于第二阈值,则创建第二共享内存对应的第二转发线程。9.一种电子设备,其特征在于,包括存储器;处理器;以及计算机程序;其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-7中任一项所述的方法。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的方法。
技术总结
本公开涉及一种数据访问方法、装置、设备及计算机可读存储介质,本公开实施例通过获取数据处理模块对第一共享内存进行数据访问的频率;若所述频率大于第一阈值,则启动第一数据轮询线程,使得当TCMU模块使用UIO机制进行IO事件通知遇到瓶颈时,动态进入性能模式,使用轮询线程替换字符设备消息通知的方法,提高了数据处理的性能。若所述频率大于第二阈值,则创建第二共享内存、以及所述第二共享内存对应的第二数据轮询线程和第二转发线程,使得当共享内存数据传输成为性能瓶颈时,动态进入超高性能模式,使用多个NUMA节点划分多个共享内存,并行处理IO请求,更进一步的提高了数据处理的性能。理的性能。理的性能。
技术研发人员:张朝潞
受保护的技术使用者:北京天融信科技有限公司 北京天融信软件有限公司
技术研发日:2022.02.11
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-17782.html