CN103324582A - 一种内存迁移方法、装置及设备 - Google Patents
一种内存迁移方法、装置及设备 Download PDFInfo
- Publication number
- CN103324582A CN103324582A CN2013102397088A CN201310239708A CN103324582A CN 103324582 A CN103324582 A CN 103324582A CN 2013102397088 A CN2013102397088 A CN 2013102397088A CN 201310239708 A CN201310239708 A CN 201310239708A CN 103324582 A CN103324582 A CN 103324582A
- Authority
- CN
- China
- Prior art keywords
- application heap
- physical address
- memory
- internal memory
- label value
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种内存迁移方法、装置及设备,该方法包括:检测是否存在处于异常状态的至少一个第一内存段,当存在至少一个第一内存段处于异常状态时,生成内存迁移指令,解析该内存迁移指令,获取内存迁移指令中的内存信息参数,该内存信息参数用于指示至少一个第一内存段是否对应有至少一个进程,在确定至少一个第一内存段对应有至少一个进程时,将至少一个进程对应的进程相关数据从至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存,从而可以解决现有技术中内存失效导致内存中业务中断的问题,从而提高了系统中业务进程运行的稳定性可靠性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存迁移方法、装置及设备。
背景技术
在服务器系统中,内存是系统运行的关键模块之一,部署在操作系统上的应用业务以进程的形式存在,在其运行的过程中需要依据应用业务的负载量来动态的向系统申请定量的内存才能够正常运行。
图1所示为现有技术中应用业务使用内存的示意图,图1的应用系统100中应用业务(简称为APP)以进程的形式存在,一个应用业务系统可以包含数个业务进程,如102-1,…102-N,这些进程在运行时必须要向操作系统OS管理下的内存模块申请一定量的内存才能运行,在OS下,OS给内存编排地址,如模块103中的地址是从0x00000到0xfffff。当应用业务进程向OS申请内存时,OS将其中的某一段内存如103-1,103-3,103-4的内存段分给进程APP1,即给102-1使用,其它的APP进程亦是如此分到相应的内存。
而OS管理的内存是由系统中的物理内存101提供的,可用物理内存的总和通过基本输入输出系统BIOS上报给OS,OS由此感知到可用的内存总量,总物理内存由各个物理服务器节点上的物理内存组成,如101-1至101-N。
对OS而言,其通过BIOS能获取当前系统可用的内存的总容量,并将这个容量编排好地址,如103中的地址,从0x00000至0xfffff。从而将该地址分段,当进程向OS申请内存时,OS根据申请内存的大小,将这些内存段再分配给进程使用。
但是现有的内存也是最常发生故障的模块,如若正在被应用业务使用到的内存发生了故障,如内存硬件失效的致命故障,这将会引发使用该内存的应用业务产生异常,应用业务对应的进程丢失该内存上的数据,并造成业务的中断,而在如电信级别的应用业务中,业务中断是致命性的事件。
为了避免内存失效导致业务中断,现有技术中提供了一种内存保护方案,即:采用内存主备的方式,该种方式将系统的总体内存容量划分为2组容量一致的内存组,其中一组内存为主内存,而另一组内存为备内存,在应用业务运行时,应用业务使用的是主内存,应用业务的进程对主内存上进行的所有更新的数据都会同步的写入到备份内存中,当主内存失效时,即刻切换到备份内存上,从而可以避免在内存上数据的丢失。
但是,上述的主备内存的实现方式必须牺牲掉内存容量的一半,导致内存占用过大,并且该主备内存的实现方式也无法避免在主备内存同时失效时业务进程的中断。
发明内容
本发明实施例提供了一种内存迁移方法、装置及设备,能够将异常内存段中的进程相关数据迁移至分配的非异常状态的内存段中,从而解决了现有技术中存在的由于内存失效而导致内存中业务进程中断的技术问题,其具体的技术方案如下:
本发明实施例一方面,提供了一种内存迁移方法,所述方法包括:
检测是否存在处于异常状态的至少一个第一内存段;
当存在所述至少一个第一内存段时,生成内存迁移指令;
解析所述内存迁移指令,获取所述内存迁移指令中的内存信息参数,所述内存信息参数用于指示所述至少一个第一内存段是否对应有至少一个进程;
在确定所述至少一个第一内存段对应有所述至少一个进程时,将所述至少一个进程对应的进程相关数据从所述至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存。
结合第一方面,在第一种可能实现的方式,在所述检测是否存在处于异常状态的至少一个第一内存段之前,所述方法还包括:
按照内存分割规则,对系统的内存进行分割,生成M段内存段,其中,M为大于等于2的正整数;
获取所述M段内存段中每段内存段各自对应的物理地址,共计M个所述物理地址;
分别对应所述M段内存段中的每段内存段设置一个标签值,获得M个标签值,并将每段内存段对应的物理地址以及标签值添加到预设的内存管理列表中。
结合第一种可能实现的方式,在第二种可能实现的方式中,所述按照内存分割规则,对系统的内存进行分割,生成M段内存段,具体为:
按照预设内存分割单位,将所述系统中的内存分割为所述预设内存分割单位对应的所述M段内存段。
结合第一种可能实现的方式,在第三种可能实现的方式中,在所述将每段内存段对应的物理地址以及标签值添加到预设的内存管理列表中之后,所述方法还包括:
分别为所述系统中当前运行的每个进程分配所述M段内存段中的至少一个内存段;
获取每个进程分配到的所述至少一个内存段对应的物理地址以及标签值;
将每个进程的进程号,以及每个进程分别对应的所述物理地址以及所述标签值添加到预设的内存映射列表中。
结合第三种可能实现的方式,在第四种可能实现的方式中,所述解析所述内存迁移指令,获取所述内存参数信息中的内存信息参数,具体为:
解析所述内存迁移指令,获取所述内存迁移指令携带的至少一个第一内存段对应的第一物理地址;
根据获取到的所述第一物理地址,在所述内存管理列表中确定所述至少一个第一内存段对应的第一标签值。
结合第四种可能实现的方式,在第五种可能实现的方式中,在确定所述内存信息参数对应有至少一个进程时,将所述至少一个进程对应的进程相关数据从所述至少一个第一内存迁移至处于非异常状态的至少一个第二内存段中保存,具体包括:
根据确定的所述至少一个第一内存段对应的第一标签值,在所述内存映射列表中判断所述至少一个第一内存段是否对应有至少一个进程;
在判断出所述至少一个第一内存段对应的所述第一标签值对应有所述至少一个进程时,将所述至少一个进程对应的进程相关数据从所述第一标签值对应的所述至少一个第一内存段迁移至处于非异常状态的所述至少一个第二内存段中保存。
结合第五种可能实现的方式,在第六种可能实现的方式中,将所述至少一个进程对应的进程相关数据从所述第一标签值对应的所述至少一个第一内存段迁移至处于非异常状态的所述至少一个第二内存段中保存,具体包括:
获取处于使能状态且未被分配的至少一个第二内存段;
分别为所述至少一个进程中的每个进程分配至少一个所述第二内存段,并将每个进程对应的所述进程相关数据保存至每个进程分配到的所述至少一个第二内存段。
结合第六种可能实现的方式,在第七种可能实现的方式中,在为所述至少一个进程中的每个进程分配至少一个第二内存段,并将每个进程对应的所述进程相关数据保存至每个进程分配到的所述至少一个第二内存段之后,所述方法还包括:
获取每个进程分配到的所述至少一个第二内存段中每个第二内存段对应的第二物理地址以及第二标签值;
分别将每个进程在所述内存映射列表中的所述第一物理地址以及所述第一标签值更新为所述第二物理地址以及所述第二标签值。
结合第一方面,在第八种可能实现的方式中,在确定所述内存信息参数表征所述至少一个第一内存段未对应进程时,所述方法还包括:
解析所述内存信息参数,获取所述内存信息参数中携带的至少一个第一内存段对应的第一物理地址;
根据所述第一物理地址,将所述第一物理地址对应的所述至少一个第一内存段的状态置为非使能状态。
结合第一方面,在第九种可能实现的方式中,在确定所述内存信息参数对应有至少一个进程之后,并在将所述至少一个进程对应的进程相关数据从所述至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存之前,所述方法还包括:
解析所述内存信息参数,获取所述内存信息参数中携带的所述至少一个第一内存段对应的第一物理地址;
根据所述第一物理地址段,将所述第一物理地址对应的所述至少一个第一内存段状态置为非使能状态。
本发明实施例第二方面,提供了一种内存迁移装置,所述装置包括:
检测单元,用于检测所述系统内是否存在处于异常状态的至少一个第一内存段,并将检测结果发送给指令生成单元;
所述指令生成单元,与所述检测单元连接,接收所述检测单元的所述检测结果,用于当检测结果表征存在所述至少一个第一内存段时,生成内存迁移指令,并将所述内存迁移指令发送给解析单元;
所述解析单元,与所述指令生成单元连接,接收所述指令生成单元发送的所述内存迁移指令,用于解析所述内存迁移指令,获取所述内存迁移指令中的内存信息参数,所述内存信息参数用于表征所述至少一个第一内存单元是否对应有至少一个进程,所述解析单元将所述内存信息参数发送至迁移单元;
所述迁移单元,与所述解析单元连接,接收所述解析单元发送的所述内存信息参数,在确定所述内存信息参数对应有所述至少一个进程时,将所述至少一个进程对应的进程相关数据从所述至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存。
结合第二方面,在第一种可能实现的方式的中,所述装置还包括:
内存分割单元,用于对系统中的内存进行分割,生成M段内存段,其中,M为大于等于2的正整数;
获取单元,与所述内存分割单元连接,用于获取所述M段内存段中每段内存段各自对应的物理地址,共计M个所述物理地址;
处理单元,与所述内存分割单元以及所述获取单元连接,用于分别对应所述M段内存段中的每段内存段设置一个标签值,获得M各标签值,并将每段内存段对应的物理地址以及标签值添加到预设的内存管理列表中。
结合第一种可能实现的方式,在第二种可能实现的方式中,所述内存分割单元具体用于按照预设内存分割单位,将所述装置中的内存分割为所述预设内存分割单位对应的所述M段内存段。
结合第一种可能实现的方式,在第三种可能实现的方式中,所述装置还包括:
分配单元,与所述处理单元连接,用于分别为所述装置中当前运行的每个进程分配所述M段内存段中的至少一个内存段;
获得单元,与所述分配单元连接,接收所述分配单元对每个进程分配内存段的信息,获取每个进程分配到的所述至少一个内存段对应的物理地址以及标签值,并将所述至少一个内存段对应的物理地址以及标签值发送给映射单元;
所述映射单元,与所述获得单元连接,用于将每个进程的进程号,以及每个进程分别对应的所述物理地址以及所述标签值添加到预设的内存映射列表中。
结合第三种可能实现的方式,在第四种可能实现的方式中,所述解析单元具体包括:
定位模块,用于解析所述内存迁移指令,获取所述内存迁移指令携带的至少一个第一内存段对应的第一物理地址;
确定模块,与所述定位模块连接,接收所述定位模块获取的第一物理地址,用于根据所述第一物理地址,在所述内存管理列表中确定所述至少一个第一内存段对应的第一标签值。
结合第四种可能实现的方式,在第五种可能实现的方式中,所述迁移单元具体包括:
判断模块,根据确定的所述至少一个第一内存段对应的第一标签值,在所述内存映射列表中判断所述至少一个第一内存段是否对应有至少一个进程;
迁移模块,与所述判断模块连接,当所述判断模块判断出所述至少一个第一内存段对应的所述第一标签值对应有所述至少一个进程时,将所述至少一个进程对应的进程相关数据从所述第一标签值对应的所述至少一个第一内存段迁移至处于非异常状态的所述至少一个第二内存段中保存。
结合第五种可能实现的方式,在第六种可能实现的方式中,所述迁移模块具体包括:
获取子模块,用于获取处于使能状态且未被分配的至少一个第二内存段;
迁移子模块,与所述获取子模块连接,用于分别为所述至少一个进程中的每个进程分配至少一个所述第二内存段,并将每个进程对应的所述进程相关数据保存至每个进程分配到的所述至少一个第二内存段。
结合第六种可能实现的方式,在第七种可能实现的方式中,所述装置还包括:
参数获取单元,用于获取每个进程分配到的所述至少一个第二内存段中每个第二内存段对应的第二物理地址以及第二标签值;
更新单元,与所述参数获取单元连接,根据所述参数获取单元发送的所述第二物理地址以及所述第二标签值,分别将每个进程在所述内存映射列表中的所述第一物理地址以及所述第一标签值更新为所述第二物理地址以及所述第二标签值。
结合第二方面,在第八种可能实现的方式中,所述装置还包括:
第一物理地址获取单元,与所述解析单元连接,当所述解析单元确定所述至少一个第一内存段未对应进程时,获取所述内存信息参数中携带的至少一个第一内存段对应的第一物理地址;
第一置位单元,与所述第一物理地址获取单元连接,用于根据所述第一物理地址,将所述第一物理地址对应的所述至少一个第一内存段的状态置为非使能状态。
结合第二方面,在第九种可能实现的方式中,所述装置还包括:
第二物理地址获取单元,与所述解析单元连接,获取所述内存信息参数中携带的至少一个第一内存段对应的第一物理地址;
第二置位单元,与所述第二物理地址获取单元以及所述迁移单元连接,用于根据所述第一物理地址,将所述第一物理地址对应的所述至少一个第一内存段状态置为非使能状态。
本发明实施例第三方面,提供了一种设备,所述设备包括:
第一处理芯片,用于检测是否存在处于异常状态的至少一个第一内存段,当存在所述至少一个第一内存段时,生成内存迁移指令;
基本输入输出芯片,与所述第一处理芯片连接,接收所述内存迁移指令,并解析所述内存迁移指令,获取所述内存迁移指令中的内存信息参数,所述内存信息参数用于表征所述至少一个第一内存段是否对应有至少一个进程;
第二处理芯片,与所述基本输入输出芯片连接,在所述基本输入输出芯片确定所述至少一个第一内存段对应有所述至少一个进程时,将所述至少一个进程对应的进程相关数据从所述至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存。
结合第三方面,在第一种可能实现的方式中,所述基本输入输出芯片还用于按照内存分割单位,将所述设备中的内存分割为预设内存分割单位对应的M段内存段,获取所述M段内存段中每段内存段各自对应的物理地址,共计M个所述物理地址,分别对应所述M段内存段中的每段内存段设置一个标签值,获得M个标签值,并将每段内存段对应的物理地址以及标签值添加到预设的内存管理列表中,其中,M为大于等于2的正整数。
结合第一种可能实现的方式,在第二种可能实现的方式中,所述第二处理芯片还用于分别为所述设备中当前运行的每个进程分配所述M段内存段中的至少一个内存段,获取每个进程分配到的所述至少一个内存段对应的物理地址以及标签值,将每个进程的进程号,以及每个进程分别对应的所述物理地址以及所述标签值添加到预设的内存映射列表中。
结合第二种可能实现的方式,在第三种可能实现的方式中,所述第二处理芯片还用于解析所述内存迁移指令,获取所述内存迁移指令携带的至少一个第一内存段对应的第一物理地址,根据所述第一物理地址,在所述内存管理列表中确定所述至少一个第一内存段对应的第一标签值。
结合第三种可能实现的方式,在第四种可能实现的方式中,所述第二处理芯片还用于根据确定的所述至少一个第一内存段对应的第一标签值,在所述内存映射列表中判断所述至少一个第一内存段是否对应有至少一个进程,在判断出所述至少一个第一内存段对应的所述第一标签值对应有所述至少一个进程时,将所述至少一个进程对应的进程相关数据从所述第一标签值对应的所述至少一个第一内存段迁移至处于非异常状态的所述至少一个第二内存段中保存。
结合第四种可能实现的方式,在第五种可能实现的方式中,所述所述第二处理芯片还用于在所述设备中获取处于使能状态且未被分配的至少一个第二内存段,分别为所述至少一个进程中的每个进程分配至少一个所述第二内存段,并将每个进程对应的所述进程相关数据保存至每个进程分配到的所述至少一个第二内存段。
结合第五种可能实现的方式,在第六种可能实现的方式中,所述第二处理芯片还用于获取每个进程分配到的所述至少一个第二内存段中每个第二内存段对应的第二物理地址以及第二标签值,分别将每个进程在所述内存映射列表中的所述第一物理地址以及所述第一标签值更新为所述第二物理地址以及所述第二标签值。
结合第一方面,在第七种可能实现的方式中,所述基本输入输出芯片还用于解析所述内存信息参数,获取所述内存信息参数中携带的至少一个第一内存段对应的第一物理地址,根据所述第一物理地址,将所述第一物理地址对应的所述至少一个第一内存段的状态置为非使能状态。
结合第六种可能实现的方式,在第八种可能实现的方式中,所述第一处理芯片还用于接收所述基本输入输出芯片发送的所述内存管理列表以及所述第二处理芯片发送的所述内存映射列表,并将所述内存管理列表以及所述内存映射列表提供给显示单元进行显示。
本发明实施例提供了一种内存迁移方法,通过检测是否存在处于异常状态的至少一个第一内存段,当存在该异常状态的内存段时,则生成内存迁移指令,然后根据该内存迁移指令,获取内存迁移指令中的内存信息参数,在确定内存信息参数信息有至少一个进程时,则将至少一个进程对应的进程相关数据从处于异常状态的第一内存段迁移至处于非异常状态的第二内存段中保存以及运行该进程,从而有效的避免了由于内存失效导致进程终中断的问题,并且实现了设备对指定物理内存进行进程迁移,提升了设备的稳定性以及可靠性。
另外,在本发明实施例中在对内存进行分割时,会在分割后的每段内存段中添加一个标签值,然后将每个内存段对应的标签值以及物理地址添加到预存的内存管理列表中,然后根据该内存管理列表对每个进程分配内存段,然后将每个进程的进程号、分配到的物理地址以及标签值添加到预存的内存映射列表中,因此在设备中内存段出现异常时,通过上述的内存管理列表以及内存映射列表可以在短时间内准确的定位出异常的内存段以及该内存段中所运行的进程,因此可以提升内存中进程迁移的准确性,同时提升了设备的稳定性。
进一步,本发明实施例中在设备中出现异常的内存段时,该设备将准确定位出该内存段,然后该设备将该内存段的描述符从使能状态调整为非使能状态,从而避免了设备中处于异常状态的内存段被重新使用,这样也减少了进程迁移过程所耗用的时间,进而提升了系统的可靠性以及稳定性。
进一步,在本发明实施例中,对进程进行迁移之后,该设备将实时的对内存映射列表中的被迁移进程所对应的物理地址以及标签值进行更新,从而保证了下次进行进程迁移时,该设备能够准确的定位出该进程所对应物理地址以及标签值,进而提升了设备进程迁移的效率。
进一步,在本发明实施例中进行内存分割可以设置不同的分割策略,也就是可以按照不同的步长对设备中的所有内存进行分割,进而可以实现在不同业务场景下进行不同的内存分割,即:对于大内存应用的业务,可以选择大步长的分割方式,可以减少设备中内存管理列表以及内存映射列表的记录数据,并可以在进行进程迁移时直接方便的查找到较大的空闲内存段,而对于小内存应用的业务来讲,可以选择小步长的分割方式,这样在进程迁移时可以减少因为分割步长过大而造成需要迁移其他进程,并且也避免了迁移隔离下线额外内存段而引起的内存浪费。
附图说明
图1所示为现有技术中应用业务使用内存的示意图;
图2所示为本发明实施例一种内存迁移方法流程图;
图3所示为本发明实施例中迁移过程示意图;
图4所示为本发明实施例中计算机系统中初始化流程图;
图5所示为本发明实施例中计算机系统中迁移流程图;
图6所示为本发明实施例中内存迁移装置结构示意图;
图7所示为本发明实施例中另一内存迁移装置的结构示意图;
图8所示为本发明实施例中解析单元以及迁移单元的结构示意图;
图9所示为本发明实施例中迁移模块的结构示意图;
图10所示为本发明实施例中另一内存迁移装置的结构示意图;
图11所示为本发明实施例中另一内存迁移装置的结构示意图;
图12所示为本发明实施例中另一内存迁移装置的结构示意图;
图13所示为本发明实施例一种设备的具体结构示意图。
具体实施方式
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解,本发明实施例以及实施例中的技术特征只是对本发明技术方案的详细说明,而并不是对本发明技术方案的限定,在不冲突的情况下本发明实施例以及实施例中的具体技术特征可以相互组合。
实施例一:
如图2所示为本发明实施例中一种内存迁移方法的流程图,该方法包括:
步骤201,检测是否存在处于异常状态的至少一个第一内存段。
首先,在系统中按照预设的内存分割规则,对系统中的内存进行分割生成M段内存段,该M值为大于等于2的正整数。
进一步,在本发明实施例中,对内存的分割可以选择不同的分割单位,具体来讲,在表1中系统内存是按照步长为单位进行内存分割,并且对每个分割完成的内存段设置一个标签值,在本发明实施例中设置有一个参数选项,该参数选项为一个可选的一组值,该值的定义为:对系统内存分割设置标签值的步长大小,也就是每个内存段的容量大小。在本发明实施例中该内存段范围可以为单个内存条、1个内存通道下的所有内存条、单个处理器下的所有内存条或单个物理节点下的所有内存条。在设置上述的内存划分规则之后,用户可以根据应用业务使用内存的方式来选择分割内存步长的方式,当然系统也可以根据自身业务进程所需空间的大小来自动调节内存的分割方式。
然后系统会对M段内存段中的每段内存段进行物理地址编排,这样每段内存段都对应有一个物理地址,然后该系统还在给每段内存段编排物理地址的同时,还会在每一段内存段中设置一个标签值,这样每个内存段就对应有一个标签值。最后,在内存段的物理地址以及标签值编排完成之后,该系统会将每段内存段所对应的物理地址以及标签值添加到预设的内存管理列表中,如表1所示为内存管理列表:
表1
在表1中,每个内存段都对应有一个物理地址以及标签值,因此通过物理地址以及标签值都可以定位到对应的内存段。
在生成该内存管理列表之后,该系统中当前需要运行的每个进程会向系统申请内存,然后该系统会为申请内存的每个进程分配M段内存段中的至少一个内存段,以使每个进程能够在该系统中正常的运行。
进一步的,由于每个进程所需要的内存大小是不同的,一些进程需要的内存容量较小,而一些进程需要的内存容量较大,所以一个内存段中可以是运行一个进程,或者是一个内存段中可以运行多个进程,还或者是一个较大的进程可以占用多段内存,这要根据内存分割的单位以及进程所需的内存容量决定。因此内存与进程之间的对应关系可以是:1个内存段对应1个进程、1个内存段对应多个进程、多个内存段对应1个进程。
因此,系统将根据每个进程所申请的内存容量以及每个内存段的容量来确定出每个进程所需要的内存段,在系统将每个进程都分配好内存之后,该系统将获取每个进程分配到的至少一个内存段对应的物理地址,然后将根据获取到的物理地址与表1中的物理地址比对,获取每个物理地址对应的标签值。
最后,该系统会将每个进程的进程号以及每个进程分别对应的物理地址、标签值添加到预设的内存映射列表中,该内存映射列表如表2所示:
内存物理地址 | 进程号PID | 标签值TAG |
0xff200~0xff3ff | APP1PID1 | TAG1 |
0xff600~0xff8ff | APP2PID2 | TAG2 |
0x00700~0x010ff | APP3PID3 | TAG3 |
0x01400~0x028ff | APP4PID4 | TAG4 |
……… | ……….. | ………. |
表2
在表2中,所示的内容只是内存分配的一种情况,即:每个进程对应一个内存段,每个内存段对应一个标签值。
另外,该系统中可以是一个进程对应多个内存段,比如说一个进程所需要的内存空间较大,并且系统中内存的分割单位较小时,该系统将为一个进程分配多个内存段以满足该进程的正常运行,其分配结果可以是表3中所示的情况:
内存物理地址 | 进程号PID | 标签值TAG |
0xff200~0xff3ff | APP PID1 | TAG1 |
0xff600~0xff8ff | APP PID2 | TAG2 |
0x00700~0x010ff | APP1PID1 | TAG12 |
0x01400~0x028ff | APP1PID2 | TAG15 |
……… | ……….. | ………. |
表3
在表3中,业务进程APP与APP1分别占用了两个内存段。
当然还可以是一个内存段中可以运行多个业务进程,如表4所示:
内存物理地址 | 进程号PID | 标签值TAG |
0xff200~0xff3ff | APP1PID1 | TAG1 |
0xff200~0xff3ff | APP2PID1 | TAG1 |
0xff200~0xff3ff | APP3PID1 | TAG1 |
0x01400~0x028ff | APP4PID1 | TAG15 |
……… | ……….. | ………. |
表4
在表4中,业务进程APP1、APP2、APP3都是占用的同一内存段,因此该内存段就对应有多个进程。
在系统中将每个进程的相关信息添加到内存映射列表中之后,该系统将会实时的检测该系统中是否存在处于异常状态的至少一个第一内存段,其中该异常状态的第一内存段为即将失效或者是已经失效的内存段。
若是检测到存在第一内存段时,该系统将执行步骤202,若是未检测到处于异常状态的第一内存段时,该系统将继续进行检测。
步骤202,当存在处于异常状态的至少一个第一内存段时,生成内存迁移指令。
系统在检测到有处于异常状态的第一内存段时,将生成一内存迁移指令,该内存迁移指令将用于控制系统中第一内存段中保存的相关数据进行迁移。
在生成内存迁移指令之后,该系统将执行步骤203。
步骤203,解析内存迁移指令,获取内存迁移指令中的内存信息参数。
系统在生成内存迁移指令之后,该系统将对该内存迁移指令进行解析,首先该系统将解析出该内存迁移指令中携带的至少一个第一内存段对应的第一物理地址,具体来讲就是该内存迁移指令中就包含了每个异常内存段所对应的物理地址,然后该系统将根据解析出来的第一物理地址与内存映射列表(表2)中的物理地址进行匹配,从而可以确定出每个第一物理地址对应的第一标签值,根据第一标签值能够在内存管理列表(表1)中确定出对应的内存段。
最后该系统将根据内存迁移指令解析处于异常状态的第一内存段中是否对应有至少一个进程,也就是说该系统将通过内存迁移指令中确定出第一内存段中是否运行有进程,若是存在有进程时,在该系统将执行步骤104。
步骤204,在确定所述至少一个第一内存段对应有至少一个进程时,将对应的进程相关数据从至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存。
首先,系统在步骤203中确定出了每个第一物理地址对应的第一标签值,此时在步骤204中该系统将根据第一标签值在内存映射列表中查找出该第一标签值是否对应有进程号,即:在内存映射列表中判断第一内存段是否对应有至少一个进程,在判定该第一标签值对应有至少一个进程时,该系统将所述至少一个进程对应的进程相关数据从第一标签值对应的至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存,具体来讲,该进程相关数据迁移的过程包括如图3所示的两个步骤:
步骤301,获取处于使能状态且未被分配的至少一个第二内存段。
在系统检测到每个第一物理地址对应的第一标签值之后,该系统会将每个进程相应的提取出来,比如说该系统检测到的物理地址对应的标签值包括了TAG1、TAG2、TAG3三个标签值,该系统会将该标签值与内存映射列表(表2)中的标签值进行比对确定该这三个标签值对应的进程号以及物理地址,若是该标签值对应有进程号,则确定该标签值对应的内存段中存在进程,上述的三个标签值分别对应应用业务APP1、APP2、APP3,然后该系统会将所有的确定处理的进程添加到确定迁移列表Migrating_List中,具体该确定迁移列表中记录的内容如表5所示:
进程号PID | 标签值TAG | 内存物理地址 |
APP1PID1 | TAG1 | 0xff200~0xff3ff |
APP2PID2 | TAG2 | 0xff600~0xff8ff |
APP3PID3 | TAG3 | 0x00700~0x010ff |
表5
在确定出所有需要迁移的进程之后,该系统将通过内存映射列表检测出当前运行的进程所占用的内存空间,然后该系统将内存映射列表中所有占用的内存与内存管理列表所记录的所有内存匹配,就能够确定出所有空闲的内存以及空闲内存的容量,即:处于使能状态且未被分配的至少一个第二内存段。
在确定出所有空闲的第二内存段之后,执行步骤302。
步骤302,分别为需要迁移的每个进程分配至少一个第二内存段,并将每个进程对应的进程相关数据保存至所述至少一个第二内存段。
系统在确定出所有处于使能状态且空闲的第二内存段之后,该系统将为确定出需要迁移的每个进程分配所需要的内存段,由于不同的进程所需要的内存空间不同,因此一个内存段中可能是存在一个进程、多个进程或者一个进程的部分数据。下面通过一个内存段对应一个进程来说明,即该系统会为需要迁移的每个进程分配一个第二内存段,然后该系统会将所述每个进程分配到的第二内存段所对应的第二物理地址以及第二标签值添加到内存分配列表EMP_MEM_List中,具体该内存分配列表中所包含的内容如表6所示:
进程号PID | 标签值TAG | 内存物理地址 |
APP1PID1 | TAG13 | 0xff500~0xff6ff |
APP2PID2 | TAG15 | 0xff800~0xff9ff |
APP3PID3 | TAG18 | 0x00800~0x020ff |
表6
在表6中记录了需要迁移的每个进程重新分配到的第二内存段对应的第二物理地址以及每个第二内存段所对应的第二标签值。
在确定出内存分配列表之后,该系统将通过修改进程优先级的方式降低表5中所有待迁移进程的优先级,然后通过修改进程内存物理地址的方式,即重映射的方式,将所有待迁移进程的进程相关数据迁移至为每个进程分配的第二内存段中保存。
当然若是一个较大的进程需要较大的运行空间时,则该系统将为该进程分配两个或者是多个第二内存段,若是一个较小的进程只需要一个内存段的运行空间时,则该系统将为该进程分配一个内存段。
进一步,在将进程相关数据迁移至所述第二内存段中之后,该系统会获取每个第二内存段对应的第二物理地址以及第二标签值,然后将每个进程在内存映射列表中的第一物理地址以及第一标签值更新为第二物理地址以及第二标签值。
具体来讲,比如说在表5中APP1业务进程对应的第一物理地址为:0xff200~0xff3ff,第一标签值为:TAG1;APP2对应的第一物理地址为:0xff600~0xff8ff,第一标签值为:TAG2;APP3对应的第一物理地址为:0x00700~0x010ff,第一标签值为:TAG3,然后上述进程都是需要迁移的进程,并且确定出迁移后的物理地址以及标签值为:APP1对应的第二物理地址为:0xff500~0xff6ff,第二标签值为:TAG13;APP2对应的第二物理地址为:0xff800~0xff9ff,第二标签值为:TAG15;APP3对应的第二物理地址为:0x00800~0x020ff,第二标签值为:TAG18,在确定出上述3个进程迁移至对应的内存段中后,该系统会使用上述的每个进程对应的第二物理地址以及第二标签值去更新内存映射列表,此时该内存映射列表将从表2更新为表7所述的内存映射列表:
内存物理地址 | 进程号PID | 标签值TAG |
0xff500~0xff6ff | APP1PID1 | TAG13 |
0xff800~0xff9ff | APP2PID2 | TAG15 |
0x00800~0x020ff | APP3PID3 | TAG18 |
0x01400~0x028ff | APP4PID4 | TAG4 |
……… | ……….. | ………. |
表7
此时,该内存映射列表中就能够实时的保存当前运行的进程所对应的物理内存地址以及标签值,此时完成该进程的迁移过程。
需要说明的是,在本发明实施例中若是系统中同时需要迁移多个进程时,该系统会确定出迁移进程的优先级,对于关键进程或者优先级靠前的进程可以优先进行迁移,并且给关键进程或者优先级靠前的进程分配足够的内存空间。
进一步的,为了保证出现异常的内存不会再被分配使用,因此在步骤302中降低进程优先级的同时,该系统还将第一标签值对应的第一内存段从使能状态调整为非使能状态,在该非使能状态下该第一内存段不会被系统检测到,因此在系统为进程重新分配内存段时,该第一内存段将不会被使用,进而避免了失效内存段的使用,提升了系统的可靠性以及稳定性。
进一步,在步骤203中存在一个判定的过程,也就是确定该第一内存段中是否存在有进程在运行,若是存在进程时,则该系统将执行步骤204,若是不存在进程时,则该系统将解析内存信息参数,获取内存信息参数中携带的第一物理地址,并根据第一物理地址,将第一物理地址对应的至少一个第一内存端段的状态置为非使能状态。
具体来讲,在上述的步骤201~步骤204中描述的方案为第一内存段中运行有进程时,该进程相关数据的迁移过程。若是通过内存信息参数解析出的第一内存段中未运行任何进程,但是该第一内存段处于异常状态时,则系统将该第一内存段从使能状态置为非使能状态,在下一次进行内存检测时,该处于非使能状态的第一内存段将不会被检测到,从而可以避免异常状态的内存段被使用,提升了系统的可靠性以及稳定性。
当然,若是在后续的使用过程中所述第一内存段恢复正常,则系统将该第一内存段从非使能状态调整为使能状态,在下一次内存检测时,该恢复正常的第一内存段将会被再次使用。
另外,此处需要说明的是:在本发明实施例中该第一内存段需要被调整为非使能状态,以避免该异常状态的内存段被再次的使用。但是若系统中存在一种自检功能,比如说异常的内存段在使能的情况下也不会被自检出来,则系统就不需要将该内存段进行使能与非使能之间的状态调整。因此,上述实施例中描述的只是一种情况。在本发明实施例中,只要是使系统不能检测到异常内存段的方式都可以是本发明实施例中的一个方案。
下面通过该方法在计算机系统中的应用来具体说明本发明实施例的技术方案。
如图4所示为服务器系统进行初始化的流程图,在初始化时,分成基本输入输出系统BIOS初始化和操系统初始化两个初始化步骤,图4在步骤401中,服务器系统在上电时开始进行在BIOS下的系统设备初始化和自检,通过检测出的所有内存段生成内存管理列表(如表1所示),该内存管理列表中包含物理内存的地址及标签.
在401步骤之后,服务器系统进入到操作系统中,在步骤402,内存管理列表被传递给操作系统,并转入到403步骤中,操作系统依据内存管理列表完成对操作系统的kernel进程使用到的内存进行映射,并将映射的结果由操作系统添加到一张预设的内存映射列表,该表记录下了在操作系统下的逻辑内存块对应的物理地址范围,该范围内内存资源对应操作系统kernel进程的进程号,即PID。此时完成了流程的初始化,之后应用业务进程将启动,并向操作系统申请逻辑内存以进行运行,此时进入到步骤404中,在404步骤亦采用403步骤中的方法对业务进程申请使用的逻辑内存进行信息记录并由操作系统将该信息更新到内存映射列表中,此后,在下一步骤405中,应用进程对内存的动态申请的变更也将由操作系统更新到内存映射列表中。
如上初始化完成。在系统运行的过程中,假若操作系统接到迁移某内存的命令,则执行如图5所示的步骤流程,开始步骤501,在该步骤501中,操作系统接收内存迁移指令,并确定出该内存迁移指令中的参数后,执行步骤502,在步骤502中该系统将首先根据参数中的物理地址以及内存管理列表确定出该每个物理地址所对应的标签值,然后再根据内存映射列表确定出标签值是否对应有进程。
如果有对应的进程,在步骤503中开始进行进程迁移,迁移结束后,在步骤504中,BIOS将已经迁移的物理内存进行隔离下线。
进一步,在本发明实施例中该操作系统将需要迁移的内存进行迁移之后,该系统用迁移后的物理地址以及标签值替换原物理地址以及原标签值。
比如说原内存映射列表中所记录的物理地址以及标签值为表8所示:
内存物理地址 | 进程号PID | 标签值TAG |
0xff200~0xff3ff | Kernel PID1 | TAG1 |
0xff600~0xff8ff | Kernel PID2 | TAG7 |
0x00700~0x010ff | APP PID1 | TAG12 |
0x01400~0x028ff | APP PID2 | TAG26 |
……… | ……….. | ………. |
表8
在表8中原Kernel PID1进程所对应的物理地址为0xff200~0xff3ff,标签为TAG1,若是该段内存发生异常时,则该系统将会对该段内存进行迁移,并且会为该Kernel PID1进程分配一个使能状态的第二内存段,该内存段对应的物理地址为0x02000~0x040ff,标签值为TAG34,然后该进程的相关数据将被迁移至该第二内存段,在迁移完成之后该操作系统会将表8中Kernel PID1对应的物理地址以及标签值修改为0x02000~0x040ff、TAG34,具体如表9所示:
内存物理地址 | 进程号PID | 标签值TAG |
0x02000~0x040ff | Kernel PID1 | TAG34 |
0xff600~0xff8ff | Kernel PID2 | TAG7 |
0x00700~0x010ff | APP PID1 | TAG12 |
0x01400~0x028ff | APP PID2 | TAG26 |
……… | ……….. | ………. |
表9
为了避免下次内存分配时处于异常状态的内存段被使用,因此在该实施例中会将异常状态的内存段的描述符从使能状态修改为非使能状态。
进一步,如果操作系统根据标签值未查找出该标签值对应的进程号,而仅仅只是对应一个物理地址时,则系统将执行步骤505,在步骤505中该系统将该标签值对应内存段的描述符从使能状态调整为非使能状态,比如说标签值为TAG40所对应的物理地址为0x04000~0x0280f,操作系统将根据物理地址直接定位出该段内存,并同样的将该段内存的描述符从使能状态调整为非使能状态,以避免该段内存再次被使用。
另外,对于异常状态的处理方式除了上述方式之外,还可以利用基本输入输出系统的自检功能。该自检功能可以在检测内存段的同时检测出处于异常状态的内存段,然后基本输入输出系统将不会统计处于异常状态的内存段。
进一步,该系统还可以将该系统中所生成的内存管理列表以及实时更新的内存映射列表通过系统中的通信接口传输至管理软件,该管理软件可以将接收到的数据实时的传输至一显示界面,该显示界面能够实时的显示该内存管理列表以及内存映射列表中的相关参数。
通过上述的实施例中服务器系统在检测到处于异常状态的内存段时,会确定该内存段中是否对应有进程,在存在有进程时,则将该进程相关数据迁移至处于非异常状态的内存段中保存并继续运行,这样就避免了在内存异常时,内存中应用业务的中断问题,并且也提高了内存的实效效率,提升了系统运行的稳定性。
另外,在本发明实施例中,在异常内存段中的进程被迁移之后,该系统将处于异常状态的内存段的描述符从使能状态调整为非使能状态,从而系统在下次检测内存时,该异常的内存段将不会被检测到,这样就有效的避免了异常内存段的再次使用,提升了系统的可靠性以及稳定性。
实施例二:
对应本发明实施例中一种内存迁移的方法,本发明实施例中还提供了一种内存迁移装置,如图6所示为内存迁移装置的具体结构示意图,该装置包括:
检测单元601,用于检测是否存在处于异常状态的至少一个第一内存段,并将检测结果发送给指令生成单元602;
所述指令生成单元602,与所述检测单元601连接,接收所述检测单元601的所述检测结果,用于当检测结果指示存在处于异常状态的至少一个第一内存段时,生成内存迁移指令,并将所述内存迁移指令发送给解析单元603;
由于在系统中存在有多段内存段,因此若是系统中存在有至少一个第一内存段处于异常状态时,该系统将获取每个异常内存段的物理地址,并根据每个物理地址生成包含该物理地址的内存信息参数,然后将该内存信息参数添加到内存迁移指令中。
所述解析单元603,与所述指令生成单元602连接,接收所述指令生成单元602发送的所述内存迁移指令,用于解析所述内存迁移指令,获取所述内存迁移指令中的内存信息参数,并将所述内存信息参数发送至迁移单元604所述内存信息参数用于指示所述处于异常状态的至少一个第一内存单元是否对应有至少一个进程;
所述迁移单元604,与所述解析单元603连接,接收所述解析单元603发送的所述内存信息参数,在确定所述内存信息参数对应有至少一个进程时,将所述对应的进程相关数据从至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存。
进一步,如图7所示该装置还可以包括:
内存分割单元701,用于对系统中的内存进行分割,生成M段内存段,其中,M为大于等于2的正整数。
该内存分割单元701中能够按照预设的内存分割单位对装置中的所有内存进行分割,比如说按照一个步长单位对所有内存进行分割。分割后的内存段可以是单个内存条、1个内存通道下的所有内存条、单个处理器下的所有内存条、单个无物理节点下的所有内存条。这里的内存分割方式可以是根据用户的选择进行确定,还可以是根据系统的默认方式进行分割。
获取单元702,与所述内存分割单元701连接,用于获取所述M段内存段中每段内存段各自对应的物理地址,共计M个所述物理地址。
处理单元703,与所述获取单元702连接,用于分别为所述M段内存段中的每段内存段设置一个标签值,获得M个标签值,并将每段内存段对应的物理地址以及标签值添加到预设的内存管理列表中。
分配单元704,与处理单元703连接,用于分别为所述装置中当前运行的每个进程分配所述M段内存段中的至少一个内存段。
由于进程所需要的内存空间各不相同,因此该一个进程可以是只分配一个内存段,也可以是一个进程分配多个内存段。
获得单元705,与分配单元704连接,接收分配单元704对每个进程分配内存段的信息,获取每个进程分配到的至少一个内存段对应的物理地址以及标签值,并将至少一个内存段对应的物理地址以及标签值发送给映射单元706;
所述映射单元706,与获得单元705连接,用于将每个进程的进程号,以及每个进程分别对应的所述物理地址以及所述标签值添加到预设的内存映射列表中。
具体来讲,该本发明实施例中该映射单元706在获取到每个进程所分配到的内存段对应的物理地址之后,该映射单元706会将每个进程所分配的所有物理地址以及所有的标签值添加到内存列表中,从而在该内存映射列表中就保存了每个进程对应的进程号、物理地址、标签值。
进一步,参见图8,在系统中生成内存管理列表以及内存映射列表之后,该系统中的解析单元603具体包括:
定位模块801,接收指令生成单元602所发送的内存迁移指令,用于解析内存迁移指令,获取内存迁移指令携带的处于异常状态的至少一个第一内存段对应的第一物理地址。
该定位模块801能够实时的确定是否接收到内存迁移指令,在接收到内存迁移指令之后,该定位模块801就能够从该内存迁移指令中获取内存信息参数,而该内存信息参数中包含了所有处于异常状态的内存段所对应的物理地址,从而该定位模块801能够得到至少一个第一物理地址。
确定模块802,与定位模块801连接,并接收定位模块801获取到的第一物理地址,用于根据该第一物理地址,在内存管理列表(参见表1)中确定处于异常状态的至少一个第一内存段对应的第一标签值。
具体来讲,确定模块802在接收到所有异常内存段对应的物理地址时,则该确定模块802将每个物理地址与内存管理列表进行匹配,从而能够确定出每个物理地址所对应的标签值。
进一步,参照图8,该装置中的迁移单元604包括:
判断模块803,与确定模块802连接,并接收确定模块802确定的所有标签值,然后根据确定的处于异常状态的至少一个第一内存段对应的第一标签值,在内存映射列表中判断处于异常状态的至少一个第一内存段是否对应有至少一个进程。
该判断模块803将根据得到每个标签值与内存映射列表(参见表2)进行比对,从而可以确定出该标签值所对应的第一内存段中是否存在有进程。具体来讲,若是在该内存映射列表中存在该标签值,且该标签值所对应的内存段正在被使用,则说明该标签值对应的内存段中存在进程,若是比对的结果是该标签值不存在于该内存映射列表中,则该标签值所对应的内存段未被使用。
迁移模块804,与判断模块803连接,并接收判断模块803所生成的判断结果,若是该判断模块803判断出处于异常状态的至少一个第一内存段对应的第一标签值对应有至少一个进程时,将该至少一个进程对应的进程相关数据从所述至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中。
进一步的,参见图9,该迁移模块804还包括:
获取子模块901,用于获取处于使能状态且未被分配的至少一个第二内存段。
迁移子模块902,与该获取子模块901连接,用于分别为至少一个进程中的每个进程分配至少一个第二内存段,并将每个进程对应的进程相关数据保存至对应的至少一个第二内存段中。
具体来讲,该装置中的迁移模块804将确定出空闲状态下的所有能够被使用的内存段,然后给每个需要分配的进程按照进程占用空间来分配空闲状态下的内存段。
进一步,参见图10,本发明实施例提供的装置还包括:
参数获取单元110,与迁移模块804连接,用于获取为每个进程分配的所述第二内存段对应的第二物理地址以及第二标签值;
更新单元111,与所述参数获取单元110连接,根据所述参数获取单元110发送的所述第二物理地址以及所述第二标签值,分别将每个进程在所述内存映射列表中的所述第一物理地址以及所述第一标签值更新为所述第二物理地址以及所述第二标签值。
通过更新单元111,能够实时的更新内存映射列表中每个进程所对应的物理地址以及标签值,因此系统在每次迁移进程相关数据时,能够准确的定位出该内存段中是否存在有进程以及该内存段中存储的进程相关数据。
进一步,参见图11,该装置还包括:
第一物理地址获取单元121,与迁移单元604中的判断模块803连接,当判断模块803确定处于异常状态的至少一个第一内存段未有对应进程时,获取内存信息参数中携带的所述第一内存段对应的第一物理地址。
第一置位单元122,与第一物理地址获取单元121连接,用于根据第一物理地址,将第一物理地址对应的所述第一内存段的状态置为非使能状态。
具体来讲,该装置可以根据内存参数信息中的第一物理地址在内存管理列表中确定出该第一物理地址对应的第一标签值,然后根据该第一标签值在内存映射列表中确定出该第一标签值是否对应有进程,若是该第一标签值未对应有进程时,则该装置将根据第一物理地址定位出处于异常状态的内存段,最后该装置会将处于异常状态的内存段的描述符从使能状态调整为非使能状态。
进一步,参见图12,该装置还可以包括:
第二物理地址获取单元131,与迁移单元604中的迁移模块804连接,获取内存信息参数中携带的所述处于异常状态的第一内存段对应的第一物理地址。
具体来讲,在图11中该装置所包括的第一物理地址获取单元121与图12中所示的第二物理地址获取单元131可以是相同的单元也可以是不同的单元。
第二置位单元132,与第二物理地址获取单元131连接,用于根据第一物理地址,将第一物理地址对应的所述第一内存段状态置为非使能状态。
在该图12中,该装置可以在确定第一标签值对应有进程时,该装置可以在迁移进程相关数据后,将迁移后的内存段从使能状态调整到非使能状态,以避免该装置再次使用处于异常状态的第一内存段。
实施例三:
对应本发明实施例中的一种内存迁移方法,本发明实施例还提供了一种设备,如图13所示为本发明实施例中一种设备的具体结构示意图,该设备包括:
第一处理芯片140,用于检测是否存在处于异常状态的至少一个第一内存段,当存在所述第一内存段时,生成内存迁移指令。
基本输入输出芯片141,与所述第一处理芯片140连接,接收所述内存迁移指令,并解析所述内存迁移指令,获取所述内存迁移指令中的内存信息参数,所述内存信息参数用于指示所述处于异常状态的至少一个第一内存段是否对应有至少一个进程。
第二处理芯片142,与所述基本输入输出芯片141连接,在所述基本输入输出芯片141确定所述第一内存段对应有至少一个进程时,将所述对应的进程相关数据从所述第一内存段迁移至处于非异常状态的至少一个第二内存段中保存。
其中,该基本输入输出芯片141还可以按照内存分割单位,将设备中的内存分割为和预设内存分割单位对应的M个内存段,获取M个内存段中每个内存段各自对应的物理地址,共计M个所述物理地址,分别为每个内存段设置一个标签值,获得M个标签值,并将每个内存段对应的物理地址以及标签值添加到预设的内存管理列表中,其中,M为大于等于2的正整数。
具体来讲,该基本输入输出芯片141可以是设备中的BIOS芯片,该BIOS芯片能够在初始化阶段检测设备中的内存,并按照预设的内存分割规则对设备中的内存进行分割,在分割内存的同时会为每个内存段添加一个标签值,通过该标签值就能够确定出对应的内存段,然后BIOS芯片会将分割出来的内存段所对应的物理地址以及标签值添加到预设的内存管理列表中。
然后该设备中的第二处理芯片142将分别为所述设备中当前运行的每个进程分配所述M个内存段中的至少一个内存段,获取每个进程分配到的所述至少一个内存段对应的物理地址以及标签值,将每个进程的进程号,以及每个进程分别对应的所述物理地址以及所述标签值添加到预设的内存映射列表中。
具体来讲,在该内存映射列表中就保存了当前运行的所有进程对应的内存的物理地址以及标签值。
上述过程就是设备的初始化过程,在该初始化过程中就生成了内存管理列表以及内存映射列表。
在初始化完成之后,该设备中的第一处理芯片140将实时的检测设备中是否存在处于异常状态的至少一个第一内存段,当存在至少一个第一内存段时,生成内存迁移指令,并且通过第一处理芯片140上的通信接口143将该内存迁移指令发送至第二处理芯片142。
然后第二处理芯片142解析所述内存迁移指令,获取内存迁移指令携带的至少一个第一内存段对应的第一物理地址,根据该第一物理地址,在内存管理列表中确定至少一个第一内存段对应的第一标签值,根据第一标签值在所述内存映射列表中判断所述至少一个第一内存段是否对应有至少一个进程,如果所述第一内存段对应有至少一个进程时,该第二处理芯片142将在设备中获取处于使能状态且未被分配的至少一个第二内存段,分别为所述至少一个进程中的每个进程分配至少一个所述第二内存段,并将每个进程对应的进程相关数据保存至为每个进程分配到的所述至少一个第二内存段。
在第二处理芯片142将需要迁移的进程迁移至第二内存段中之后,该第二处理芯片142获取每个进程分配到的第二内存段对应的第二物理地址以及第二标签值,然后分别将每个进程在内存映射列表中的第一物理地址以及第一标签值更新为第二物理地址以及第二标签值。
具体来讲,为了在每次内存迁移时,能够准确的对内存进行定位,因此在本发明实施例中每次内存迁移完成之后,该设备中的第二处理芯片142就会实时的将内存映射列表进行更新,这样保证内存迁移的准确性以及可靠性。
另外,该设备中的基本输入输出芯片141还用于解析内存信息参数,获取该内存信息参数中携带的至少一个第一内存段对应的第一物理地址,并根据第一物理地址,将第一物理地址对应的至少一个第一内存段的状态置为非使能状态。
具体来讲,在本发明实施例中,为了保证每个处于异常状态的内存段不会再次被使用,若是检测到处于异常状态的内存段中不存在进程运行时,则该基本输入输出芯片141将直接根据该内存段的物理地址将该内存段隔离下线,若是该内存段中存在有进程运行时,则在进程迁移完成之后,该基本输入输出芯片141根据异常内存段的物理地址将该内存段隔离下线。
进一步,该设备中的第一处理芯片140还能够接收基本输入输出芯片141通过通信接口143发送的内存管理列表以及第二处理芯片142通过通信接口143发送的内存映射列表,并实时的将该内存管理列表以及内存映射列表发送给显示装置进行显示,这样用户就能够通过显示装置直观的观看到设备中内存的使用情况。
进一步,在本发明实施例中,第二处理芯片142中定位进程的过程可以在第一处理芯片140中完成。若是该设备中的业务进程属于短时间内频繁开启和关闭的进程类型时,该进程需要频繁的申请和释放内存,此时该内存映射列表更新很频繁,这时该进程的定位过程可以是第一处理芯片140来完成,这样可以减少与第二处理芯片142之间的通信过程,从而减少设备的负载;若是该设备中的业务进程是属于开启后长时间运行的进程类型时,其使用内存的方式比较稳定,内存映射列表更新比较稳定,此时该进程的定位过程就可以由第二处理芯片142来完成,从而可以减少第一处理芯片140的负载,提升设备的运行速度。
另外,需要说明的是第一处理芯片140以及第二处理芯片142可以是不同的处理器CPU,基本输入输出芯片141可以是设备的BIOS芯片。
在本发明实施例提供了一种内存迁移方法,通过检测是否存在处于异常状态的至少一个第一内存段,当存在该异常状态的内存段时,则生成内存迁移指令,然后根据该内存迁移指令,获取内存迁移指令中的内存信息参数,在确定内存信息参数信息有至少一个进程时,则将至少一个进程对应的进程相关数据从处于异常状态的第一内存段迁移至处于非异常状态的第二内存段中保存以及运行该进程,从而有效的避免了现有技术中存在的由于内存失效而导致内存中业务进程中断的技术问题,并且实现了设备对指定物理内存进行进程迁移,提升了设备的稳定性以及可靠性。
另外,在本发明实施例中在对内存进行分割时,会在分割后的每个内存段中添加一个标签值,然后将每个内存段对应的标签值以及物理地址添加到预存的内存管理列表中,然后根据该内存管理列表对每个进程分配内存段,然后将每个进程的进程号、分配到的物理地址以及标签值添加到预存的内存映射列表中,因此在设备中内存段出现异常时,通过上述的内存管理列表以及内存映射列表可以在短时间内准确的定位出异常的内存段以及该内存段中所运行的进程,因此可以提升内存中进程迁移的准确性,同时提升了设备的稳定性。
进一步,在本发明实施例中在设备中出现异常的内存段时,该设备将准确定位出该内存段,然后该设备将该内存段的描述符从使能状态调整为非使能状态,从而避免了设备中处于异常状态的内存段被重新使用,这样也减少了进程迁移过程所耗用的时间,进而提升了系统的可靠性以及稳定性。
进一步,在本发明实施例中对进程进行迁移之后,该设备将实时的对内存映射列表中的被迁移进程所对应的物理地址以及标签值进行更新,从而保证了下次进行进程迁移时,该设备能够准确的定位出该进程所对应物理地址以及标签值,进而提升了设备进程迁移的效率。
进一步,在本发明实施例中进行内存分割可以设置不同的分割策略,也就是可以按照不同的步长对设备中的所有内存进行分割,进而可以实现在不同业务场景下进行不同的内存分割,即:对于大内存应用的业务,可以选择大步长的分割方式,可以减少设备中内存管理列表以及内存映射列表的记录数据,并可以在进行进程迁移时直接方便的查找到较大的空闲内存段,而对于小内存应用的业务来讲,可以选择小步长的分割方式,这样在进程迁移时可以减少因为分割步长过大而造成需要迁移其他进程,并且也避免了迁移隔离下线额外内存段而引起的内存浪费。
进一步,在本发明实施例中该设备生成的内存管理列表以及内存映射列表都可以被传输至显示装置进行显示,从而可以动态的实时显示并更新设备中内存的使用状态,保证用户能够实时的确定出当前设备的使用状态。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (29)
1.一种内存迁移方法,其特征在于,所述方法包括:
检测是否存在处于异常状态的至少一个第一内存段;
当存在所述至少一个第一内存段时,生成内存迁移指令;
解析所述内存迁移指令,获取所述内存迁移指令中的内存信息参数,所述内存信息参数用于指示所述至少一个第一内存段是否对应有至少一个进程;
在确定所述至少一个第一内存段对应有至少一个进程时,将所述至少一个进程对应的进程相关数据从所述至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存。
2.如权利要求1所述的方法,其特征在于,在所述检测是否存在处于异常状态的至少一个第一内存段之前,所述方法还包括:
按照预设的内存分割规则,对系统的内存进行分割,生成M个内存段,其中,M为大于等于2的正整数;
获取所述M个内存段中每个内存段各自对应的物理地址,共计M个所述物理地址;
分别对所述M个内存段中的每个内存段设置一个标签值,获得M个标签值,并将每个内存段对应的物理地址以及标签值添加到预设的内存管理列表中。
3.如权利要求2所述的方法,其特征在于,所述按照预设的内存分割规则,对系统的内存进行分割,生成M个内存段,包括:
按照预设内存分割单位,将所述系统中的内存分割为所述预设内存分割单位对应的M个内存段。
4.如权利要求2所述的方法,其特征在于,在所述将每个内存段对应的物理地址以及标签值添加到预设的内存管理列表中之后,所述方法还包括:
分别为所述系统中运行的每个进程分配所述M个内存段中的至少一个内存段;
获取每个进程分配到的所述至少一个内存段对应的物理地址以及标签值;
将每个进程的进程号,以及每个进程分别对应的所述物理地址以及所述标签值添加到预设的内存映射列表中。
5.如权利要求1所述的方法,其特征在于,所述解析所述内存迁移指令,获取所述内存迁移指令中的内存信息参数,包括:
解析所述内存迁移指令,获取所述内存迁移指令携带的至少一个第一内存段对应的第一物理地址;
根据获取到的所述第一物理地址,在所述内存管理列表中确定所述至少一个第一内存段对应的第一标签值。
6.如权利要求1所述的方法,其特征在于,在确定所述至少一个第一内存段对应有至少一个进程时,将所述至少一个进程对应的进程相关数据从所述至少一个第一内存迁移至处于非异常状态的至少一个第二内存段中保存,包括:
根据确定的所述至少一个第一内存段对应的第一标签值,在所述内存映射列表中判断所述至少一个第一内存段是否对应有至少一个进程;
在判断出所述至少一个第一内存段对应的所述第一标签值对应有至少一个进程时,将所述至少一个进程对应的进程相关数据从所述第一标签值对应的所述至少一个第一内存段迁移至处于非异常状态的所述至少一个第二内存段中保存。
7.如权利要求6所述的方法,其特征在于,将所述至少一个进程对应的进程相关数据从所述第一标签值对应的所述至少一个第一内存段迁移至处于非异常状态的所述至少一个第二内存段中保存,包括:
获取处于使能状态且未被分配的至少一个第二内存段;
分别为所述至少一个进程中的每个进程分配至少一个所述第二内存段,并将每个进程对应的进程相关数据保存至每个进程分配到的所述至少一个第二内存段。
8.如权利要求7所述的方法,其特征在于,在为所述至少一个进程中的每个进程分配至少一个第二内存段,并将每个进程对应的进程相关数据保存至每个进程分配到的所述至少一个第二内存段之后,所述方法还包括:
获取每个进程分配到的所述至少一个第二内存段中每个第二内存段对应的第二物理地址以及第二标签值;
分别将每个进程在所述内存映射列表中的所述第一物理地址以及所述第一标签值更新为所述第二物理地址以及所述第二标签值。
9.如权利要求1所述的方法,其特征在于,在确定所述至少一个第一内存段未对应进程时,所述方法还包括:
解析所述内存信息参数,获取所述内存信息参数中携带的至少一个第一内存段对应的第一物理地址;
根据所述第一物理地址,将所述第一物理地址对应的所述至少一个第一内存段的状态置为非使能状态。
10.如权利要求1所述的方法,其特征在于,在确定所述至少一个第一内存段对应有至少一个进程,并在将所述至少一个进程对应的进程相关数据从所述至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存之后,所述方法还包括:
解析所述内存信息参数,获取所述内存信息参数中携带的所述至少一个第一内存段对应的第一物理地址;
根据所述第一物理地址,将所述第一物理地址对应的所述至少一个第一内存段状态置为非使能状态。
11.一种内存迁移装置,其特征在于,所述装置包括:
检测单元,用于检测系统内是否存在处于异常状态的至少一个第一内存段,并将检测结果发送给指令生成单元;
所述指令生成单元,与所述检测单元连接,接收所述检测单元的所述检测结果,用于当所述检测结果指示存在所述至少一个第一内存段时,生成内存迁移指令,并将所述内存迁移指令发送给解析单元;
所述解析单元,与所述指令生成单元连接,接收所述指令生成单元发送的所述内存迁移指令,用于解析所述内存迁移指令,获取所述内存迁移指令中的内存信息参数,并将所述内存信息参数发送至迁移单元,所述内存信息参数用于指示所述至少一个第一内存单元是否对应有至少一个进程;
所述迁移单元,与所述解析单元连接,接收所述解析单元发送的所述内存信息参数,在确定所述至少一个第一内存段对应有至少一个进程时,将所述至少一个进程对应的进程相关数据从所述至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存。
12.如权利要求11所述的装置,其特征在于,所述装置还包括:
内存分割单元,用于对系统中的内存进行分割,生成M个内存段,其中,M为大于等于2的正整数;
获取单元,与所述内存分割单元连接,用于获取所述M个内存段中每个内存段各自对应的物理地址,共计M个所述物理地址;
处理单元,与所述内存分割单元以及所述获取单元连接,用于分别对所述M个内存段中的每个内存段设置一个标签值,获得M个标签值,并将每个内存段对应的物理地址以及标签值添加到预设的内存管理列表中。
13.如权利要求12所述的装置,其特征在于,所述内存分割单元具体用于按照预设内存分割单位,将所述装置中的内存分割为所述预设内存分割单位对应的M个内存段。
14.如权利要求12所述的装置,其特征在于,所述装置还包括:
分配单元,与所述处理单元连接,用于分别为所述装置中运行的每个进程分配所述M个内存段中的至少一个内存段;
获得单元,与所述分配单元连接,接收所述分配单元对每个进程分配内存段的信息,用于获取每个进程分配到的所述至少一个内存段对应的物理地址以及标签值,并将所述至少一个内存段对应的物理地址以及标签值发送给映射单元;
所述映射单元,与所述获得单元连接,用于将每个进程的进程号,以及每个进程分别对应的所述物理地址以及所述标签值添加到预设的内存映射列表中。
15.如权利要求14所述的装置,其特征在于,所述解析单元具体包括:
定位模块,用于解析所述内存迁移指令,获取所述内存迁移指令携带的至少一个第一内存段对应的第一物理地址;
确定模块,与所述定位模块连接,接收所述定位模块获取的第一物理地址,用于根据所述第一物理地址,在所述内存管理列表中确定所述至少一个第一内存段对应的第一标签值。
16.如权利要求15所述的装置,其特征在于,所述迁移单元具体包括:
判断模块,用于根据确定的所述至少一个第一内存段对应的第一标签值,在所述内存映射列表中判断所述至少一个第一内存段是否对应有至少一个进程;
迁移模块,与所述判断模块连接,用于当所述判断模块判断出所述至少一个第一内存段对应的所述第一标签值对应有至少一个进程时,将所述至少一个进程对应的进程相关数据从所述第一标签值对应的所述至少一个第一内存段迁移至处于非异常状态的所述至少一个第二内存段中保存。
17.如权利要求16所述的装置,其特征在于,所述迁移模块具体包括:
获取子模块,用于获取处于使能状态且未被分配的至少一个第二内存段;
迁移子模块,与所述获取子模块连接,用于分别为所述至少一个进程中的每个进程分配至少一个所述第二内存段,并将每个进程对应的进程相关数据保存至每个进程分配到的所述至少一个第二内存段。
18.如权利要求17所述的装置,其特征在于,所述装置还包括:
参数获取单元,用于获取每个进程分配到的所述至少一个第二内存段中每个第二内存段对应的第二物理地址以及第二标签值;
更新单元,与所述参数获取单元连接,用于根据所述参数获取单元发送的所述第二物理地址以及所述第二标签值,分别将每个进程在所述内存映射列表中的所述第一物理地址以及所述第一标签值更新为所述第二物理地址以及所述第二标签值。
19.如权利要求11所述的装置,其特征在于,所述装置还包括:
第一物理地址获取单元,与所述解析单元连接,用于当所述解析单元确定所述至少一个第一内存段未对应进程时,获取所述内存信息参数中携带的至少一个第一内存段对应的第一物理地址;
第一置位单元,与所述第一物理地址获取单元连接,用于根据所述第一物理地址,将所述第一物理地址对应的所述至少一个第一内存段的状态置为非使能状态。
20.如权利要求11所述的装置,其特征在于,所述装置还包括:
第二物理地址获取单元,与所述解析单元连接,用于获取所述内存信息参数中携带的至少一个第一内存段对应的第一物理地址;
第二置位单元,与所述第二物理地址获取单元连接,用于根据所述第一物理地址,将所述第一物理地址对应的所述至少一个第一内存段状态置为非使能状态。
21.一种设备,其特征在于,所述设备包括:
第一处理芯片,用于检测是否存在处于异常状态的至少一个第一内存段,当存在所述至少一个第一内存段时,生成内存迁移指令;
基本输入输出芯片,与所述第一处理芯片连接,接收所述内存迁移指令,并解析所述内存迁移指令,获取所述内存迁移指令中的内存信息参数,所述内存信息参数用于指示所述至少一个第一内存段是否对应有至少一个进程;
第二处理芯片,与所述基本输入输出芯片连接,在所述基本输入输出芯片确定所述至少一个第一内存段对应有至少一个进程时,将所述至少一个进程对应的进程相关数据从所述至少一个第一内存段迁移至处于非异常状态的至少一个第二内存段中保存。
22.如权利要求21所述的设备,其特征在于,所述基本输入输出芯片还用于按照内存分割单位,将所述设备中的内存分割为和预设内存分割单位对应的M个内存段,获取所述M个内存段中每个内存段各自对应的物理地址,共计M个所述物理地址,分别为所述M个内存段中的每个内存段设置一个标签值,获得M个标签值,并将每个内存段对应的物理地址以及标签值添加到预设的内存管理列表中,其中,M为大于等于2的正整数。
23.如权利要求22所述的设备,其特征在于,所述第二处理芯片还用于分别为所述设备中运行的每个进程分配所述M个内存段中的至少一个内存段,获取每个进程分配到的所述至少一个内存段对应的物理地址以及标签值,将每个进程的进程号,以及每个进程分别对应的所述物理地址以及所述标签值添加到预设的内存映射列表中。
24.如权利要求23所述的设备,其特征在于,所述第二处理芯片还用于解析所述内存迁移指令,获取所述内存迁移指令携带的至少一个第一内存段对应的第一物理地址,根据所述第一物理地址,在所述内存管理列表中确定所述至少一个第一内存段对应的第一标签值。
25.如权利要求24所述的设备,其特征在于,所述第二处理芯片还用于根据确定的所述至少一个第一内存段对应的第一标签值,在所述内存映射列表中判断所述至少一个第一内存段是否对应有至少一个进程,在判断出所述至少一个第一内存段对应的所述第一标签值对应有所述至少一个进程时,将所述至少一个进程对应的进程相关数据从所述第一标签值对应的所述至少一个第一内存段迁移至处于非异常状态的所述至少一个第二内存段中保存。
26.如权利要求25所述的设备,其特征在于,所述第二处理芯片还用于在所述设备中获取处于使能状态且未被分配的至少一个第二内存段,分别为所述至少一个进程中的每个进程分配至少一个所述第二内存段,并将每个进程对应的所述进程相关数据保存至每个进程分配到的所述至少一个第二内存段。
27.如权利要求26所述的设备,其特征在于,所述第二处理芯片还用于获取每个进程分配到的所述至少一个第二内存段中每个第二内存段对应的第二物理地址以及第二标签值,分别将每个进程在所述内存映射列表中的所述第一物理地址以及所述第一标签值更新为所述第二物理地址以及所述第二标签值。
28.如权利要求21所述的设备,其特征在于,所述基本输入输出芯片还用于解析所述内存信息参数,获取所述内存信息参数中携带的至少一个第一内存段对应的第一物理地址,根据所述第一物理地址,将所述第一物理地址对应的所述至少一个第一内存段的状态置为非使能状态。
29.如权利要求27所述的设备,其特征在于,所述第一处理芯片还用于接收所述基本输入输出芯片发送的所述内存管理列表以及所述第二处理芯片发送的所述内存映射列表,并将所述内存管理列表以及所述内存映射列表提供给显示单元进行显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102397088A CN103324582A (zh) | 2013-06-17 | 2013-06-17 | 一种内存迁移方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102397088A CN103324582A (zh) | 2013-06-17 | 2013-06-17 | 一种内存迁移方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103324582A true CN103324582A (zh) | 2013-09-25 |
Family
ID=49193341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102397088A Pending CN103324582A (zh) | 2013-06-17 | 2013-06-17 | 一种内存迁移方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103324582A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252419A (zh) * | 2014-09-16 | 2014-12-31 | 杭州华为数字技术有限公司 | 一种内存分配的方法及装置 |
CN105512008A (zh) * | 2014-09-22 | 2016-04-20 | 华为技术有限公司 | 一种获取故障信息的方法及装置 |
US9785375B2 (en) | 2013-08-31 | 2017-10-10 | Huawei Technologies Co., Ltd. | Migrating data between memory units in server |
US10013205B2 (en) | 2014-09-12 | 2018-07-03 | Huawei Technologies Co., Ltd. | Memory migration method and device |
US10049010B2 (en) | 2013-11-22 | 2018-08-14 | Huawei Technologies Co., Ltd. | Method, computer, and apparatus for migrating memory data |
CN110059019A (zh) * | 2019-04-17 | 2019-07-26 | 珠海金山网络游戏科技有限公司 | 一种内存地址的分配方法及装置、计算设备和存储介质 |
CN110309374A (zh) * | 2019-05-22 | 2019-10-08 | 深圳市金泰克半导体有限公司 | 一种解析方法、系统、终端设备及计算机可读存储介质 |
CN112231128A (zh) * | 2020-09-11 | 2021-01-15 | 中科可控信息产业有限公司 | 内存错误处理方法、装置、计算机设备和存储介质 |
CN113076264A (zh) * | 2020-01-03 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 一种内存管理方法及装置 |
CN113127177A (zh) * | 2019-12-30 | 2021-07-16 | 澜起科技股份有限公司 | 处理装置及分布式处理系统 |
CN118132350A (zh) * | 2024-04-29 | 2024-06-04 | 苏州元脑智能科技有限公司 | Cxl内存容错方法、服务器系统、存储介质和电子设备 |
WO2024114039A1 (zh) * | 2022-11-30 | 2024-06-06 | 华为技术有限公司 | 一种内存映射方法及相关设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046765A (zh) * | 2006-03-29 | 2007-10-03 | 华为技术有限公司 | 一种定位软件故障的方法 |
CN101520754A (zh) * | 2009-03-24 | 2009-09-02 | 中兴通讯股份有限公司 | 内存越界访问的定位方法及装置 |
CN102141947A (zh) * | 2011-03-30 | 2011-08-03 | 东方通信股份有限公司 | 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统 |
JP2011175646A (ja) * | 2010-02-25 | 2011-09-08 | Samsung Electronics Co Ltd | メモリシステム及びその動作方法 |
WO2012063334A1 (ja) * | 2010-11-10 | 2012-05-18 | 株式会社日立製作所 | 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ |
CN102467404A (zh) * | 2011-10-14 | 2012-05-23 | 海尔集团技术研发中心 | 一种基于物理内存实现软件快速切换的方法及装置 |
CN102479116A (zh) * | 2010-11-24 | 2012-05-30 | 中兴通讯股份有限公司 | 一种查看系统异常时代码信息的方法及装置 |
CN102508742A (zh) * | 2011-11-03 | 2012-06-20 | 中国人民解放军国防科学技术大学 | 面向硬件不可恢复内存故障的内核代码软容错方法 |
CN102831069A (zh) * | 2012-06-30 | 2012-12-19 | 华为技术有限公司 | 内存处理方法、内存管理设备 |
CN102841674A (zh) * | 2012-07-25 | 2012-12-26 | 中国科学院上海微系统与信息技术研究所 | 基于新型存储器的嵌入式系统及其进程的休眠与唤醒方法 |
-
2013
- 2013-06-17 CN CN2013102397088A patent/CN103324582A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046765A (zh) * | 2006-03-29 | 2007-10-03 | 华为技术有限公司 | 一种定位软件故障的方法 |
CN101520754A (zh) * | 2009-03-24 | 2009-09-02 | 中兴通讯股份有限公司 | 内存越界访问的定位方法及装置 |
JP2011175646A (ja) * | 2010-02-25 | 2011-09-08 | Samsung Electronics Co Ltd | メモリシステム及びその動作方法 |
WO2012063334A1 (ja) * | 2010-11-10 | 2012-05-18 | 株式会社日立製作所 | 仮想マシンのライブマイグレーションを支援するためのメモリ制御装置及びi/oスイッチ |
CN102479116A (zh) * | 2010-11-24 | 2012-05-30 | 中兴通讯股份有限公司 | 一种查看系统异常时代码信息的方法及装置 |
CN102141947A (zh) * | 2011-03-30 | 2011-08-03 | 东方通信股份有限公司 | 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统 |
CN102467404A (zh) * | 2011-10-14 | 2012-05-23 | 海尔集团技术研发中心 | 一种基于物理内存实现软件快速切换的方法及装置 |
CN102508742A (zh) * | 2011-11-03 | 2012-06-20 | 中国人民解放军国防科学技术大学 | 面向硬件不可恢复内存故障的内核代码软容错方法 |
CN102831069A (zh) * | 2012-06-30 | 2012-12-19 | 华为技术有限公司 | 内存处理方法、内存管理设备 |
CN102841674A (zh) * | 2012-07-25 | 2012-12-26 | 中国科学院上海微系统与信息技术研究所 | 基于新型存储器的嵌入式系统及其进程的休眠与唤醒方法 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9785375B2 (en) | 2013-08-31 | 2017-10-10 | Huawei Technologies Co., Ltd. | Migrating data between memory units in server |
US10049010B2 (en) | 2013-11-22 | 2018-08-14 | Huawei Technologies Co., Ltd. | Method, computer, and apparatus for migrating memory data |
US10013205B2 (en) | 2014-09-12 | 2018-07-03 | Huawei Technologies Co., Ltd. | Memory migration method and device |
US10990303B2 (en) | 2014-09-16 | 2021-04-27 | Huawei Technologies Co., Ltd. | Memory allocation method and apparatus |
CN104252419B (zh) * | 2014-09-16 | 2017-09-19 | 华为技术有限公司 | 一种内存分配的方法及装置 |
US10353609B2 (en) | 2014-09-16 | 2019-07-16 | Huawei Technologies Co., Ltd. | Memory allocation method and apparatus |
CN104252419A (zh) * | 2014-09-16 | 2014-12-31 | 杭州华为数字技术有限公司 | 一种内存分配的方法及装置 |
CN105512008A (zh) * | 2014-09-22 | 2016-04-20 | 华为技术有限公司 | 一种获取故障信息的方法及装置 |
CN105512008B (zh) * | 2014-09-22 | 2018-05-11 | 华为技术有限公司 | 一种获取故障信息的方法及装置 |
CN110059019A (zh) * | 2019-04-17 | 2019-07-26 | 珠海金山网络游戏科技有限公司 | 一种内存地址的分配方法及装置、计算设备和存储介质 |
CN110309374A (zh) * | 2019-05-22 | 2019-10-08 | 深圳市金泰克半导体有限公司 | 一种解析方法、系统、终端设备及计算机可读存储介质 |
CN113127177A (zh) * | 2019-12-30 | 2021-07-16 | 澜起科技股份有限公司 | 处理装置及分布式处理系统 |
CN113127177B (zh) * | 2019-12-30 | 2023-11-14 | 澜起科技股份有限公司 | 处理装置及分布式处理系统 |
CN113076264A (zh) * | 2020-01-03 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 一种内存管理方法及装置 |
CN112231128A (zh) * | 2020-09-11 | 2021-01-15 | 中科可控信息产业有限公司 | 内存错误处理方法、装置、计算机设备和存储介质 |
WO2024114039A1 (zh) * | 2022-11-30 | 2024-06-06 | 华为技术有限公司 | 一种内存映射方法及相关设备 |
CN118132350A (zh) * | 2024-04-29 | 2024-06-04 | 苏州元脑智能科技有限公司 | Cxl内存容错方法、服务器系统、存储介质和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103324582A (zh) | 一种内存迁移方法、装置及设备 | |
EP3410288B1 (en) | Online upgrade method, device and system | |
US8826290B2 (en) | Method of monitoring performance of virtual computer and apparatus using the method | |
CN102707990B (zh) | 基于容器的处理方法和装置 | |
CN102346779B (zh) | 分布式文件系统和主控节点的备份方法 | |
CN103064795B (zh) | 一种存储设备的控制方法及相关装置 | |
CN110874261B (zh) | 可用性系统、方法和存储有程序的存储介质 | |
US11199972B2 (en) | Information processing system and volume allocation method | |
US9854037B2 (en) | Identifying workload and sizing of buffers for the purpose of volume replication | |
CN104102535A (zh) | 进程迁移方法和可迁移操作系统 | |
US10445295B1 (en) | Task-based framework for synchronization of event handling between nodes in an active/active data storage system | |
EP3813335B1 (en) | Service processing methods and systems based on a consortium blockchain network | |
CN105591778A (zh) | 一种分布式系统更新配置文件的方法及系统 | |
CN113204353B (zh) | 一种大数据平台组件部署方法及装置 | |
CN102314368A (zh) | 更新服务器程序的配置数据的方法及设备 | |
CN112199240A (zh) | 一种节点故障时进行节点切换的方法及相关设备 | |
CN107145304B (zh) | 服务器、存储系统及相关方法 | |
CN104517067A (zh) | 访问数据的方法、装置及系统 | |
CN103593606B (zh) | 上下文信息管理方法及系统 | |
CN107015883B (zh) | 一种动态数据备份方法及装置 | |
CN111400273A (zh) | 数据库扩容方法、装置、电子设备及机器可读存储介质 | |
CN110018986B (zh) | 异常快照识别方法及装置 | |
CN115357433A (zh) | 容器环境下的数据库备份方法、装置、设备及存储介质 | |
CN114780270A (zh) | 内存故障处理方法和装置、电子设备及计算机可读存储介质 | |
CN113411362B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130925 |