大数据处理中的虚拟内存管理方法及其装置制造方法

文档序号:6621887阅读:353来源:国知局
大数据处理中的虚拟内存管理方法及其装置制造方法
【专利摘要】大数据处理中的虚拟内存管理方法及其装置,属计算机系统优化【技术领域】,主要用于计算机大数据处理中一次实时处理数据量大于可用物理内存的情况。当内存分配达到指定临界值时,根据内存块访问关联综合指数,以及内存分配申请大小,寻找一块最合适的物理内存与磁盘虚拟内存置换。大小配对的内存分配方法把一个分配单元的前段分配给较大的内存需求者,后段分配给较小的内存需求者,通过该方法增加虚拟内存转换匹配度,减少数据移动量。本发明方法在大量100KB-10MB的内存分配,并且总量超过可用物理内存时,虚拟内存调度中的颠簸(Thrashing)现象很少,调度准确、有一定预见性,系统性能有明显提升。
【专利说明】大数据处理中的虚拟内存管理方法及其装置

【技术领域】
[0001] 本发明属于计算机系统优化【技术领域】,具体涉及一种大数据处理中的虚拟内存管 理方法及其装置。

【背景技术】
[0002] 虽然计算机硬件发展迅速,内存容量增长很快,从KB级到MB级,再到GB级,一个 级别增长千倍,但需求也在不断增长。现在进入了大数据处理的时代,再多的内存配置也不 能满足所有的应用需求。另一方面,大容量的内存配置也意味着较高的硬件投入,人们总希 望配置一般的计算机也能处理大量的数据。
[0003] 相对内存的容量与成本,磁盘具有成本低、容量大的特点,在这样的背景下就出现 了虚拟内存技术。虚拟内存是指利用一部分硬盘存储空间作为内存来使用,以增加总的可 使用内存量。当物理内存用完后,操作系统选择将内存中的部分内容写到作为虚拟内存的 交换文件上。
[0004] 由于计算机内存的访问速度远远高于硬盘的读写速度,虚拟内存技术仅解决了物 理内存不足的问题。当使用到虚拟内存时,计算机的性能明显下降。因此虚拟内存技术总 希望找到最佳的虚拟内存调度算法,尽量少使用虚拟内存,尽量提前把下一步可能使用的 数据置换调入物理内存。
[0005] 虚拟内存管理主要的关键问题,一是调度:决定哪些数据应被调入物理内存中; 二是地址映射:把访问地址变换成为物理内存地址或虚内存物理地址;三是替换:决定哪 些程序和数据应被调出主存(物理内存);四是更新:要确保主存与辅存(虚拟内存)数据 的一致性。其中替换问题与调度问题一并统一作为调度问题来处理。
[0006] 虚拟内存调度方式有分页式、段式、段页式3种。页式调度是将逻辑和物理地址空 间都分成固定大小的页。物理内存按页顺序编号,而每个独立编址的程序空间有自己的页 号顺序,通过调度虚拟存储中程序的各页可以离散装入物理内存中不同的页面位置。段式 调度是按程序的逻辑结构划分地址空间,段的长度是随意的,并且允许伸长。将这两种方法 结合起来便构成段页式调度。
[0007] 在某些情况下,操作系统忙于从物理内存到虚拟内存调入、调出页,CPU资源占用 很大,内存操作等待时间很长,通常称为颠簸(Thrashing)现象。
[0008] 操作系统通常可以把一个当前不活动的进程所占用的内存调出到虚拟内存中,而 把正在操作的活动进程尽量放在物理内存中。但是当一个进程占用的内存就已超过物理内 存容量时,操作系统虚拟内存调试方法就有局限性。在这种情况下我们常遇到应用软件的 速度性能大幅度下降,甚至出现假死机现象。
[0009] 另一个问题是操作系统多考虑一般性问题,当物理内存基本耗尽时,才开始调度 使用虚拟内存,随后如果内存分配需求大的话,伴随着大量的虚拟内存调度,速度性能成指 数下降。
[0010] 一类大数据处理中需要大量分配内存,每次分配的内存较大,比如100KB到10MB, 而且很多分配的内存尺寸是相同或相近的,比如处理同样大小的大量数据。通常当分配总 量接近或超过可用的计算机物理内存中,操作系统启用虚拟内存管理。但是操作系统虚拟 内存管理并不能最佳化处理这种情况,虚拟内存调度效率低、频繁调入、调出,数据移动过 多等,会导致这类大数据处理在数据量很大的情况下,速度非常慢,甚至无法处理。


【发明内容】

