CN113204382A - 数据处理方法、装置、电子设备以及存储介质 - Google Patents
数据处理方法、装置、电子设备以及存储介质 Download PDFInfo
- Publication number
- CN113204382A CN113204382A CN202110520123.8A CN202110520123A CN113204382A CN 113204382 A CN113204382 A CN 113204382A CN 202110520123 A CN202110520123 A CN 202110520123A CN 113204382 A CN113204382 A CN 113204382A
- Authority
- CN
- China
- Prior art keywords
- data
- container
- target
- space
- storage space
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 41
- 238000003672 processing method Methods 0.000 title abstract description 29
- 238000000034 method Methods 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 13
- 230000007246 mechanism Effects 0.000 claims description 12
- 230000003068 static effect Effects 0.000 claims description 5
- 230000007717 exclusion Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开公开了数据处理方法、装置、电子设备以及存储介质,涉及数据处理技术领域,尤其涉及大数据技术领域。数据处理方法具体实现方案为:将目标数据加载至目标存储空间,其中,目标存储空间为基于目标数据预先从内存池中分配的空间;基于目标数据和目标存储空间,动态分配容器空间;以及将加载于目标存储空间的目标数据加载至容器空间内,以便使用加载于容器空间内的目标数据执行线程操作。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及大数据技术领域,具体涉及数据处理方法、装置、电子设备以及存储介质。
背景技术
数据已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。数据在应用过程中,涉及数据加载。数据加载是衡量应用系统稳定高效的重要维度。在数据加载过程中,直接向系统申请内存,在申请量大的情况下,会导致CPU使用率增加,服务稳定性差等问题。
发明内容
本公开提供了一种数据处理方法、装置、电子设备以及存储介质。
根据本公开的一方面,提供了一种数据处理方法,包括:
将目标数据加载至目标存储空间,其中,所述目标存储空间为基于所述目标数据预先从内存池中分配的空间;
基于所述目标数据和所述目标存储空间,动态分配容器空间;以及
将加载于所述目标存储空间的所述目标数据加载至所述容器空间内,以便使用加载于所述容器空间内的所述目标数据执行线程操作。
根据本公开的另一方面,提供了一种数据处理装置,包括:
第一加载模块,用于将目标数据加载至目标存储空间,其中,所述目标存储空间为基于所述目标数据预先从内存池中分配的空间;
动态分配模块,用于基于所述目标数据和所述目标存储空间,动态分配容器空间;以及
第二加载模块,用于将加载于所述目标存储空间的所述目标数据加载至所述容器空间内,以便使用加载于所述容器空间内的所述目标数据执行线程操作。
根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行如上所述的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1示意性示出了根据本公开实施例的可以应用数据处理方法及装置的示例性系统架构;
图2示意性示出了根据本公开实施例的数据处理方法的流程图;
图3示意性示出了根据本公开实施例的从内存池中分配目标存储空间的示意图;
图4示意性示出了根据本公开实施例的动态分配容器空间示意图;
图5示意性示出了根据本公开实施例的执行线程操作的示意图;
图6示意性示出了根据本公开另一实施例的数据处理方法的流程图;
图7示意性示出了根据本公开实施例的数据处理装置的框图;以及
图8示意性示出了根据本公开实施例的适于实现数据处理方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
数据在应用过程中,涉及数据加载。数据加载是衡量应用系统稳定高效的重要维度。在数据加载过程中,直接向系统申请内存,在申请量大的情况下,会导致CPU使用率增加,服务稳定性差等问题。同时,使用默认数据容器,在预加载的数据量不确定的情况下,可能会引起数据容器的成倍扩容,进而导致数据容器负载率低,浪费内存空间的问题。
本公开提供了数据处理方法、装置、电子设备以及存储介质。根据本公开实施例,一种数据处理方法可以包括:将目标数据加载至目标存储空间,其中,目标存储空间为基于目标数据预先从内存池中分配的空间;基于目标数据和目标存储空间,动态分配容器空间;以及将加载于目标存储空间的目标数据加载至容器空间内,以便使用加载于容器空间内的目标数据执行线程操作。
图1示意性示出了根据本公开实施例的可以应用数据处理方法及装置的示例性系统架构。
需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。例如,在另一实施例中,可以应用数据处理方法及装置的示例性系统架构可以包括终端设备,但终端设备可以无需与服务器进行交互,即可实现本公开实施例提供的数据处理方法及装置。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如知识阅读类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的内容提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的数据处理方法一般可以由终端设备101、102、或103执行。相应地,本公开实施例所提供的数据处理装置也可以设置于终端设备101、102、或103中。
或者,本公开实施例所提供的数据处理方法一般也可以由服务器105执行。相应地,本公开实施例所提供的数据处理装置一般可以设置于服务器105中。本公开实施例所提供的数据处理方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的数据处理装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图2示意性示出了根据本公开实施例的数据处理方法的流程图。
如图2所示,该方法包括操作S210~S230。
在操作S210,将目标数据加载至目标存储空间,其中,目标存储空间为基于目标数据预先从内存池中分配的空间。
在操作S220,基于目标数据和目标存储空间,动态分配容器空间。
在操作S230,将加载于目标存储空间的目标数据加载至容器空间内,以便使用加载于容器空间内的目标数据执行线程操作。
根据本公开的实施例,目标数据的类型不做限定。例如,目标数据可以是包括各种语言的文本数据、图像数据、图表数据等等。
根据本公开的实施例,提供一种新的内存管理方法,利用内存池可以在申请数据加载用存储空间时,提供一种存储空间的申请、调用新方式,来代替直接向操作系统申请。本公开实施例提供的基于目标数据来预先从内存池中分配目标存储空间,可以避免由于直接且频繁地向系统申请分配存储空间而导致的性能恶化。
根据本公开的实施例,容器空间可以为数据容器,数据容器可以用于存储目标数据,但是并不局限于此。根据本公开的实施例,数据容器不仅可以作为数据存储容器,而且还可以提供应用运行所需要的环境,以便目标数据加载到数据容器后执行后续的线程操作。
根据本公开的实施例,线程操作可以是操作系统进程中能够独立执行的实体操作。同一个进程中的所有线程共享进程获得的主存空间和资源。在本公开的实施例中,该线程操作并不局限于单线程操作,还可以是多线程操作。
根据本公开的实施例,可以基于目标数据的数据量、目标数据的类型以及目标存储空间的存储空间容量等,来动态分配容器空间。
根据本公开的其他实施例,还可以预先分配默认的容器空间来存储目标数据。但是,采用预先分配默认的容器空间来存储目标数据的方式,在目标数据加载过程中,随着数据量的增长,自适应调整、扩容(rehash)。加载大批量目标数据等操作会带来不可预期的多次扩容操作。例如,默认数据容器的容器空间为1000条数据,而目标数据包括1001条。由此当存储第1001条时,会触发rehash,数据容器的容器空间调整到2000条。这不仅会导致不可预期的容器空间增长,造成资源的浪费、利用率低的问题,而且还会因不可预期的扩容操作,最终影响服务性能。
根据本公开的实施例,相比于预先分配默认的容器空间的方式,本公开实施例基于目标数据和目标存储空间来动态分配容器空间的方式,能够基于目标数据来适配调整,避免了不可预期的rehash操作,提高了性能,且提高数据容器的利用率。
利用本公开实施例提供的数据处理方法,采用内存池技术,为目标数据提供从内存池中分配的空间作为目标存储空间,从而避免频繁向系统直接申请内存而导致的性能问题。此外,动态分配容器空间,能够避免加载目标数据过程中的无预期的扩容导致最终空间利用率低的问题。进而,本公开实施例提供的数据处理方法,将内存池技术与动态分配容器空间技术结合,提高了数据加载的稳定性,同时提升了资源利用率。
下面结合具体实施例,并参考图3~图6对例如图2所示的方法做进一步说明。
根据本公开的实施例,可以为内存池(Memory Pool)设计内存分配器(MemoryAllocator)。在接收到用于请求存储空间的请求的情况下,可以响应于该请求,调用内存分配器来分配内存池中存储块(Block)。
图3示意性示出了根据本公开实施例的从内存池中分配目标存储空间的示意图。
如图3所示,可以为内存池310设计内存分配器320,利用内存分配器320接收用于请求存储空间的请求,其中,请求携带目标数据;响应于请求,调用内存池310中的存储块。
根据本公开的实施例,数据加载时,存储空间申请从原有的直接向操作系统340申请转变成向内存分配器320申请,内存分配器320可分配的内存来源于内存池310。
根据本公开的实施例,所有的预加载的目标数据共享同一个内存池310,内存池310申请和回收存储空间都是以存储块330为单位。每个存储块的存储容量可以固定,例如固定为16M,但是每个存储块的存储容量并不局限于此,还可以根据实际情况调节,在此不再赘述。
根据本公开的实施例,可以基于目标数据,从存储块中分配目标存储空间;然后将目标数据加载至目标存储空间。
本领域技术人员可以理解,上述内存分配器320可以是由例如处理器实现的功能模块,也可以是其他软件或硬件形式,只要能够实现相应功能即可。
如图3所示,内存分配器320响应于请求,基于目标数据的数据量,来从内存池310中获取存储块330。例如,针对目标数据350,如果数据量大小为8M,则所需存储块330存储容量的一半,则针对目标数据350申请一个存储块即可。例如,针对目标数据350,如果数据量大小为24M,则针对目标数据350需要向内存池310申请两个存储块。
,目标数据的数据量通常情况下并不与存储块的存储容量相匹配。如图3所示,在此情况下,可以利用偏移指针360计算,从存储块330中获取与目标数据对应的目标存储空间370。
根据本公开的实施例,基于目标数据,从内存池中调用与目标数据的数据量匹配的存储块,并从存储块中分配目标存储空间,可以节省存储空间的利用率。此外,目标存储空间的分配,只需利用偏移指针涉及地址偏移计算,处理速度快。
根据本公开的实施例,存储块的存储空间可以是连续的,由此可以在数据访问时提升CPU缓存的命中率,提升查询性能。
根据本公开的实施例,其中,目标数据为静态数据。
根据本公开的实施例,静态数据可以不做具体限定。只要是内容和数据量大小固定不变的数据均可适用。
根据本公开的实施例,针对偏移指针来确定存储块中的目标存储空间,更为适用加载静态数据,进一步避免了已经加载的数据因变化而导致的存储空间的间隔空闲或者部分数据存储空间不够的问题。
根据本公开的实施例,在执行完线程操作后,可以从目标存储空间中释放目标数据;以及将与目标存储空间相对应的存储块释放至内存池中。
根据本公开的实施例,从目标存储空间中释放目标数据,从内存分配器中释放存储块至内存池中,可以为全部释放。该全部释放方式更为适用于利用偏移指针计算目标存储空间的操作。该全部释放方式可以与偏移指针分配目标存储空间的方式相结合,实现快速处理的效果。
根据本公开的实施例,内存分配器中的存储块被全部释放到内存池中,不会直接释放给操作系统,而是可以被其他预加载的目标数据再利用。因此,在执行将目标数据加载至存储块的目标存储空间的操作之前,可以利用内存分配器来确定内存池中存储块的可用存储空间容量。例如,通过内存分配器来确定内存池中剩余存储块的数量,以此确定可用存储空间容量。在确定可用存储空间容量小于所需存储空间容量的情况下,可以向操作系统申请新的存储空间,例如新的存储块,其中,所需存储空间容量大于或等于预加载的目标数据的数据量。
根据本公开的实施例,利用将存储块释放到内存池后,重复利用该部分存储块,进一步避免频繁向操作系统现用现申请方式,进而提高存储空间申请效率,提高运行稳定性。
图4示意性示出了根据本公开实施例的动态分配容器空间的示意图。
如图4所示,本公开实施例提供一种容器分配和空间预分配方法,将默认数据容器410替换为多分片结构数据容器420,本公开实施例的数据容器经分片后,获得与目标数据相匹配的容器空间。例如,针对目标数据Data-B来分配相匹配的容器空间421等。
根据本公开的实施例,为数据容器动态分配容器空间的具体操作可以为,基于目标存储空间的容量和目标数据的数据量,确定容器空间的数量和容器空间容量;以及基于容器空间的数量和容器空间容量,从数据容器中动态分配容器空间。
例如,为数据容器动态分配容器空间可以为,基于目标存储空间的容量和目标数据的数据量,为每个数据容器分配至少一个容器空间。每个容器空间也可以基于目标数据的数据量和目标存储空间的容量来确定容器空间容量。
根据本公开实施例,数据容器的容器空间的数量以及每个容器空间的容器空间容量可以通过如下公式计算得到。
容器空间的数量=目标数据的总数据量/每个容器空间的最优目标数据的数据量。其中,每个容器空间的最优目标数据量=(N*Block)/目标数据中单条数据的数据量*预期负载因子。其中,(N*Block)为目标存储空间可利用的最大容量。其中,N为大于或等于1的整数。其中,Block为存储块。其中,预期负载因子为触发数据容器rehash的最小阈值。其中,每个容器空间的最优目标数据量即为每个容器空间的容器空间容量。
例如,目标数据中单条数据的数据量为5M,目标数据的总数据量为50M;则针对大小为16M的Block,则N为4,计算得到(N*Block)64M,预期负载因子预设为0.75,则每个容器空间的容器空间容量,即最优目标数据的数据量为9.6M,数据容器中的容器空间的数量为6个。
根据本公开的实施例,在目标数据被加载前,对数据容器的容器空间的数量和容器空间容量预先分配好,可以保证在整个目标数据加载过程中没有rehash操作。
利用本公开的动态分配容器空间模式,相比于默认容器空间模式,动态分配容器空间模式可以有效的解决目标数据加载过程中容器空间无序增长的问题,保证实际占用的内存可控,提升内存能效比,同时实现去rehash操作,避免了加载过程中的性能抖动问题。
根据本公开的另一实施例,在进行动态分配容器空间的操作之前,还可以进行数据容器的选型操作。
在实现本公开的过程中发现,不同的数据容器对于不同的数据类型在存储开销上存在差异。在本公开的其他实施例中,可以针对不同的数据类型均选择统一的默认类型的数据容器。但是并不局限于此,还可以根据实际情况,例如根据数据类型的不同选择匹配的数据容器。
根据本公开的实施例,数据类型与数据容器类型决定数据容器的能效比。例如,从表1中数据容器能效比说明可以看出,不同类型的数据容器的能效比计算公式略有不同。但是,在期望负载因子确定的情况下,容器能效比只与数据类型对应的大小S相关。由此,我们可以在编译阶段为不同的数据类型选择最高能效比的数据容器。
表1数据容器能效比说明
数据容器 | 能效比 | 类型说明 |
Flat-Map | R=T/((T/F)*S)=F/S | 平坦型数据哈希表 |
Node-Map | R=T/((T/F)*8+S*T)=F/(8+F*S) | 数据节点型哈希表 |
其中,总数据量为T,数据类型对应的大小为S,期望负载因子为F,能效比为R。
因此,在本公开的实施例中,可以基于目标数据的数据类型选择要加载至的数据容器。以便于实现最高能效比的效果。
图5示意性示出了根据本公开实施例的执行线程操作的示意图。
如图5所示,可以选用双数据容器来执行线程操作。例如,采用前端数据容器510和后端数据容器520来执行线程操作的模式。前端数据容器负责上一个状态的数据存储和数据查询,后端数据容器负责预加载目标数据的存储。采用双数据容器来进行加载以及线程操作,可以保证数据的有效性,以及线程操作的连续性。
根据本公开的实施例,可以在确定前端数据容器没有线程操作被执行的情况下,将加载于目标存储空间的目标数据加载至前端数据容器的容器空间内。
根据本公开的实施例,在确定前端数据容器有线程操作被执行的情况下,将加载于目标存储空间的目标数据加载至后端数据容器的容器空间内。
例如,为目标数据进行热更新、重新加载。采用前端容器负责数据执行线程操作,在前端容器有线程操作被执行的情况下,预加载的目标数据可以加载至后端数据容器中,以便在后续确定前端容器无线程操作被执行的情况下,对前端数据容器与后端数据容器进行数据交换。
根据本公开的实施例,在前端容器没有线程操作被执行的情况下,还可以直接将目标数据加载至前端数据容器中,进而节省后续对前端数据容器与后端数据容器进行数据交换的操作。
根据本公开的另一实施例,在前端容器没有线程操作的情况下,也可以将目标数据加载至后端数据容器中,在后续确定前端容器没有线程操作被执行的情况下,对前端数据容器与后端数据容器进行数据交换。
根据本公开的实施例,采用双数据容器来执行线程操作,且将目标数据加载至后端数据容器中,在后续确定前端容器没有线程操作被执行的情况下,对前端数据容器与后端数据容器进行数据交换的模式,能够使目标数据的加载更为有序,并且也避免多份数据同时加载,使系统峰值内存加倍的问题。
如图5所示,在前端数据容器被多线程执行操作的情况下,例如,被线程Thread-1和线程Thread-2操作的情况下。加载于前端数据容器510的容器空间511内的目标数据Data-A执行线程操作的过程,采用引用机制,即No-Copy模型。实现每个线程仅读取容器空间中相应数据条目的引用,不存在任何数据拷贝操作,也无额外的数据空间开销。
根据本公开的其他实施例中,并不局限于采用引用机制,还可以采用查询时数据拷贝机制。查询时数据拷贝机制可以解决由于数据热更新,双数据容器机制前端数据容器与后端数据容器交换数据带来的数据无效问题。但在高并发系统中,数据的拷贝会带来严重的性能开销。
根据本公开的另一实施例中,还可以采用智能指针托管机制。利用智能指针托管机制,将存储到数据容器中的数据对象被智能指针托管,查询时只拷贝智能指针,数据使用过程中一直有效。虽然智能指针能一定程度上减少数据拷贝成本同时保证数据热更新时的数据有效性,但智能指针也会占用额外的内存,同时智能指针的频繁使用会带来CPU的cache line bouncing(内存线程抖动)问题。
根据本公开的实施例,在前端数据容器中的目标数据被多线程查询的情况下,利用线程级互斥量保护机制对前端数据容器中的目标数据进行保护。
如图5所示,可以利用Mutex函数,对每个目标数据读取由线程级的互斥量保护,使各线程间不存在竞争关系。当数据重载,前端数据容器和后端数据容器进行数据交换(Swap)时,交换操作可以保证每个线程的互斥量被交换操作锁定,即交换后的查询会被切到新的数据容器中,交换前的查询被互斥量保护保证数据引用有效。
根据本公开的实施例,通过引用机制以及线程级互斥量保护机制可以实现在目标数据执行线程操作的情况下,不被拷贝的同时亦能提供高效的查询性能。
根据本公开的实施例,在执行将目标数据加载至目标存储空间操作之前,可以利用处理队列对数据加载任务进行编排。
根据本公开的实施例,对数据加载任务编排操作可以为,例如,将数据加载任务排列至处理队列中,其中,数据加载任务中携带目标数据;基于排列顺序,从处理队列中获取数据加载任务;以及解析数据加载任务得到目标数据,以便将目标数据加载至目标存储空间中。
利用本公开实施例提供的数据加载任务编排,使数据加载任务被排列到一个处理队列,例如Priority FIFO Queue中,根据先进先出顺序,实现被加载器(Loader)执行有序的加载。在本公开实施例中,有序的加载可以有效解决在多个目标数据预加载的场景下的系统内存峰值加倍的问题。
利用本公开实施例提供的数据加载任务编排方式,有序控制目标数据向内存池申请存储空间,同时结合内存池技术,可以有效的减少向操作系统申请内存的开销。
图6示意性示出了根据本公开另一实施例的数据处理方法的流程示意图。
如图6所示,数据处理方法可以通过如下操作来执行。
例如,将多个数据加载任务611排列至处理队列610中,利用加载器基于排列顺序,从处理队列610中获取其中一个数据加载任务。
解析数据加载任务以得到目标数据。
内存分配器620接收用于请求存储空间的请求,并响应于该请求,调用内存池630中的存储块640。
将目标数据加载至目标存储空间。
基于目标数据和目标存储空间,从数据容器650中动态分配容器空间660。
将加载于目标存储空间的目标数据Data-B加载至容器空间660内,以便使用加载于容器空间内的目标数据执行线程操作,例如查询目标数据。
通过以上数据处理方法,对于目标数据的加载过程和查询过程,实现性能和资源两者的优化适配。
图7示意性示出了根据本公开实施例的数据处理装置的框图。
如图7所示,数据处理装置700包括:第一加载模块701、动态分配模块702、以及第二加载模块703。
第一加载模块701,用于将目标数据加载至目标存储空间,其中,目标存储空间为基于目标数据预先从内存池中分配的空间;
动态分配模块702,用于基于目标数据和目标存储空间,动态分配容器空间;以及
第二加载模块703,用于将加载于目标存储空间的目标数据加载至容器空间内,以便使用加载于容器空间内的目标数据执行线程操作。
通过本公开实的实施例,一方面,采用内存池技术,为目标数据提供从内存池中分配的空间作为目标存储空间,解决频繁向系统直接申请内存而导致的性能问题。另一方面,动态分配容器空间,避免加载目标数据过程中的无预期的扩容导致最终空间利用率低的问题。进而,将内存池技术与动态分配容器空间技术结合,提高了数据加载的稳定性同时提升了资源利用率。
根据本公开的实施例,数据处理装置700还包括接收模块以及调用模块。
接收模块,用于接收用于请求存储空间的请求,其中,请求携带目标数据;
调用模块,用于响应于请求,调用内存池中的存储块。
根据本公开的实施例,第一加载模块701包括第一分配单元以及第一加载单元。
第一分配单元,用于基于目标数据,从存储块中分配目标存储空间;
第一加载单元,用于将目标数据加载至目标存储空间。
根据本公开的实施例,数据处理装置700还包括申请模块。
申请模块,用于在确定内存池中的可用存储空间容量小于所需存储空间容量的情况下,申请新的存储块,其中,所需存储空间容量大于或等于预加载的目标数据的数据量。
根据本公开的实施例,数据处理装置700还包括第一释放模块以及第二释放模块。
第一释放模块,用于从目标存储空间中释放目标数据;以及
第二释放模块,用于将与目标存储空间相对应的存储块释放至内存池中。
根据本公开的实施例,其中,动态分配模块702包括确定单元和第二分配单元。
确定单元,用于基于目标存储空间的容量和目标数据的数据量,确定容器空间的数量和容器空间容量;以及
第二分配单元,用于基于容器空间的数量和容器空间容量,从数据容器中动态分配容器空间。
根据本公开的实施例,其中,数据容器包括前端数据容器和后端数据容器,其中,由前端数据容器执行线程操作。
根据本公开的实施例,第二加载模块703包括第二加载单元。
第二加载单元,用于在确定前端数据容器没有线程操作被执行的情况下,将加载于目标存储空间的目标数据加载至前端数据容器的容器空间内。
根据本公开的实施例,其中,第二加载模块703还包括第三加载单元和数据交换单元。
第三加载单元,用于在确定前端数据容器有线程操作被执行的情况下,将加载于目标存储空间的目标数据加载至后端数据容器的容器空间内;以及
数据交换单元,用于在后续确定前端容器无线程操作被执行的情况下,对前端数据容器与后端数据容器进行数据交换。
根据本公开的实施例,数据处理装置700还包括保护模块。
保护模块,用于在前端数据容器中的目标数据被多线程查询的情况下,利用线程级互斥量保护机制对前端数据容器中的目标数据进行保护。
根据本公开的实施例,数据处理装置700还包括选择模块。
选择模块,用于基于目标数据的数据类型选择要加载至的数据容器。
根据本公开的实施例,数据处理装置还包括排列模块、获取模块、以及解析模块。
排列模块,用于将数据加载任务排列至处理队列中,其中,数据加载任务中携带目标数据;
获取模块,用于基于排列顺序,从处理队列中获取数据加载任务;以及
解析模块,用于解析数据加载任务得到目标数据,以便将目标数据加载至目标存储空间中。
根据本公开的实施例,其中,目标数据为静态数据。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
根据本公开的实施例,一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上所述的方法。
根据本公开的实施例,一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行如上所述的方法。
根据本公开的实施例,一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如上所述的方法。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如数据处理方法。例如,在一些实施例中,数据处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的数据处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以是分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (20)
1.一种数据处理方法,包括:
将目标数据加载至目标存储空间,其中,所述目标存储空间为基于所述目标数据预先从内存池中分配的空间;
基于所述目标数据和所述目标存储空间,动态分配容器空间;以及
将加载于所述目标存储空间的所述目标数据加载至所述容器空间内,以便使用加载于所述容器空间内的所述目标数据执行线程操作。
2.根据权利要求1所述的方法,还包括:
接收用于请求存储空间的请求,其中,所述请求携带所述目标数据;
响应于所述请求,调用所述内存池中的存储块;
其中,所述将目标数据加载至目标存储空间包括:
基于所述目标数据,从所述存储块中分配所述目标存储空间;
将所述目标数据加载至所述目标存储空间。
3.根据权利要求2所述的方法,还包括:
在确定所述内存池中的可用存储空间容量小于所需存储空间容量的情况下,申请新的存储块,其中,所述所需存储空间容量大于或等于预加载的所述目标数据的数据量。
4.根据权利要求2所述的方法,还包括:
从所述目标存储空间中释放所述目标数据;以及
将与所述目标存储空间相对应的存储块释放至所述内存池中。
5.根据权利要求1所述的方法,其中,所述基于所述目标数据和所述目标存储空间,动态分配容器空间包括:
基于所述目标存储空间的容量和所述目标数据的数据量,确定所述容器空间的数量和所述容器空间容量;以及
基于所述容器空间的数量和所述容器空间容量,从数据容器中动态分配所述容器空间。
6.根据权利要求5所述的方法,其中,所述数据容器包括前端数据容器和后端数据容器,其中,由前端数据容器执行所述线程操作;
所述将加载于所述目标存储空间的所述目标数据加载至所述容器空间内包括:
在确定所述前端数据容器没有线程操作被执行的情况下,将加载于所述目标存储空间的所述目标数据加载至所述前端数据容器的容器空间内。
7.根据权利要求6所述的方法,其中,
在确定所述前端数据容器有线程操作被执行的情况下,将加载于所述目标存储空间的所述目标数据加载至所述后端数据容器的容器空间内;以及
在后续确定所述前端容器无所述线程操作被执行的情况下,对所述前端数据容器与所述后端数据容器进行数据交换。
8.根据权利要求6所述的方法,还包括:
在所述前端数据容器中的所述目标数据被多线程查询的情况下,利用线程级互斥量保护机制对所述前端数据容器中的所述目标数据进行保护。
9.根据权利要求5至8中任一项所述的方法,还包括:
基于所述目标数据的数据类型选择要加载至的所述数据容器。
10.根据权利要求1所述的方法,还包括:
将数据加载任务排列至处理队列中,其中,所述数据加载任务中携带所述目标数据;
基于排列顺序,从所述处理队列中获取所述数据加载任务;以及
解析所述数据加载任务得到所述目标数据,以便将所述目标数据加载至所述目标存储空间中。
11.根据权利要求1至10中任一项所述的方法,其中,所述目标数据为静态数据。
12.一种数据处理装置,包括:
第一加载模块,用于将目标数据加载至目标存储空间,其中,所述目标存储空间为基于所述目标数据预先从内存池中分配的空间;
动态分配模块,用于基于所述目标数据和所述目标存储空间,动态分配容器空间;以及
第二加载模块,用于将加载于所述目标存储空间的所述目标数据加载至所述容器空间内,以便使用加载于所述容器空间内的所述目标数据执行线程操作。
13.根据权利要求12所述的装置,还包括:
接收模块,用于接收用于请求存储空间的请求,其中,所述请求携带所述目标数据;
调用模块,用于响应于所述请求,调用所述内存池中的存储块;
其中,所述第一加载模块包括:
第一分配单元,用于基于所述目标数据,从所述存储块中分配所述目标存储空间;
第一加载单元,用于将所述目标数据加载至所述目标存储空间。
14.根据权利要求13所述的装置,还包括:
第一释放模块,用于从所述目标存储空间中释放所述目标数据;以及
第二释放模块,用于将与所述目标存储空间相对应的存储块释放至所述内存池中。
15.根据权利要求12所述的装置,其中,所述动态分配模块包括:
确定单元,用于基于所述目标存储空间的容量和所述目标数据的数据量,确定所述容器空间的数量和所述容器空间容量;以及
第二分配单元,用于基于所述容器空间的数量和所述容器空间容量,从数据容器中动态分配所述容器空间。
16.根据权利要求12所述的装置,其中,所述数据容器包括前端数据容器和后端数据容器,其中,由前端数据容器执行所述线程操作;
所述第二加载模块包括:
第二加载单元,用于在确定所述前端数据容器没有线程操作的情况下,将加载于所述目标存储空间的所述目标数据加载至所述前端数据容器的容器空间内。
17.根据权利要求15所述的装置,还包括:
选择模块,用于基于所述目标数据的数据类型选择要加载至的所述数据容器。
18.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-11中任一项所述的方法。
19.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-11中任一项所述的方法。
20.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110520123.8A CN113204382B (zh) | 2021-05-12 | 2021-05-12 | 数据处理方法、装置、电子设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110520123.8A CN113204382B (zh) | 2021-05-12 | 2021-05-12 | 数据处理方法、装置、电子设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113204382A true CN113204382A (zh) | 2021-08-03 |
CN113204382B CN113204382B (zh) | 2024-05-10 |
Family
ID=77031024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110520123.8A Active CN113204382B (zh) | 2021-05-12 | 2021-05-12 | 数据处理方法、装置、电子设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113204382B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023071848A1 (zh) * | 2021-10-25 | 2023-05-04 | 支付宝(杭州)信息技术有限公司 | 图数据加载 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150153958A1 (en) * | 2013-12-03 | 2015-06-04 | Samsung Electronics Co., Ltd. | Electronic device and method for memory allocation in electronic device |
CN107133103A (zh) * | 2017-05-05 | 2017-09-05 | 第四范式(北京)技术有限公司 | 用于数据流式计算的内存管理系统及其方法 |
CN110196770A (zh) * | 2018-07-13 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 云系统内存数据处理方法、装置、设备及存储介质 |
CN112256457A (zh) * | 2020-11-06 | 2021-01-22 | 开普云信息科技股份有限公司 | 一种基于共享内存的数据载入加速方法、装置、电子设备及存储介质 |
CN112306369A (zh) * | 2019-07-29 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
-
2021
- 2021-05-12 CN CN202110520123.8A patent/CN113204382B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150153958A1 (en) * | 2013-12-03 | 2015-06-04 | Samsung Electronics Co., Ltd. | Electronic device and method for memory allocation in electronic device |
CN107133103A (zh) * | 2017-05-05 | 2017-09-05 | 第四范式(北京)技术有限公司 | 用于数据流式计算的内存管理系统及其方法 |
CN110196770A (zh) * | 2018-07-13 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 云系统内存数据处理方法、装置、设备及存储介质 |
CN112306369A (zh) * | 2019-07-29 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
CN112256457A (zh) * | 2020-11-06 | 2021-01-22 | 开普云信息科技股份有限公司 | 一种基于共享内存的数据载入加速方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
佚名: "Spark on Kubernetes 动态分配资源", Retrieved from the Internet <URL:https://cloud.tencent.com/developer/article/1674970> * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023071848A1 (zh) * | 2021-10-25 | 2023-05-04 | 支付宝(杭州)信息技术有限公司 | 图数据加载 |
Also Published As
Publication number | Publication date |
---|---|
CN113204382B (zh) | 2024-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10467152B2 (en) | Dynamic cache management for in-memory data analytic platforms | |
US10204175B2 (en) | Dynamic memory tuning for in-memory data analytic platforms | |
WO2018223075A1 (en) | Method and apparatus for implementing virtual gpu and system | |
EP3260993A1 (en) | File operation method and device | |
US10216414B2 (en) | Frame choosing during storage constraint condition | |
US8799611B2 (en) | Managing allocation of memory pages | |
KR20150010574A (ko) | 축출 시스템, 축출 방법 및 컴퓨터 판독가능 매체 | |
US9389997B2 (en) | Heap management using dynamic memory allocation | |
US11341044B2 (en) | Reclaiming storage resources | |
US7243354B1 (en) | System and method for efficiently processing information in a multithread environment | |
US9697047B2 (en) | Cooperation of hoarding memory allocators in a multi-process system | |
US20170018050A1 (en) | Communication between integrated graphics processing units | |
EP2755129B1 (en) | Memory allocation method, program, and system | |
CN110209354B (zh) | 用于处理数据的方法、装置、设备和介质 | |
CN113204382B (zh) | 数据处理方法、装置、电子设备以及存储介质 | |
US8868876B2 (en) | Dedicated large page memory pools | |
US9405470B2 (en) | Data processing system and data processing method | |
CN115905121A (zh) | 一种文件处理方法、装置、设备及存储介质 | |
US11023275B2 (en) | Technologies for queue management by a host fabric interface | |
US9176910B2 (en) | Sending a next request to a resource before a completion interrupt for a previous request | |
US20190310857A1 (en) | Method of Concurrent Instruction Execution and Parallel Work Balancing in Heterogeneous Computer Systems | |
US11960721B2 (en) | Dynamic storage in key value solid state drive | |
US8806504B2 (en) | Leveraging performance of resource aggressive applications | |
CN114331804A (zh) | 资源处理方法、装置、设备及存储介质 | |
US7941629B2 (en) | Memory registration caching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |