CN111475099B - 一种数据存储方法、装置及其设备 - Google Patents
一种数据存储方法、装置及其设备 Download PDFInfo
- Publication number
- CN111475099B CN111475099B CN201910062294.3A CN201910062294A CN111475099B CN 111475099 B CN111475099 B CN 111475099B CN 201910062294 A CN201910062294 A CN 201910062294A CN 111475099 B CN111475099 B CN 111475099B
- Authority
- CN
- China
- Prior art keywords
- data
- written
- memory
- type
- persistent memory
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据存储方法、装置及其设备,该方法包括:将持久内存的内存区域加载到操作***内核的内存管理子***,并将普通内存的内存区域加载到操作***内核的内存管理子***,以使所述操作***内核统一管理所述持久内存的内存区域和所述普通内存的内存区域;获取待写入数据、所述待写入数据对应的数据类型;通过所述操作***内核根据所述数据类型将所述待写入数据存储到持久内存,或者,将所述待写入数据存储到普通内存。通过本申请的技术方案,可以实现持久内存和普通内存的统一管理,实现数据的存储。
Description
技术领域
本申请涉及存储技术领域,尤其是一种数据存储方法、装置及其设备。
背景技术
随着云计算、物联网等技术的快速发展,对数据中心的要求越来越高,不仅要求超高的计算能力,也要求大容量、低延迟的新型存储介质。因此,目前提出一种介于磁盘(如传统硬盘、SSD(Solid State Disk,固态硬盘)等)与普通内存(如DRAM(Dynamic RandomAccess Memory,动态随机存取存储器)等)之间的存储介质,即AEP(Apache Pass)。AEP是一种基于3D-XPoint的存储介质,虽然AEP的读写速度比普通内存的读写速度慢,但是,AEP的存储空间比较大,能够在AEP中存储大量数据,因此,AEP在未来会得到大量使用。
目前,对AEP的使用方式包括:将AEP作为一种持久内存来使用,可以将数据存储到AEP中。但是,一旦将热点数据(即需要频繁读取的数据)存储到AEP中,则需要频繁的从AEP中读取数据。显然,由于AEP的读写速度比普通内存的读写速度慢,因此,上述方式会造成性能大幅损失,读写性能较差。
发明内容
本申请提供一种数据存储方法,所述方法包括:
将持久内存的内存区域加载到操作***内核的内存管理子***,并将普通内存的内存区域加载到操作***内核的内存管理子***,以使所述操作***内核统一管理所述持久内存的内存区域和所述普通内存的内存区域;
获取待写入数据、所述待写入数据对应的数据类型;
通过所述操作***内核根据所述数据类型将所述待写入数据存储到持久内存,或者,将所述待写入数据存储到普通内存。
本申请提供一种数据存储方法,所述方法包括:
用户态模块获取待写入数据、所述待写入数据对应的数据类型;
所述用户态模块将所述待写入数据和所述数据类型发送给内核态模块;
所述内核态模块获取所述待写入数据、所述待写入数据对应的数据类型,并根据所述数据类型将所述待写入数据存储到持久内存或者普通内存;
在将所述待写入数据存储到持久内存之后,若所述数据类型发生变化,则所述内核态模块将所述待写入数据从所述持久内存迁移到普通内存;
在将所述待写入数据存储到普通内存之后,若所述数据类型发生变化,则所述内核态模块将所述待写入数据从所述普通内存迁移到持久内存。
本申请提供一种数据存储方法,所述方法包括:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;
将待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;
若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存。
本申请提供一种数据存储方法,所述方法包括:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;
将待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;
若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存。
本申请提供一种数据存储装置,所述装置包括:
获取模块,用于获取待写入数据、所述待写入数据对应的数据类型;
存储模块,用于若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;所述获取模块,还用于在所述存储模块将所述待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;
迁移模块,用于若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存。
本申请提供一种数据存储装置,所述装置包括:
获取模块,用于获取待写入数据、所述待写入数据对应的数据类型;
存储模块,用于若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;所述获取模块,还用于在所述存储模块将所述待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;
迁移模块,用于若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存。
本申请提供一种数据存储设备,所述数据存储设备包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;
将待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;
若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存。
本申请提供一种数据存储设备,所述数据存储设备包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;
将待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;
若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存。
基于上述技术方案,本申请实施例中,可以将持久内存的内存区域加载到操作***内核的内存管理子***,并将普通内存的内存区域加载到操作***内核的内存管理子***,以使操作***内核统一管理持久内存的内存区域和普通内存的内存区域;基于此,可以通过操作***内核将待写入数据存储到持久内存,或者,将待写入数据存储到普通内存,也就是说,可以实现持久内存和普通内存的统一管理,实现数据的存储。进一步的,在将待写入数据存储到持久内存后,若根据待写入数据的访问参数确定待写入数据的数据类型发生变化,如待写入数据变更为热点数据(即需要频繁读取的数据),则可以将待写入数据从持久内存迁移到普通内存,也就是说,即使将热点数据存储到持久内存中,也可以将热点数据迁移到普通内存,由于持久内存的读写性能比普通内存的读写性能低,因此,通过避免频繁的从持久内存中读取热点数据,可以解决性能大幅损失,读写性能较差等问题,可以提高数据的读写性能。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的数据存储方法的流程图;
图2是本申请另一种实施方式中的数据存储方法的流程图;
图3是本申请另一种实施方式中的数据存储方法的流程图;
图4A是本申请一种实施方式中的应用场景示意图;
图4B是本申请一种实施方式中的数据存储方法的示意图;
图5是本申请一种实施方式中的数据存储装置的结构图;
图6是本申请另一种实施方式中的数据存储装置的结构图;
图7是本申请一种实施方式中的数据存储设备的硬件结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例提出一种数据存储方法,该方法可以应用于数据存储设备(即包括持久内存和普通内存的数据存储设备,持久内存可以为AEP,普通内存可以为DRAM),参见图1所示,为该方法的流程示意图,该方法可以包括:
步骤101,获取待写入数据、该待写入数据对应的数据类型。
其中,该数据类型可以为第一类型或者第二类型,第一类型表示待写入数据是非热点数据(也可以称为冷数据),非热点数据是不需要频繁读取的数据,非热点数据在每秒的访问次数小于阈值;第二类型表示待写入数据是热点数据,热点数据是需要频繁读取的数据,热点数据在每秒的访问次数大于阈值。
步骤102,若该数据类型为第一类型,则将该待写入数据存储到持久内存。
具体的,可以从持久内存中选择第一可用内存区域,并将该待写入数据存储到第一可用内存区域,并记录该待写入数据的虚拟地址与第一可用内存区域的物理地址的第一映射关系,该第一映射关系用于从第一可用内存区域读取该待写入数据。若需要读取待写入数据,则利用待写入数据的虚拟地址查询所述第一映射关系,得到第一可用内存区域的物理地址,基于第一可用内存区域的物理地址找到第一可用内存区域,从第一可用内存区域读取待写入数据。
在一个例子中,从持久内存中选择第一可用内存区域之前,还可以将持久内存的内存区域(如所有内存区域)加载到操作***内核的内存管理子***,该内存管理子***用于管理持久内存的内存区域,也就是说,通过将持久内存的所有内存区域加载到操作***内核的内存管理子***,使得内存管理子***能够管理持久内存的所有内存区域,继而使用持久内存的内存区域存储数据。
从持久内存中选择第一可用内存区域,可以包括:基于操作***内核的内存管理子***提供的管理信息(如持久内存的哪些内存区域被占用,哪些内存区域未被占用),从持久内存的内存区域中选择未被占用的第一可用内存区域。
步骤103,将待写入数据存储到持久内存后,获取待写入数据的第一访问参数,如待写入数据的第一访问量,如待写入数据每秒的访问次数。
步骤104,若根据该第一访问参数确定待写入数据对应的数据类型变更为第二类型,则将该待写入数据从持久内存迁移到普通内存。
具体的,在将待写入数据存储到持久内存后,可以周期性获取待写入数据的第一访问参数。若根据该第一访问参数确定待写入数据对应的数据类型未发生变化(仍为第一类型),则等待下一周期,继续获取待写入数据的第一访问参数。若根据该第一访问参数确定待写入数据对应的数据类型发生变化(从第一类型变化为第二类型),则将待写入数据从持久内存迁移到普通内存。
在一个例子中,将该待写入数据从持久内存迁移到普通内存,可以包括但不限于:解除待写入数据的虚拟地址与第一可用内存区域的物理地址的第一映射关系;从普通内存中选择第二可用内存区域,并将该待写入数据存储到第二可用内存区域,并记录待写入数据的虚拟地址与第二可用内存区域的物理地址的第二映射关系,该第二映射关系用于从第二可用内存区域读取该待写入数据。
在后续过程中,若需要读取待写入数据,则利用待写入数据的虚拟地址查询所述第二映射关系,得到第二可用内存区域的物理地址,基于第二可用内存区域的物理地址找到第二可用内存区域,从第二可用内存区域读取待写入数据。
在一个例子中,步骤101之后,还可以包括以下步骤(在图1未示出):
步骤105,若该数据类型为第二类型,则将该待写入数据存储到普通内存。
步骤106,将待写入数据存储到普通内存后,获取待写入数据的第二访问参数,如待写入数据的第二访问量,如待写入数据每秒的访问次数。
步骤107,若根据该第二访问参数确定待写入数据对应的数据类型变更为第一类型,则将该待写入数据从普通内存迁移到持久内存。
具体的,在将待写入数据存储到普通内存后,可以周期性获取待写入数据的第二访问参数。若根据该第二访问参数确定待写入数据对应的数据类型未发生变化(仍为第二类型),则等待下一周期,继续获取待写入数据的第二访问参数。若根据该第二访问参数确定待写入数据对应的数据类型发生变化(从第二类型变化为第一类型),则将待写入数据从普通内存迁移到持久内存。
在一个例子中,将待写入数据从普通内存迁移到持久内存,可以包括:解除待写入数据的虚拟地址与普通内存的物理地址的映射关系;从持久内存中选择第三可用内存区域,将该待写入数据存储到第三可用内存区域,并记录待写入数据的虚拟地址与第三可用内存区域的物理地址的第三映射关系,该第三映射关系用于从第三可用内存区域读取待写入数据。
在后续过程中,若需要读取待写入数据,则利用待写入数据的虚拟地址查询所述第三映射关系,得到第三可用内存区域的物理地址,基于第三可用内存区域的物理地址找到第三可用内存区域,从第三可用内存区域读取待写入数据。
在上述实施例中,获取待写入数据对应的数据类型,可以包括:获取与待写入数据对应的数据标志;若该数据标志为第一标识,则确定该数据类型为第一类型;若该数据标志为第二标识,则确定该数据类型为第二类型。
在上述实施例中,根据第一访问参数确定待写入数据对应的数据类型变更为第二类型,可以包括:若第一访问参数包括第一访问量,则当第一访问量大于第一阈值时,确定待写入数据对应的数据类型变更为第二类型。根据第二访问参数确定待写入数据对应的数据类型变更为第一类型,可以包括:若第二访问参数包括第二访问量,则当第二访问量小于第二阈值时,确定待写入数据对应的数据类型变更为第一类型;其中,第一阈值可以大于第二阈值。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
基于上述技术方案,本申请实施例中,在将待写入数据存储到持久内存后,若根据待写入数据的访问参数确定待写入数据的数据类型发生变化,如待写入数据变更为热点数据(即需要频繁读取的数据),则可以将待写入数据从持久内存迁移到普通内存,也就是说,即使将热点数据存储到持久内存中,也可以将热点数据迁移到普通内存,从而避免频繁的从持久内存中读取热点数据,可以解决性能大幅损失,读写性能较差等问题,可以提高数据的读写性能。
基于与上述方法同样的构思,本申请实施例提出另一种数据存储方法,可以应用于数据存储设备,参见图2所示,为该方法的流程示意图,该方法包括:
步骤201,获取待写入数据、该待写入数据对应的数据类型。
步骤202,若该数据类型为第二类型,则将该待写入数据存储到普通内存。
步骤203,将待写入数据存储到普通内存后,获取待写入数据的第二访问参数,如待写入数据的第二访问量,如待写入数据每秒的访问次数。
步骤204,若根据该第二访问参数确定待写入数据对应的数据类型变更为第一类型,则将该待写入数据从普通内存迁移到持久内存。
在一个例子中,将待写入数据从普通内存迁移到持久内存,可以包括:解除待写入数据的虚拟地址与普通内存的物理地址的映射关系;从持久内存中选择第三可用内存区域,将该待写入数据存储到第三可用内存区域,并记录待写入数据的虚拟地址与第三可用内存区域的物理地址的第三映射关系,该第三映射关系用于从第三可用内存区域读取待写入数据。
在后续过程中,若需要读取待写入数据,则利用待写入数据的虚拟地址查询所述第三映射关系,得到第三可用内存区域的物理地址,基于第三可用内存区域的物理地址找到第三可用内存区域,从第三可用内存区域读取待写入数据。
在一个例子中,从持久内存中选择第三可用内存区域之前,还可以将持久内存的内存区域(如所有内存区域)加载到操作***内核的内存管理子***,其中,该内存管理子***可以用于管理持久内存的所有内存区域。
从持久内存中选择第三可用内存区域,可以包括:基于操作***内核的内存管理子***提供的管理信息(如持久内存的哪些内存区域被占用,哪些内存区域未被占用),从持久内存的内存区域中选择未被占用的第三可用内存区域。
在一个例子中,获取待写入数据对应的数据类型,可以包括:获取与待写入数据对应的数据标志;若该数据标志为第一标识,则确定该数据类型为第一类型;若该数据标志为第二标识,则确定该数据类型为第二类型。
在一个例子中,根据第二访问参数确定待写入数据对应的数据类型变更为第一类型,可以包括:若第二访问参数包括第二访问量,则当第二访问量小于第二阈值时,则确定待写入数据对应的数据类型变更为第一类型。
基于上述技术方案,本申请实施例中,在将待写入数据存储到普通内存后,若根据待写入数据的访问参数确定待写入数据的数据类型发生变化,如待写入数据从热点数据变更为非热点数据(即不需要频繁读取的数据),则可以将待写入数据从普通内存迁移到持久内存,也就是说,即使将非热点数据存储到普通内存中,也可以将非热点数据迁移到持久内存,从而可以从持久内存中读取非热点数据,合理利用持久内存来存储数据,节约普通内存的资源。
基于与上述方法同样的构思,本申请实施例提出另一种数据存储方法,可以应用于数据存储设备,该方法可以包括:获取待写入数据、该待写入数据对应的数据类型;若该数据类型为第一类型,则可以将该待写入数据存储到持久内存;若该数据类型为第二类型,则可以将该待写入数据存储到普通内存。
其中,在将该待写入数据存储到持久内存之后,还可以将该待写入数据迁移到普通内存,具体实现方式参见上述实施例,在此不再赘述。
其中,在将该待写入数据存储到普通内存之后,还可以将该待写入数据迁移到持久内存,具体实现方式参见上述实施例,在此不再赘述。
基于与上述方法同样的构思,本申请实施例提出另一种数据存储方法,可以应用于数据存储设备,该方法可以包括:获取待写入数据、该待写入数据对应的数据类型;根据该数据类型将待写入数据存储到第一类内存;在将待写入数据存储到第一类内存之后,可以获取待写入数据的访问参数;若根据该访问参数确定待写入数据对应的数据类型发生变化,则将待写入数据从第一类内存迁移到第二类内存。其中,所述第一类内存为普通内存,所述第二类内存为持久内存;或者,所述第一类内存为持久内存,所述第二类内存为普通内存。
其中,若待写入数据对应的数据类型为第一类型,则第一类内存为持久内存,第二类内存为普通内存,具体实现方式参见上述实施例,在此不再赘述。
其中,若待写入数据对应的数据类型为第二类型,则第一类内存为普通内存,第二类内存为持久内存,具体实现方式参见上述实施例,在此不再赘述。
基于与上述方法同样的构思,本申请实施例提出另一种数据存储方法,可以应用于数据存储设备,该方法可以包括:获取待写入数据、该待写入数据对应的数据类型;根据该数据类型将该待写入数据存储到持久内存或者普通内存。例如,若该数据类型为第一类型,则可以将该待写入数据存储到持久内存;或者,若该数据类型为第二类型,则可以将该待写入数据存储到普通内存。
进一步的,在将该待写入数据存储到持久内存之后,若该待写入数据对应的数据类型发生变化,则可以将该待写入数据从持久内存迁移到普通内存;或者,在将该待写入数据存储到普通内存之后,若该待写入数据对应的数据类型发生变化,则可以将该待写入数据从普通内存迁移到持久内存。
基于与上述方法同样的构思,本申请实施例提出另一种数据存储方法,可以应用于数据存储设备,该数据存储设备可以包括应用模块、用户态模块和内核态模块(即基于操作***内核的模块),参见图3所示,该方法可以包括:
步骤301,用户态模块获取待写入数据、该待写入数据对应的数据类型。
具体的,为了获取待写入数据对应的数据类型,用户态模块可以接收应用模块发送的第一接口消息,该第一接口消息可以包括待写入数据、与该待写入数据对应的数据类型;用户态模块从该第一接口消息中获取该待写入数据对应的数据类型。或者,用户态模块接收应用模块发送的第二接口消息,该第二接口消息可以包括待写入数据;用户态模块可以根据普通内存与持久内存的使用比例(可以根据经验配置),获取所述待写入数据对应的数据类型。
步骤302,用户态模块将该待写入数据和该数据类型发送给内核态模块。
步骤303,内核态模块获取该待写入数据、该待写入数据对应的数据类型,并根据该数据类型将该待写入数据存储到持久内存或者普通内存。
例如,若该数据类型为第一类型,则可以将该待写入数据存储到持久内存;或者,若该数据类型为第二类型,则可以将该待写入数据存储到普通内存。
步骤304,内核态模块在将该待写入数据存储到持久内存之后,若该数据类型发生变化(如从第一类型变化为第二类型),则内核态模块将该待写入数据从该持久内存迁移到普通内存;或者,内核态模块在将该待写入数据存储到普通内存之后,若该数据类型发生变化(如从第二类型变化为第一类型),则内核态模块将该待写入数据从该普通内存迁移到持久内存。
在一个例子中,用户态模块还可以接收应用模块发送的第三接口消息,该第三接口消息包括变更信息,该变更信息用于表示待写入数据对应的数据类型发生变化;然后,用户态模块将该变更信息发送给内核态模块,以使内核态模块根据该变更信息确定该待写入数据对应的数据类型发生变化。
在一个例子中,用户态模块还可以获取数据类型的转换策略,并将该转换策略发送给内核态模块,以使内核态模块根据该转换策略确定该待写入数据对应的数据类型是否发生变化,具体确定方式参见上述实施例,在此不再赘述。
其中,内核态模块的处理过程可以参见上述实施例,在此不再赘述。
基于与上述方法同样的构思,本申请实施例提出另一种数据存储方法,该方法可以包括:将持久内存的内存区域加载到操作***内核的内存管理子***,并将普通内存的内存区域加载到操作***内核的内存管理子***,以使操作***内核统一管理持久内存的内存区域和普通内存的内存区域。进一步的,获取待写入数据、待写入数据对应的数据类型;通过操作***内核根据所述数据类型将待写入数据存储到持久内存,或者,将待写入数据存储到普通内存。
其中,通过操作***内核根据所述数据类型将待写入数据存储到持久内存,或者,将待写入数据存储到普通内存,可以包括:若该数据类型为第一类型,则可以通过操作***内核将待写入数据存储到持久内存;若该数据类型为第二类型,则可以通过操作***内核将待写入数据存储到普通内存。
在一个例子中,通过操作***内核将待写入数据存储到持久内存之后,还可以获取待写入数据的第一访问参数;若根据第一访问参数确定待写入数据对应的数据类型变更为第二类型,则将待写入数据从持久内存迁移到普通内存。
在一个例子中,通过操作***内核将待写入数据存储到普通内存之后,还可以获取待写入数据的第二访问参数;若根据第二访问参数确定待写入数据对应的数据类型变更为第一类型,则将待写入数据从普通内存迁移到持久内存。
其中,操作***内核的处理过程也就是上述内核态模块的处理过程,操作***内核的处理过程可以参见上述实施例,在此不再重复赘述。
基于上述技术方案,本申请实施例中,可以将持久内存的内存区域加载到操作***内核的内存管理子***,并将普通内存的内存区域加载到操作***内核的内存管理子***,以使操作***内核统一管理持久内存的内存区域和普通内存的内存区域;基于此,可以通过操作***内核将待写入数据存储到持久内存,或者,将待写入数据存储到普通内存,也就是说,可以实现持久内存和普通内存的统一管理,实现数据的存储。进一步的,在将待写入数据存储到持久内存后,若根据待写入数据的访问参数确定待写入数据的数据类型发生变化,如待写入数据变更为热点数据(即需要频繁读取的数据),则可以将待写入数据从持久内存迁移到普通内存,也就是说,即使将热点数据存储到持久内存中,也可以将热点数据迁移到普通内存,由于持久内存的读写性能比普通内存的读写性能低,因此,通过避免频繁的从持久内存中读取热点数据,可以解决性能大幅损失,读写性能较差等问题,可以提高数据的读写性能。
以下结合具体应用场景,对上述技术方案进行说明。参见图4A所示,为本申请实施例的应用场景示意图,数据存储设备可以为任意类型的设备,如服务器、PC(PersonalComputer,个人计算机)、终端设备、笔记本电脑等,对此不做限制,只要数据存储设备40包括持久内存41和普通内存42即可。当然,数据存储设备40还可以包括处理器43、磁盘44等其它部件,对此不做限制。
其中,普通内存是传统意义的内存,在普通内存断电后,其存储的数据会丢失。例如,普通内存可以为DRAM,也可以为其它类型内存,对此不做限制。
其中,持久内存是一种新的内存类型,是具有持久存储功能的内存,在持久内存断电后,其存储的数据不会丢失。例如,持久内存也就是PMEM(Persistent Memory,持久性内存),该持久内存可以为AEP,也可以为Optane(傲腾,即一种超高速内存),还可以为其它类型内存,对此不做限制。
持久内存与普通内存相比,持久内存具备断电后数据保持的功能,但是,持久内存的读写速度比普通内存的读写速度慢。此外,持久内存拥有超大容量,且持久内存的价格比普通内存的价格低,例如,持久内存的容量包括128GB、256GB、512GB等,从而显著增加内存容量。
目前,持久内存支持的使用模式包括:1、memory(内存)模式,在这种模式下,持久内存作为易失存储介质,普通内存作为持久内存的缓存,由内存控制器上的固件操作持久内存,对用户和操作***都透明。2、storage(存储)模式,在这种模式下,持久内存作为非易失存储介质,持久内存作为块设备使用,相当于速度更快的SSD,访问时存在page cache(页面缓存),对用户透明,对操作***有需求(需驱动支持)。3、AD(app direct,应用程序直连)模式,在这种模式下,持久内存作为易失介质,当作内存使用,而且,持久内存也作为非易失介质,当作块设备使用,但是访问时不经过page cache(页缓存)。
在传统方式中,无论持久内存采用哪种使用模式,均无法在持久内存与普通内存之间进行数据迁移。例如,在将数据存储到持久内存后,无法将数据迁移到普通内存,这样,如果数据是热点数据(即需要频繁读取的数据),则需要频繁的从持久内存中读取数据,由于持久内存的读写速度比普通内存的读写速度慢,因此,上述方式造成性能大幅损失,读写性能较差。又例如,在将数据存储到普通内存后,无法将数据迁移到持久内存,这样,如果数据是非热点数据(即不需要频繁读取的数据),虽然不需要频繁读取数据,但是也通过普通内存来存储数据。由于普通内存的存储空间小于持久内存的存储空间,因此,上述方式导致普通内存的数据较多,而持久内存比较空闲,浪费存储空间。
针对上述发现,本申请实施例中,可以对现有的操作***(Operating System,即OS)架构进行调整,将持久内存的所有内存区域均加载到操作***的内核(Kernel)的内存管理子***(Memory Management,MM),从而使操作***对持久内存和普通内存进行统一管理,将持久内存和普通内存相互融合,对外提供统一的API(Application ProgrammingInterface,应用程序编程接口)接口。
基于此,操作***可以进行冷热数据的识别,针对热点数据,则可以将该热点数据存储到普通内存,针对非热点数据(即冷数据),则可以将该非热点数据存储到持久内存。进一步的,操作***还可以实现冷热数据的转换,针对存储到普通内存的热点数据,如果热点数据变更为非热点数据,则可以将该数据从普通内存迁移到持久内存,针对存储到持久内存的非热点数据,如果非热点数据变更为热点数据,则可以将该数据从持久内存迁移到普通内存。
综上所述,本实施例中,即使将热点数据存储到持久内存中,也可以将热点数据迁移到普通内存,避免频繁的从持久内存中读取热点数据,可以提高数据的读写性能。即使将非热点数据存储到普通内存中,也可以将非热点数据迁移到持久内存,合理利用持久内存来存储数据,节约普通内存的存储空间。
参见图4B所示,为数据存储方法的示意图,数据存储设备可以包括应用模块、用户态模块和内核态模块。内核态模块用于实现持久内存的初始化、持久内存的分配、持久内存的释放、持久内存与普通内存之间的转换。用户态模块用于提供持久内存的使用接口1、持久内存的使用接口2、转换策略。
第一,内核态模块实现持久内存的初始化。具体的,内核态模块可以获知持久内存的所有内存区域的地址范围,将持久内存的内存区域(如所有内存区域或者部分内存区域,以所有内存区域为例)加载到操作***内核的内存管理子***,如将所有内存区域的地址范围加载到内存管理子***。这样,内存管理子***能够管理持久内存的所有内存区域,使用这些内存区域存储数据。
在一个例子中,将每个内存区域的地址范围加载到内存管理子***时,可以先创建一个新的NUMA(Non Uniform Memory Access,非统一内存访问)node(节点),然后创建一个ZONE(区域),最后,将所有node下的ZONE组成一个ZONELIST(区域列表),并将其加入到内核的伙伴算法中,由内核的伙伴算法利用ZONELIST负责后续持久内存的分配和释放。其中,ZONELIST可以包括多个,例如,由多个普通内存的NORMAL ZONE组成的ZONELIST,或者,由多个持久内存的AEP ZONE组成的ZONELIST,内核可以根据用户传入的参数,来选择普通内存的ZONELIST或者持久内存的AEP ZONELIST,进而选择NORMAL ZONE或者AEP ZONE,最后可以分配普通内存或者持久内存。
此外,内核态模块还可以获知普通内存的所有内存区域的地址范围,将普通内存的所有内存区域加载到操作***内核的内存管理子***,这样,内存管理子***能够管理普通内存的所有内存区域,使用这些内存区域存储数据。
综上所述,持久内存的所有内存区域和普通内存的所有内存区域,均被加载到内存管理子***,继而由内核态模块统一管理持久内存和普通内存。
第二,内核态模块实现持久内存的分配。具体的,当需要将数据存储到持久内存时,内核态模块可以基于内存管理子***提供的管理信息(如持久内存的哪些内存区域被占用,哪些内存区域未被占用),从持久内存的内存区域中选择未被占用的可用内存区域,并将数据存储到可用内存区域,并记录数据的虚拟地址与可用内存区域的物理地址的映射关系。在后续过程中,若需要读取该数据,则利用数据的虚拟地址查询所述映射关系,得到可用内存区域的物理地址,基于该物理地址找到该可用内存区域,并从可用内存区域读取数据。
在一个例子中,所有用户态进程地址空间都是由多个VMA(Virtual MemoryAreas,虚拟内存区域,一个VMA就是一块连续的线性地址空间的抽象)组成,因此,可以在VMA中新增一个VM_AEP flag(即数据标志),通过这个VM_AEP flag表示数据是否使用持久内存。在内存分配阶段,若VM_AEP flag表示数据使用持久内存,则需要为数据分配持久内存的可用内存区域(即AEP ZONE),因此,在内核的伙伴算法中,可以从持久内存找到一个可用内存区域,并分配这个可用内存区域,即使用这个可用内存区域存储数据,然后更新持久内存的可用内存区域。或者,若VM_AEP flag表示数据使用普通内存,则需要为数据分配普通内存的可用内存区域(即NORMAL ZONE),因此,在内核的伙伴算法中,可以从普通内存找到一个可用内存区域,并分配这个可用内存区域,即使用这个可用内存区域存储数据,然后更新普通内存的可用内存区域。
第三,内核态模块实现持久内存的释放。当需要从持久内存中删除数据时,即进程退出或者进程释放内存,则内核态模块可以利用数据的虚拟地址查询映射关系,得到内存区域的物理地址,若该内存区域是持久内存的内存区域,则从持久内存的内存区域中删除数据,并释放该内存区域,将该内存区域添加到可用列表,该内存区域成为可用内存区域,并更新持久内存的可用内存区域。
第四,内核态模块实现持久内存与普通内存之间的转换。
具体的,若需要将普通内存中的数据迁移到持久内存,则内核态模块可以从持久内存的内存区域中选择未被占用的可用内存区域,并将数据存储到持久内存的可用内存区域,参见持久内存的分配,并更新持久内存的可用内存区域。内核态模块还需要解除数据的虚拟地址与普通内存的物理地址的映射关系。
若需要将持久内存中的数据迁移到普通内存,则内核态模块可以从普通内存的内存区域中选择未被占用的可用内存区域,并将数据存储到普通内存的可用内存区域,并更新普通内存的可用内存区域。此外,内核态模块还需要解除数据的虚拟地址与持久内存的物理地址的映射关系。
在将普通内存中的数据迁移到持久内存时,还可以修改虚拟地址与物理地址的映射关系,即虚拟地址(virtual address)保持不变,物理地址(physicl address)发生变化,即从普通内存的内存区域的物理地址,修改为持久内存的内存区域的物理地址。在将持久内存中的数据迁移到普通内存时,还可以修改虚拟地址与物理地址的映射关系,即虚拟地址保持不变,物理地址发生变化,即从持久内存的内存区域的物理地址,修改为普通内存的内存区域的物理地址。
第五,用户态模块用于提供持久内存的使用接口1。具体的,持久内存的使用接口1用于数据的精确内存分配,例如,应用可以获知哪些数据是热点数据,需要存储到普通内存,哪些数据是非热点数据,需要存储到持久内存,应用可以通过使用接口1将数据存储到普通内存或者持久内存的信息提供给用户态模块,这样,用户态模块就可以获知数据存储到普通内存或者持久内存。
用户态模块还可以提供冷热内存的转换接口,当热点数据变更为非热点数据后,应用获知热点数据变更为非热点数据,并通过转换接口将变更信息提供给用户态模块,这样,用户态模块可以获知数据类型发生变化。当非热点数据变更为热点数据后,应用获知非热点数据变更为热点数据,并通过转换接口将变更信息提供给用户态模块,这样,用户态模块可以获知数据类型发生变化。
第六,用户态模块用于提供持久内存的使用接口2。使用接口2用于指定普通内存与持久内存的使用比例,应用不需要指定数据是热点数据或者非热点数据,只需要通过使用接口2将数据提供给用户态模块,用户态模块基于普通内存与持久内存的使用比例,确定数据是热点数据还是非热点数据。例如,若普通内存与持久内存的使用比例为3:7,则将前30%的数据确定为热点数据,需要存储到普通内存,将后70%的数据确定为非热点数据,需要存储到持久内存。
第七,用户态模块用于提供转换策略(即智能转换算法)。
为了进行热点数据与非热点数据之间的转换,用户态模块可以向内核态模块提供转换策略,基于这个转换策略,内核态模块可以确定热点数据是否转换为非热点数据,内核态模块可以确定非热点数据是否转换为热点数据。
例如,转换策略可以包括访问参数,如访问量(也可以称为访问频率,如每秒的访问次数)、剩余内存量、是否关键路径等,后续以访问量为例。针对访问量这个转换策略,转换策略还可以包括第一阈值和第二阈值,针对非热点数据,当非热点数据的访问量大于第一阈值时,则确定非热点数据转换为热点数据;针对热点数据,当热点数据的访问量小于第二阈值时,则确定热点数据转换为非热点数据。当然,上述只是转换策略的示例,对此转换策略不做限制。
例如,转换策略还可以包括:针对普通内存的每个内存区域的热点数据,内核态模块可以定期扫描每个热点数据的访问量,按照访问量从大到小的顺序进行排序,这样,针对排序靠后的N(如1、2等,对此N的取值不做限制)个热点数据,将这些热点数据转换为非热点数据。针对持久内存的每个内存区域的非热点数据,内核态模块可以定期扫描每个非热点数据的访问量,按照访问量从大到小的顺序进行排序,这样,针对排序靠前的M(如1、2等,对此M的取值不做限制)个非热点数据,将这些非热点数据转换为热点数据。例如,可以将排序靠后的N个热点数据放入一个链表A,将排序靠前的M个非热点数据放入另一个链表B,然后对两个链表进行相互内存迁移,完成冷热转换。
以下结合几个具体应用场景,对数据存储方法进行说明。
应用场景1,应用模块向用户态模块发送第一接口消息(即基于使用接口1的消息),第一接口消息可以包括待写入的数据A、与数据A对应的数据类型。假设数据A为非热点数据(也可以称为冷数据),则数据类型可以为第一类型。
用户态模块接收到第一接口消息后,从第一接口消息中获取数据A、数据A对应的数据类型。用户态模块将数据A和数据类型(如用于表示数据类型的数据标志,若数据类型为第一类型,则数据标志为第一标识)发送给内核态模块。
内核态模块获取待写入的数据A、数据A对应的数据类型。若数据标志为第一标识,则确定数据A对应的数据类型为第一类型,即数据A为非热点数据。
若数据类型为第一类型,则内核态模块将数据A存储到持久内存。具体的,内核态模块可以从持久内存中选择第一可用内存区域,并将数据A存储到第一可用内存区域,并记录数据A的虚拟地址与第一可用内存区域的物理地址的映射关系。在后续过程中,若需要读取数据A,则内核态模块利用数据A的虚拟地址查询所述映射关系,得到第一可用内存区域的物理地址,基于第一可用内存区域的物理地址找到第一可用内存区域,从第一可用内存区域读取数据A。
应用模块可以定期获取数据A的第一访问量,如数据A每秒的访问次数(如读取次数与写入次数之和),若第一访问量大于第一阈值(如10、15等,对此第一阈值不做限制,可以根据经验配置)时,则应用模块可以确定数据A变更为热点数据,也就是说,数据A对应的数据类型从第一类型变更为第二类型。
应用模块向用户态模块发送第三接口消息(即基于冷热内存的转换接口的消息),第三接口消息包括变更信息,该变更信息用于表示数据A对应的数据类型发生变化(从第一类型变更为第二类型)。用户态模块接收到第三接口消息后,从第三接口消息中获取变更信息,并将该变更信息发送给内核态模块。
内核态模块在接收到该变更信息后,确定数据A对应的数据类型发生变化,即数据类型从第一类型变更为第二类型,即数据A为热点数据。然后,内核态模块可以将数据A从持久内存迁移到普通内存。具体的,内核态模块先解除数据A的虚拟地址与第一内存区域的物理地址的映射关系,从普通内存中选择第二可用内存区域,将数据A存储到第二可用内存区域,并记录数据A的虚拟地址与第二可用内存区域的物理地址的映射关系。在后续过程中,若需要读取数据A,则内核态模块利用数据A的虚拟地址查询所述映射关系,得到第二可用内存区域的物理地址,基于第二可用内存区域的物理地址找到第二可用内存区域,从第二可用内存区域读取数据A,而不从第一可用内存区域读取数据A。
应用场景2,应用模块向用户态模块发送第一接口消息,第一接口消息包括待写入的数据B、数据B对应的数据类型。假设数据B为热点数据,则数据类型为第二类型。用户态模块接收到第一接口消息后,从第一接口消息中获取数据B、数据B对应的数据类型,将数据B和数据类型(用于表示数据类型的数据标志,若数据类型为第二类型,则数据标志为第二标识)发送给内核态模块。
内核态模块获取待写入的数据B、数据B对应的数据类型。若数据标志为第二标识,确定数据B对应的数据类型为第二类型,即数据B为热点数据。若数据类型为第二类型,则内核态模块将数据B存储到普通内存,对此不做限制。
应用模块可以定期获取数据B的第二访问量,如数据B每秒的访问次数,若第二访问量小于第二阈值(如5、6等,对此不做限制)时,则应用模块可以确定数据B变更为非热点数据,且数据类型从第二类型变更为第一类型。
应用模块向用户态模块发送第三接口消息,该第三接口消息包括变更信息,该变更信息表示数据B对应的数据类型发生变化。用户态模块接收到第三接口消息后,从第三接口消息中获取变更信息,并将该变更信息发送给内核态模块。
内核态模块在接收到该变更信息后,确定数据B对应的数据类型发生变化,即数据类型从第二类型变更为第一类型,即数据B为非热点数据。然后,内核态模块可以将数据B从普通内存迁移到持久内存。
具体的,内核态模块先解除数据B的虚拟地址与普通内存的物理地址的映射关系,从持久内存中选择第三可用内存区域,将数据B存储到第三可用内存区域,并记录数据B的虚拟地址与第三可用内存区域的物理地址的映射关系。在后续过程中,若需要读取数据B,则内核态模块利用数据B的虚拟地址查询所述映射关系,得到第三可用内存区域的物理地址,基于第三可用内存区域的物理地址找到第三可用内存区域,从第三可用内存区域读取数据B。
应用场景3,应用模块向用户态模块发送第二接口消息(即基于使用接口2的消息),第二接口消息可以包括待写入的数据C。用户态模块在接收到第二接口消息后,可以利用普通内存与持久内存的使用比例(如3:7),确定数据C对应的数据类型。例如,应用模块连续向用户态模块发送10个数据,将前3个数据确定为热点数据,即数据类型为第二类型,需要存储到普通内存,将后7个数据确定为非热点数据,即数据类型为第一类型,需要存储到持久内存。假设数据C属于后7个数据,则可以确定数据C对应的数据类型为第一类型。
用户态模块将数据C和数据类型发送给内核态模块。内核态模块获取数据C、数据C对应的数据类型。若数据类型为第一类型,即数据C为非热点数据,则内核态模块将数据C存储到持久内存,具体存储方式参见应用场景1。
在一个例子中,用户态模块还可以获取数据类型的转换策略(即智能转换算法),并将该转换策略发送给内核态模块。基于所述转换策略,内核态模块可以定期获取数据C的第一访问量,若第一访问量大于第一阈值时,则内核态模块确定数据C变更为热点数据,数据类型从第一类型变更为第二类型。若第一访问量不大于第一阈值,则等待下一周期,继续获取数据C的第一访问量。
当数据类型从第一类型变更为第二类型时,即数据C为热点数据,内核态模块可以将数据C从持久内存迁移到普通内存,具体存储方式参见应用场景1。
应用场景4,应用模块向用户态模块发送第二接口消息,第二接口消息可以包括待写入的数据D。用户态模块在接收到第二接口消息后,可以利用普通内存与持久内存的使用比例(如3:7),确定数据D对应的数据类型,如第二类型。
用户态模块将数据D和数据类型发送给内核态模块。内核态模块获取数据D、数据D对应的数据类型。若数据类型为第二类型,即数据D为热点数据,则内核态模块将数据D存储到普通内存,具体存储方式参见应用场景2。
在一个例子中,用户态模块还可以获取数据类型的转换策略(即智能转换算法),并将该转换策略发送给内核态模块。基于所述转换策略,内核态模块可以定期获取数据D的第二访问量,若第二访问量小于第二阈值,则内核态模块确定数据D变更为非热点数据,数据类型从第二类型变更为第一类型。若第二访问量不小于第二阈值,则等待下一周期,继续获取数据D的第二访问量。
当数据类型从第二类型变更为第一类型时,即数据D为非热点数据,内核态模块可以将数据D从普通内存迁移到持久内存,具体方式参见应用场景2。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据存储装置,如图5所示,为所述数据存储装置的结构图,所述数据存储装置包括:
获取模块51,用于获取待写入数据、所述待写入数据对应的数据类型;
存储模块52,用于若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;所述获取模块51,还用于在所述存储模块52将所述待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;
迁移模块53,用于若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据存储设备,包括:处理器和机器可读存储介质;其中,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;
将待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;
若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存。
本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;
将待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;
若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据存储装置,如图6所示,为所述数据存储装置的结构图,所述数据存储装置包括:
获取模块61,用于获取待写入数据、所述待写入数据对应的数据类型;
存储模块62,用于若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;所述获取模块61,还用于在所述存储模块62将所述待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;
迁移模块63,用于若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据存储设备,包括:处理器和机器可读存储介质;其中,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;
将待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;
若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存。
本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;
将待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;
若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存。
参见图7所示,为本申请实施例中提出的数据存储设备的结构图,所述数据存储设备70可以包括:处理器71,网络接口72,总线73,存储器74。
存储器74可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据等等。例如,存储器74可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等)。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (23)
1.一种数据存储方法,其特征在于,所述方法包括:
将持久内存的内存区域加载到操作***内核的内存管理子***,并将普通内存的内存区域加载到操作***内核的内存管理子***,以使所述操作***内核统一管理所述持久内存的内存区域和所述普通内存的内存区域;
获取待写入数据、所述待写入数据对应的数据类型;
通过所述操作***内核根据所述数据类型将所述待写入数据存储到持久内存,或者,将所述待写入数据存储到普通内存;其中,若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;
其中,所述将所述待写入数据存储到持久内存之后,获取所述待写入数据的第一访问参数;若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存;
其中,若所述第一访问参数包括第一访问量,则当所述第一访问量大于第一阈值时,确定所述待写入数据对应的数据类型变更为第二类型。
2.根据权利要求1所述的方法,其特征在于,
通过所述操作***内核根据所述数据类型将所述待写入数据存储到持久内存,或者,将所述待写入数据存储到普通内存,包括:
若所述数据类型为第二类型,则将所述待写入数据存储到普通内存。
3.根据权利要求2所述的方法,其特征在于,
所述将所述待写入数据存储到普通内存之后,所述方法还包括:
获取所述待写入数据的第二访问参数;
若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存。
4.一种数据存储方法,其特征在于,所述方法包括:
用户态模块获取待写入数据、所述待写入数据对应的数据类型;
所述用户态模块将所述待写入数据和所述数据类型发送给内核态模块;
所述内核态模块获取所述待写入数据、所述待写入数据对应的数据类型,并根据所述数据类型将所述待写入数据存储到持久内存或者普通内存;
在将所述待写入数据存储到持久内存之后,若所述数据类型发生变化,则所述内核态模块将所述待写入数据从所述持久内存迁移到普通内存;其中,所述数据类型发生变化是数据类型变更为第二类型;若待写入数据的第一访问量大于第一阈值,则确定所述待写入数据对应的数据类型变更为第二类型;
在将所述待写入数据存储到普通内存之后,若所述数据类型发生变化,则所述内核态模块将所述待写入数据从所述普通内存迁移到持久内存。
5.根据权利要求4所述的方法,其特征在于,
所述用户态模块获取所述待写入数据对应的数据类型,包括:
所述用户态模块接收应用模块发送的第一接口消息,所述第一接口消息包括待写入数据、与所述待写入数据对应的数据类型;所述用户态模块从所述第一接口消息中获取所述待写入数据对应的数据类型;或者,所述用户态模块接收应用模块发送的第二接口消息,所述第二接口消息包括待写入数据;根据普通内存与持久内存的使用比例,获取所述待写入数据对应的数据类型。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述用户态模块接收应用模块发送的第三接口消息,所述第三接口消息包括变更信息,所述变更信息用于表示所述待写入数据对应的数据类型发生变化;
所述用户态模块将所述变更信息发送给所述内核态模块,以使所述内核态模块根据所述变更信息确定所述待写入数据对应的数据类型发生变化。
7.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述用户态模块获取数据类型的转换策略;
所述用户态模块将所述转换策略发送给所述内核态模块,以使所述内核态模块根据所述转换策略确定所述待写入数据对应的数据类型是否发生变化。
8.一种数据存储方法,其特征在于,所述方法包括:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;
将待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;
若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存;
其中,所述根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,包括:若所述第一访问参数包括第一访问量,则当所述第一访问量大于第一阈值时,确定所述待写入数据对应的数据类型变更为第二类型。
9.根据权利要求8所述的方法,其特征在于,
所述将所述待写入数据存储到持久内存,包括:
从所述持久内存中选择第一可用内存区域;
将所述待写入数据存储到所述第一可用内存区域;
记录所述待写入数据的虚拟地址与所述第一可用内存区域的物理地址的第一映射关系;第一映射关系用于从所述第一可用内存区域读取所述待写入数据。
10.根据权利要求9所述的方法,其特征在于,
从所述持久内存中选择第一可用内存区域之前,所述方法还包括:
将所述持久内存的内存区域加载到操作***内核的内存管理子***;其中,所述内存管理子***用于管理所述持久内存的内存区域;
所述从所述持久内存中选择第一可用内存区域,包括:
基于所述操作***内核的内存管理子***提供的管理信息,从所述持久内存的内存区域中,选择未被占用的第一可用内存区域。
11.根据权利要求9所述的方法,其特征在于,
所述将所述待写入数据从所述持久内存迁移到普通内存,包括:
解除所述虚拟地址与所述第一可用内存区域的物理地址的第一映射关系;
从所述普通内存中选择第二可用内存区域;
将所述待写入数据存储到所述第二可用内存区域;
记录所述待写入数据的虚拟地址与所述第二可用内存区域的物理地址的第二映射关系;第二映射关系用于从所述第二可用内存区域读取所述待写入数据。
12.根据权利要求8所述的方法,其特征在于,
所述获取所述待写入数据对应的数据类型之后,所述方法还包括:
若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;
将待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;
若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存。
13.根据权利要求12所述的方法,其特征在于,
所述将所述待写入数据从所述普通内存迁移到持久内存,包括:
解除所述待写入数据的虚拟地址与普通内存的物理地址的映射关系;
从所述持久内存中选择第三可用内存区域;
将所述待写入数据存储到所述第三可用内存区域;
记录所述待写入数据的虚拟地址与所述第三可用内存区域的物理地址的第三映射关系;第三映射关系用于从所述第三可用内存区域读取所述待写入数据。
14.根据权利要求12所述的方法,其特征在于,
所述获取所述待写入数据对应的数据类型,包括:
获取与所述待写入数据对应的数据标志;
若所述数据标志为第一标识,则确定所述数据类型为第一类型;
若所述数据标志为第二标识,则确定所述数据类型为第二类型。
15.根据权利要求12所述的方法,其特征在于,
所述根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,包括:若所述第二访问参数包括第二访问量,则当所述第二访问量小于第二阈值时,确定所述待写入数据对应的数据类型变更为第一类型;
其中,所述第一阈值大于所述第二阈值。
16.一种数据存储方法,其特征在于,所述方法包括:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;将待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存;
若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;将待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存;其中,所述根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,包括:若所述第一访问参数包括第一访问量,则当所述第一访问量大于第一阈值时,确定所述待写入数据对应的数据类型变更为第二类型。
17.根据权利要求16所述的方法,其特征在于,
所述将所述待写入数据从所述普通内存迁移到持久内存,包括:
解除所述待写入数据的虚拟地址与普通内存的物理地址的映射关系;
从所述持久内存中选择第三可用内存区域;
将所述待写入数据存储到所述第三可用内存区域;
记录所述待写入数据的虚拟地址与所述第三可用内存区域的物理地址的第三映射关系;第三映射关系用于从所述第三可用内存区域读取所述待写入数据。
18.根据权利要求17所述的方法,其特征在于,
从所述持久内存中选择第三可用内存区域之前,所述方法还包括:
将所述持久内存的内存区域加载到操作***内核的内存管理子***;其中,所述内存管理子***用于管理所述持久内存的内存区域;
所述从所述持久内存中选择第三可用内存区域,包括:
基于所述操作***内核的内存管理子***提供的管理信息,从所述持久内存的内存区域中,选择未被占用的第三可用内存区域。
19.根据权利要求16所述的方法,其特征在于,
获取所述待写入数据对应的数据类型,包括:获取与所述待写入数据对应的数据标志;若所述数据标志为第二标识,则确定所述数据类型为第二类型;
所述根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,包括:若所述第二访问参数包括第二访问量,则当所述第二访问量小于第二阈值时,确定所述待写入数据对应的数据类型变更为第一类型。
20.一种数据存储装置,其特征在于,所述装置包括:
获取模块,用于获取待写入数据、所述待写入数据对应的数据类型;
存储模块,用于若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;
所述获取模块,还用于在所述存储模块将所述待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;
迁移模块,用于若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存;
其中,所述根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,包括:若所述第一访问参数包括第一访问量,则当所述第一访问量大于第一阈值时,确定所述待写入数据对应的数据类型变更为第二类型。
21.一种数据存储装置,其特征在于,所述装置包括:
获取模块,用于获取待写入数据、所述待写入数据对应的数据类型;
存储模块,用于若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;所述获取模块,还用于在所述存储模块将所述待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;迁移模块,用于若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存;
所述存储模块,还用于若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;所述获取模块,还用于在所述存储模块将待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;所述迁移模块,还用于若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存;其中,所述根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,包括:若所述第一访问参数包括第一访问量,则当所述第一访问量大于第一阈值时,确定所述待写入数据对应的数据类型变更为第二类型。
22.一种数据存储设备,其特征在于,所述数据存储设备包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;
将待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;
若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存;
其中,所述根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,包括:若所述第一访问参数包括第一访问量,则当所述第一访问量大于第一阈值时,确定所述待写入数据对应的数据类型变更为第二类型。
23.一种数据存储设备,其特征在于,所述数据存储设备包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取待写入数据、所述待写入数据对应的数据类型;
若所述数据类型为第二类型,则将所述待写入数据存储到普通内存;将待写入数据存储到普通内存后,获取所述待写入数据的第二访问参数;若根据所述第二访问参数确定所述待写入数据对应的数据类型变更为第一类型,则将所述待写入数据从所述普通内存迁移到持久内存;
若所述数据类型为第一类型,则将所述待写入数据存储到持久内存;将待写入数据存储到持久内存后,获取所述待写入数据的第一访问参数;若根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,则将所述待写入数据从所述持久内存迁移到普通内存;其中,所述根据所述第一访问参数确定所述待写入数据对应的数据类型变更为第二类型,包括:若所述第一访问参数包括第一访问量,则当所述第一访问量大于第一阈值时,确定所述待写入数据对应的数据类型变更为第二类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910062294.3A CN111475099B (zh) | 2019-01-23 | 2019-01-23 | 一种数据存储方法、装置及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910062294.3A CN111475099B (zh) | 2019-01-23 | 2019-01-23 | 一种数据存储方法、装置及其设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475099A CN111475099A (zh) | 2020-07-31 |
CN111475099B true CN111475099B (zh) | 2023-06-20 |
Family
ID=71743203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910062294.3A Active CN111475099B (zh) | 2019-01-23 | 2019-01-23 | 一种数据存储方法、装置及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111475099B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356219A (zh) * | 2021-12-08 | 2022-04-15 | 阿里巴巴(中国)有限公司 | 数据处理方法、存储介质和处理器 |
CN114490042B (zh) * | 2022-01-04 | 2024-03-22 | 青岛海信网络科技股份有限公司 | 一种内存分配方法及交通线网综合监控设备 |
CN116450059B (zh) * | 2023-06-20 | 2024-04-12 | 宁德时代新能源科技股份有限公司 | 数据管理方法、装置、电子设备、存储介质和程序产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016078313A1 (zh) * | 2014-11-20 | 2016-05-26 | 中兴通讯股份有限公司 | 数据写入方法及装置 |
CN108062253A (zh) * | 2017-12-11 | 2018-05-22 | 北京奇虎科技有限公司 | 一种内核态与用户态的通信方法、装置及终端 |
-
2019
- 2019-01-23 CN CN201910062294.3A patent/CN111475099B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016078313A1 (zh) * | 2014-11-20 | 2016-05-26 | 中兴通讯股份有限公司 | 数据写入方法及装置 |
CN108062253A (zh) * | 2017-12-11 | 2018-05-22 | 北京奇虎科技有限公司 | 一种内核态与用户态的通信方法、装置及终端 |
Non-Patent Citations (2)
Title |
---|
Koji Takasaki.Development of a coaxial-type holographic disk system with a small drive.IEEE.2009,全文. * |
卿斯汉.Unix/Linux操作***安全(四).计算机***应用.2002,(第11期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111475099A (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210349632A1 (en) | Memory system and method for controlling nonvolatile memory | |
US11669444B2 (en) | Computing system and method for controlling storage device | |
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11954043B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN105740164B (zh) | 支持缓存一致性的多核处理器、读写方法、装置及设备 | |
US11797436B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN108804350A (zh) | 一种内存访问方法及计算机*** | |
CN111475099B (zh) | 一种数据存储方法、装置及其设备 | |
CN105468542B (zh) | 地址分配方法及装置 | |
JP2020123041A (ja) | メモリシステムおよび制御方法 | |
CN113568562A (zh) | 一种存储***、内存管理方法和管理节点 | |
CN113204407A (zh) | 一种内存超配管理方法及装置 | |
CN115269450A (zh) | 内存协同管理***和方法 | |
WO2016131175A1 (zh) | 多核***中数据访问者目录的访问方法及设备 | |
US10073851B2 (en) | Fast new file creation cache | |
CN109727629B (zh) | 使用利用多间隙进度字段的磨损均衡的方法和*** | |
CN115079957B (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
CN112559384B (zh) | 一种基于非易失存储器的混合固态盘动态分区方法 | |
CN114428681A (zh) | 数据库***的计算能力扩容方法及装置 | |
WO2016049808A1 (zh) | 多核处理器***的缓存目录处理方法和目录控制器 | |
WO2024082702A1 (zh) | 数据处理方法、装置、芯片以及计算机可读存储介质 | |
CN117667987A (zh) | 一种存储***、数据更新方法及设备 | |
CN113885783A (zh) | 存储器***及其操作方法 |
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 |