[0011] 本发明的目的在于为解决上述问题,提供一种大数据处理中的虚拟内存管理方法 及其装置,以优化大数据处理中虚拟内存的管理,减小虚拟内存调度中的颠簸(Thrashing) 现象,加强虚拟内存调度准确性、预见性,从而提升系统性能。
[0012] 本发明虚拟内存管理方法的特征在于其中的虚拟内存调度管理至少包括:
[0013] 1、内存分配单元管理:基本处理和管理的内存操作以内存分配单元为单位,内 存分配单元采用大小配对分配方法;大内存分配时,安排一个分配单元,分配单元大小 mUnitSize =申请大小RequestSizeX 125%;前段BigMem区分配大数据,后段LitMem区分 配小数据;小内存分配时,优先在已安排的分配单元中找LitMem空闲区,若找到分配单元 向后对齐,若未找到安排分配到小内存分配区。
[0014] 2、内存分配单元访问关联综合指数:反映内存分配单元优先调出到虚拟内存的指 标,第η个分配单元访问关联综合指数:Xn =(当前时间-最后一次访问时间)XFaXFm/ Fn2,其中时间单位是毫秒,Fa为内存分配单元平均访问频次,Fm为内存分配单元最大访问 频次,Fn为第η个分配单元访问频次;当Xn>Xa时,第η个内存分配单元可以调出到虚拟内 存,其中Xa为访问关联综合指数平均值。
[0015] 3、虚拟内存调度匹配置换:
[0016] (1)虚拟内存调度仅调入或调出内存分配单元中较大的内存块,以减少调度执行 次数;
[0017] (2)内存分配单元中较小的内存块需要时在物理内存中移动,以少量的内存数据 移动增加虚拟内存调度转换匹配率;
[0018] (3)虚拟内存调度置换比较时,源和目标内存分配单元大小只要75%相近就属于 匹配可转换对象;这样在大数据处理中很多数据大小相近的情况下,虚拟内存调度准确率 商、效率商;
[0019] (4)物理内存中能否调出通过访问关联综合指数来决定;
[0020] (5)总是保持必要可用物理内存空间,称为最小周转备用区MinSpareMem,来保证 虚拟内存调度过程不影响系统正常运行。
[0021] 本发明方法可以按以下步骤实现:
[0022] 1、初始化:向操作系统申请一块较大且连续的物理内存,在磁盘创建或打开虚拟 内存映像文件,文件大小为4G-32G,根据应用配置来确定。注意此文件不是windows中的 PageFile. sys〇
[0023] 2、小内存分配:申请分配小于BitMemSize的内存时执行小内存分配,在已安排的 内存分配单元中查找L_MemArea为空、且可用大小大于申请尺寸RequestSize的单元,找到 则记录返回,未找到则在小内存分配区内分配。
[0024] 3、创建内存分配单元:根据内存分配申请尺寸大小RequestSize,在管理的物理 内存建立一个大小为此91168七5丨26\125%的内存分配单元并记录,如果可用物理内存小于 MinSpareMem时,启动步骤9。
[0025] 4、大内存分配:申请分配大于BitMemSize的内存时执行大内存分配,如果有内存 分配单元的BigMem区已释放,且大小合适,则直接选用、记录并返回;否则,如果可用物理 内存小于最小周转备用内存MinSpareMem时,启动调出任务,同时执行步骤3,然后把新单 元返回来申请者。
[0026] 5、小内存位置调整:在内存分配单元匹配处理时,因为不考虑小内存区是否有数 据,如果内存分配单元被重新使用,且新的使用中BigMemSize会覆盖到小内存区时,小内 存区需要进行移动,移动方法为执行步骤2,并拷贝数据,然后小内存区初始化备用。
[0027] 6、一般内存分配:根据申请内存大小分别选择执行步骤2和步骤4。
[0028] 7、内存数据访问:根据地址映射表确定所访问数据是否在物理内存中,在物理内 存中直接访问,否则选择执行调出任务,然后执行调入任务并访问数据。
[0029] 8、内存分配单元匹配处理:源内存分配单元大小为目标内存分配单元的1/2?1 倍即为匹配成功;然后检测目标内存分配单元的小内存分配区时否有数据,源内存分配单 元的大内存区数据移到目标内存分配单元时,是否会覆盖目标内存分配单元的小内存数 据,如果会覆盖则执行步骤5。
[0030] 9、内存分配单元调出:根据内存分配单元访问关联综合指数以及调出大小需求, 选择最合适调出的内存分配单元,可以选择调出几个问关联综合指数相等的内存分配单 元;如果被调出的内存分配单元的小内存分配区有数据则执行步骤5。
[0031] 10、内存分配单元调入:先执行步骤8,如果未找到匹配的内存分配单元则,则执 行步骤3,将虚拟内存中目标内容拷贝到找到或新分配的内存分配单元中,记录更新地址映 射表。
[0032] 本发明装置包括:
[0033] 访问接口模块:包含物理内存管理和虚拟内存管理初始化、内存分配、内存释放、 读数据、写数据、带缓冲读数据、带缓冲写数据方法,虚拟内存调度自动进行,不反映到接口 模块,该模块同时计算内存分配单元访问关联综合指数,在内存分配以及访问过程中自动 计算,供虚拟内存调度时决策哪些优先调出。
[0034] 内存分配管理模块:管理本装置可以使用的物理内存空间以及辅存虚拟内存空 间,执行内存分配、释放,管理地址映射表,必要时启动调出任务管理模块,或启动调入执行 程序、调出执行程序;内存分配以本发明的内存分配单元结构形式来管理,内存分配包含大 内存块分配和小内存分配两条路线,以大内存分配为优先,为了适应大内存分配,小内存区 LitMem可以移动。
[0035] 调入执行模块:执行从虚拟内存调入一个分配单元到物理内存的过程,其中包含 在物理内存中查找或分配一个相匹配的内存分配单元,更新地址映射表,从辅存调入数据。
[0036] 调出任务管理模块:以一个独立线程的形式的记录和执行调出任务,尽量减少虚 拟内存调度过程不影响主线程操作。
[0037] 调出执行模块:执行从物理内存中的调出一个内存分配单元到虚拟内存的过程, 包括检测和处理移动目标中LitMem区的数据、移动数据到虚拟内存、更新地址映射表,初 始化移出后的内存分配单元步骤。
[0038] 初始化模块:启动本装置进入正常工作状态进行的初始化工作,包括装置所管理 的物理内存、虚拟内存、地址映射表;加载配置和运行统计信息对装置各个模块进行配置。
[0039] 本发明的有益效果:大数据处理中一个处理过程相关数据量经常超过可用物理内 存量,操作系统提供的一般化虚拟内存管理方法解决了容量问题,但效率并不高。本发明的 方法和装置在大数据处理中,有效减小虚拟内存调度中的颠簸(Thrashing)现象,加强虚 拟内存调度准确性、预见性,在用到虚拟内存的大数据处理中系统的速度性能和稳定性有 实质性提高。实际软件开发中当物理内存不足时,快速申请大块内存,操作系统返回都为分 配失败,而不是虚拟内存调度后能够成功分配,这样应用系统也就不能继续处理任务。本发 明有效地解决了这一个问题,物理内存不足时,使用虚拟内存,仅是速度略慢。

