CN107704400A - 一种面向非易失存储的页缓存方法 - Google Patents
一种面向非易失存储的页缓存方法 Download PDFInfo
- Publication number
- CN107704400A CN107704400A CN201710947204.XA CN201710947204A CN107704400A CN 107704400 A CN107704400 A CN 107704400A CN 201710947204 A CN201710947204 A CN 201710947204A CN 107704400 A CN107704400 A CN 107704400A
- Authority
- CN
- China
- Prior art keywords
- page
- caching
- nonvolatile storage
- data
- write
- 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
Classifications
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向非易失存储的页缓存方法,包括:文件读取过程,单独划分非易失存储器作为磁盘的缓存,将文件预读的数据存储于非易失存储器的基树中;当接收目标页缓存读取指令时,根据所述指令查找目标页缓存,并根据查找结果将分页的信息复制到DRAM中;文件写入过程,若分页数据被修改后,将分页置脏,把脏页数据写入非易失存储器中,当需要脏页回写时,把脏页数据缓存到非易失存储器,并把脏页数据复制到非易失存储器基树中的对应位置后,将非易失存储器中的数据,写入磁盘。本发明和现有技术相比适合大数据应用场景,在数据读取频繁,数据量大时能够减少***I/O操作,提高***性能。
Description
技术领域
本发明涉及服务器操作***技术领域,具体地说是一种面向非易失存储的页缓存方法。
背景技术
随着云计算技术的不断发展和规模的壮大,人们对存储的要求越来越高,希望有高密度、高读写速度、低能耗的存储介质。现有的Linux的页缓存机制只支持对DRAM的使用,DRAM(Dynamic Random Access Memory),即动态随机存取存储器,最为常见的***内存。DRAM 只能将数据保持很短的时间。为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新(refresh)一次,如果存储单元没有被刷新,存储的信息就会丢失。DRAM的结构可谓是简单高效,每一个bit只需要一个晶体管加一个电容。但是电容不可避免的存在漏电现象,如果电荷不足会导致数据出错,因此电容必须被周期性的刷新(预充电),这也是DRAM的一大特点。而且电容的充放电需要一个过程,刷新频率不可能无限提升(频障),这就导致DRAM的频率很容易达到上限,即便有先进工艺的支持也收效甚微。
所以,存在的弊端如下:
1、Linux的页缓存机制只支持对DRAM的使用;
2、现有基于DRAM的用于缓存页的区域容量小,能够预取和缓存的页面少,需要频繁进行I/O操作,降低***性能。
而NVM(Non-volatile Memory,固定存储器,非易失存储器),具有非易失、按字节存取、存储密度高、低能耗、读写性能接近DRAM。基于新型非易失性存储器(统称为 NVM)的服务器***逐渐引起人们的关注,如何利用NVM的密度高、容量大、速度快和能耗低的特点,成为基于非易失存储的服务器***的关键问题。
发明内容
本发明的技术任务是针对以上不足之处,提供容量大、速度快、能耗低的一种面向非易失存储的页缓存方法。
本发明解决其技术问题所采用的技术方案是:一种面向非易失存储的页缓存方法,在Linux操作***中,将非易失存储器作为磁盘的缓存的页缓存方法。
进一步,优选的方法包括:
文件读取过程,单独划分非易失存储器作为磁盘的缓存,将文件预读的数据存储于非易失存储器的基树中;当接收目标页缓存读取指令时,根据所述指令查找目标页缓存,并根据查找结果将分页的信息复制到DRAM中;
文件写入过程,若分页数据被修改后,将分页置脏,把脏页数据写入非易失存储器中,当需要脏页回写时,把脏页数据缓存到非易失存储器,并把脏页数据复制到非易失存储器基树中的对应位置后,将非易失存储器中的数据,写入磁盘。
进一步,优选的方法为,所述的当接收目标页缓存读取指令时,根据指令查找目标页缓存,具体方法如下:
当接收目标页缓存读取指令时,根据所述指令,查找page_tree结构体;如果未命中,继续查找非易失存储器的基树;如果命中,把分页复制到DRAM中;如果未命中,从磁盘中读取目标页到DRAM中。
进一步,优选的方法为,所述的page_tree结构体中保存有address_space结构体,所述的address_space结构体中增加一个基树page_tree_nvm,所述的基树page_tree_nvm用于指向保存在非易失存储器中的页。
本发明还保护一种面向非易失存储的页缓存***,包括文件读取模块和文件写入模块;
所述的文件读取模块,用于根据所述指令查找目标页缓存,并根据查找结果将分页的信息复制到DRAM中;
所述的文件写入模块,用于将数据被修改后的分页置脏,把脏页数据写入非易失存储器中,将非易失存储器中的数据,写入磁盘。
进一步,优选的结构为, 所述的文件读取模块包括存储单元、查找单元和复制单元;
所述的存储单元,用于划分非易失存储器作为磁盘的缓存,将文件预读的数据存储于非易失存储器的基树中;
所述的查找单元,用于当接收目标页缓存读取指令时,根据所述指令查找目标页缓存;
所述的复制单元,用于根据查找结果将分页的信息复制到DRAM中。
进一步,优选的结构为,所述的文件写入模块包括置脏单元、回写单元和磁盘写入单元;
所述的置脏单元,用于将数据被修改后的分页置脏,把脏页数据写入非易失存储器中;
所述的回写单元,用于把脏页数据缓存到非易失存储器,并把脏页数据复制到非易失存储器基树中的对应位置;
所述的磁盘写入单元,用于将将非易失存储器中的数据,写入磁盘。
进一步,优选的结构为,所述的基树用于指向保存在非易失存储器中的页。
本发明的一种面向非易失存储的页缓存方法和现有技术相比,有益效果如下:把NVM作为磁盘的缓存,能够利用NVM容量大、速度快和能耗低的特点,适合大数据应用场景,在数据读取频繁,数据量大时能够减少***I/O操作,提高***性能。
实施方式
下面结合具体实施例对本发明作进一步说明。
本发明为一种面向非易失存储的页缓存方法及其***,一种面向非易失存储介质的页缓存设计方法,把NVM作为磁盘的缓存,减少磁盘的I/O。
在linux中,修改linux/fs.h中的结构体address_space,其描述了页高速缓存中的页面,每个address_space对象都有唯一的基树(radix tree),它保存在page_tree结构体中,为了充分利用NVM容量大非易失的特点,在address_space结构体中新增加一个基树page_tree_nvm,用来指向保存在NVM中的页。
实施例1:
在Linux操作***中,把文件预读的数据存储在NVM的基树中;一种面向非易失存储介质的页缓存设计方法,包括了对文件读取、写入两个过程的优化。
文件读取过程:文件读的时候单独划分NVM作为磁盘的缓存,每次文件预读的数据存储在NVM的基树中。当发生缺页的时候,首先查询page_tree,若没有命中,再查询NVM中的基树,若命中,则把分页复制到DRAM的基树中,若仍没有命中,则从磁盘读取相应的页到DRAM中。
文件写入过程:当分页数据被修改后,将该分页设置标志为dirty,将脏页实时写入NVM来代替磁盘回写,当需要脏页回写的时候,把脏页数据缓存到NVM中,把脏页拷贝到NVM基树中对应的位置,这样的回写不需要等待漫长的磁盘I/O,速度会快很多。在NVM中的数据,在经过一段***预设的时间后,再统一写入磁盘。
本发明还保护了应用此方法的一种面向非易失存储的页缓存***,包括文件读取模块和文件写入模块;
所述的文件读取模块,用于根据所述指令查找目标页缓存,并根据查找结果将分页的信息复制到DRAM中;所述的文件读取模块包括存储单元、查找单元和复制单元;所述的存储单元,用于划分非易失存储器作为磁盘的缓存,将文件预读的数据存储于非易失存储器的基树中;所述的查找单元,用于当接收目标页缓存读取指令时,根据所述指令查找目标页缓存;所述的复制单元,用于根据查找结果将分页的信息复制到DRAM中。
所述的文件写入模块,用于将数据被修改后的分页置脏,把脏页数据写入非易失存储器中,将非易失存储器中的数据,写入磁盘。所述的文件写入模块包括置脏单元、回写单元和磁盘写入单元;所述的置脏单元,用于将数据被修改后的分页置脏,把脏页数据写入非易失存储器中;所述的回写单元,用于把脏页数据缓存到非易失存储器,并把脏页数据复制到非易失存储器基树中的对应位置;所述的磁盘写入单元,用于将将非易失存储器中的数据,写入磁盘。
本发明的一种面向非易失存储的页缓存方法,适用于K-UX产品,增加了非易失存储的应用场景,提高了基于非易失存储器的服务器***性能。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的几种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
Claims (8)
1.一种面向非易失存储的页缓存方法,其特征在于,在Linux操作***中,将非易失存储器作为磁盘的缓存的页缓存方法。
2.根据权利要求1所述的一种面向非易失存储的页缓存方法,其特征在于,包括:
文件读取过程,单独划分非易失存储器作为磁盘的缓存,将文件预读的数据存储于非易失存储器的基树中;当接收目标页缓存读取指令时,根据所述指令查找目标页缓存,并根据查找结果将分页的信息复制到DRAM中;
文件写入过程,若分页数据被修改后,将分页置脏,把脏页数据写入非易失存储器中,当需要脏页回写时,把脏页数据缓存到非易失存储器,并把脏页数据复制到非易失存储器基树中的对应位置后,将非易失存储器中的数据,写入磁盘。
3.根据权利要求2所述的一种面向非易失存储的页缓存方法,其特征在于,所述的当接收目标页缓存读取指令时,根据指令查找目标页缓存,具体方法如下:
当接收目标页缓存读取指令时,根据所述指令,查找page_tree结构体;如果未命中,继续查找非易失存储器的基树;如果命中,把分页复制到DRAM中;如果未命中,从磁盘中读取目标页到DRAM中。
4.根据权利要求3所述的一种面向非易失存储的页缓存方法,其特征在于,所述的page_tree结构体中保存有address_space结构体,所述的address_space结构体中增加一个基树page_tree_nvm,所述的基树page_tree_nvm用于指向保存在非易失存储器中的页。
5.一种面向非易失存储的页缓存***,其特征在于,包括文件读取模块和文件写入模块;
所述的文件读取模块,用于根据所述指令查找目标页缓存,并根据查找结果将分页的信息复制到DRAM中;
所述的文件写入模块,用于将数据被修改后的分页置脏,把脏页数据写入非易失存储器中,将非易失存储器中的数据,写入磁盘。
6.根据权利要求5所述的一种面向非易失存储的页缓存***,其特征在于, 所述的文件读取模块包括存储单元、查找单元和复制单元;
所述的存储单元,用于划分非易失存储器作为磁盘的缓存,将文件预读的数据存储于非易失存储器的基树中;
所述的查找单元,用于当接收目标页缓存读取指令时,根据所述指令查找目标页缓存;
所述的复制单元,用于根据查找结果将分页的信息复制到DRAM中。
7.根据权利要求5所述的一种面向非易失存储的页缓存***,其特征在于,所述的文件写入模块包括置脏单元、回写单元和磁盘写入单元;
所述的置脏单元,用于将数据被修改后的分页置脏,把脏页数据写入非易失存储器中;
所述的回写单元,用于把脏页数据缓存到非易失存储器,并把脏页数据复制到非易失存储器基树中的对应位置,;
所述的磁盘写入单元,用于将将非易失存储器中的数据,写入磁盘。
8.根据权利要求6所述的一种面向非易失存储的页缓存***,其特征在于,所述的基树用于指向保存在非易失存储器中的页。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710947204.XA CN107704400A (zh) | 2017-10-12 | 2017-10-12 | 一种面向非易失存储的页缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710947204.XA CN107704400A (zh) | 2017-10-12 | 2017-10-12 | 一种面向非易失存储的页缓存方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107704400A true CN107704400A (zh) | 2018-02-16 |
Family
ID=61184239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710947204.XA Pending CN107704400A (zh) | 2017-10-12 | 2017-10-12 | 一种面向非易失存储的页缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107704400A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032526A (zh) * | 2019-04-16 | 2019-07-19 | 苏州浪潮智能科技有限公司 | 一种基于非易失性介质的页缓存方法、***及设备 |
CN112835528A (zh) * | 2021-02-22 | 2021-05-25 | 北京金山云网络技术有限公司 | 脏页刷新方法和装置、电子设备和存储介质 |
CN113157395A (zh) * | 2021-04-20 | 2021-07-23 | 上海泓戟信息科技有限公司 | 一种优化计算机内存数据同步的方法 |
CN113515412A (zh) * | 2021-06-25 | 2021-10-19 | 清华大学 | 非易失性内存检查点生成方法、装置和电子设备 |
CN116795298A (zh) * | 2023-08-28 | 2023-09-22 | 麒麟软件有限公司 | 一种Linux下NVME存储器的IO优化方法及*** |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070060301A (ko) * | 2005-12-08 | 2007-06-13 | 삼성전자주식회사 | 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버 |
CN101673188A (zh) * | 2008-09-09 | 2010-03-17 | 上海华虹Nec电子有限公司 | 一种固态硬盘的数据存取方法 |
CN101989183A (zh) * | 2010-10-15 | 2011-03-23 | 浙江大学 | 混合主存储器实现节能存储的方法 |
CN102521147A (zh) * | 2011-11-17 | 2012-06-27 | 曙光信息产业(北京)有限公司 | 一种使用高速非易失介质做缓存的管理方法 |
CN103885728A (zh) * | 2014-04-04 | 2014-06-25 | 华中科技大学 | 一种基于固态盘的磁盘缓存*** |
CN106250350A (zh) * | 2016-07-28 | 2016-12-21 | 浪潮(北京)电子信息产业有限公司 | 一种基于numa架构的页缓存读取方法及*** |
CN106775476A (zh) * | 2016-12-19 | 2017-05-31 | 中国人民解放军理工大学 | 混合内存***及其管理方法 |
CN106909323A (zh) * | 2017-03-02 | 2017-06-30 | 山东大学 | 适用于dram/pram混合主存架构的页缓存方法及混合主存架构*** |
CN106951376A (zh) * | 2017-02-27 | 2017-07-14 | 清华大学 | 面向闪存的细粒度非易失缓存***以及缓存管理方法 |
-
2017
- 2017-10-12 CN CN201710947204.XA patent/CN107704400A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070060301A (ko) * | 2005-12-08 | 2007-06-13 | 삼성전자주식회사 | 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버 |
CN101673188A (zh) * | 2008-09-09 | 2010-03-17 | 上海华虹Nec电子有限公司 | 一种固态硬盘的数据存取方法 |
CN101989183A (zh) * | 2010-10-15 | 2011-03-23 | 浙江大学 | 混合主存储器实现节能存储的方法 |
CN102521147A (zh) * | 2011-11-17 | 2012-06-27 | 曙光信息产业(北京)有限公司 | 一种使用高速非易失介质做缓存的管理方法 |
CN103885728A (zh) * | 2014-04-04 | 2014-06-25 | 华中科技大学 | 一种基于固态盘的磁盘缓存*** |
CN106250350A (zh) * | 2016-07-28 | 2016-12-21 | 浪潮(北京)电子信息产业有限公司 | 一种基于numa架构的页缓存读取方法及*** |
CN106775476A (zh) * | 2016-12-19 | 2017-05-31 | 中国人民解放军理工大学 | 混合内存***及其管理方法 |
CN106951376A (zh) * | 2017-02-27 | 2017-07-14 | 清华大学 | 面向闪存的细粒度非易失缓存***以及缓存管理方法 |
CN106909323A (zh) * | 2017-03-02 | 2017-06-30 | 山东大学 | 适用于dram/pram混合主存架构的页缓存方法及混合主存架构*** |
Non-Patent Citations (1)
Title |
---|
MENGFANRONG: "Linux 页快速缓存与回写机制分析", 《HTTPS://WWW.CNBLOGS.COM/MENGFANRONG/P/4317653.HTML》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032526A (zh) * | 2019-04-16 | 2019-07-19 | 苏州浪潮智能科技有限公司 | 一种基于非易失性介质的页缓存方法、***及设备 |
CN110032526B (zh) * | 2019-04-16 | 2021-10-15 | 苏州浪潮智能科技有限公司 | 一种基于非易失性介质的页缓存方法、***及设备 |
CN112835528A (zh) * | 2021-02-22 | 2021-05-25 | 北京金山云网络技术有限公司 | 脏页刷新方法和装置、电子设备和存储介质 |
CN113157395A (zh) * | 2021-04-20 | 2021-07-23 | 上海泓戟信息科技有限公司 | 一种优化计算机内存数据同步的方法 |
CN113515412A (zh) * | 2021-06-25 | 2021-10-19 | 清华大学 | 非易失性内存检查点生成方法、装置和电子设备 |
CN113515412B (zh) * | 2021-06-25 | 2024-04-12 | 清华大学 | 非易失性内存检查点生成方法、装置和电子设备 |
CN116795298A (zh) * | 2023-08-28 | 2023-09-22 | 麒麟软件有限公司 | 一种Linux下NVME存储器的IO优化方法及*** |
CN116795298B (zh) * | 2023-08-28 | 2023-11-24 | 麒麟软件有限公司 | 一种Linux下NVME存储器的IO优化方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704400A (zh) | 一种面向非易失存储的页缓存方法 | |
EP3673377B1 (en) | Logical to physical mapping | |
KR101495928B1 (ko) | 휘발성 및 비휘발성 메모리를 갖는 하이브리드 고체 메모리 시스템 | |
CN104035729B (zh) | 一种日志映射的块设备精简配置方法 | |
US20200098423A1 (en) | Data storage device and control method for non-volatile memory | |
US10740251B2 (en) | Hybrid drive translation layer | |
US8954672B2 (en) | System and method for cache organization in row-based memories | |
US20170060434A1 (en) | Transaction-based hybrid memory module | |
CN106815152A (zh) | 一种优化页级闪存转换层的方法 | |
CN111512290B (zh) | 文件页表管理技术 | |
CN107368436A (zh) | 一种联合地址映射表的闪存冷热数据分离存储方法 | |
SG193114A1 (en) | Data storage device and method of managing a cache in a data storage device | |
CN107329696A (zh) | 一种保证数据崩溃一致性的方法及*** | |
JP2014174981A (ja) | データストレージデバイス及び方法 | |
CN107369464A (zh) | 存储模块及包括其的*** | |
CN106909323B (zh) | 适用于dram/pram混合主存架构的页缓存方法及混合主存架构*** | |
US7328311B2 (en) | Memory controller controlling cashed DRAM | |
CN106021159A (zh) | 大容量固态硬盘逻辑地址到物理地址映射方法 | |
CN102681792A (zh) | 一种固态盘内存分区方法 | |
CN104298615A (zh) | 一种存储器交换分区损耗的均衡方法 | |
CN112559384B (zh) | 一种基于非易失存储器的混合固态盘动态分区方法 | |
US20040128414A1 (en) | Using system memory as a write buffer for a non-volatile memory | |
Na et al. | In-page logging b-tree for flash memory | |
Lee et al. | Accelerating In-Page Logging with Non-Volatile Memory. | |
Mativenga et al. | Minimizing CMT miss penalty in selective page-level address mapping table |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180216 |