CN107957923B - 一种内存诊断方法和装置 - Google Patents
一种内存诊断方法和装置 Download PDFInfo
- Publication number
- CN107957923B CN107957923B CN201610900167.2A CN201610900167A CN107957923B CN 107957923 B CN107957923 B CN 107957923B CN 201610900167 A CN201610900167 A CN 201610900167A CN 107957923 B CN107957923 B CN 107957923B
- Authority
- CN
- China
- Prior art keywords
- memory
- diagnosis
- region
- area
- memory area
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
Abstract
本发明提供一种内存诊断方法,从设备的所有内存中,确定待诊断的第一内存区域,所述第一内存区域为所述设备的所有内存中的部分内存区域。确定第一内存区域的标识。根据所述标识对所述第一内存区域进行内存诊断。通过对待诊断区域设置标识,使设备只对待诊断的内存区域进行诊断,而不用对设备中的所有内存进行诊断。更换内存或增加内存等方式使得设备中的内存区域出现变化后,本发明实施例的内存诊断可以节省内存诊断时间,从而减少业务中断的时间。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种内存诊断方法和装置。
背景技术
随着IT技术的迅猛发展,各类IT系统中的数据量越来越大。另外,由于大内存技术的出现,使单台服务器上插入的内存容量越来越多。以一台典型的4P服务器为例,能够支撑的内存容量为4(sockets)*2HA(Home Agent,快速互联通道)(每一个CPU两个内存板)*4(每个HA4个内存channel)×3(每个内存channel上插3个内存条)*32G(单条内存条容量)=3072GB=3TB。
随着服务器的内存容量越来越大,也带来的一些额外的问题。内存条数的增加,导致系统中内存条出现故障的概率也随之增加。系统中任一内存条的故障,都可能导致系统宕机,导致客户业务发生中断。随着内存容量的增加,也给服务器的维护带来挑战。3TB容量的内存全部访问一遍的时间,需要数十小时之久。内存条更换,则需要对更换的内存条进行诊断,但实现对更换的内存条的诊断需要对服务器的所有内存都进行遍历诊断,遍历诊断所需要的时间随着服务器的内存容量的变大变长,客户业务中断的时间也随着变长。
现有对内存的诊断的技术方案中,是将服务器中全部的内存条全部诊断一遍,诊断的方式可以是对全部内存条中的物理地址均作一次或者多次读写,从而判断更换的内存条是否正常工作。随着内存容量越来越大,诊断所需的时间越来越长。
发明内容
本发明实施例提供了一种内存诊断方法和装置,可以实现对选定的内存条进行诊断,从而缩短了内存诊断的时间。
第一方面,本发明具体实施例提供一种内存诊断方法,所述从设备的所有内存中,确定待诊断的第一内存区域,所述第一内存区域为所述设备的所有内存中的部分内存区域。确定第一内存区域的标识。根据所述标识对所述第一内存区域进行内存诊断。通过对待诊断区域设置标识,使设备只对标识指定的待诊断的内存区域进行诊断,节省内存诊断时间,从而减少业务中断的时间。
在一个可能的设计中,确定所述第一内存区域包括,将设备上新增的内存区域作为所述第一内存区域。
在一个可能的设计中,所述方法还包括,对所述第一内存区域进行内存诊断之前,将第二内存区域置为无效,以便不对所述第二内存区域进行内存诊断,所述第二内存区域是指设备中除了所述第一内存区域以外的内存区域。通过将待诊断的内存区域设置为第一内存区域,并且将第一内存区域之外的第二内存区域设置为无效,避免了对第二内存区域进行诊断。
在一个可能的设计中,所述方法包括基本输入输出系统(Basic Input OutputSystem,BIOS)检测到诊断标签时,根据所述标识指示设备的内存控制器将所述第二内存区域置为无效。
在一个可能的设计中,所述方法包括所述BIOS检测到诊断标签时,指示所述内存控制器工作在非交织映射的模式,以便在非交织映射的模式下操作系统OS将所述第一内存区域包含的内存地址映射到连续的地址空间中通过所述连续的地址空间实现对所述第一内存区域的内存诊断。通过设置内存控制器的非交织映射的模式,使地址映射时,能够将一个内存条的地址空间映射完成后再映射另一个内存条的地址空间,提高了运行效率。
第二方面,本发明具体实施例提供一种设备,包括存储器、内存和处理器。所述存储器,用于存储计算机可执行指令。所述处理器,用于执行存储的计算机可执行指令,使得设备执行第一方面或者第一方面的任一可能的设计提供的内存诊断方法。
在一个可能的设计中,处理器,用于根据存储器存储的指令,从设备的所有内存中,确定待诊断的第一内存区域,所述第一内存区域为所述设备的所有内存中的部分内存区域。确定第一内存区域的标识;根据所述标识对所述第一内存区域进行内存诊断。通过对待诊断区域设置标识,使设备只对标识指定的待诊断的内存区域进行诊断,节省内存诊断时间,从而减少业务中断的时间。
在一个可能的设计中,处理器根据存储器存储的指令,确定所述第一内存区域具体包括将设备上新增的内存区域作为所述第一内存区域。
在一个可能的设计中,所述处理器还用于对所述第一内存区域进行内存诊断之前,将第二内存区域置为无效,以便不对所述第二内存区域进行内存诊断,所述第二内存区域是指设备中除了所述第一内存区域以外的内存区域。通过将待诊断的内存区域设置为第一内存区域,并且将第一内存区域之外的第二内存区域设置为无效,避免了对第二内存区域进行诊断。
在一个可能的设计中,所述处理器中还包括内存控制器基本输入输出系统BIOS检测到诊断标签时,处理器根据所述诊断标签指示设备的内存控制器将所述第二内存区域置为无效。
在一个可能的设计中,所述设备包括所述BIOS检测到诊断标签时,处理器指示内存控制器工作在非交织映射的模式,以便在非交织映射的模式下操作系统OS将所述第一内存区域包含的内存地址映射到连续的地址空间中通过所述连续的地址空间实现对所述第一内存区域的内存诊断。通过设置内存控制器的非交织映射的模式,使地址映射时,能够将一个内存条的地址空间映射完成后再映射另一个内存条的地址空间,提高了运行效率。
第三方面本发明具体实施例提供一种内存诊断装置,该内存诊断装置包括执行第一方面或第一方面的任意可能的设计中的方法的模块。
第四方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括:用于执行第一方面或第一方面的任意可能设计中的方法的指令。
附图说明
图1为本发明具体实施例提供的一种设备结构示意图;
图2为本发明实施例提供的一种内存诊断的方法流程图;
图3为本发明具体实施例提供的一种内存分布图;
图4为本发明具体实施例提供的一种待诊断内存的分布图;
图5为本发明图4所示内存分布的内存地址图;
图6为本发明具体实施例提供的另一种待诊断内存的分布图;
图7为本发明图6所示内存分布的内存地址图;
图8为本发明具体实施例提供的一种设备;
图9为本发明具体实施例提供的一种内存诊断装置。
具体实施方式
下面通过附图和实施例,对本发明实施例的技术方案做进一步的详细描述。
本发明具体实施例提供一种内存诊断方法和装置。通过对待诊断区域设置标识,使设备只对待诊断的内存区域进行诊断,而不用对设备中的所有内存进行诊断。本发明实施例的内存诊断可以节省内存诊断时间,从而减少业务中断的时间。
图1为本发明具体实施例提供的一种设备结构示意图。如图1所示,所述设备可以通过接口与外部设备连接,完成需要的操作。所述设备可以包括处理器、存储器、BIOS(Basic Input Output System,基本输入输出系统)、flash、内存条等器件。所述各个器件之间可以通过总线或其它方式进行通信。
其中,存储器可以是一个或多个,存储器用于存储存储设备接收的数据以及BMC(Baseboard Management Controller,基板管理控制器)、OS(OS,Operating System)等系统。存储器可以是直接连接的磁盘或固态硬盘(SSD,solid-state disk),也可以是由存储单元组成的存储阵列等其它形式组成的存储设备。
所述Flash可以是一个单独的存储器,用于数据的存储。所述Flash可以是通过BMC、OS和BIOS进行访问。
所述BIOS用于管理设备的各个硬件。
所述内存条用于进行数据的缓存。所述处理器用于数据的处理,并将处理后的数据缓存至内存条。所述内存条的数据通过一定的规则固化存储至存储器中。所述设备中可以有多个处理器,每个处理器可以对应一个或多个内存区域,还可以对应一个或多个的内存条。
在一个例子中,对部分内存条更换或新增加内存条并再次启动设备时,需要对更换后的内存条进行检查,以判断更换后的内存条是否可用。
在本发明的具体实施例中,对设备启动时,首先启动BMC,对设备上电。BMC检测当前设备的内存插槽,获取内存插槽上的编号和设置在内存插槽上的内存条的内存条码。BMC中保存了前一次启动时获取的内存插槽的编号和设置在内存插槽上的内存条的内存条码。
通过处理器将前一次启动时检测的内存条码和该内存条码对应的内存插槽的编号与当前检测的内存条码与内存条码对应的内存插槽的编号进行对比。当前设备中内存条码与前一次启动时检测的内存条码不一致时,当前设备中不一致的内存条码为待诊断内存条的内存条码。
本发明实施例中,第一内存区域包括待诊断的内存地址。例如,第一内存区域可以是用户通过随意指定的,指定方式可以是用户通过BIOS、OS或者BMC来指定。例如,第一内存区域还可以是上述检测到的更换的内存条的内存地址。例如,第一内存区域还可以是新增的内存条的内存地址。
应知,第一内存区域包括一个或多个内存地址;若第一内存区域包括多个内存地址,该多个内存地址可以是连续的或者不连续的。
本发明实施例中,对所述第一内存区域设置标识,具体可以是为所述第一内存区域中的每个内存地址均设置标识,还可以是为整个所述第一内存区域统一设置标识。所述标识用于BIOS识别第一内存区域;所述标识可以是待诊断内存条所在的内存插槽的编号、内存条码或者其他可以用于识别第一内存区域的标记。
对所述第一内存区域设置标识,可以是由BIOS、OS或者BMC设置的。
在本发明的具体实施例中,触发内存诊断的主体可以是BIOS、OS或者BMC。BIOS、OS或者BMC不但可以从设备的全部内存中选定第一内存区域,为第一内存区域设置标识,还可以设置触发内存诊断的诊断标签,所述诊断标签用于指示BIOS需要进行内存诊断。
在本发明的具体实施例中,还可以将诊断标识和第一内存区域的标识保存在BMC中或保存在Flash中。BIOS在启动时,处理器通过与BMC的存储空间进行交互或访问Flash,获取第一内存区域标识和诊断标签。
BIOS启动后,在检测到诊断标签和第一内存区域的标识时,指示内存控制器将第二内存区域置为无效。所述第二内存区域是指设备中除了所述第一内存区域以外的内存区域。对设备的第一内存区域进行初始化。从而OS在内存诊断时通过内存控制器只能申请到第一内存区域,而申请不到第二内存区域或者识别不到第二内存区域,进而只针对第一内存区域进行内存诊断。因OS不需要对第二内存区域进行内存诊断,仅对期望诊断的第一内存区域进行内存诊断,相对于现有技术节省了内存诊断的时间。
另外,BIOS在检测到诊断标签时,还可以将处理器的内存控制器设置为非交织映射的模式。以便在非交织映射的模式下操作系统OS将所述第一内存区域包含的内存地址映射到连续的地址空间中。通过所述连续的地址空间实现对所述第一内存区域的内存诊断。
区别于上述对设备的第一内存区域进行初始化的方案,在本发明的具体实施例中,处理器的内存控制器对内存条进行初始化时,所述内存控制器将所有的内存条进行初始化。所述处理器的内存控制器还设置为非交织映射的模式。以便在非交织映射的模式下操作系统OS将所述第一内存区域包含的内存地址映射到虚拟的地址空间(例如用户空间或者内核空间)中。通过所述地址空间实现对所述第一内存区域的内存诊断。
OS启动完成后,依照内存控制器提供的SAD信息和第一内存区域的标识(例如可以是待诊断的内存条所在的内存插槽的编号)计算待诊断第一内存区域的地址范围。根据待诊断的第一内存区域的地址范围实现对第一内存区域进行内存诊断。
在本发明实施例中,当通过BIOS或OS设置诊断标签和从设备的全部内存中选定第一内存区域时,还需要将系统重启,在使BIOS,通过处理器的内存控制器对待诊断的第一内存区域进行初始化或设置内存控制器为非交织映射的模式。
在本发明实施例中,OS对第一内存区域内存诊断后,OS会删除清除诊断标签,避免BIOS再次检查到该诊断标签而识别为需要进行内存诊断并将第二内存区域置为无效和指示内存控制器设置为非交织映射的模式。应知,OS对第一内存区域内存诊断后,也可以用户也可以通过BMC或者BIOS删除诊断标签。
另外,OS对第一内存区域内存诊断后,再次启动的BIOS指示内存控制器恢复默认设置,即恢复设置为交织映射的模式;替换实现也可以是,BIOS未检测到诊断标签时,BIOS指示内存控制器进行默认设置,即设置为交织映射的模式。
图2为本发明实施例提供的一种内存诊断的方法流程图。
S201,从设备的所有内存中,确定待诊断的第一内存区域,所述第一内存区域为所述设备的所有内存中的部分内存区域。
本发明实施例中,所述第一内存区域包括待诊断的内存地址。例如,第一内存区域可以是用户通过随意指定的,指定方式可以是用户通过BIOS、OS或者BMC来指定。例如,第一内存区域还可以是上述检测到的更换的内存条的内存地址。例如,第一内存区域还可以是新增的内存条的内存地址。
应知,第一内存区域包括一个或多个内存地址;若第一内存区域包括多个内存地址,该多个内存地址可以是连续的或者不连续的。
在本发明的具体实施例中,所述确定待诊断的第一内存区域是确定所述设备中新增加的内存或新更换后的内存,或者是确定用户指定的内存区域。
当设备中的内存条更换,或对设备中增加新的内存条时,需要对更换后的内存条进行诊断。为了保证新增加或更换后的内存条在设备中可以正常使用,需要对设备的内存条进行诊断。通过对内存条进行诊断,以确定更换后或新增加的内存条是否可用。
或者,用户在认为需要对某些内存区域进行诊断时,需要对指定的内存进行诊断。
所述每个内存条都具有唯一的内存条码。所述内存的插槽上具有内存插槽的编号。内存插槽的编号和/或内存条的条码可用于对设备中包括的内存条进行识别。
由于新更换或增加的内存条具有新的内存条码,因此当前设备内存条的内存条码与前一次启动时内存条的内存条码不一致,需要进行内存诊断。内存条码与前一次启动不一致的内存条码所对应的内存条为更换或增加的内存条。因此,与前一次启动不一致的内存条码所对应的内存条为待诊断的第一内存区域。
所述设备中包括对设备进行资产管理的BMC(基板管理控制器,BaseboardManagement Controller)和运行业务的操作系统(OS,Operating System)。所述BMC用于给设备上、下电,管理单板的资产,日志等操作。所述操作系统用于处理各种在设备上运行的数据。
图3为本发明具体实施例提供的一种内存分布图。如图3所示,设备中包括第一中央处理器。所述第一处理器上包括两个HA(Home Agent,快速互联通道),HA0和HA1。其中,HA0还包括第一channel、第二channel、第三channel和第四channel;HA1包括第五channel、第六channel、第七channel和第八channel。第一channel上包括编号为A01、A02和A03三个内存条,其中,A01内存条的条码为00878A381D8,A02内存条的条码为7887DA811D,A01内存条的条码为A658838100。其它内存条的具体信息在此不进行详细的描述,具体如图3所示。
设备中可以包括多个内存插槽,每个内存插槽对应一个内存插槽编号。当内存条设置到设备上并启动设备时,BMC可以获取到内存插槽上的内存条的内存条码并保存。设备通过内存插槽编号和内存插槽编号上设置的内存条的内存条码对内存条进行管理。
所述BMC中包括保存前一次启动时所检测到的内存条条码及与内存条码对应的内存插槽的编号。
在本发明的一种具体的实施例中,BMC通过将当前内存条的内存条码与前一次启动时内存条的内存条码进行比较,从而确定前一次启动时内存插槽编号与内存条码和当前启动的内存插槽编号与内存条码不一致的内存。
在一个实施例中,BMC将前一次启动时检测的内存条码和该内存条码对应的编号和当前检测的内存条码与内存插槽的编号进行对比。当前设备中内存条码与前一次启动时检测的内存条码不一致时,当前设备中不一致的内存条码为待诊断内存条的内存条码。
所述设备上电时,所述BMC检测当前设备的内存插槽,获取内存插槽中包括的内存条码及每个内存条码所对应的编号。所述设备还将当前获取的内存插槽中包括的内存条码及每个内存条码所对应的编号进行保存。所述设备还读取上一次上电时,系统中内存插槽上,内存条的内存条码及每个内存条码所对应的编号。将当前获取的内存条码与BMC中保存的前一次,上电时的内存条码和内存条码所对应的编号进行对比。
当所述BMC确定当前设备内存插槽上的内存条码和内存条码所对应的编号与BMC中保存的前一次启动时内存条码和内存条码所对应的编号相同时,所述设备正常启动。
当所述BMC确定当前设备内存插槽上的内存条码和内存条码所对应的编号与BMC中保存的前一次启动时内存条码和内存条码所对应的编号不一致时,进入诊断模式。
所述BMC确定当前设备内存条的内存条码与BMC中保存的前一次启动时内存条的内存条码不一致时,还保存条码发生变化的内存条码。所述条码发生变化的内存条为待诊断内存条的内存条。
S202确定第一内存区域的标识。
本发明实施例中,对所述第一内存区域设置标识,具体可以是为所述第一内存区域中的每个内存地址均设置标识,还可以是为整个所述第一内存区域设置标识。所述标识用于BIOS识别第一内存区域;所述标识可以是待诊断内存条所在的内存插槽的编号、内存条码或者其他可以用于识别第一内存区域的标记。
在本发明的具体实施例中,所述BMC在确定待诊断内存条时,对待诊断的内存条配置一个待诊断第一内存区域的标识,所述标识为第一内存区域的标识。所述配置第一内存区域的标识可以是根据内存控制器中已有的内存区域的编号,也可以是对待诊断的内存区域配置独立的编号。
在本发明的具体实施例中,触发内存诊断的主体可以是BIOS、OS或者BMC。BIOS、OS或者BMC不但可以从设备的全部内存中选定第一内存区域,为第一内存区域设置标识,还可以设置触发内存诊断的诊断标签,所述诊断标签用于指示BIOS需要进行内存诊断。根据所述第一内存区域标识和诊断标签,使BIOS或OS在获取到第一内存区域的标识时,确定需要诊断的内存条的编号。
在本发明的具体实施例中,还可以将所述第一内存区域的标识和诊断标签进行存储,使BMC、BIOS或OS在读取到上述第一内存区域的标识时,进入诊断模式并对第一内存区域标识中包括的内存条进行内存诊断。所述保存可以是保存在BMC中,也可以是保存在BIOS(Basic Input Output System,基本输出输入系统),OS(Operating System,操作系统),以及BMC都能访问的内存(Flash)上。或保存在BIOS,OS,以及BMC都能访问的其它设备上。
其中,所述Flash是非易失存储器,可以对存储的数据进行擦写和再编程。
所述BIOS与BMC之间可以通过多种方式进行交互。例如,PHCI、IPMI(智能平台管理接口,Intelligent Platform Management Interface)、PCIE(总线和接口标准,PCI-Express)等中的任意一个或多个。
在本发明实施例中,当通过BIOS或OS设置诊断标签和从服务器的全部内存中选定第一内存区域时,还需要将系统重启,在使BIOS,通过处理器的内存控制器对待诊断的第一内存区域进行初始化或设置内存控制器为非交织映射的模式。
S203,根据所述标识对所述第一内存区域进行内存诊断。
在本发明的一种具体实施例中,对所述第一内存区域进行内存诊断之前,还通过内存控制器将第二内存区域置为无效,以便不对所述第二内存区域进行内存诊断。所述第二内存区域是指设备中除了所述第一内存区域以外的内存区域。
BIOS在启动时检测第一内存区域标识和诊断标签,指示内存控制器将第二内存区域置为无效。所述第二内存区域是指设备中除了所述第一内存区域以外的内存区域。对设备的第一内存区域进行初始化。
另外,BIOS在检测到诊断标签时,还可以将处理器的内存控制器设置为非交织映射的模式。以便在非交织映射的模式下操作系统OS将所述第一内存区域包含的内存地址映射到连续的地址空间中。通过所述连续的地址空间实现对所述第一内存区域的内存诊断。
在系统启动后,操作系统下只能看到待诊断的内存条,OS将所有的待诊断的内存条全部申请下来,对所有的内存条进行读写测试,得到诊断结果。
对内存编号对应的内存条进行诊断,所述对内存条进行诊断是对内存条中的所有空间进行一次或者多次读写,以判断所述内存条是否完全可用。
在本发明的另一种具体实施例中,BIOS在与BMC交互的过程中,获取第一内存区域的标识和诊断标签。在BIOS启动的过程中,指示所述内存控制器工作在非交织映射的模式,以便在非交织映射的模式下,操作系统OS将所述第一内存区域包含的内存地址映射到连续的地址空间中。通过所述连续的地址空间实现对所述第一内存区域的内存诊断。
根据第一内存区域的标识确定待诊断内存的内存编号。根据待诊断内存的编号和SAD(System Address decoder,系统译码地址)信息计算待诊断内存条的地址空间。将内存条的地址空间进行映射,通过映射后的地址对内存条进行访问。所述映射可以是映射到内核空间,也可以是映射到用户空间。
在一个例子中,图4为本发明具体实施例提供的一种待诊断内存的分布图。如图4所示,需要HA0的channel中包括的编号为A01和A02的内存条、channe3中包括的编号为C02的内存条、HA1的channe2中包括的编号为B01、B02、B03内存条、HA1的channe4中包括的编号为D02内存条进行诊断。于是,将内存控制器调整为非交织映射的模式,使计算内存条的地址时每个内存条上的地址范围为连续的地址范围。
图5为本发明图4所示内存分布的内存地址图。如图5所示,包括待诊断内存条和待诊断内存条的地址。由于内存控制器处于非交织映射的模式,每个内存条的地址范围为连续的地址范围。于是,HA0 channel1 A01的地址范围为“0-100”。HA0 channel1 A02的地址范围为“100-200”。HA0 channel2 B02的地址范围为“200-300”。HA1 channel2 F02的地址范围为“400-500”。HA1 channel2 F03的地址范围为“500-600”。HA1 channel4 H02的地址范围为“600-700”。
在一个例子中,6为本发明具体实施例提供的另一种待诊断内存的分布图。如图6所示,HA1的channel2中包括的编号为B01、B02、B03内存条、HA1的channel3中包括的编号为C01、C02、C03内存条进行诊断。于是将内存控制器调整为非交织映射的模式,使计算内存条的地址时,HA1的channel2和channel3之间为连续的地址。
在计算待诊断内存条的地址后,还对计算的内存条的地址进行诊断。所对内存条进行诊断是将内存条进行的所有空间分别进行一次读写,以确保内存条的每个地址空间都可用。
在本发明实施例中,OS对第一内存区域内存诊断后,OS会删除清除诊断标签,避免BIOS再次检查到该诊断标签而识别为需要进行内存诊断并将第二内存区域置为无效和指示内存控制器设置为非交织映射的模式。应知,OS对第一内存区域内存诊断后,也可以用户也可以通过BMC或者BIOS删除诊断标签。
另外,OS对第一内存区域内存诊断后,再次启动的BIOS指示内存控制器恢复默认设置,即恢复设置为交织映射的模式;替换实现也可以是,BIOS未检测到诊断标签时,BIOS指示内存控制器进行默认设置,即设置为交织映射的模式。
需要说明的是,S201中所述的确定待诊断的内存条仅为本发明的一种具体实现的方式。本发明中还可以采用多种方式来确定待诊断的内存条。
在一个例子中,用户设备可通过用户接口访问BMC。用户设备通过用户接口向BMC发送诊断标签以及待诊断内存条的编号。BMC通过接收用户设备发送的诊断标签和待诊断内存条的内存条编号,确定进入诊断模式。
在另一个例子中,用户设备可通过用户接口访问OS。用户设备通过用户接口向OS发送诊断标签以及待诊断内存条的内存条编号。OS通过接收用户设备发送的诊断标签和待诊断内存条的内存条编号,写一个包括诊断标签和待诊断内存条的内存条编号的配置,将所述配置保存在BIOS,OS,BMC都能够访问到的Flash上。
通过将设备进行重新启动,使设备在重新启动时通过BIOS读取包括诊断标签和待诊断内存条的内存条编号的配置,并进行下一步的操作。
在另一个例子中,用户可以对OS进行操作并向OS中输入诊断标签和待诊断内存条的编号。OS在接收诊断标签和待诊断内存条的编号以后,通过带内管理通道或带外管理通道,将诊断标签和待诊断内存条的编号发送至BMC。BMC将诊断标签以及待诊断内存条的编号保存起来,或者,将待诊断内存条的条编号保存在BIOS,OS和BMC都能访问到的Flash上。
通过将设备进行重新启动,使设备在重新启动时通过BMC读取诊断标签和待诊断内存条的内存条编号,并进行下一步的操作。
在一种情况中,若所述设备设定,由BMC保存诊断标签以及待诊断内存条的内存条编号。BIOS启动时,BIOS通过与BMC进行交互,获取待诊断的内存条的编号以及诊断标签。
例如,当BMC通过检测的方式确定诊断标签和待诊断内存条的内存条编号,并将诊断标签和待诊断内存条的内存条编号保存在BMC中;或
BMC通过接收用户输入的诊断标签和待诊断内存条的内存条编号并保存接收的诊断模式和待诊断内存条的内存条编号;或
OS接收用户输入的诊断标签和待诊断内存条的编号后,通过带内或带外管理通道,将诊断标签和待诊断内存条编号发送至BMC,BMC将诊断标签以及待诊断内存条的编号保存起来。
当所述设备采用上述三种模式中的任意一种时,所述BIOS启动时,BIOS通过与BMC进行交互,获取待诊断的内存条的编号以及诊断标签。
在另一种情况中,若所述设备设定,由Flash保存诊断标签以及待诊断内存条的内存条编号。BIOS启动时,BIOS通过读取Flash,获取待诊断的内存条编号以及诊断标签。
例如,当BMC通过检测的方式确定诊断标签和待诊断内存条的内存条编号,并将诊断标签和待诊断内存条的内存条编号保持在Flash中;或
BMC通过接收用户输入的诊断标签和待诊断内存条的内存条编号,BMC在接收所述诊断标签和待诊断内存条的内存条编号后,还将所述诊断标签和待诊断内存条的内存条编号保存到Flash中;或
OS接收用户输入的诊断标签和待诊断内存条的编号后,通过带内管理通道或带外管理通道,将诊断标签和待诊断内存条的编号发送至Flash。
当所述设备采用上述三种模式中的任意一种时,所述BIOS启动时,BIOS通过与Flash进行交互,获取待诊断的内存条的编号以及诊断标签。
本发明实施例提供了一种设备,其可以实现本发明提供的任意方法实施例包括方法权利要求1-5所提供的任一方法。其具体的结构可以是如图8为本发明具体实施例提供的一种设备。在本发明的具体实施例中,所述设备可以是服务器。如图8所示,所述设备具体包括存储器801、处理器802和内存(未在图8中示意出)。
存储器801,用于存储计算机可执行指令。可选地,存储器801可以是上述实施例中的存储器,例如可以是图1所示的存储器。存储器801可能包含高速随机存取存储器(RandomAccess Memory,RAM),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。
内存是指上述实施例所述的内存,包括待诊断的第一内存区域和不需要诊断的第二内存区域。
处理器802,用于执行存储器801存储的计算机可执行指令,使得设备执行上述实施例提供的内存诊断方法。处理器802可以是以下的任一种:中央处理器(CentralProcessing Unit,简称CPU)、ARM处理器、现场可编程门阵列(Field Programmable GateArray,简称FPGA)、专用处理器等具有计算处理能力的器件。
具体地,处理器802根据存储器801存储的计算机可执行指令,从设备的所有内存中,确定待诊断的第一内存区域,所述第一内存区域为所述设备的所有内存中的部分内存区域。确定第一内存区域的标识。根据所述标识对所述第一内存区域进行内存诊断。
处理器802根据存储器801存储的计算机可执行指令,确定所述第一内存区域是,将设备上新增的内存区域作为所述第一内存区域。
并且,将第二内存区域置为无效。以便不对所述第二内存区域进行内存诊断,所述第二内存区域是指设备中除了所述第一内存区域以外的内存区域。
具体的,基本输入输出系统BIOS检测到诊断标签时,处理器802根据所述诊断标签指示设备的内存控制器将所述第二内存区域置为无效。
所述BIOS检测到诊断标签时,还可以通过处理器802指示内存控制器工作在非交织映射的模式。或者,所述BIOS检测到诊断标签时,仅通过处理器802指示内存控制器工作在非交织映射的模式,而不将第二存储区域设置为无效。在非交织映射的模式下,操作系统OS将所述第一内存区域包含的内存地址映射到连续的地址空间中,通过所述连续的地址空间实现对所述第一内存区域的内存诊断。
本发明实施例提供了一种内存诊断装置,其可以实现本发明提供的任意方法实施例包括方法权利要求1-5所提供的任一方法,其具体的结构如图9所示。图9所示的内存诊断装置,包括确定单元901和诊断单元902。
确定单元901,用于根据存储单元存储的指令,从设备的所有内存中,确定待诊断的第一内存区域,所述第一内存区域为所述设备的所有内存中的部分内存区域;还用于确定第一内存区域的标识;
诊断单元902,用于根据所述标识对所述第一内存区域进行内存诊断。
可选地,所述确定单元901,用于确定所述第一内存区域,包括:
所述确定单元901,用于将设备上新增的内存区域作为所述第一内存区域。
可选地,所述确定单元901,还用于:
对所述第一内存区域进行内存诊断之前,将第二内存区域置为无效,以便不对所述第二内存区域进行内存诊断,所述第二内存区域是指设备中除了所述第一内存区域以外的内存区域。
可选地,所述确定单元901,还用于
基本输入输出系统BIOS检测到诊断标签时,根据所述诊断标签指示设备的内存控制器将所述第二内存区域置为无效。
可选地,所述确定单元901,还用于
所述BIOS检测到诊断标签时,指示内存控制器工作在非交织映射的模式,以便在非交织映射的模式下操作系统OS将所述第一内存区域包含的内存地址映射到连续的地址空间中通过所述连续的地址空间实现对所述第一内存区域的内存诊断。专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种内存诊断方法,其特征在于,所述方法包括:
从设备的所有内存中,确定待诊断的第一内存区域,所述第一内存区域为所述设备的所有内存中的部分内存区域;
确定第一内存区域的标识;
根据所述标识对所述第一内存区域进行内存诊断。
2.根据权利要求1所述的方法,其特征在于,确定所述第一内存区域包括:
将设备上新增的内存区域作为所述第一内存区域。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
对所述第一内存区域进行内存诊断之前,将第二内存区域置为无效,以便不对所述第二内存区域进行内存诊断,所述第二内存区域是指设备中除了所述第一内存区域以外的内存区域。
4.根据权利要求3所述的方法,其特征在于,所述方法包括:
基本输入输出系统BIOS检测到诊断标签时,根据所述标识指示设备的内存控制器将所述第二内存区域置为无效。
5.根据权利要求4所述的方法,其特征在于,所述方法包括:
所述BIOS检测到诊断标签时,指示所述内存控制器工作在非交织映射的模式,以便在非交织映射的模式下操作系统OS将所述第一内存区域包含的内存地址映射到连续的地址空间中通过所述连续的地址空间实现对所述第一内存区域的内存诊断。
6.一种设备,其特征在于,包括:
存储器,用于存储计算机可执行指令;
处理器,用于执行存储器存储的计算机可执行指令,使得所述设备执行权利要求1至5任一项所述的内存诊断方法。
7.一种内存诊断装置,其特征在于,包括:
确定单元,用于根据存储单元存储的指令,从设备的所有内存中,确定待诊断的第一内存区域,所述第一内存区域为所述设备的所有内存中的部分内存区域;还用于确定第一内存区域的标识;
诊断单元,用于根据所述标识对所述第一内存区域进行内存诊断。
8.根据权利要求7所述的装置,其特征在于,所述确定单元,用于确定所述第一内存区域,包括:
所述确定单元,用于将设备上新增的内存区域作为所述第一内存区域。
9.根据权利要求7或8所述的装置,其特征在于,所述确定单元,还用于:
对所述第一内存区域进行内存诊断之前,将第二内存区域置为无效,以便不对所述第二内存区域进行内存诊断,所述第二内存区域是指设备中除了所述第一内存区域以外的内存区域。
10.根据权利要求9所述的装置,其特征在于,所述确定单元,还用于
基本输入输出系统BIOS检测到诊断标签时,根据所述诊断标签指示设备的内存控制器将所述第二内存区域置为无效。
11.根据权利要求10所述的装置,其特征在于,所述确定单元,还用于
所述BIOS检测到诊断标签时,指示内存控制器工作在非交织映射的模式,以便在非交织映射的模式下操作系统OS将所述第一内存区域包含的内存地址映射到连续的地址空间中通过所述连续的地址空间实现对所述第一内存区域的内存诊断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610900167.2A CN107957923B (zh) | 2016-10-14 | 2016-10-14 | 一种内存诊断方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610900167.2A CN107957923B (zh) | 2016-10-14 | 2016-10-14 | 一种内存诊断方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107957923A CN107957923A (zh) | 2018-04-24 |
CN107957923B true CN107957923B (zh) | 2020-06-02 |
Family
ID=61953887
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610900167.2A Active CN107957923B (zh) | 2016-10-14 | 2016-10-14 | 一种内存诊断方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107957923B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240847A (zh) * | 2018-09-27 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种post过程中内存错误上报方法、装置、终端及存储介质 |
TWI701594B (zh) * | 2018-12-05 | 2020-08-11 | 英業達股份有限公司 | 遠端硬體診斷系統與診斷方法 |
CN113821369A (zh) * | 2021-11-23 | 2021-12-21 | 苏州浪潮智能科技有限公司 | 一种内存巡检的方法、装置及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369246A (zh) * | 2007-08-14 | 2009-02-18 | 戴尔产品有限公司 | 使用存储器映射函数来映射存储器缺陷的系统和方法 |
CN102385533A (zh) * | 2010-08-30 | 2012-03-21 | 鸿富锦精密工业(深圳)有限公司 | 计算机及其内存运行错误时的重启方法 |
CN104346275A (zh) * | 2013-08-07 | 2015-02-11 | 鸿富锦精密工业(深圳)有限公司 | 内存测试系统及方法 |
CN104391753A (zh) * | 2014-12-16 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种服务器主板内存系统无故障运行方法 |
JP2016057797A (ja) * | 2014-09-09 | 2016-04-21 | 日本電気株式会社 | 診断プログラム実行装置、診断プログラム実行システム、診断プログラム実行方法、及び、診断プログラム実行プログラム |
CN105975377A (zh) * | 2016-04-29 | 2016-09-28 | 浪潮电子信息产业股份有限公司 | 一种监控内存的方法及装置 |
-
2016
- 2016-10-14 CN CN201610900167.2A patent/CN107957923B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369246A (zh) * | 2007-08-14 | 2009-02-18 | 戴尔产品有限公司 | 使用存储器映射函数来映射存储器缺陷的系统和方法 |
CN102385533A (zh) * | 2010-08-30 | 2012-03-21 | 鸿富锦精密工业(深圳)有限公司 | 计算机及其内存运行错误时的重启方法 |
CN104346275A (zh) * | 2013-08-07 | 2015-02-11 | 鸿富锦精密工业(深圳)有限公司 | 内存测试系统及方法 |
JP2016057797A (ja) * | 2014-09-09 | 2016-04-21 | 日本電気株式会社 | 診断プログラム実行装置、診断プログラム実行システム、診断プログラム実行方法、及び、診断プログラム実行プログラム |
CN104391753A (zh) * | 2014-12-16 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种服务器主板内存系统无故障运行方法 |
CN105975377A (zh) * | 2016-04-29 | 2016-09-28 | 浪潮电子信息产业股份有限公司 | 一种监控内存的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107957923A (zh) | 2018-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101464092B1 (ko) | 어드레스 스와핑을 통한 동적 물리적 메모리 대체 | |
US7945815B2 (en) | System and method for managing memory errors in an information handling system | |
US10387239B2 (en) | Detecting memory failures in the runtime environment | |
US20180267920A1 (en) | Expansion component | |
US10108359B2 (en) | Method and system for efficient cache buffering in a system having parity arms to enable hardware acceleration | |
US8954705B2 (en) | Memory space management method and memory controller and memory storage device and memory storage using the same | |
US8996787B2 (en) | Storage device aware of I/O transaction and stored data | |
CN107957923B (zh) | 一种内存诊断方法和装置 | |
CN108874298B (zh) | 一种数据存储的方法及装置 | |
US9710340B2 (en) | Replacement of a corrupt driver variable record | |
CN107797934B (zh) | 处理去分配命令的方法与存储设备 | |
CN112513804B (zh) | 一种数据处理方法及装置 | |
US9047176B2 (en) | Storage device and method for utilizing unused storage space | |
CN116521429B (zh) | 资产信息的上报方法及装置、存储介质及电子设备 | |
KR20140147017A (ko) | 라이트 백 캐싱 환경에서 예상하지 못한 셧다운으로부터 복구하기 위한 시스템 및 방법 | |
CN107301042A (zh) | 一种带自检功能的SoC应用程序引导方法 | |
CN115314416B (zh) | 网卡状态自动检测方法、装置、电子设备及存储介质 | |
CN112835528A (zh) | 脏页刷新方法和装置、电子设备和存储介质 | |
US20140164845A1 (en) | Host computer and method for testing sas expanders | |
CN108132811B (zh) | 一种fpga程序数据的加载方法及装置 | |
US8667325B2 (en) | Method, apparatus and system for providing memory sparing information | |
CN114385418A (zh) | 通信设备的保护方法、装置、设备和存储介质 | |
KR20180110482A (ko) | 메모리 테스트 시스템 및 방법 | |
US11720276B2 (en) | Memory system and controller for managing write status | |
CN107977282B (zh) | 一种SPI-Nand读取数据页的方法及装置 |
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 |