【专利附图】

【附图说明】
[0040] 图1本发明的包含虚拟调度管理的内存分配流程图;
[0041] 图2本发明的内存分配单元以及虚拟内存调试单元结构图;
[0042] 图3本发明的物理内存分配状态示意图;
[0043] 图4本发明的包含虚拟调度管理的内存数据访问流程图;
[0044] 图5本发明虚拟内存数据调出(从物理内存到辅存)处理流程;
[0045] 图6本发明虚拟内存数据调入(从辅存到物理内存)处理流程;
[0046] 图7本发明装置模块组成结构示意图。

【具体实施方式】
[0047] 下面结合附图对本发明的实施方式的技术方案进行详细、完整的阐述。
[0048] 本发明提供一种虚拟内存调度管理方法,其至少包括:内存分配单元管理方法、虚 拟内存调度匹配置换方法、内存分配单元访问关联综合指数。下面阐述主要工作流程。
[0049] 如图1所示,本发明虚拟内存管理方法中,包含虚拟调度管理的内存分配流程:
[0050] S100、当一个数据处理应用申请大小为RequestSize内存时,进入该流程,包括:
[0051] S101判断申请内存大小,是否属于大内存范畴,如果是大内存执行S102,否 则执行S110。本发明中,大内存是数据处理应用申请分配尺寸较大的内存,例如大小 100KB。反之小内存指申请分配尺寸较小的内存,例如小于100KB。大内存的分界线大小以 BigMemSize来表示。本发明重点针对大数据处理中,大量分配大内存的特点,虚拟内存调度 的重点也是针对大内存。
[0052] S102检测当次内存分配是否启动虚拟内存调出程序。当MaxAvailPhyMem-AllocatedMem〈MinSpareMem时需要启动调出任务S103,否则执行S105。其中 MaxAvailPhyMem为本发明装置所管理的物理内存大小,AllocatedMem为已分配的物理内 存大小,MinSpareMem为最小周转备用物理内存大小。
[0053] S103执行符合调出条件的内存分配单元匹配查找程序,如果找到合适调出的内存 分配单元,执行调出程序S104,否则执行传统虚拟调度方法S108,调出一段最长时间未访 问的内存分配单元。其中调出条件由内存分配单元访问关联综合指数来决定,该指数在下 面说明。
[0054] S105执行大内存分配区空闲的内存分配单元查找程序,找到执行S106分配方式, 否找到则执行S107。其中内存分配单元的大内存分配区和小内存分配区见图2说明。
[0055] 5107安排新的内存分配单元麻^麻仏11^11行5丨26 = 1^9脱8七5丨26\125%,置麻仏 BigAreaSize = RequestSize,MAU. LitAreaSize = RequestSize/4〇
[0056] S110查找内存分配单元中小内存分配区是否有合适未用的单元,若有则记录分配 并返回成功;未找到则执行S111,从图2,S206小内存分配区安排内存分配。内存分配单元 MAU 的 MAU. mUnitSize-MAU. BigAreaSize = RequestSize ?RequestSizeX2,即为匹配。
[0057] 如图2,本发明虚拟内存管理方法中包括内存分配单元管理方法:
[0058] 本发明基本处理和管理的内存操作以内存分配单元为单位,内存分配单元采用大 小配对分配方法,如图2所示。大内存分配时,安排一个分配单元,分配单元大小mUnitSize =申请大小RequestSizeX 125% ;前段BigMem区分配大数据,后段LitMem区分配小数据; 小内存分配时,优先在已安排的分配单元中找LitMem空闲区,若找到分配单元向后对齐, 若未找到安排分配到小内存分配区。
[0059] 其中内存分配单兀的最小值由配置参数确定,记为BigMemSize。大于BigMemSize 的内存分配采用大内存分配流程,小于BigMemSize采用小内存分配流程。
[0060] 另外,内存分配单元中BigMem与LitMem区之间通常有留空,通过较少的分配 浪费,获得较好的性能。在内存分配单元匹配、置换中,主要以考虑BigMem,留空可以扩 张、压缩,LitMem如果有数据也可以移动到其它位置。因此内存分配单元MAU的初始 值是MAU. BigAreaSize = MAU.mUnitSizeX75%,通过调度、置换、重新分配等过程后, MAU. BigAreaSize 的控制范围是 MAU. mUnitSize X 50 % ?MAU. mUnitSize X 100 %,MAU. LitAreaSize的控制范围是0?MAU. mUnitSizeXSO%。同样内存分配单元中留空部分范 围是 0 ?MAU. mUnitSizeX50%。
[0061] 如图4,本发明虚拟内存管理方法中内存数据访问流程S400 :
[0062] S402、根据地址映射表判断所访问的数据是否在辅存(虚拟内存)中,若是则执行 S404,否则执行正常访问流程。地址映射表仅记录内存分配单元地址、内存分配地址、内存 分配单元访问信息等数据,本说明书不对此深入阐述。
[0063] S404如果有调出任务未执行,则先执行调出任务S406,确保有足够物理内存空间 可以调入需要访问的数据。
[0064] S408执行调入处理流程S600,从辅存调入所要访问的内存分配单元。
[0065] 可选地,内存分配单元访问关联综合指数相等的连续几个内存分配单元可以加入 到调入任务,在系统操作的过程中,后台调入随后可能访问到的内存分配单元。
[0066] 如图5,本发明虚拟内存管理方法中内存分配单元调出流程S500,从物理内存中 把一个内存分配单元调出到辅存(虚拟内存):
[0067] S502、检测内存分配单元中小内存区L_MemArea是否使用,如果使用了则执行 S504,将小内存移动到其它位置。
[0068] S506把内存分配单元拷贝到辅存(虚拟内存),变更地址映射表。其中辅存上虚 拟内存存储文件在初始化时创建或打开。为了减少管理复杂性,该文件预分配较大的空间, 例如4G?32G,以便提高访问速度和减少磁盘碎片。每次程序启动运行时,指针置0,随后 以增量存储的方式向后存调出数据。
[0069] 如图6,本发明虚拟内存管理方法中内存分配单元调入出流程S600,从辅存(虚拟 内存)调入需要访问的内存分配单元或随后访问机率较大且数据位置处于辅存中的内存 分配单元。调入单元大小为mUnitSizeA。
[0070] S602在物理内存中的内存分配单元MAU中查找匹配单元,S卩MAU. BigMem未使用, 且 mUnitSizeA = MAU. mUnitSize/2 ?MAU. mUnitSize。找到执行 S606,未找到执行 S604。
[0071] S604安排一个新的内存分配单兀MAU,MAU. mUnitSize = mUnitSizeA,详细操作步 骤见图1说明。
[0072] S606检测找到的内存分配单元MAU,MAU. LitMem如果有内容则移到其它位置,MAU 初始化。
[0073] S608从辅存(虚拟内存)拷贝所需调入的数据到物理内存中找到或新分配的内存 分配单元,更新地址映射表。
[0074] 本发明虚拟内存管理方法中内存分配单元访问关联综合指数是判定内存分配单 元优先调出选择的依据,也是预测虚拟内存提前调入和调出的依据,包括:
[0075] 第η个分配单元访问关联综合指数:Xn =(当前时间-最后一次访问时 间)XFaXFm/Fn2。其中时间单位是毫秒,Fa为内存分配单元平均访问频次,Fm为内存分 配单元最大访问频次,Fn为第η个分配单元访问频次。当Xn>Xa时,第η个内存分配单元 可以调出到虚拟内存,其中Xa为访问关联综合指数平均值。
[0076] 其中内存访问单元记录以毫秒为单位的最后一次访问时间、访问次数。当执行内 存数据访问程序S400时更新上述各个值。创建内存分配单元时初始化Xn = 0, Fn = 1。
[0077] 本发明提供一种基于上述方法的虚拟内存管理装置,包括:
[0078] 访问接口模块:为系统应用提供内存分配、数据访问的功能。包含物理内存管理和 虚拟内存管理初始化,指定使用物理内存的大小和虚拟内存初始文件大小;内存分配、内存 释放、读数据、写数据、带缓冲读数据、带缓冲写数据等方法。虚拟内存调度自动进行,不反 映到接口模块。该模块同时计算内存分配单元访问关联综合指数,在内存分配以及访问过 程中自动计算,供虚拟内存调度时决策哪些优先调出。
[0079] 内存分配管理模块:管理本装置可以使用的物理内存空间以及辅存虚拟内存空 间,执行内存分配、释放,管理地址映射表,物理内存较少时,启动调出任务管理模块,或启 动调入执行程序、调出执行程序。内存分配以本发明的内存分配单元结构形式来管理,如图 2。内存分配包含大内存块分配和小内存分配两条路线,以大内存分配为优先,为了适应大 内存分配,小内存区LitMem可以移动。
[0080] 调入执行模块:执行从虚拟内存(辅存)调入一个分配单元到物理内存的过程。 其中包含在物理内存中查找或分配一个相匹配的内存分配单元,更新地址映射表,从辅存 调入数据等。
[0081] 调出任务管理模块:装置启动时,创建一个独立线程专门用来执行调出任务,即从 物理内存调出一些较长时间不使用的内存分配单元,该模块主要包含调出任务队列管理和 调用执行调出任务。通过后台运行的独立线程方式执行调出任务,尽量减少虚拟内存调度 过程不影响主线程操作。
[0082] 调出执行模块:执行从物理内存中的调出一个内存分配单元到虚拟内存(辅存) 的过程,包括检测和处理移动目标中LitMem区的数据、移动数据到辅存、更新地址映射表, 初始化移出后的内存分配单元等步骤。
[0083] 初始化模块:启动本发明装置进入正常工作状态进行的必要初始化工作,包括装 置所管理的物理内存、辅存(虚拟内存)、地址映射表,创建调出任务管理线程;加载配置和 运行统计信息对装置各个模块进行配置。
[0084] 本发明的虚拟内存管理装置按以下步骤工作:
[0085] 步骤1 :初始化:向操作系统申请一块较大且连续的物理内存,由本装置管理,在 磁盘创建或打开虚拟内存映像文件,文件大小约为4G-32G,根据应用配置和可用辅存容量 来确定,此文件不是windows中的PageFile. sys。虚拟内存映像文件大小的设置原则随后 有更多说明。如图2,初始化物理内存结构以及地址映射表,以备内存分配和访问使用;创 建调出任务管理线程。
[0086] 步骤2 :小内存分配:如图2,申请分配小于BitMemSize的内存时执行小内 存分配。在已安排的内存分配单元中查找L_MemA rea为空、且可用大小大于申请尺寸 RequestSize的单元,找到则记录返回,未找到则在小内存分配区内分配。
[0087] 步骤3 :创建内存分配单元:如图2,根据内存分配申请尺寸大小RequestSize,在 本装置管理的物理内存建立一个大小为Reque StSiZeX125%的内存分配单元并记录。如果 可用物理内存小于MinSpareMem时,启动步骤9。
[0088] 步骤4 :大内存分配:申请分配大于BitMemSize的内存时执行大内存分配。如果 有内存分配单元的BigMem区已释放,且大小合适,则直接选用、记录并返回。否则,如果可 用物理内存小于最小周转备用内存MinSpareMem时,启动调出任务。同时执行步骤3,然后 把新单元返回来申请者。
[0089] 步骤5 :小内存位置调整:在内存分配单元匹配处理时,因为不考虑小内存区是否 有数据,如果内存分配单元被重新使用,且新的使用中BigMemSize会覆盖到小内存区时, 小内存区需要进行移动。移动方法为执行步骤2,并拷贝数据,然后小内存区初始化备用。
[0090] 步骤6 :-般内存分配。如图1,根据申请内存大小分别选择执行步骤2和步骤4。 [0091] 步骤7 :内存数据访问:如图4,根据地址映射表确定所访问数据是否在物理内存 中,在物理内存中直接访问,否则选择执行调出任务,然后执行调入任务并访问数据。内存 数据访问时更新内存分配单元的最后访问时间以及访问次数,这是计算访问关联综合指数 的重要数据。
[0092] 步骤8 :内存分配单元匹配处理:源内存分配单元大小为目标内存分配单元的 1/2?1倍即为匹配成功。然后检测目标内存分配单元的小内存分配区时否有数据,源内存 分配单元的大内存区数据移到目标内存分配单元时,是否会覆盖目标内存分配单元的小内 存数据,如果会覆盖则执行步骤5。
[0093] 步骤9 :内存分配单元调出:如图5,根据内存分配单元访问关联综合指数以及调 出大小需求,选择最合适调出的内存分配单元,可以选择调出几个问关联综合指数相等的 内存分配单元。如果被调出的内存分配单元的小内存分配区有数据则执行步骤5。
[0094] 步骤10 :内存分配单元调入:如图6,先执行步骤8,如果未找到匹配的内存分配单 元则,则执行步骤3,将辅存(虚拟内存)中目标内容拷贝到找到或新分配的内存分配单元 中,记录更新地址映射表。
[0095] 步骤11 :计算内存分配单元访问关联综合指数:在调出内存分配单元查找匹配 时,计算当前的访问关联综合指数,每个内存分配单元的访问关联综合指数Xn =(当前时 间-最后一次访问时间)XFaXFm/Fn2,详细见前面访问关联综合指数计算方法。
[0096] 以上是本发明提出的针对大数据处理的虚拟内存调度管理方法及其装置,以下 对我们应用本发明前后的情况进行说明:
[0097] 本发明应用测试计算机为通用微型计算机,内存配置为2G-32G,一次实时处理数 据约为2000-10000帧图像数据,每帧数据大小约为512KB?25MB,根据大数据处理需要,每 个数据的处理需要存放原始数据、处理中间数据以及显示缓冲数据,约为原数据大小的2. 5 倍;实际一次实时处理需要内存约为6GB - 32GB,BigMemSize = 512KB。
[0098] 本发明辅存虚拟内存文件大小按以下原则配置:
[0099] ㈧尽量以高速磁盘,例如固态硬盘、SAS盘为优先;
[0100] (B)如果同操作系统在一个盘,则除了虚拟内存文件外还需保证剩余容量不低于 总磁盘容量的1/10 ;
[0101] (C)在满足上述条件下,在4GB?32GB范围选择较大的值来设置虚拟内存文件大 小。
[0102] 采用操作系统提供的虚拟内存管理或一些已公开的相关虚拟内存管理方法,当次 实时处理数据量大于可用物理物理内存时,常见内存分配失败、数据访问速率低于直接从 磁盘读数据的速率、系统出现长时间等待未响应等,采用本发明方法和装置针后,不会出现 内存分配失败的情况,数据访问速率不低于读磁盘速度,同时提前调度预见性有所提高。
[0103] 以上所述仅为本发明的一个实施例,并不能以此限制本发明,凡在本发明的思想 和方法范围内,所做的任何修改、改进,均应包含在本发明保护的范围之内。
【权利要求】
1. 一种大数据处理中的虚拟内存管理方法,其特征在于其中的虚拟内存调度管理至少 包括: (1) 、内存分配单元管理:基本处理和管理的内存操作以内存分配单元为单位,内 存分配单元采用大小配对分配方法;大内存分配时,安排一个分配单元,分配单元大小 mUnitSize =申请大小RequestSizeX 125%;前段BigMem区分配大数据,后段LitMem区分 配小数据;小内存分配时,优先在已安排的分配单元中找LitMem空闲区,若找到分配单元 向后对齐,若未找到安排分配到小内存分配区; (2) 、内存分配单元访问关联综合指数:反映内存分配单元优先调出到虚拟内存的指 标,第η个分配单元访问关联综合指数:Xn =(当前时间-最后一次访问时间)XFaXFm/ Fn2,其中时间单位是毫秒,Fa为内存分配单元平均访问频次,Fm为内存分配单元最大访问 频次,Fn为第η个分配单元访问频次;当Xn>Xa时,第η个内存分配单元可以调出到虚拟内 存,其中Xa为访问关联综合指数平均值; (3) 、虚拟内存调度匹配置换: (a) 虚拟内存调度仅调入或调出内存分配单元中较大的内存块,以减少调度执行次 数; (b) 内存分配单元中较小的内存块需要时在物理内存中移动,以少量的内存数据移动 增加虚拟内存调度转换匹配率; (c) 虚拟内存调度置换比较时,源和目标内存分配单元大小只要75%相近就属于匹配 可转换对象;这样在大数据处理中很多数据大小相近的情况下,虚拟内存调度准确率高、效 率1? ; (d) 物理内存中能否调出通过访问关联综合指数来决定; (e) 总是保持必要可用物理内存空间,称为最小周转备用区MinSpareMem,来保证虚拟 内存调度过程不影响系统正常运行。
2. 如权利要求1所述的大数据处理中的虚拟内存管理方法,其特征在于虚拟内存调度 管理按以下步骤实现: a、 初始化:向操作系统申请一块较大且连续的物理内存,在磁盘创建或打开虚拟内 存映像文件,文件大小为4G-32G,根据应用配置来确定。注意此文件不是windows中的 PageFile. sys〇 b、 小内存分配:申请分配小于BitMemSize的内存时执行小内存分配,在已安排的内存 分配单元中查找L_MemArea为空、且可用大小大于申请尺寸RequestSize的单元,找到则记 录返回,未找到则在小内存分配区内分配。 c、 创建内存分配单元:根据内存分配申请尺寸大小RequestSize,在管理的物理内存 建立一个大小为RequestSizeX 125 %的内存分配单元并记录,如果可用物理内存小于 MinSpareMem时,启动步骤9。 d、 大内存分配:申请分配大于BitMemSize的内存时执行大内存分配,如果有内存分配 单元的BigMem区已释放,且大小合适,则直接选用、记录并返回;否则,如果可用物理内存 小于最小周转备用内存MinSpareMem时,启动调出任务,同时执行步骤3,然后把新单元返 回来申请者。 e、 小内存位置调整:在内存分配单元匹配处理时,因为不考虑小内存区是否有数据,如 果内存分配单元被重新使用,且新的使用中BigMemSize会覆盖到小内存区时,小内存区需 要进行移动,移动方法为执行步骤2,并拷贝数据,然后小内存区初始化备用。 f、 一般内存分配:根据申请内存大小分别选择执行步骤2和步骤4。 g、 内存数据访问:根据地址映射表确定所访问数据是否在物理内存中,在物理内存中 直接访问,否则选择执行调出任务,然后执行调入任务并访问数据。 h、 内存分配单元匹配处理:源内存分配单元大小为目标内存分配单元的1/2?1倍即 为匹配成功;然后检测目标内存分配单元的小内存分配区时否有数据,源内存分配单元的 大内存区数据移到目标内存分配单元时,是否会覆盖目标内存分配单元的小内存数据,如 果会覆盖则执行步骤5。 i、 内存分配单元调出:根据内存分配单元访问关联综合指数以及调出大小需求,选择 最合适调出的内存分配单元,可以选择调出几个问关联综合指数相等的内存分配单元;如 果被调出的内存分配单元的小内存分配区有数据则执行步骤5。 j、 内存分配单元调入:先执行步骤8,如果未找到匹配的内存分配单元则,则执行步骤 3,将虚拟内存中目标内容拷贝到找到或新分配的内存分配单元中,记录更新地址映射表。
3. -种大数据处理中的虚拟内存管理装置,其特征在于包括: 访问接口模块:为系统应用提供内存分配、数据访问的功能,包含物理内存管理和虚 拟内存管理初始化,指定使用物理内存的大小和虚拟内存初始文件大小;内存分配、内存释 放、读数据、写数据、带缓冲读数据、带缓冲写数据;虚拟内存调度自动进行,不反映到接口 模块;该模块同时计算内存分配单元访问关联综合指数,在内存分配以及访问过程中自动 计算,供虚拟内存调度时决策哪些优先调出; 内存分配管理模块:管理本装置可以使用的物理内存空间以及辅存虚拟内存空间,执 行内存分配、释放,管理地址映射表,物理内存较少时,启动调出任务管理模块,或启动调入 执行程序、调出执行程序;内存分配以本发明的内存分配单元结构形式来管理;内存分配 包含大内存块分配和小内存分配两条路线,以大内存分配为优先,为了适应大内存分配,小 内存区LitMem可以移动; 调入执行模块:执行从虚拟内存调入一个分配单元到物理内存的过程;其中包含在 物理内存中查找或分配一个相匹配的内存分配单元,更新地址映射表,从辅存调入数据; 调出任务管理模块:装置启动时,创建一个独立线程专门用来执行调出任务,即从物理 内存调出一些较长时间不使用的内存分配单元,该模块主要包含调出任务队列管理和调用 执行调出任务;通过后台运行的独立线程方式执行调出任务,尽量减少虚拟内存调度过程 不影响主线程操作; 调出执行模块:执行从物理内存中的调出一个内存分配单元到虚拟内存的过程,包括 检测和处理移动目标中LitMem区的数据、移动数据到辅存、更新地址映射表,初始化移出 后的内存分配单元; 初始化模块:启动本发明装置进入正常工作状态进行的必要初始化工作,包括装置所 管理的物理内存、虚拟内存、地址映射表,创建调出任务管理线程;加载配置和运行统计信 息对装置各个模块进行配置。
4. 如权利要求3说的虚拟内存管理装置,其特征在于按以下步骤工作: a、初始化:向操作系统申请一块较大且连续的物理内存,由本装置管理,在磁盘创建或 打开虚拟内存映像文件,文件大小为4G-32G,根据应用配置和可用辅存容量来确定,初始化 物理内存结构以及地址映射表,以备内存分配和访问使用;创建调出任务管理线程; b、 小内存分配:申请分配小于BitMemSize的内存时执行小内存分配,在已安排的内存 分配单元中查$L_MemArea为空、且可用大小大于申请尺寸RequestSize的单元,找到则记 录返回,未找到则在小内存分配区内分配; c、 创建内存分配单元:根据内存分配申请尺寸大小RequestSize,在本装置管理的物 理内存建立一个大小为1^91168七5丨26\125%的内存分配单元并记录。如果可用物理内存小 于MinSpareMem时,启动步骤9 ; d、 大内存分配:申请分配大于BitMemSize的内存时执行大内存分配;如果有内存分配 单元的BigMem区已释放,且大小合适,则直接选用、记录并返回;否则,如果可用物理内存 小于最小周转备用内存MinSpareMem时,启动调出任务,同时执行步骤3,然后把新单元返 回来申请者; e、 小内存位置调整:在内存分配单元匹配处理时,因为不考虑小内存区是否有数据,如 果内存分配单元被重新使用,且新的使用中BigMemSize会覆盖到小内存区时,小内存区需 要进行移动;移动方法为执行步骤2,并拷贝数据,然后小内存区初始化备用; f、 一般内存分配。:根据申请内存大小分别选择执行步骤2和步骤4 ; g、 内存数据访问:根据地址映射表确定所访问数据是否在物理内存中,在物理内存中 直接访问,否则选择执行调出任务,然后执行调入任务并访问数据;内存数据访问时更新内 存分配单元的最后访问时间以及访问次数; h、 内存分配单元匹配处理:源内存分配单元大小为目标内存分配单元的1/2?1倍即 为匹配成功;然后检测目标内存分配单元的小内存分配区时否有数据,源内存分配单元的 大内存区数据移到目标内存分配单元时,是否会覆盖目标内存分配单元的小内存数据,如 果会覆盖则执行步骤5 ; i、 内存分配单元调出:根据内存分配单元访问关联综合指数以及调出大小需求,选择 最合适调出的内存分配单元,可以选择调出几个问关联综合指数相等的内存分配单元;如 果被调出的内存分配单元的小内存分配区有数据则执行步骤5 ; j、 内存分配单元调入:先执行步骤8,如果未找到匹配的内存分配单元则,则执行步骤 3,将虚拟内存中目标内容拷贝到找到或新分配的内存分配单元中,记录更新地址映射表; k、 计算内存分配单元访问关联综合指数:在调出内存分配单元查找匹配时,计算当前 的访问关联综合指数,每个内存分配单元的访问关联综合指数Xn =(当前时间-最后一次 访问时间)XFaXFm/Fn2,其中Xa为访问关联综合指数平均值。
【文档编号】G06F9/455GK104111896SQ201410368134
【公开日】2014年10月22日 申请日期:2014年7月30日 优先权日:2014年7月30日
【发明者】郑家亮, 雷晓凌 申请人:云南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1