CN103744626A - 一种基于内存替换进行数据写入的方法 - Google Patents
一种基于内存替换进行数据写入的方法 Download PDFInfo
- Publication number
- CN103744626A CN103744626A CN201410015855.1A CN201410015855A CN103744626A CN 103744626 A CN103744626 A CN 103744626A CN 201410015855 A CN201410015855 A CN 201410015855A CN 103744626 A CN103744626 A CN 103744626A
- Authority
- CN
- China
- Prior art keywords
- internal memory
- memory
- capacity
- data
- state
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种基于内存替换进行数据写入的方法,其实现过程为:设置内存构架,将内存中用于数据读写的部分进行独立设计,将两块容量完全相同的集成电路集成在一起;进行内存切换,***在刚启动时以通用模式启动,待运行一段时间,***相关应用完全加载完成,由内存管理单元根据***设定的切换模式,对栈所使用的容量进行检测,然后根据实际的容量加上一定的冗余设定栈区,然后对于读所使用的内存进行检测,并加上一定的冗余设定读内存,剩下的内存完全映射给写内存,完成内存切换过程。该一种基于内存替换进行数据写入的方法和现有技术相比,在文件写入时通过替换内存以使整个写入的过程变得平滑,改善写入性能,实用性强,易于推广。
Description
技术领域
本发明涉及计算机存储***技术领域,更具体地说是基于内存替换进行数据写入的方法。
背景技术
现实生活中,人们越来越多的与信息化设备打交道,人们使用这些设备的主要一个目的就是获取信息,但是信息从哪里来的?这就涉及到信息保存,如果信息没有保存,获取信息就无从谈起,因此信息保存对于整个信息领域起到了支撑的作用。说到信息保存,人们很容易想到的是自己使用手机或者PC对自己的文件进行保存,对于这种保存因为数据量少,也一般有足够的时间让pc机慢慢存,因此在存储过程中一般不会出现什么诸如数据丢失等问题。
但是在现实生活中,有些情况会产生大量的数据而且需要存储设备对这些大量的数据进行及时的存储。视频监控行业就具有这样的一种特点,在一些中小型的视频监控项目中,摄像头有几百上千路,而大型或者超大型的则有上万路的摄像头,特别是现在摄像头已经变成高清化,这也就是说对于视频监控在短时间内会产生大量的数据,而且这些数据如果不能在一个短时间内进行存储的话将会丢失。
现在很多的视频厂商使用一些通用的存储设备,对视频数据进行存储,经常看到监控厂商抱怨视频出现了丢帧现象。视频丢帧也就是出现了视频数据丢失,而对存储进行检查的时候,网络带宽完全能满足需要,磁盘IO,等并没有出现瓶颈。这常常是技术人员很头痛。
因为数据量大,路数多,而且还常常实现数据流的爆发等问题。视频数据存储的过程中,内核常常先把数据存入缓存中,然后再调用刷写线程把数据刷入磁盘等存储设备,而内存是很多的进程共用的,内核需要对数据流进行内存分配,申请相关的内存页耗费大量时间,而有可能在内存申请时候数据流过来时没有足够的内存进行存放,这就造成了视频丢帧。
在视频监控(数据备份)应用中,有一个非常显著的特点就是写入量远远大于读的概率,且数据写入相对平稳,但是每一时刻写入的数据量都非常大,而且写入后基本不需要马上进行读取,也即写入内存后,即可以写入磁盘不要担心这会影响读取的效率。针对这些应用特点,提出一种基于内存替换,以使整个写入的过程变得平滑,改善写入性能的方法。
发明内容
本发明的技术任务是解决现有技术的不足,提供一种基于内存替换进行数据写入的方法。
本发明的技术方案是按以下方式实现的,该一种基于内存替换进行数据写入的方法,其实现过程为:
设置内存构架,将内存中用于数据读写的部分进行独立设计,将两块容量完全相同的集成电路集成在一起,每块电路均包括读数据的部分和写数据的部分,设定内存大小为堆栈区域总的大小,每一块的容量都相当于内存中堆区的容量,把栈区容量划到实际栈区所需容量的百分之一百二十,这时剩下的容量就全部用于堆区,该堆区读容量和写容量共同组成堆区全部容量。
进行内存切换,即首先将***设定为内存切换模式。
然后***在刚启动时以通用模式启动,待运行一段时间,***相关应用完全加载完成,由可以对栈区、读内存区、写内存区的容量进行动态调整的内存管理单元根据***设定的切换模式,对栈所使用的容量进行检测,然后根据实际的容量加上一定的冗余设定栈区,然后对于读所使用的内存进行检测,并加上一定的冗余设定读内存,剩下的内存完全映射给写内存,完成内存切换过程。
所述内存切换是指写内存的切换,其包括两种状态,0状态和1状态,0状态表示外面数据往内存里写的状态,1状态表示从内存往磁盘的存储设备上刷写的状态。
所述内存管理单元对各区的容量使用情况进行跟踪,当某一区的冗余容量小于预设值,则内存管理单元对内存进行调整,当冗余的容量大于预设的值同样对内存进行调整。
每块内存中都设置了“满状态”硬件位:当写内存处于0状态,也就是处于外面数据写入内存的状态时,当数据填满了80%的写内存,则“数据满”硬件位将被置1;而另一块处于1状态的内存数据完全刷写完成时,则“满状态”位被置0。
内存管理单元还可以根据两块内存的“满状态”位及数据流情况所处的情况进行状态切换,状态切换使用边沿触发器进行触发切换。
本发明与现有技术相比所产生的有益效果是:
本发明的一种基于内存替换进行数据写入的方法在文件写入时通过替换内存以使整个写入的过程变得平滑,改善写入性能,数据写入平稳,视频保存完整且不易丢失,调取过程方便易实现,实用性强,易于推广。
附图说明
附图1为本发明中内存替换情形下读写使用内存示意图。
具体实施方式
下面结合附图对本发明的一种基于内存替换进行数据写入的方法作以下详细说明。
如附图1所示,现提供一种基于内存替换进行数据写入的方法,其实现过程为:
设置内存构架,将内存中用于数据读写的部分进行独立设计,如附图1所示区域中有两块容量相同超大规模集成电路集成在一起。每一块的容量都相当于内存中堆区的容量。堆区容量对于传统的内存管理方法,堆区容量没有固定值,是大小可变的一个区域。为了方便,可以是设定内存大小为堆栈区域总的大小。
由于对于视频监控存储或者数据备份等应用业务量比较单一,栈区所需要的容量也比较固定,假定为n,为了有一定冗余,可以把容量划到实际栈区所需容量的百分之一百二十,则这时剩下的容量就全部用于堆区。
因为堆区中用于读所需要的容量非常少,可以划很少的一部分用于读,假定为R。
然后最后剩下的内存全部用于写内存,假设总的容量为W。
完成内存切换的步骤。
内存切换是指写内存的切换,写内存有两种状态,0状态和1状态,0状态表示外面数据往内存里写的状态,即写内存状态;1状态表示从内存往磁盘的存储设备上刷写的状态,即写磁盘状态。
对于实际使用当中是否需要进行内存替换,可以使用相关的命令对内存进行控制,如果不需要进行内存替换模式,则只使用内存1,这种情形下,与通常的使用相同,没有区别。
内存管理单元可以对栈区,读内存区,写内存区的容量进行动态调整。调整可以按如下方式进行调整。
1)***设定为内存切换模式。
2)***在刚启动时都是以通用模式启动,等运行了一段时间,也即***相关应用完全加载完成,这时可以内存管理器根据***设定的切换模式,对栈所使用的容量进行检测,然后根据实际的容量加上一定的冗余(如20%)设定栈区,然后对于读所使用的内存进行检测,并加上一定的冗余设定读内存,剩下的内存完全映射给写内存。
3)内存管理单元需要对各区的容量使用情况进行跟踪,但某一区的冗余容量小于预设值,则内存管理单元需要对内存进行调整,当冗余的容量大于预设的值则也需要对内存进行调整。
每块内存中都设置了“满状态”硬件位,当写内存处于写的状态时,即0状态时,也就是处于外面数据写入内存的状态时,当数据填满了80%的写内存,则“数据满”硬件位将被置1。而另一块处于刷写状态,即1状态时的内存数据完全刷写完成了,则“满状态”位被置0。
内存管理单元还需要能根据两块内存的“满状态”位及数据流情况所处的情况进行状态切换。状态切换使用边沿触发器进行触发切换。为了更好的阐述想法,硬件位使用如下字母进行约定:
内存1满状态位 M1;
内存2满状态位 M2;
内存1写状态 X1;
内存2写状态 X2;
数据流边沿 B;
具体情形如下表所示:
情况 | M1 | M2 | B | X1 | X2 |
1 | 0 | 1 | 上升沿 | 由1变0 | 有0变1 |
2 | 1 | 0 | 上升沿 | 有0变1 | 由1变0 |
3 | 0 | 0 | 任何态 | 0 | 1 |
4 | 1 | 1 | 任何态 | 0 | 0 |
对于这个表格需要说明的是第四种情况必须避免。第一种情况表明内存1开始处于写磁盘的状态,而内存2开始处于写内存状态。内存1在刷写完成以后,满状态变成0,如果此时内存2数据已经写到了80%,则数据流如果处于上升沿,则内存将被替换。
数据刷写的时候,可以也如通常的刷写一样会对相关的写操作进行合并,以提高磁盘写入的速度。
在内存变成刷写磁盘,即1状态后,将对整个写内存进行清空,因此刷写线程不需要考虑是否还需要等待某些写操作以进行写合并。
文件***元数据被读入读内存,数据刷写时,可以根据读内存中的相关各种数据结构的映射关系(如address_space)确定写入的具***置。
通过内存替换后,内存变成了空,每进行一次内存替换,就像得到一块新的内存,因此在外部数据写内存时,在进行内存分配的时候,就不需要进行内存遍历,查询可用内存,或者说可以使内存遍历相对容易。
对于内存写满,而刷写没有完成的情况需要避免,因此磁盘***写入的速度不能低于数据往内存写入的速度,在磁盘选择的时候,一定要对写内存的速度和磁盘写入速度进行计算,否则***不管如何改进也是无济于事的。
以上所述仅为本发明的实施例而已,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于内存替换进行数据写入的方法,其特征在于其实现过程为:
设置内存构架,将内存中用于数据读写的部分进行独立设计,将两块容量完全相同的集成电路集成在一起,每块电路均包括读数据的部分和写数据的部分,设定内存大小为堆栈区域总的大小,每一块的容量都相当于内存中堆区的容量,把栈区容量划到实际栈区所需容量的百分之一百二十,这时剩下的容量就全部用于堆区,该堆区读容量和写容量共同组成堆区全部容量;
进行内存切换,即
首先将***设定为内存切换模式;
然后***在刚启动时以通用模式启动,待运行一段时间,***相关应用完全加载完成,由可以对栈区、读内存区、写内存区的容量进行动态调整的内存管理单元根据***设定的切换模式,对栈所使用的容量进行检测,然后根据实际的容量加上一定的冗余设定栈区,然后对于读所使用的内存进行检测,并加上一定的冗余设定读内存,剩下的内存完全映射给写内存,完成内存切换过程。
2.根据权利要求1所述的一种基于内存替换进行数据写入的方法,其特征在于:所述内存切换是指写内存的切换,其包括两种状态,0状态和1状态,0状态表示外面数据往内存里写的状态,1状态表示从内存往磁盘的存储设备上刷写的状态。
3.根据权利要求2所述的一种基于内存替换进行数据写入的方法,其特征在于:所述内存管理单元对各区的容量使用情况进行跟踪,当某一区的冗余容量小于预设值,则内存管理单元对内存进行调整,当冗余的容量大于预设的值同样对内存进行调整。
4.根据权利要求3所述的一种基于内存替换进行数据写入的方法,其特征在于:每块内存中都设置了“满状态”硬件位:当写内存处于0状态,也就是处于外面数据写入内存的状态时,当数据填满了80%的写内存,则“数据满”硬件位将被置1;而另一块处于1状态的内存数据完全刷写完成时,则“满状态”位被置0。
5.根据权利要求3所述的一种基于内存替换进行数据写入的方法,其特征在于:内存管理单元还可以根据两块内存的“满状态”位及数据流情况所处的情况进行状态切换,状态切换使用边沿触发器进行触发切换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410015855.1A CN103744626B (zh) | 2014-01-14 | 2014-01-14 | 一种基于内存替换进行数据写入的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410015855.1A CN103744626B (zh) | 2014-01-14 | 2014-01-14 | 一种基于内存替换进行数据写入的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744626A true CN103744626A (zh) | 2014-04-23 |
CN103744626B CN103744626B (zh) | 2017-08-11 |
Family
ID=50501647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410015855.1A Active CN103744626B (zh) | 2014-01-14 | 2014-01-14 | 一种基于内存替换进行数据写入的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103744626B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107124570A (zh) * | 2017-05-08 | 2017-09-01 | 青岛海信电器股份有限公司 | 个人视频录像pvr录制方法及装置 |
CN107885672A (zh) * | 2017-11-07 | 2018-04-06 | 杭州顺网科技股份有限公司 | 内存管理***及方法 |
CN110119132A (zh) * | 2019-04-09 | 2019-08-13 | 吴怡文 | 一种控制器实现功能设定多样化的方法和*** |
CN110515745A (zh) * | 2019-08-15 | 2019-11-29 | 广东浪潮大数据研究有限公司 | 一种共享内存数据处理方法、装置、***、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019617A (zh) * | 2012-11-25 | 2013-04-03 | 向志华 | 高效实现ssd内部raid的构建方法、数据读写方法及装置 |
US20130332690A1 (en) * | 2012-06-12 | 2013-12-12 | Research & Business Foundation Sungkyunkwan University | Memory Systems and Memory Managing Methods of Managing Memory in a Unit of Memory Chunk |
-
2014
- 2014-01-14 CN CN201410015855.1A patent/CN103744626B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130332690A1 (en) * | 2012-06-12 | 2013-12-12 | Research & Business Foundation Sungkyunkwan University | Memory Systems and Memory Managing Methods of Managing Memory in a Unit of Memory Chunk |
CN103019617A (zh) * | 2012-11-25 | 2013-04-03 | 向志华 | 高效实现ssd内部raid的构建方法、数据读写方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107124570A (zh) * | 2017-05-08 | 2017-09-01 | 青岛海信电器股份有限公司 | 个人视频录像pvr录制方法及装置 |
CN107885672A (zh) * | 2017-11-07 | 2018-04-06 | 杭州顺网科技股份有限公司 | 内存管理***及方法 |
CN110119132A (zh) * | 2019-04-09 | 2019-08-13 | 吴怡文 | 一种控制器实现功能设定多样化的方法和*** |
CN110515745A (zh) * | 2019-08-15 | 2019-11-29 | 广东浪潮大数据研究有限公司 | 一种共享内存数据处理方法、装置、***、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103744626B (zh) | 2017-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104461391B (zh) | 一种存储设备元数据管理处理方法及*** | |
CN104407933B (zh) | 一种数据的备份方法及装置 | |
CN104331478B (zh) | 一种自精简存储***数据一致性管理方法 | |
US20130254514A1 (en) | Wear-leveling method, storage device, and information system | |
WO2016086819A1 (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
CN104077380B (zh) | 一种重复数据删除方法、装置及*** | |
US9576019B2 (en) | Increasing distributed database capacity | |
CN105549905A (zh) | 一种多虚拟机访问分布式对象存储***的方法 | |
US11010079B2 (en) | Concept for storing file system metadata within solid-stage storage devices | |
CN103077121B (zh) | 一种闪存存储设备中数据管理的方法及装置 | |
CN104361030A (zh) | 一种具有任务分发功能的分布式缓存架构及缓存方法 | |
CN106066890B (zh) | 一种分布式高性能数据库一体机*** | |
CN106095337A (zh) | 一种基于san网络存储的云盘快速共享方法 | |
CN103838853A (zh) | 一种基于不同存储介质的混合文件*** | |
CN106657356A (zh) | 一种云存储***的数据写入方法、装置及云存储*** | |
CN105677251A (zh) | 基于Redis集群的存储*** | |
US8296270B2 (en) | Adaptive logging apparatus and method | |
CN103744626A (zh) | 一种基于内存替换进行数据写入的方法 | |
CN106155915A (zh) | 数据存储的处理方法及装置 | |
CN103218305A (zh) | 存储空间的分配方法 | |
US10592138B1 (en) | Avoiding storage device overlap in raid extent sub group and keeping relationship balance on mapped raid system and method | |
CN104063284A (zh) | 运行应用程序的方法和装置 | |
KR102089291B1 (ko) | 데이터 익스텐트 이동 방법 | |
CN105450704A (zh) | 一种用于闪存的网络存储设备及其处理方法 | |
CN109521957A (zh) | 一种数据处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |