CN116775351A - 内存检测方法和计算设备 - Google Patents
内存检测方法和计算设备 Download PDFInfo
- Publication number
- CN116775351A CN116775351A CN202310327909.7A CN202310327909A CN116775351A CN 116775351 A CN116775351 A CN 116775351A CN 202310327909 A CN202310327909 A CN 202310327909A CN 116775351 A CN116775351 A CN 116775351A
- Authority
- CN
- China
- Prior art keywords
- memory
- detection
- memory location
- fault
- location
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 1206
- 238000001514 detection method Methods 0.000 title claims abstract description 883
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000012545 processing Methods 0.000 description 72
- 238000003860 storage Methods 0.000 description 54
- 238000010586 diagram Methods 0.000 description 18
- 238000003745 diagnosis Methods 0.000 description 17
- 238000007689 inspection Methods 0.000 description 17
- 238000004590 computer program Methods 0.000 description 13
- 230000008439 repair process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 239000008187 granular material Substances 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000002245 particle Substances 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种内存检测方法和计算设备,方法包括:确定内存中的第一内存位置和第二内存位置,所述第一内存位置和所述第二内存位置的故障严重程度不同;基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略,所述内存检测策略指示了基于第一检测方式对所述第一内存位置进行故障检测,以及指示了基于第二检测方式对所述第二内存位置进行故障检测。通过上述方法,可以提高第一检测方式和第二检测方式的检测实用性。
Description
技术领域
本申请实施例涉及计算设备技术领域,尤其涉及一种内存检测方法和计算设备。
背景技术
为提高计算设备中内存的可靠性,计算设备支持内存巡检技术。例如,内存巡检技术可以为轮询检查(Patrol Scrub)技术、或者故障检测巡检(Error Check and Scrub,ECS)技术。其中,通过ECS技术可以检测内存中存在的单比特故障,通过Patrol Scrub技术可以检测内存中存在的多比特故障和不可纠正故障。
目前,计算设备启动后,默认使能轮询检查引擎和ECS引擎按照固定周期对计算设备中全部内存进行巡检。然而,计算设备中不同内存区域的巡检需求不同。例如,单比特故障区域对ECS引擎的巡检需求较高,多比特故障区域对轮询检查引擎的巡检需求较高。因此,上述巡检方式无法较好的发挥各巡检引擎的检测作用,使得巡检引擎的内存检测实用性较低,导致了检测资源的浪费。
发明内容
本申请实施例提供了一种内存检测方法和计算设备,所述方法可以根据不同巡检引擎的检测特点,动态制定检测方案,较好的发挥了轮询检查引擎和ECS引擎的检测作用,使得轮询检查引擎和ECS引擎的内存检测实用性较高,节约了检测资源。
第一方面,本申请实施例提供了一种内存检测方法,所述方法包括:
确定内存中的第一内存位置和第二内存位置,所述第一内存位置和所述第二内存位置的故障严重程度不同;
基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略,所述内存检测策略指示了基于第一检测方式对所述第一内存位置进行故障检测,以及指示了基于第二检测方式对所述第二内存位置进行故障检测。
上述方案中,可以在内存中确定第一内存位置和第二内存位置,第一内存位置和第二内存位置的故障严重程度不同;并可以基于第一内存位置和第二内存位置的故障严重程度确定内存检测策略;内存检测策略指示了基于第一检测方式对第一内存位置进行故障检测,以及指示了基于第二检测方式对第二内存位置进行故障检测。通过上述方法,可以通过第一检测方式,对故障严重程度较小的第一内存区间进行故障检测处理;并可以通过第二检测方式,对故障严重程度较大的第二内存区间进行故障检测处理。较好的发挥了第一检测方式和第二检测方式的检测作用,使得第一检测方式和第二检测方式的内存检测实用性较高,节约了检测资源。
一种可能的实现方式中,基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略,包括:
当所述第一内存位置的故障严重程度小于或等于第一阈值,确定所述第一内存位置对应的内存检测策略为第一检测方式;
当所述第二内存区间的故障严重程度大于或等于第二阈值,确定所述第二内存位置对应的内存检测策略为第二检测方式。
上述方案中,可以根据待检测内存位置的故障严重程度,确定第一内存位置对应的内存检测策略为第一检测方式和第二内存位置对应的内存检测策略为第二检测方式,实现了根据故障严重程度确定内存检测策略的目的。
一种可能的实现方式中,确定内存中的第一内存位置和第二内存位置,包括:
在所述内存中确定至少一个待检测内存位置、以及每个待检测内存位置的故障严重程度;
根据每个待检测内存位置的故障严重程度,在所述内存中确定所述第一内存位置和所述第二内存位置。
上述方案中,可以根据待检测内存位置的故障严重程度确定第一内存位置和第二内存位置,实现了确定第一内存位置和第二内存位置的目的。
一种可能的实现方式中,根据所述至少一个内存故障位置,确定所述至少一个待检测内存位置,包括:
在所述内存中确定每个内存故障位置所在的存储阵列,得到至少一个存储阵列;
将所述至少一个存储阵列,确定为所述至少一个待检测内存位置。
上述方案中,可以根据内存故障位置确定待检测内存位置,避免了对全部内存进行故障检测处理。
一种可能的实现方式中,在所述内存中确定至少一个待检测内存位置、以及每个待检测内存位置的故障严重程度,包括:
获取第一内存故障的故障日志,所述第一内存故障为所述计算设备对所述内存进行业务操作时产生的故障,所述故障日志包括至少一个内存故障位置和每个内存故障位置的故障信息;
确定每个内存故障位置对应的待检测内存位置,得到所述至少一个待检测内存位置;
针对每个内存故障位置,根据所述内存故障位置的故障信息,确定所述内存故障位置对应的待检测内存位置的故障严重程度。
上述方案中,可以根据内存故障位置的故障信息,确定待检测内存位置的故障严重程度,实现了确定待检测内存位置的故障严重程度的目的。
一种可能的实现方式中,根据每个待检测内存位置的故障严重程度,在所述内存中确定所述第一内存位置和所述第二内存位置,包括:
获取所述计算设备的资源占用信息;
根据所述资源占用信息,确定所述第一阈值和所述第二阈值;
将故障严重程度小于或等于所述第一阈值的待检测内存位置确定为所述第一内存位置,以及将故障严重程度大于或等于所述第二阈值的待检测内存位置确定为所述第二内存位置。
上述方案中,可以根据第一阈值确定第一内存位置、可以根据第二阈值确定第二内存位置。实现了根据故障严重程度确定第一内存位置和第二内存位置的目的。
一种可能的实现方式中,所述资源占用信息包括所述计算设备的第一CPU占用率;根据所述资源占用信息,确定所述第一阈值和所述第二阈值,包括:
获取初始CPU占用率、第一初始阈值和第二初始阈值;
将所述第一CPU占用率与所述初始CPU占用率的差值,确定为CPU占用率差值;
根据所述CPU占用率差值更新所述第一初始阈值,得到所述第一阈值;
根据所述CPU占用率差值更新所述第二初始阈值,得到所述第二阈值。
上述方案中,可以根据第一CPU占用率确定第一阈值和第二阈值,以在第一CPU占用率较大时,通过第一阈值和第二阈值,调节M个第一内存位置与N个第二内存位置的重叠部分较小;在第一CPU占用率较小时,通过第一阈值和第二阈值,调节M个第一内存位置与N个第二内存位置的重叠部分较大。
一种可能的实现方式中,基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略之后,还包括:
通过所述第二检测方式对所述第二内存位置进行故障检测,并指示所述内存通过所述第一检测方式对所述第一内存位置进行故障检测。
上述方案中,可以通过第二检测方式对第二内存位置进行故障检测,并通过第一检测方式对第一内存位置进行故障检测。实现了通过不同的检测方式对不同的内存位置进行检测的目的。
一种可能的实现方式中,所述第一内存位置的数量为M,M为大于或等于0的整数;通过所述第一检测方式对所述第一内存位置进行故障检测,包括:
根据所述M个第一内存位置的故障严重程度,确定所述M个第一内存位置的第一检测信息,所述第一检测信息包括每个第一内存位置的检测速率和检测次数;
根据所述第一检测信息对所述M个第一内存位置进行检测处理,并将所述第一检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存区间,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第一内存位置、以及各第一内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述M个第一内存位置对应的检测次数的最大值,所述K为大于1的整数。
上述方案中,可以根据M个第一内存位置的故障严重程度,确定所述M个第一内存位置的第一检测信息。可以根据第一检测信息,通过第一检测方式对M个第一内存位置进行故障检测处理,避免了通过第一检测方式对全部内存区域进行故障检测处理,从而节约了检测处理的功耗。
一种可能的实现方式中,根据所述M个第一内存位置的故障严重程度,确定所述M个第一内存位置的第一检测信息,包括:
针对任意一个第一内存位置,若所述第一内存位置的故障严重程度小于或等于预设严重程度,则确定所述第一内存位置的检测速率为预设速率、以及确定所述第一内存位置的检测次数为预设次数;
若所述第一内存位置的故障严重程度大于所述预设严重程度,根据所述预设速度和所述故障严重程度确定所述第一内存位置的检测速率,以及根据所述预设次数和所述故障严重程度确定所述第一内存位置的检测次数。
上述方案中,根据第一内存位置的故障严重程度确定了第一内存位置的检测速率和检测次数。通过上述方法,可以实现动态调整第一检测信息的目的,使得第一检测方式的故障检测处理的实用性较高。
一种可能的实现方式中,根据所述第一检测信息对所述M个第一内存位置进行检测处理,包括:
根据所述第一检测信息,生成第一次检测任务,所述第一次检测任务包括所述M个第一内存位置和每个第一内存位置的检测速率;
执行所述第一次检测任务,以对所述M个第一内存位置进行检测处理。
上述方案中,可以根据第一检测信息生成检测任务,并根据检测任务、通过第一检测方式对M个第一内存位置进行检测处理,实现了对M个第一内存位置进行故障检测处理的目的。
一种可能的实现方式中,所述第二内存位置的数量为N;通过所述第二检测方式对所述第二内存位置进行故障检测,包括:
根据所述N个第二内存位置的故障严重程度,确定所述N个第二内存位置的第二检测信息,所述第二检测信息包括每个第二内存位置的检测速率和检测次数;
根据所述第二检测信息对所述N个第二内存位置进行检测处理,并将所述第二检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第二内存位置、以及各第二内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述N个第二内存位置对应的检测次数的最大值,所述K为大于1的整数。
上述方案中,可以根据N个第二内存位置的故障严重程度,确定所述N个第二内存位置的第二检测信息。可以根据第二检测信息,通过第二检测方式对N个第二内存位置进行故障检测处理,避免了通过第二检测方式对全部内存区域进行故障检测处理,从而节约了检测处理的功耗。
一种可能的实现方式中,根据所述N个第二内存位置的故障严重程度,确定所述N个第二内存位置的第二检测信息,包括:
针对任意一个第二内存位置,若所述第二内存位置的故障严重程度小于或等于预设严重程度,则确定所述第二内存位置的检测速率为预设速率、以及确定所述第二内存位置的检测次数为预设次数;
若所述第二内存位置的故障严重程度大于所述预设严重程度,根据所述预设速度和所述故障严重程度确定所述第二内存位置的检测速率,以及根据所述预设次数和所述故障严重程度确定所述第二内存位置的检测次数。
上述方案中,根据第二内存位置的故障严重程度确定了第二内存位置的检测速率和检测次数。通过上述方法。可以实现动态调整第二检测信息的目的,使得第二检测方式的故障检测处理的实用性较高。
一种可能的实现方式中,根据所述第二检测信息对所述N个第二内存位置进行检测处理,包括:
根据所述第二检测信息,生成第一次检测任务,所述第一次检测任务包括所述N个第二内存位置和每个第二内存位置的检测速率;
执行所述第一次检测任务,以对所述N个第二内存位置进行检测处理。
上述方案中,可以根据第二检测信息生成检测任务,并根据检测任务、通过第二检测方式对N个第二内存位置进行检测处理,实现了对N个第二内存位置进行故障检测处理的目的。
一种可能的实现方式中,所述方法还包括:
根据所述故障信息,对所述至少一个待检测内存位置进行修复处理,得到修复结果,所述修复结果中包括修复成功的目标内存位置;
在所述第一检测信息或者第二检测信息中删除所述目标内存位置、以及所述目标内存位置对应的检测速率和检测次数。
上述方法中,可以根据故障信息,对至少一个待检测内存位置进行修复处理,实现了根据业务操作内存故障修复相关内存区域的目的。
一种可能的实现方式中,所述故障信息中包括所述至少一个内存故障位置发生故障的故障次数;根据所述故障信息,对所述至少一个待检测位置进行修复处理,得到修复结果,包括:
根据所述至少一个内存故障位置发生故障的故障次数,确定所述至少一个待检测内存位置对应的故障次数;
根据所述至少一个待检测内存位置对应的故障次数,在所述至少一个待检测内存位置中确定第一待检测内存位置,所述第一待检测内存位置对应的故障次数大于或等于预设阈值;
对所述第一待检测内存位置进行修复处理,得到所述修复结果。
上述方法中,可以根据故障信息,对至少一个待检测内存位置进行修复处理,实现了根据业务操作内存故障修复相关内存区域的目的。
一种可能的实现方式中,所述方法还包括:
根据第一检测方式的故障检测结果,对至少一个第一内存位置进行修复处理,得到修复结果,所述修复结果中包括修复成功的目标内存位置,所述第一检测方式的故障检测结果为通过所述第一检测方式对所述M个第一内存位置进行故障检测处理的结果;
在所述第一检测信息或者第二检测信息中删除所述目标内存位置、以及所述目标内存位置对应的检测速率和检测次数。
上述方法中,可以根据第一检测方式的故障检测结果,对至少一个第一内存位置进行修复处理,实现了根据第一检测方式的故障检测结果修复相关内存区域的目的。
一种可能的实现方式中,所述第一检测方式的故障检测结果中包括所述至少一个第一内存位置发生故障的故障次数;根据第一检测方式的故障检测结果,对至少一个第一内存位置进行修复处理,得到修复结果,包括:
根据所述至少一个第一内存位置发生故障的故障次数,在所述至少一个第一内存位置中确定第一待检测内存位置,所述第一待检测内存位置对应的故障次数大于或等于预设阈值;
对所述第一待检测内存位置进行修复处理,得到所述修复结果。
上述方法中,可以根据第一检测方式的故障检测结果,对至少一个第一内存位置进行修复处理,实现了根据第一检测方式的故障检测结果修复相关内存区域的目的。
一种可能的实现方式中,所述方法还包括:
根据第二检测方式的故障检测结果,对至少一个第二内存位置进行修复处理,得到修复结果,所述修复结果中包括修复成功的目标内存位置,所述第二检测方式的故障检测结果为通过所述第二检测方式对所述N个第二内存位置进行故障检测处理的结果;
在所述第一检测信息或者第二检测信息中删除所述目标内存位置、以及所述目标内存位置对应的检测速率和检测次数。
上述方法中,可以根据第二检测方式的故障检测结果,对至少一个第二内存位置进行修复处理,实现了根据第二检测方式的故障检测结果修复相关内存区域的目的。
一种可能的实现方式中,所述第二检测方式的故障检测结果中包括所述至少一个第二内存位置发生故障的故障次数;根据第二检测方式的故障检测结果,对至少一个第二内存位置进行修复处理,得到修复结果,包括:
根据所述至少一个第二内存位置发生故障的故障次数,在所述至少一个第二内存位置中确定第一待检测内存位置,所述第一待检测内存位置对应的故障次数大于或等于预设阈值;
对所述第一待检测内存位置进行修复处理,得到所述修复结果。
上述方法中,可以根据第二检测方式的故障检测结果,对至少一个第二内存位置进行修复处理,实现了根据第二检测方式的故障检测结果修复相关内存区域的目的。
第二方面,本申请实施例提供一种计算设备,所述计算设备包括处理器和内存,其中,
所述处理器用于,确定内存中的第一内存位置和第二内存位置,所述第一内存位置和所述第二内存位置的故障严重程度不同;
所述处理器还用于,基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略,所述内存检测策略指示了基于第一检测方式对所述第一内存位置进行故障检测,以及指示了基于第二检测方式对所述第二内存位置进行故障检测。
上述方案中,可以在内存中确定第一内存位置和第二内存位置,第一内存位置和第二内存位置的故障严重程度不同;并可以基于第一内存位置和第二内存位置的故障严重程度确定内存检测策略;内存检测策略指示了基于第一检测方式对第一内存位置进行故障检测,以及指示了基于第二检测方式对第二内存位置进行故障检测通过上述方法,可以通过第一检测方式,对故障严重程度较小的第一内存区间进行故障检测处理;并可以通过第二检测方式,对故障严重程度较大的第二内存区间进行故障检测处理。较好的发挥了第一检测方式和第二检测方式的检测作用,使得第一检测方式和第二检测方式的内存检测实用性较高,节约了检测资源。
在一种可能的实施方式中,所述处理器具体用于,
当所述第一内存位置的故障严重程度小于或等于第一阈值,确定所述第一内存位置对应的内存检测策略为第一检测方式;
当所述第二内存区间的故障严重程度大于或等于第二阈值,确定所述第二内存位置对应的内存检测策略为第二检测方式。
上述方案中,可以根据待检测内存位置的故障严重程度,确定第一内存位置对应的内存检测策略为第一检测方式和第二内存位置对应的内存检测策略为第二检测方式,实现了根据故障严重程度确定内存检测策略的目的。
在一种可能的实施方式中,所述处理器具体用于,
在所述内存中确定至少一个待检测内存位置、以及每个待检测内存位置的故障严重程度;
根据每个待检测内存位置的故障严重程度,在所述内存中确定所述第一内存位置和所述第二内存位置。
上述方案中,可以根据待检测内存位置的故障严重程度确定第一内存位置和第二内存位置,实现了确定第一内存位置和第二内存位置的目的。
在一种可能的实施方式中,所述处理器具体用于,
获取第一内存故障的故障日志,所述第一内存故障为所述计算设备对所述内存进行业务操作时产生的故障,所述故障日志包括至少一个内存故障位置和每个内存故障位置的故障信息;
确定每个内存故障位置对应的待检测内存位置,得到所述至少一个待检测内存位置;
针对每个内存故障位置,根据所述内存故障位置的故障信息,确定所述内存故障位置对应的待检测内存位置的故障严重程度。
上述方案中,可以根据内存故障位置的故障信息,确定待检测内存位置的故障严重程度,实现了确定待检测内存位置的故障严重程度的目的。
在一种可能的实施方式中,所述处理器具体用于,
获取所述计算设备的资源占用信息;
根据所述资源占用信息,确定所述第一阈值和所述第二阈值;
将故障严重程度小于或等于所述第一阈值的待检测内存位置确定为所述第一内存位置,以及将故障严重程度大于或等于所述第二阈值的待检测内存位置确定为所述第二内存位置。
上述方案中,可以根据第一阈值确定第一内存位置、可以根据第二阈值确定第二内存位置。实现了根据故障严重程度确定第一内存位置和第二内存位置的目的。
在一种可能的实施方式中,所述资源占用信息包括所述计算设备的第一CPU占用率;所述处理器具体用于,
获取初始CPU占用率、第一初始阈值和第二初始阈值;
将所述第一CPU占用率与所述初始CPU占用率的差值,确定为CPU占用率差值;
根据所述CPU占用率差值更新所述第一初始阈值,得到所述第一阈值;
根据所述CPU占用率差值更新所述第二初始阈值,得到所述第二阈值。
上述方案中,可以根据第一CPU占用率确定第一阈值和第二阈值,以在第一CPU占用率较大时,通过第一阈值和第二阈值,调节M个第一内存位置与N个第二内存位置的重叠部分较小;在第一CPU占用率较小时,通过第一阈值和第二阈值,调节M个第一内存位置与N个第二内存位置的重叠部分较大。
在一种可能的实施方式中,所述处理器具体用于,
通过所述第二检测方式对所述第二内存位置进行故障检测,并指示所述内存通过所述第一检测方式对所述第一内存位置进行故障检测。
上述方案中,可以通过第二检测方式对第二内存位置进行故障检测,并通过第一检测方式对第一内存位置进行故障检测。实现了通过不同的检测方式对不同的内存位置进行检测的目的。
在一种可能的实施方式中,所述第一内存位置的数量为M,M为大于或等于0的整数;所述处理器具体用于,
根据所述M个第一内存位置的故障严重程度,确定所述M个第一内存位置的第一检测信息,所述第一检测信息包括每个第一内存位置的检测速率和/或检测次数;
根据所述第一检测信息对所述M个第一内存位置进行检测处理,并将所述第一检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存区间,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第一内存位置、以及各第一内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述M个第一内存位置对应的检测次数的最大值,所述K为大于1的整数。
上述方案中,可以根据M个第一内存位置的故障严重程度,确定所述M个第一内存位置的第一检测信息。可以根据第一检测信息,通过第一检测方式对M个第一内存位置进行故障检测处理,避免了通过第一检测方式对全部内存区域进行故障检测处理,从而节约了检测处理的功耗。
在一种可能的实施方式中,所述处理器具体用于,
根据所述N个第二内存位置的故障严重程度,确定所述N个第二内存位置的第二检测信息,所述第二检测信息包括每个第二内存区间的检测速率和检测次数;
根据所述第二检测信息对所述N个第二内存位置进行检测处理,并将所述第二检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第二内存位置、以及各第二内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述N个第二内存位置对应的检测次数的最大值,所述K为大于1的整数。
上述方案中,可以根据N个第二内存位置的故障严重程度,确定所述N个第二内存位置的第二检测信息。可以根据第二检测信息,通过第二检测方式对N个第二内存位置进行故障检测处理,避免了通过第二检测方式对全部内存区域进行故障检测处理,从而节约了检测处理的功耗。
第三方面,本申请实施例提供一种内存检测装置,所述装置包括确定模块,其中,
所述确定模块用于,确定内存中的第一内存位置和第二内存位置,所述第一内存位置和所述第二内存位置的故障严重程度不同;
所述确定模块还用于,基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略,所述内存检测策略指示了基于第一检测方式对所述第一内存位置进行故障检测,以及指示了基于第二检测方式对所述第二内存位置进行故障检测。
上述方案中,可以在内存中确定第一内存位置和第二内存位置,第一内存位置和第二内存位置的故障严重程度不同;并可以基于第一内存位置和第二内存位置的故障严重程度确定内存检测策略;内存检测策略指示了基于第一检测方式对第一内存位置进行故障检测,以及指示了基于第二检测方式对第二内存位置进行故障检测通过上述方法,可以通过第一检测方式,对故障严重程度较小的第一内存区间进行故障检测处理;并可以通过第二检测方式,对故障严重程度较大的第二内存区间进行故障检测处理。较好的发挥了第一检测方式和第二检测方式的检测作用,使得第一检测方式和第二检测方式的内存检测实用性较高,节约了检测资源。
在一种可能的实施方式中,所述确定模块具体用于,
当所述第一内存位置的故障严重程度小于或等于第一阈值,确定所述第一内存位置对应的内存检测策略为第一检测方式;
当所述第二内存区间的故障严重程度大于或等于第二阈值,确定所述第二内存位置对应的内存检测策略为第二检测方式。
上述方案中,可以根据待检测内存位置的故障严重程度,确定第一内存位置对应的内存检测策略为第一检测方式和第二内存位置对应的内存检测策略为第二检测方式,实现了根据故障严重程度确定内存检测策略的目的。
在一种可能的实施方式中,所述确定模块具体用于,
在所述内存中确定至少一个待检测内存位置、以及每个待检测内存位置的故障严重程度;
根据每个待检测内存位置的故障严重程度,在所述内存中确定所述第一内存位置和所述第二内存位置。
上述方案中,可以根据待检测内存位置的故障严重程度确定第一内存位置和第二内存位置,实现了确定第一内存位置和第二内存位置的目的。
在一种可能的实施方式中,所述确定模块具体用于,
获取第一内存故障的故障日志,所述第一内存故障为计算设备对所述内存进行业务操作时产生的故障,所述故障日志包括至少一个内存故障位置和每个内存故障位置的故障信息;
确定每个内存故障位置对应的待检测内存位置,得到所述至少一个待检测内存位置;
针对每个内存故障位置,根据所述内存故障位置的故障信息,确定所述内存故障位置对应的待检测内存位置的故障严重程度。
上述方案中,可以根据内存故障位置的故障信息,确定待检测内存位置的故障严重程度,实现了确定待检测内存位置的故障严重程度的目的。
在一种可能的实施方式中,所述确定模块具体用于,
获取计算设备的资源占用信息;
根据所述资源占用信息,确定第一阈值和第二阈值;
将故障严重程度小于或等于所述第一阈值的待检测内存位置确定为所述第一内存位置,以及将故障严重程度大于或等于所述第二阈值的待检测内存位置确定为所述第二内存位置。
上述方案中,可以根据第一阈值确定第一内存位置、可以根据第二阈值确定第二内存位置。实现了根据故障严重程度确定第一内存位置和第二内存位置的目的。
在一种可能的实施方式中,所述确定模块具体用于,
获取初始CPU占用率、第一初始阈值和第二初始阈值;
将所述第一CPU占用率与所述初始CPU占用率的差值,确定为CPU占用率差值;
根据所述CPU占用率差值更新所述第一初始阈值,得到所述第一阈值;
根据所述CPU占用率差值更新所述第二初始阈值,得到所述第二阈值。
上述方案中,可以根据第一CPU占用率确定第一阈值和第二阈值,以在第一CPU占用率较大时,通过第一阈值和第二阈值,调节M个第一内存位置与N个第二内存位置的重叠部分较小;在第一CPU占用率较小时,通过第一阈值和第二阈值,调节M个第一内存位置与N个第二内存位置的重叠部分较大。
在一种可能的实施方式中,所述装置还包括检测模块,所述检测模块用于,
通过所述第二检测方式对所述第二内存位置进行故障检测,并指示所述内存通过所述第一检测方式对所述第一内存位置进行故障检测。
上述方案中,可以通过第二检测方式对第二内存位置进行故障检测,并通过第一检测方式对第一内存位置进行故障检测。实现了通过不同的检测方式对不同的内存位置进行检测的目的。
在一种可能的实施方式中,所述第一内存位置的数量为M,M为大于或等于0的整数;所述检测模块具体用于,
根据所述M个第一内存位置的故障严重程度,确定所述M个第一内存位置的第一检测信息,所述第一检测信息包括每个第一内存位置的检测速率和/或检测次数;
根据所述第一检测信息对所述M个第一内存位置进行检测处理,并将所述第一检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存区间,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第一内存位置、以及各第一内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述M个第一内存位置对应的检测次数的最大值,所述K为大于1的整数。
上述方案中,可以根据M个第一内存位置的故障严重程度,确定所述M个第一内存位置的第一检测信息。可以根据第一检测信息,通过第一检测方式对M个第一内存位置进行故障检测处理,避免了通过第一检测方式对全部内存区域进行故障检测处理,从而节约了检测处理的功耗。
在一种可能的实施方式中,所述第二内存位置的数量为N,N为大于或等于0的整数;所述检测模块具体用于,
根据所述N个第二内存位置的故障严重程度,确定所述N个第二内存位置的第二检测信息,所述第二检测信息包括每个第二内存区间的检测速率和检测次数;
根据所述第二检测信息对所述N个第二内存位置进行检测处理,并将所述第二检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第二内存位置、以及各第二内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述N个第二内存位置对应的检测次数的最大值,所述K为大于1的整数。
上述方案中,可以根据N个第二内存位置的故障严重程度,确定所述N个第二内存位置的第二检测信息。可以根据第二检测信息,通过第二检测方式对N个第二内存位置进行故障检测处理,避免了通过第二检测方式对全部内存区域进行故障检测处理,从而节约了检测处理的功耗。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被计算机执行时实现第一方面中任一项所述的方法。
上述方案中,可以通过第一检测方式,对故障严重程度较小的第一内存区间进行故障检测处理;并可以通过第二检测方式,对故障严重程度较大的第二内存区间进行故障检测处理。较好的发挥了第一检测方式和第二检测方式的检测作用,使得第一检测方式和第二检测方式的内存检测实用性较高,节约了检测资源。
第五方面,本申请实施例提供一种算机程序产品,包括计算机程序,所述计算机程序被计算机执行时实现第一方面中任一项所述的方法。
上述方案中,可以通过第一检测方式,对故障严重程度较小的第一内存区间进行故障检测处理;并可以通过第二检测方式,对故障严重程度较大的第二内存区间进行故障检测处理。较好的发挥了第一检测方式和第二检测方式的检测作用,使得第一检测方式和第二检测方式的内存检测实用性较高,节约了检测资源。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种计算设备的架构示意图;
图2为本申请实施例提供的一种DDR5故障处理示意图;
图3为本申请实施例提供的一种内存检测流程示意图;
图4为本申请实施例提供的一种内存检测方法的示意图;
图5为本申请实施例提供的一种检测方案制定方法的示意图;
图6为本申请实施例提供的一种内存检测方法的流程示意图;
图7为本申请实施例提供的另一种内存检测方法的流程示意图;
图8为本申请实施例提供的一种通过第一检测方式对第一内存位置进行故障检测处理的流程示意图;
图9为本申请实施例提供的一种通过第二检测方式对第二内存位置进行故障检测处理的流程示意图;
图10为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
为便于理解,首先结合图1,对本申请实施例涉及的计算设备的***架构进行说明。
图1为本申请实施例提供的一种计算设备的架构示意图。请参见图1,计算设备的硬件部分可以包括内存、互联线缆、处理器以及基板管理控制器(Baseboard ManagementController,BMC)。内存与处理器通过互联线缆相连接。
计算设备的软件部分可以包括基本输入输出***(basic input output system,BIOS)和操作***(Operating System,OS)。BIOS和OS可以位于处理器内。
内存也称为内存储器或主存储器,安装在计算设备主板上的内存插槽中。内存可以用于存放处理器的运算数据。例如,内存可以为动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、随机存储器(Random Access Memory,RAM)或DDR等。在下述实施例中,以内存为DDR5为例进行说明。
BMC可以为独立于计算设备的操作***之外的、非业务模块的管理单元。例如,BMC可以通过专用的数据通道对计算设备进行远程维护和管理,可以通过计算设备的带外管理接口与BIOS和OS进行通信。
需要说明的是,在不同的计算设备中,对BMC有不同的称呼。例如,一些计算设备中称为BMC,另一些计算设备中称为iLO,另一些计算设备中还称为iDRAC。BMC、iLO或者iDRAC,都可以理解为是本发明实施例中的BMC。
需要说明的,本申请实施例描述的***架构是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着***架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
上述计算设备中,若内存发生故障,BIOS可以采集故障信息,并可以向故障诊断模块上报故障信息。其中,故障诊断模块可以在BMC上运行;或者,故障诊断模块可以在OS上运行;或者,故障诊断模块可以在其他***监控单元中运行。
故障诊断模块可以根据故障信息进行故障诊断,并可以向BIOS发送诊断结果,以使BIOS可以根据诊断结果进行故障修复。
为便于理解,下面结合图2,对本申请实施例涉及的内存故障处理过程进行说明。
图2为本申请实施例提供的一种DDR5故障处理示意图。请参见图2,包括处理器和DDR5。
一方面,DDR5可以包括多个存储颗粒和On-Die-误差校正码(error correctingcode,ECC)模块。处理器可以包括On-Module-ECC模块。处理器上可以运行BIOS。
处理器从存储颗粒中读取数据时,On-Die-ECC模块和On-Module-ECC模块可以先后对处理器读取的数据进行校验,以确定是否存在内存故障。内存故障可以包括单比特故障、多比特故障及不可纠正故障。
On-Die-ECC模块可以对校验出的单比特故障进行纠正。
On-Module-ECC模块可以校验出多比特故障和不可纠正故障,并可以对其中的多比特故障进行纠正。On-Module-ECC模块还可以将校验出的所有故障信息存储至故障日志,并可以向处理器上报中断通知。处理器收到中断通知后,处理器上运行的BIOS可以从故障日志中读取故障信息,以便于计算设备根据故障信息进行内存故障诊断。
另一方面,DDR5上可以运行ECS引擎。ECS引擎可以按照指定的周期,对DDR5上的存储颗粒进行检测,以确定内存颗粒上是否存在内存故障。其中,ECS引擎可以对检测出的单比特故障进行纠正、可以将纠正后的数据回写至内存颗粒中、并可以将故障信息存储至ECS日志。BIOS可以从ECS日志中读取故障信息,以便于计算设备根据故障信息进行内存故障诊断。
另一方面,处理器上还可以运行轮询检查引擎。轮询检查引擎可以按照指定周期,对存储颗粒进行检测。轮询检查引擎可以检测多比特故障和不可纠正故障、可以对检测到的多比特故障进行纠正,并可以将纠正后的数据回写至内存中。轮询检查引擎还可以将检测到的故障信息存储至故障日志中,并可以向处理器上报终端通知。处理器收到中断通知后,处理器上运行的BIOS可以从故障日志中读取故障信息,以便于计算设备根据故障信息进行内存故障诊断。
相关技术中,计算设备启动后,默认使能ECS引擎和轮询检查引擎进行检测。如图3所示,图3为本申请实施例提供的一种内存检测流程示意图。请参见图3,计算设备启动后,默认使能ECS引擎,以固定周期对计算设备中的全部内存进行检测,检测完一个周期后继续执行下一个周期的检测;同时,默认使能轮询检查引擎,以固定周期对计算设备中的全部内存进行检测,检测完一个周期后继续执行下一个周期的检测。其中,BIOS可以对ECS引擎的检测周期、以及轮询检查引擎的检测周期进行配置。例如,ECS引擎的检测周期和轮询检查引擎的检测周期均默认为24小时。
需要说明的是,ECS引擎和轮询检查引擎是相互独立运行的,两者的检测逻辑和检测信息记录均无关联。因此,对于同一个内存位置,ECS引擎和轮询检查引擎可以分别进行检测。
然而,计算设备刚启动时,内存可能不存在故障、或者可能只存在单比特故障,而轮询检查引擎检测不到单比特故障。此时,轮询检查引擎对全部内存进行检测会导致检测资源浪费。
随着业务的运行,内存故障严重程度增加,内存故障的分布范围可能较大。例如,内存故障可能分布在多个内存单元、或者整个存储阵列等。而ECS引擎对存储颗粒进行检测后,只能统计出故障严重程度最高的一行,无法采集到较大内存区域上的内存故障。此时,ECS引擎对全部内存进行检测会导致检测资源浪费。
由此,上述检测方法无法较好的发挥轮询检查引擎和ECS引擎的检测作用,使得轮询检查引擎和ECS引擎的内存检测实用性较低,导致了检测资源的浪费。
有鉴于此,本申请实施例提供了一种内存检测方法,可以根据业务访问内存时产生的内存故障、以及轮询检查引擎和ECS引擎的检测特点,动态制定巡检引擎的检测方案。较好的发挥了轮询检查引擎和ECS引擎的检测作用,使得轮询检查引擎和ECS引擎的内存检测实用性较高,节约了检测资源。下面,结合图4,对本申请实施例提供的内存检测方法进行说明。
图4为本申请实施例提供的一种内存检测方法的示意图。请参见图4,处理器进行业务操作时,可以访问DDR5的存储颗粒。处理器访问存储颗粒时,On-Die-ECC模块和On-Module-ECC模块可以先后进行内存故障校验,以确定处理器进行业务操作时产生的内存故障信息。
On-Module-ECC模块校验出内存故障后,可以将内存故障信息存储至故障日志中,并可以向处理器上报中断通知。
处理器接收On-Module-ECC模块上报的中断通知后,处理器上运行的BIOS可以从故障日志中读取内存故障信息,并可以向故障诊断模块发送内存故障信息。其中,故障诊断模块可以在BMC上运行;或者,故障诊断模块可以在OS上运行;或者,故障诊断模块可以在其他***监控单元中运行。在下述实施例中,以故障诊断模块在OS上运行为例进行说明。
故障诊断模块可以根据内存故障信息确定内存故障位置处的故障等级,并可以根据内存故障位置处的故障等级确定巡检引擎的检测方案,以使轮询检查引擎和ECS引擎可以根据巡检引擎的检测方案对内存进行巡检。
下面,结合图5,对检测方案的确定方法进行说明。
图5为本申请实施例提供的一种检测方案制定方法的示意图。请参见图5,计算设备刚启动、或者运行时间不长时,内存可能不存在故障(None error,NE)。随着运行时间的增加,内存可能出现单比特故障(Single bit error,SBE)、多比特故障(Multi bit error,MBE)、不可纠正故障(Uncorrectable error,UE)、或者传输故障(Transfer error,TE)。若计算设备没有及时检测并纠正可纠正故障,单比特故障可能演变为多比特故障、甚至演变为不可纠正故障。
如图5所示,可以根据内存故障严重程度,设置严重度阈值A和严重度阈值B。内存故障严重程度小于严重度阈值A时,内存中存在的单比特故障较多、多比特故障较少;内存故障严重程度大于严重度阈值B时,内存中存在的多比特故障较多、单比特故障较少。
本申请实施例中,可以在内存故障严重度小于严重度阈值A时,通过ECS引擎对内存进行检测,以使ECS引擎可以发现并纠正内存中存在的单比特故障。可以在内存故障严重度大于严重度阈值B时,通过轮询检查引擎对内存进行检测,以使轮询检查引擎可以发现并纠正内存中的多比特故障。
通过上述方法,可以根据不同巡检引擎的检测特点,动态制定检测方案,较好的发挥了轮询检查引擎和ECS引擎的检测作用,使得轮询检查引擎和ECS引擎的内存检测实用性较高,节约了检测资源。
下面以具体的实施例对本申请实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图6为本申请实施例提供的一种内存检测方法的流程示意图。该方法的执行主体可以为内存检测装置,也可以为集成了内存检测装置的计算设备,下述以执行主体为集成了内存检测装置的计算设备为例进行说明。请参见图6,该方法可以包括:
S601、确定内存中的第一内存位置和第二内存位置。
第一内存位置和第二内存位置的故障严重程度不同。
可选的,第一内存位置可以对应内存中一个内存区间,第二内存位置可以对应内存中一个内存区间。
本实施例中,第一内存位置的故障严重程度小于或等于第一阈值,第二内存位置的故障严重程度大于或等于第二阈值。
可选的,第二阈值小于或等于第一阈值。
故障严重程度可以用于表示故障严重程度,或者内存故障演变为不可纠正内存故障的概率。
第一内存位置的故障严重程度可以为,第一内存位置的内存故障演变为不可纠正内存故障的概率。
第二内存位置的故障严重程度可以为,第二内存位置的内存故障演变为不可纠正内存故障的概率。
第一阈值可以为,故障严重程度阈值;第二阈值可以为,故障严重程度阈值。
需要说明的是,第一阈值和第二阈值的具体取值可以根据实际需要进行设置,本申请实施例对此不做限定。
本实施例中,可以在内存中确定至少一个待检测内存位置、以及每个待检测内存位置的故障严重程度;根据每个待检测内存位置的故障严重程度,在内存中确定第一内存位置和第二内存位置。
待检测内存位置可以为,内存中出现内存故障的内存位置;其中,内存故障可以为计算设备对内存进行业务操作时产生的故障。
需要说明的是,内存中出现内存故障时,可以根据内存故障位置处的温度、以及该内存故障位置上发生过内存故障的次数等,确定故障严重程度。故障严重程度的确定方法可以参见相关技术,本实施例在此不做赘述。例如,可以通过人工智能(ArtificialIntelligence,AI)算法,对内存故障位置处的温度、以及该内存故障位置上发生过内存故障的次数等进行计算,以得到内存故障位置处的故障严重程度。
示例性的,假设第一阈值为50%、第二阈值为40%。计算设备对内存进行业务操作时产生了内存故障,出现内存故障的内存区域为待检测内存位置A和待检测内存位置B。通过AI计算后,确定待检测内存位置A的故障严重程度为30%,确定待检测内存位置B的故障严重程度为60%。由于待检测内存位置A的故障严重程度小于第一阈值、且待检测内存位置B的故障严重程度大于第二阈值。由此可以确定待检测内存位置A可以为第一内存位置,待检测内存位置B可以为第二内存位置。
需要说明的是,若存在待检测内存位置的故障严重程度既小于第一阈值、又大于第二阈值,则该待检测内存位置可以同时为第一内存位置和第二内存位置。
示例性的,假设第一阈值为50%、第二阈值为40%。待检测内存位置C的故障严重程度为45%。则待检测内存位置C的故障严重程度小于第一阈值,同时待检测内存位置C的故障严重程度大于第二阈值。由此可以确定待检测内存位置C可以为第一内存位置,同时待检测内存位置C可以为第二内存位置。
可选的,在一些实施例中,第二阈值也可以大于第一阈值。
S602、基于第一内存位置和第二内存位置的故障严重程度确定内存检测策略。
内存检测策略指示了基于第一检测方式对第一内存位置进行故障检测,以及指示了基于第二检测方式对第二内存位置进行故障检测。
本实施例中,当第一内存位置的故障严重程度小于或等于第一阈值,确定第一内存位置对应的内存检测策略为第一检测方式;当第二内存区间的故障严重程度大于或等于第二阈值,确定第二内存位置对应的内存检测策略为第二检测方式。
第一检测方式可以为,通过第一检测引擎对内存进行检测的方式。第一检测引擎用于检测内存的单比特故障。例如,第一检测引擎可以为ECS引擎。
第二检测方式可以为,通过第二检测引擎对内存进行检测的方式。第二检测引擎用于检测内存的多比特故障和不可纠正故障。例如,第二检测引擎可以为轮询检查引擎。
本实施例中,计算设备中包括处理器和内存,内存中设置有第一检测引擎,处理器中设置有第二检测引擎。
示例性的,假设第一检测引擎为ECS引擎,第二检测引擎为轮询检查引擎。第一内存位置为待检测内存位置A,第二内存位置为检测内存位置B。则可以通过ECS引擎对待检测内存位置A进行ECS检测处理,可以通过轮询检查引擎对待检测内存位置B进行轮询检查检测处理。
需要说明的是,通过第一检测引擎对第一内存位置进行故障检测处理的具体实现方式可以参见图8实施例、通过第二检测引擎对第二内存位置进行故障检测处理的具体实现方式可以参见图9实施例,此处不做赘述。
本实施例提供的内存检测方法,可以在内存中确定第一内存位置和第二内存位置,第一内存位置的故障严重程度与第二内存位置的故障严重程度不同;并可以基于第一内存位置和第二内存位置的故障严重程度确定内存检测策略;内存检测策略指示了基于第一检测方式对第一内存位置进行故障检测,以及指示了基于第二检测方式对第二内存位置进行故障检测。通过上述方法,可以通过第一检测方式,对故障严重程度较小的第一内存区间进行故障检测处理;并可以通过第二检测方式,对故障严重程度较大的第二内存区间进行故障检测处理。较好的发挥了第一检测方式和第二检测方式的检测作用,使得第一检测方式和第二检测方式的内存检测实用性较高,节约了检测资源。
在图6实施例的基础上,本申请实施例可以根据计算设备对内存进行业务操作时产生的故障,确定第一内存位置和第二内存位置。下面结合图7,对本申请实施例提供的内存检测方法进行进一步详细说明。
图7为本申请实施例提供的另一种内存检测方法的流程示意图。该方法的执行主体可以为内存检测装置,也可以为集成了内存检测装置的计算设备,下述以执行主体为集成了内存检测装置的计算设备为例进行说明。请参见图7,该方法可以包括:
S701、获取第一内存故障的故障日志,故障日志包括至少一个内存故障位置和每个内存故障位置的故障信息。
本实施例中,第一内存故障为计算设备对内存进行业务操作时产生的故障,故障日志包括至少一个内存故障位置和每个内存故障位置的故障信息;
示例性的,计算设备可以包括处理器和内存。第一内存故障可以为,处理器从内存中读取数据时产生的内存故障。
第一内存故障的故障类型可以为单比特故障、多比特故障、或者不可纠正故障等。本实施例对此不做限定。
本实施例中,第一内存故障可以对应至少一个内存故障位置,该至少一个内存故障位置和每个内存故障位置的故障信息可以存储于故障日志中。
其中,故障信息可以为对应的内存故障位置处的温度、以及该内存故障位置上发生过内存故障的次数等。
S702、确定每个内存故障位置对应的待检测内存位置,得到至少一个待检测内存位置。
本实施例中,可以在内存中确定每个内存故障位置所在的存储阵列,得到至少一个存储阵列;将至少一个存储阵列,确定为至少一个待检测内存位置。
实际实施过程中,故障日志中包括的每个内存故障位置可以位于同一个存储阵列;或者,故障日志中包括的每个内存故障位置也可以位于不同的存储阵列。根据上述情况,确定至少一个待检测内存位置至少包括如下2种情况:
情况1、故障日志中每个内存故障位置均位于不同的存储阵列。
该情况下,可以根据每个内存故障位置确定一个存储阵列,该存储阵列即为待检测内存位置。应该理解的是,该情况下,内存故障位置的数量与待检测内存位置的数量相同。
示例性的,假设故障日志中包括内存故障位置1、内存故障位置2和内存故障位置3。内存故障位置1位于存储阵列A,内存故障位置2位于存储阵列C,内存故障位置3位于存储阵列F。则可以根据3个内存故障位置确定3个待检测内存位置。3个待检测内存位置分别为存储阵列A、存储阵列C和存储阵列F。
情况2、故障日志中至少有2个内存故障位置位于同一个存储阵列。
该情况下,可以根据位于同一个存储阵列的至少2个内存故障位置确定一个存储阵列。应该理解的是,该情况下,内存故障位置的数量大于待检测内存位置的数量。
示例性的,假设故障日志中包括内存故障位置1、内存故障位置2和内存故障位置3。内存故障位置1位于存储阵列A,内存故障位置2位于存储阵列C,内存故障位置3位于存储阵列A。则可以根据3个内存故障位置确定2个存储阵列,即可以根据3个内存故障位置确定2个待检测内存位置。2个待检测内存位置分别为存储阵列A和存储阵列C。
S703、针对每个内存故障位置,根据内存故障位置的故障信息,确定内存故障位置对应的待检测内存位置的故障严重程度。
待检测内存位置的故障严重程度可以为,待检测内存位置对应的内存故障位置的故障严重程度。
可选的,若待检测内存位置对应多个内存故障位置,则可以将该多个内存故障位置的故障严重程度的最大值确定为待检测内存位置的故障严重程度。
本实施例中,内存故障位置处的故障严重程度可以通过故障信息中包括的内容进行计算。故障严重程度的计算方法可以参见相关技术,此处不做赘述。
示例性的,假设待检测内存位置A对应一个内存故障位置,该内存故障位置的故障严重程度为40%,则可以确定待检测内存位置A的故障严重程度为40%。假设待检测内存位置B对应2个内存故障位置,该2个内存故障位置的故障严重程度分别为40%和45%,则可以确定待检测内存位置B的故障严重程度为45%。
S704、确定第一阈值和第二阈值。
本实施例中,可以获取计算设备的资源占用信息,根据资源占用信息,确定第一阈值和第二阈值。
资源占用信息可以为第一CPU占用率;也就是说,资源占用信息可以为,计算设备当前的CPU占用率。
本实施例中,可以获取初始CPU占用率、第一初始阈值和第二初始阈值;将第一CPU占用率与初始CPU占用率的差值,确定为CPU占用率差值;根据CPU占用率差值更新第一初始阈值,得到第一阈值;根据CPU占用率差值更新第二初始阈值,得到第二阈值。
第一初始阈值可以为预设的第一阈值,第二初始阈值可以为预设的第二阈值。
第一初始阈值和第二初始阈值可以存储于计算设备中。可选的,第一初始阈值和第二初始阈值可以存储于计算设备的处理器或者BMC中。
需要说明的是,可以根据实际需要设置第一初始阈值和第二初始阈值的大小,本实施例对此不作限定。例如,第一初始阈值可以为50%,第二初始阈值可以为40%。
初始CPU占用率可以为,计算设备刚启动运行时的CPU占用率。例如,初始CPU占用率可以为50%。
本实施例中,若CPU差值的绝对值小于10%,则可以确定第一阈值为第一初始阈值、第二阈值为第二初始阈值。若CPU占用率差值每增加n×10%,则可以将第一初始阈值减小n5%得到第一更新初始阈值,并确定第一阈值为第一更新初始阈值;可以将第二初始阈值增加n×5%得到第二更新初始阈值,并确定第二阈值为第二更新初始阈值。若CPU占用率差值每减小n×10%,则可以将第一初始阈值增加n×5%得到第一更新初始阈值,并确定第一阈值为第一更新初始阈值;可以将第二初始阈值减小n×5%得到第二更新初始阈值,并确定第二阈值为第二更新初始阈值。其中,n为大于等于1的整数。
示例性的,假设初始CPU占用率为50%,第一初始阈值为50%,第二初始阈值为40%,第一CPU占用率为55%。则CPU占用率差值为5%,可以确定第一阈值为50%(即第一阈值等于第一初始阈值),第二阈值为40%(即第二阈值等于第二初始阈值)。
假设初始CPU占用率为50%,第一初始阈值为50%,第二初始阈值为40%,第一CPU占用率为65%。则CPU占用率差值增加15%,n为1。第一更新初始阈值为45%,第二更新阈值为45%。由此可以确定第一阈值为45%,第二阈值为45%。
假设初始CPU占用率为50%,第一初始阈值为50%,第二初始阈值为40%,第一CPU占用率为30%。则CPU占用率差值减少20%,n为2。第一更新初始阈值为60%,第二更新阈值为30%。由此可以确定第一阈值为60%,第二阈值为30%。
S705、根据每个待检测内存位置的故障严重程度、第一阈值和第二阈值,在内存中确定第一内存位置和第二内存位置。
本实施例中,可以将故障严重程度小于或等于第一阈值的待检测内存位置确定为第一内存位置,以及将故障严重程度大于或等于第二阈值的待检测内存位置确定为第二内存位置。
示例性的,假设第一阈值为50%,第二阈值为40%。根据第一内存故障的故障日志确定了3个待检测内存位置,3个待检测内存位置分别为待检测内存位置A、待检测内存位置B和待检测内存位置C。待检测内存位置A的故障严重程度为30%,待检测内存位置B的故障严重程度为45%,待检测内存位置C的的故障严重程度为60%。则第一内存位置可以包括待检测内存位置A和待检测内存位置B,第二内存位置可以包括检测内存位置A和待检测内存位置C。
S706、通过第二检测方式对第二内存位置进行故障检测,通过第一检测方式对第一内存位置进行故障检测。
需要说明的是,通过第一检测方式对第一内存位置进行故障检测的具体实现方式可以参见图8实施例、通过第二检测方式对第二内存位置进行故障检测的具体实现方式可以参见图9实施例,此处不做赘述。
S707、根据故障信息,对至少一个待检测内存位置进行修复处理。
本实施例中,获取第一内存故障的故障日志后,计算设备可以根据故障日志中的至少一个内存故障位置确定至少一个待检测内存位置,并可以根据故障日志中的故障信息,对至少一个待检测内存位置进行修复处理。
其中,第一内存故障的故障日志包括:至少一个内存故障位置和每个内存故障位置的故障信息;故障信息中包括:至少一个内存故障位置发生故障的故障次数。
计算设备可以根据至少一个内存故障位置发生故障的故障次数,确定至少一个待检测内存位置对应的故障次数;根据至少一个待检测内存位置对应的故障次数,在至少一个待检测内存位置中确定第一待检测内存位置,第一待检测内存位置对应的故障次数大于或等于预设阈值;对第一待检测内存位置进行修复处理,得到修复结果。修复结果中包括修复成功的目标内存位置。
其中,针对任意一个待检测内存位置,该待检测内存位置对应的故障次数可以为,该待检测内存位置所包括的一个或多个内存故障位置发生故障的最大故障次数。
示例性的,假设某待检测内存位置包括2个内存故障位置。该2个内存故障位置上发生故障的次数分别为2000次和1500次,则该待检测内存位置对应的故障次数可以为2000次。
第一待检测内存位置可以为,需要进行修复处理的待检测内存位置。
本实施例中,可以将故障次数大于或等于预设阈值的待检测内存位置,确定为第一待检测内存位置。需要说明的是,预设阈值可以根据实际需要进行设置,本申请实施例对预设阈值的大小不做限定。例如,预设阈值可以为6000次。
示例性的,假设预设阈值为6000次,则故障次数大于或等于6000的待检测内存位置可以为第一待检测内存位置。
本实施例中,可以采用冗余内存区域替换第一待检测内存区域,以实现对第一待检测内存位置的修复处理。
目标内存位置可以为,修复成功的第一待检测内存位置。
示例性的,假设第一待检测内存位置包括存储阵列A、存储阵列C和存储阵列E。对存储阵列A、存储阵列C和存储阵列E进行修复处理后,存储阵列A修复成功,存储阵列C和存储阵列E修复失败。则目标内存位置可以为存储阵列A。
本实施例中,确定目标内存位置后,可以在第一内存位置或第二内存位置中删除目标内存位置。
需要说明的是,S707可以在S703之前实施;或者,S707可以在S703之后实施;或者,S707可以与S703同时实施。对此本申请实施例不做限定。
S708、根据第一检测方式的故障检测结果,对至少一个第一内存位置进行修复处理。
第一检测方式的故障检测结果可以为,通过第一检测方式对第一内存位置进行故障检测处理的结果。第一检测方式的故障检测结果中可以包括至少一个第一内存位置发生故障的故障次数。
针对任意一个第一内存位置,该第一内存位置发生故障的故障次数可以为,通过第一检测方式对该第一内存位置进行检测处理时、检测到故障的故障次数。
本实施例中,对至少一个第一内存位置进行检测处理后,计算设备还可以根据故障检测结果,对至少一个第一内存位置进行修复处理。
计算设备可以根据至少一个第一内存位置发生故障的故障次数,在至少一个第一内存位置中确定第一待检测内存位置;对第一待检测内存位置进行修复处理,得到修复结果。修复结果中包括修复成功的目标内存位置。
本实施例中,可以将故障次数大于或等于预设阈值的第一内存位置,确定为第一待检测内存位置。需要说明的是,预设阈值可以根据实际需要进行设置,本申请实施例对预设阈值的大小不做限定。例如,预设阈值可以为5000次。
示例性的,假设预设阈值为5000次,则第一检测引擎对各第一内存位置进行检测处理时、检测到的故障次数大于或等于5000的第一内存位置可以为第一待检测内存位置。
本实施例中,可以采用冗余内存区域替换第一待检测内存区域,以实现对第一待检测内存位置的修复处理。
本实施例中,确定目标内存位置后,可以在第一内存位置或第二内存位置中删除目标内存位置。
S709、根据第二检测方式的故障检测结果,对至少一个第二内存位置进行修复处理。
第二检测方式的故障检测结果可以为,通过第二检测方式对第二内存位置进行故障检测处理的结果。第二检测方式的故障检测结果中可以包括至少一个第二内存位置发生故障的故障次数。
针对任意一个第二内存位置,该第二内存位置发生故障的故障次数可以为,通过第二检测方式对该第二内存位置进行检测处理时、检测到故障的故障次数。
本实施例中,对至少一个第二内存位置进行检测处理后,计算设备还可以根据故障检测结果,对至少一个第二内存位置进行修复处理。
计算设备可以根据至少一个第二内存位置发生故障的故障次数,在至少一个第二内存位置中确定第一待检测内存位置;对第一待检测内存位置进行修复处理,得到修复结果。修复结果中包括修复成功的目标内存位置。
本实施例中,可以将故障次数大于或等于预设阈值的第二内存位置,确定为第一待检测内存位置。需要说明的是,预设阈值可以根据实际需要进行设置,本申请实施例对预设阈值的大小不做限定。例如,预设阈值可以为5000次。
示例性的,假设预设阈值为5000次,则第二检测引擎对各第二内存位置进行检测处理时、检测到的故障次数大于或等于5000的第二内存位置可以为第一待检测内存位置。
本实施例中,可以采用冗余内存区域替换第一待检测内存区域,以实现对第一待检测内存位置的修复处理。
本实施例中,确定目标内存位置后,可以在第一内存位置或第二内存位置中删除目标内存位置。
需要说明的是,S708可以在S709之前实施;或者,S708可以在S709之后实施;或者,S708可以在S709同时实施。对此本申请实施例不做限定。
本实施例提供的内存检测方法,可以获取第一内存故障的故障日志,故障日志包括至少一个内存故障位置和每个内存故障位置的故障信息;确定每个内存故障位置对应的待检测内存位置,得到至少一个待检测内存位置;针对每个内存故障位置,根据内存故障位置的故障信息,确定内存故障位置对应的待检测内存位置的故障严重程度;确定第一阈值和第二阈值;根据每个待检测内存位置的故障严重程度、第一阈值和第二阈值,在内存中确定第一内存位置和第二内存位置;并通过第一检测方式对第一内存位置进行故障检测处理,以及通过第二检测方式对第二内存位置进行故障检测处理。其中,第一检测方式可以为基于第一检测引擎对内存进行检测的方式,第二检测方式可以为基于第二检测引擎对内存进行检测的方式。通过上述方法,可以通过第一检测引擎对故障严重程度较小的待检测内存位置进行故障检测处理,可以通过第二检测引擎对故障严重程度较大的待检测内存位置进行故障检测处理,较好的发挥了第一检测引擎和第二检测引擎的检测作用,使得第一检测引擎和第二检测引擎的内存检测实用性较高,节约了检测资源。
在上述任意实施例的基础上,下面结合图8,对通过第一检测方式对第一内存区间进行故障检测处理的方法,进行详细说明。
图8为本申请实施例提供的一种通过第一检测方式对第一内存位置进行故障检测处理的流程示意图。请参见图8,该方法可以包括:
S801、根据第一内存位置的故障严重程度,确定第一内存位置的第一检测信息。
本实施例中,第一内存位置的数量为M,M为大于或等于0的整数。
第一检测信息包括每个第一内存位置的检测速率和检测次数。
本实施例中,可以根据每个第一内存位置的故障严重程度,确定该第一内存位置的检测速率和检测次数。
具体而言,针对任意一个第一内存位置,若第一内存位置的故障严重程度小于或等于预设严重程度,则确定第一内存位置的检测速率为预设速率、以及确定第一内存位置的检测次数为预设次数;若第一内存位置的故障严重程度大于预设严重程度,根据预设速度和故障严重程度确定第一内存位置的检测速率,以及根据预设次数和故障严重程度确定第一内存位置的检测次数。
预设严重程度可以为任意一个故障严重程度可取值。例如,预设严重程度可以为30%。
预设速率可以为预先确定的一个检测速率。例如,预设速率可以为1TB/24h=0.042TB/h;其中,1TB可以为计算设备中内存的大小。
预设次数可以为预先确定的检测次数。例如,预设次数可以为1次。
需要说明的是,本申请实施例对预设严重程度、预设速率以及预设次数不做具体限定。具体实施过程中,可以根据实际需要,对预设严重程度、预设速率以及预设次数进行设置。
根据第一内存位置的故障严重程度与预设严重程度之间的大小关系不同,第一检测信息的确定至少包括如下两种情况:
情况1、第一内存位置的故障严重程度小于或等于预设严重程度。
该情况下,该第一内存位置的检测速率可以等于预设速率,检测次数可以等于预设次数。
示例性的,假设预设严重程度为30%,预设速率为0.042TB/h,预设次数为1次,第一内存位置为25%。则第一内存位置对应的预设速率和预设次数分别为0.042TB/h和1次。
情况2、第一内存位置的故障严重程度大于预设严重程度。
该情况下,可以根据第一内存位置的故障严重程度、预设严重程度以及预设速率计算检测速率;可以根据第一内存位置的故障严重程度、预设严重程度以及预设次数计算检测速率。
一种可能的实现方式中,假设则检测速率=预设速率×(1+n),则检测次数=预设次数+n。
示例性的,假设预设严重程度为30%,预设速率为0.042TB/h,预设次数为1次,第一内存位置的故障严重程度为42%。则检测速率=0.042TB/h×(1+1)=0.084TB/h,检测次数=1+1=2。
另一种可能的实现方式中,假设 则检测速率=预设速率×(1+n),则检测次数=预设次数+n。/>
示例性的,假设预设严重程度为30%,预设速率为0.042TB/h,预设次数为1次,第一内存位置的故障严重程度为42%。则检测速率=0.042TB/h×(1+2)=0.126TB/h,检测次数=1+2=3。
可选的,若第一检测信息中存在连续的第一内存位置,可以对连续的至少两个第一内存位置进行合并。
具体而言,若第一检测信息中存在2个或2个以上连续的第一内存位置,可以对该2个或2个以上连续的第一内存位置进行合并。合并后该第一内存位置对应的检测速率可以为,上述2个或2个以上连续的第一内存位置对应的检测速率的最大值。合并后该第一内存位置对应的检测次数可以为,上述2个或2个以上连续的第一内存位置对应的检测次数的最大值。
示例性的,假设第一检测信息如表11所示:
表11
第一内存位置 | 检测速率 | 检测次数 |
存储阵列A | 0.126TB/h | 3次 |
存储阵列B | 0.084TB/h | 2次 |
存储阵列D | 0.042TB/h | 1次 |
如表11所示,第一检测信息中包括3个第一内存位置。3个第一内存位置分别为存储阵列A、存储阵列B以及存储阵列D。存储阵列A对应的检测速率为0.126TB/h、以及对应的检测次数为3次,存储阵列B对应的检测速率为0.084TB/h、以及对应的检测次数为2次,存储阵列C对应的检测速率为0.042TB/h、以及对应的检测次数为1次。其中,存储阵列A和存储阵列B为连续的两个存储阵列,则可以对存储阵列A和存储阵列B进行合并,得到存储阵列AB。存储阵列AB对应的检测速率为0.126TB/h、以及对应的检测次数为3次。合并后的第一检测信息可以如表12所示:
表12
第一内存位置 | 检测速率 | 检测次数 |
存储阵列AB | 0.126TB/h | 3次 |
存储阵列D | 0.042TB/h | 1次 |
S802、根据第一检测信息,生成第一次检测任务。
本实施例中,第一次检测任务包括M个第一内存位置和每个第一内存位置的检测速率。
示例性的,假设第一检测信息如表21所示:
表21
第一内存位置 | 检测速率 | 检测次数 |
存储阵列A | 0.126TB/h | 3次 |
存储阵列B | 0.084TB/h | 2次 |
存储阵列D | 0.042TB/h | 1次 |
则第一次检测任务可以如表22所示:
表22
第一内存位置 | 检测速率 |
存储阵列A | 0.126TB/h |
存储阵列B | 0.084TB/h |
存储阵列D | 0.042TB/h |
也就是说,第一次检测任务包括:第一检测信息中每个第一内存位置、以及每个第一内存位置的检测速率。
S803、执行第一次检测任务,以对M个第一内存位置进行检测处理。
本实施例中,可以通过第一检测引擎对M个第一内存位置进行检测处理。
本实施例中,计算设备可以根据第一次检测任务,在配置文件中设置M个第一内存位置的起始位置、终止位置、以及检测速率,并可以使能第一检测引擎运行,以实现对M个第一内存位置进行故障检测处理的目的。
可选的,计算设备可以在模式寄存器(Mode Register,MR)中设置M个第一内存位置的起始位置和终止位置。其中,模式寄存器可以位于内存中。应该理解的是,模式寄存器中可以存储用于设置第一内存位置的起始位置和终止位置的配置文件。
可选的,计算设备也可以通过内存的局部阵列自动刷新(Partial Array SelfRefresh,PARS)功能,对M个第一内存位置的起始位置和终止位置进行配置,以生成第一内存位置列表。
可选的,计算设备可以在处理器中的寄存器中配置M个第一内存位置的检测速率。该寄存器可以具备业务运行时的在线修改能力,以实现对检测速率的调控。应该理解的是,该寄存器中可以存储用于设置第一内存位置检测速率的配置文件。
S804、将第一检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第一更新检测信息。
具体而言,首先对第一检测信息中所有第一内存位置的检测次数减1,再删除减1之后检测次数为0的第一内存位置,即得到第一更新检测信息。
本实施例中,计算设备执行完第一次检测任务后,可以对检测信息进行更新,以得到第一更新检测信息。
示例性的,假设第一检测信息如表31所示:
表31
第一内存位置 | 检测速率 | 检测次数 |
存储阵列A | 0.126TB/h | 3次 |
存储阵列B | 0.084TB/h | 2次 |
存储阵列D | 0.042TB/h | 1次 |
则第一更新检测信息可以如表32所示:
表32
第一内存位置 | 检测速率 | 检测次数 |
存储阵列A | 0.126TB/h | 2次 |
存储阵列B | 0.084TB/h | 1次 |
S805、根据第i更新检测信息生成第i+1次检测任务。
第i+1次检测任务包括第i更新检测信息中的各第一内存位置、以及各第一内存位置的检测速率。
其中,i依次取1、2、……、K-1,K为M个第一内存位置对应的检测次数的最大值,K为大于1的整数。
需要说明的是,S805的具体实现方式可以参见S802,此处不再赘述。
S806、执行第i+1次检测任务,并将第i检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第i+1更新检测信息。
其中,i依次取1、2、……、K-1,K为M个第一内存位置对应的检测次数的最大值,K为大于1的整数。
需要说明的是,S806的具体实现方式可以参见S803,此处不再赘述。
本实施例提供的通过第一检测方式对M个第一内存位置进行故障检测处理的方法,可以根据M个第一内存位置的故障严重程度,确定M个第一内存位置的第一检测信息;根据第一检测信息,生成第一次检测任务;执行第一次检测任务,以对M个第一内存位置进行检测处理;将第一检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第一更新检测信息;根据第i更新检测信息生成第i+1次检测任务;并执行第i+1次检测任务,并将第i检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第i+1更新检测信息。通过上述方法,可以通过第一内存位置的故障严重程度,确定该第一内存位置的检测速率和检测次数,并对故障严重程度较高的第一内存位置确定较大的检测速率和检测次数,对故障严重程度较低的第一内存位置确定较小的检测速率和检测次数,较好的发挥了第一检测引擎的检测作用,使得第一检测引擎的检测实用性较高。
在上述任意实施例的基础上,下面结合图9,对通过第二检测方式对第二内存位置进行故障检测处理的方法,进行详细说明。
图9为本申请实施例提供的一种通过第二检测方式对第二内存位置进行故障检测处理的流程示意图。请参见图9,该方法可以包括:
S901、根据第二内存位置的故障严重程度,确定第二内存位置的第二检测信息。
本实施例中,第二内存位置的数量为N,N为大于或等于0的整数。
第二检测信息包括每个第二内存位置的检测速率和检测次数。
S902、根据第二检测信息,生成第一次检测任务。
第一次检测任务包括N个第二内存位置和每个第二内存位置的检测速率。
需要说明的是,S901-S902的实现方式与S801-S802的实现方式类似,具体可以参见S801-S802,此处不再赘述。
S903、执行第一次检测任务,以对N个第二内存位置进行检测处理。
本实施例中,可以通过第二检测引擎对N个第二内存位置进行检测处理。
本实施例中,计算设备可以根据第一次检测任务,在配置文件中设置N个第二内存位置的起始位置、终止位置、以及检测速率,并可以使能第二检测引擎运行,以实现对N个第二内存位置进行故障检测处理的目的。
可选的,计算设备可以在检测地址寄存器中设置N个第二内存位置的起始位置和终止位置。其中,检测地址寄存器可以位于内存中。例如,检测地址寄存器可以为scrubaddressl0寄存器和scrubaddresshi寄存器。应该理解的是,检测地址寄存器中可以存储用于设置第二内存位置的起始位置和终止位置的配置文件。
可选的,计算设备可以在通过电源控制单元(power control unit,PCU)配置N个第二内存位置的检测速率。
S904、将第二检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第一更新检测信息。
S905、根据第i更新检测信息生成第i+1次检测任务。
第i+1次检测任务包括第i更新检测信息中的各第二内存位置、以及各第二内存位置的检测速率。
其中,i依次取1、2、……、K-1,K为N个第二内存位置对应的检测次数的最大值,K为大于1的整数。
S906、执行第i+1次检测任务,并将第i检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第i+1更新检测信息。
其中,i依次取1、2、……、K-1,K为N个第二内存位置对应的检测次数的最大值,K为大于1的整数。
需要说明的是,S904-S906的实现方式与S804-S806的实现方式类似,具体可以参见S804-S806,此处不再赘述。
本实施例提供的通过第二检测方式对N个第N内存位置进行故障检测处理的方法,可以根据N个第N内存位置的故障严重程度,确定N个第二内存位置的第二检测信息;根据第二检测信息,生成第一次检测任务;执行第一次检测任务,以对N个第二内存位置进行检测处理;将第二检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第一更新检测信息;根据第i更新检测信息生成第i+1次检测任务;并执行第i+1次检测任务,并将第i检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第i+1更新检测信息。通过上述方法,可以通过第二内存位置的故障严重程度,确定该第二内存位置的检测速率和检测次数,并对故障严重程度较高的第二内存位置确定较大的检测速率和检测次数,对故障严重程度较低的第二内存位置确定较小的检测速率和检测次数,较好的发挥了第二检测引擎的检测作用,使得第二检测引擎的检测实用性较高。
图10为本申请实施例提供的一种计算设备的结构示意图。请参见图10,所述计算设备10包括处理器11和内存12;其中,
所述处理器11用于,确定内存中的第一内存位置和第二内存位置,所述第一内存位置和所述第二内存位置的故障严重程度不同;
所述处理器11还用于,基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略,所述内存检测策略指示了基于第一检测方式对所述第一内存位置进行故障检测,以及指示了基于第二检测方式对所述第二内存位置进行故障检测。
本实施例提供的计算设备,可用于执行上述任意方法实施例所示的技术方案,其实现原理和技术效果类似,此处不作赘述。
在一种可能的实施方式中,所述处理器11具体用于,
当所述第一内存位置的故障严重程度小于或等于第一阈值,确定所述第一内存位置对应的内存检测策略为第一检测方式;
当所述第二内存区间的故障严重程度大于或等于第二阈值,确定所述第二内存位置对应的内存检测策略为第二检测方式。
在一种可能的实施方式中,所述处理器11具体用于,
在所述内存中确定至少一个待检测内存位置、以及每个待检测内存位置的故障严重程度;
根据每个待检测内存位置的故障严重程度,在所述内存中确定所述第一内存位置和所述第二内存位置。
在一种可能的实施方式中,所述处理器11具体用于,
获取第一内存故障的故障日志,所述第一内存故障为所述计算设备对所述内存进行业务操作时产生的故障,所述故障日志包括至少一个内存故障位置和每个内存故障位置的故障信息;
确定每个内存故障位置对应的待检测内存位置,得到所述至少一个待检测内存位置;
针对每个内存故障位置,根据所述内存故障位置的故障信息,确定所述内存故障位置对应的待检测内存位置的故障严重程度。
在一种可能的实施方式中,所述处理器11具体用于,
获取所述计算设备的资源占用信息;
根据所述资源占用信息,确定所述第一阈值和所述第二阈值;
将故障严重程度小于或等于所述第一阈值的待检测内存位置确定为所述第一内存位置,以及将故障严重程度大于或等于所述第二阈值的待检测内存位置确定为所述第二内存位置。
在一种可能的实施方式中,所述资源占用信息包括所述计算设备的第一CPU占用率;所述处理器11具体用于,
获取初始CPU占用率、第一初始阈值和第二初始阈值;
将所述第一CPU占用率与所述初始CPU占用率的差值,确定为CPU占用率差值;
根据所述CPU占用率差值更新所述第一初始阈值,得到所述第一阈值;
根据所述CPU占用率差值更新所述第二初始阈值,得到所述第二阈值。
在一种可能的实施方式中,所述处理器11具体用于,
通过所述第二检测方式对所述第二内存位置进行故障检测,并指示所述内存通过所述第一检测方式对所述第一内存位置进行故障检测。
在一种可能的实施方式中,所述第一内存位置的数量为M,M为大于或等于0的整数;所述处理器11具体用于,
根据所述M个第一内存位置的故障严重程度,确定所述M个第一内存位置的第一检测信息,所述第一检测信息包括每个第一内存位置的检测速率和/或检测次数;
根据所述第一检测信息对所述M个第一内存位置进行检测处理,并将所述第一检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存区间,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第一内存位置、以及各第一内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述M个第一内存位置对应的检测次数的最大值,所述K为大于1的整数。
在一种可能的实施方式中,所述处理器11具体用于,
根据所述N个第二内存位置的故障严重程度,确定所述N个第二内存位置的第二检测信息,所述第二检测信息包括每个第二内存区间的检测速率和检测次数;
根据所述第二检测信息对所述N个第二内存位置进行检测处理,并将所述第二检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第二内存位置、以及各第二内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述N个第二内存位置对应的检测次数的最大值,所述K为大于1的整数。
本实施例提供的计算设备,可用于执行上述任意方法实施例所示的技术方案,其实现原理和技术效果类似,此处不作赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被计算机执行时,实现如上任一方法实施例执行的内存检测方法,其实现原理和技术效果类似,此处不作赘述。
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被计算机执行时实现如上任一方法实施例执行的内存检测方法,其实现原理和技术效果类似,此处不作赘述。
实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppydisk)、光盘(英文:optical disc)及其任意组合。
本申请实施例是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程终端设备的处理单元以产生一个机器,使得通过计算机或其他可编程终端设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程终端设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
在本申请中,术语“包括”及其变形可以指非限制性的包括;术语“或”及其变形可以指“和/或”。本申请中术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。本申请中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
Claims (10)
1.一种内存检测方法,其特征在于,所述方法包括:
确定内存中的第一内存位置和第二内存位置,所述第一内存位置和所述第二内存位置的故障严重程度不同;
基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略,所述内存检测策略指示了基于第一检测方式对所述第一内存位置进行故障检测,以及指示了基于第二检测方式对所述第二内存位置进行故障检测。
2.根据权利要求1所述的方法,其特征在于,基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略,包括:
当所述第一内存位置的故障严重程度小于或等于第一阈值,确定所述第一内存位置对应的内存检测策略为第一检测方式;
当所述第二内存区间的故障严重程度大于或等于第二阈值,确定所述第二内存位置对应的内存检测策略为第二检测方式。
3.根据权利要求1-2任一项所述的方法,其特征在于,确定内存中的第一内存位置和第二内存位置,包括:
在所述内存中确定至少一个待检测内存位置、以及每个待检测内存位置的故障严重程度;
根据每个待检测内存位置的故障严重程度,在所述内存中确定所述第一内存位置和所述第二内存位置。
4.根据权利要求3所述的方法,其特征在于,在所述内存中确定至少一个待检测内存位置、以及每个待检测内存位置的故障严重程度,包括:
获取第一内存故障的故障日志,所述第一内存故障为计算设备对所述内存进行业务操作时产生的故障,所述故障日志包括至少一个内存故障位置和每个内存故障位置的故障信息;
确定每个内存故障位置对应的待检测内存位置,得到所述至少一个待检测内存位置;
针对每个内存故障位置,根据所述内存故障位置的故障信息,确定所述内存故障位置对应的待检测内存位置的故障严重程度。
5.根据权利要求3或4所述的方法,其特征在于,根据每个待检测内存位置的故障严重程度,在所述内存中确定所述第一内存位置和所述第二内存位置,包括:
获取计算设备的资源占用信息;
根据所述资源占用信息,确定第一阈值和第二阈值;
将故障严重程度小于或等于所述第一阈值的待检测内存位置确定为所述第一内存位置,以及将故障严重程度大于或等于所述第二阈值的待检测内存位置确定为所述第二内存位置。
6.根据权利要求5所述的方法,其特征在于,所述资源占用信息包括所述计算设备的第一CPU占用率;根据所述资源占用信息,确定所述第一阈值和所述第二阈值,包括:
获取初始CPU占用率、第一初始阈值和第二初始阈值;
将所述第一CPU占用率与所述初始CPU占用率的差值,确定为CPU占用率差值;
根据所述CPU占用率差值更新所述第一初始阈值,得到所述第一阈值;
根据所述CPU占用率差值更新所述第二初始阈值,得到所述第二阈值。
7.根据权利要求1-6任一项所述的方法,其特征在于,基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略之后,还包括:
通过所述第二检测方式对所述第二内存位置进行故障检测,并指示所述内存通过所述第一检测方式对所述第一内存位置进行故障检测。
8.根据权利要求7所述的方法,其特征在于,所述第一内存位置的数量为M,M为大于或等于0的整数;通过所述第一检测方式对所述第一内存位置进行故障检测,包括:
根据M个第一内存位置的故障严重程度,确定所述M个第一内存位置的第一检测信息,所述第一检测信息包括每个第一内存位置的检测速率和/或检测次数;
根据所述第一检测信息对所述M个第一内存位置进行检测处理,并将所述第一检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存区间,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第一内存位置、以及各第一内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第一内存位置的检测次数减1、以及删除检测次数为0的第一内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述M个第一内存位置对应的检测次数的最大值,所述K为大于1的整数。
9.根据权利要求7-8任一项所述的方法,其特征在于,所述第二内存位置的数量为N,N为大于或等于0的整数;通过所述第二检测方式对所述第二内存位置进行故障检测,包括:
根据N个第二内存位置的故障严重程度,确定所述N个第二内存位置的第二检测信息,所述第二检测信息包括每个第二内存区间的检测速率和检测次数;
根据所述第二检测信息对所述N个第二内存位置进行检测处理,并将所述第二检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第一更新检测信息;
根据第i更新检测信息生成第i+1次检测任务,所述第i+1次检测任务包括所述第i更新检测信息中的各第二内存位置、以及各第二内存位置的检测速率;
执行第i+1次检测任务,并将所述第i检测信息中各第二内存位置的检测次数减1、以及删除检测次数为0的第二内存位置,得到第i+1更新检测信息;
其中,所述i依次取1、2、……、K-1,所述K为所述N个第二内存位置对应的检测次数的最大值,所述K为大于1的整数。
10.一种计算设备,其特征在于,所述计算设备包括处理器和内存;其中,
所述处理器用于,确定内存中的第一内存位置和第二内存位置,所述第一内存位置和所述第二内存位置的故障严重程度不同;
所述处理器还用于,基于所述第一内存位置和所述第二内存位置的故障严重程度确定内存检测策略,所述内存检测策略指示了基于第一检测方式对所述第一内存位置进行故障检测,以及指示了基于第二检测方式对所述第二内存位置进行故障检测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310327909.7A CN116775351A (zh) | 2023-03-29 | 2023-03-29 | 内存检测方法和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310327909.7A CN116775351A (zh) | 2023-03-29 | 2023-03-29 | 内存检测方法和计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775351A true CN116775351A (zh) | 2023-09-19 |
Family
ID=88010528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310327909.7A Pending CN116775351A (zh) | 2023-03-29 | 2023-03-29 | 内存检测方法和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775351A (zh) |
-
2023
- 2023-03-29 CN CN202310327909.7A patent/CN116775351A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101063948B (zh) | 可编程装置的软差错定位和敏感度检测 | |
CN111104293A (zh) | 用于支持盘故障预测的方法、设备和计算机程序产品 | |
US20110283149A1 (en) | Monitoring distributed software health and membership in a compute cluster | |
WO2024012094A1 (zh) | 故障处理方法及计算设备 | |
US20140195867A1 (en) | Memory testing with selective use of an error correction code decoder | |
JP2012532372A (ja) | ストレージデバイス内のエラーデータを追跡するシステムおよび方法 | |
Du et al. | Predicting uncorrectable memory errors for proactive replacement: An empirical study on large-scale field data | |
CN108334427B (zh) | 存储***中的故障诊断方法及装置 | |
CN111221775B (zh) | 处理器、缓存处理方法及电子设备 | |
US9009548B2 (en) | Memory testing of three dimensional (3D) stacked memory | |
CN115640174A (zh) | 内存故障预测方法、***、中央处理单元及计算设备 | |
CN114996065A (zh) | 内存故障预测方法、装置及设备 | |
Li et al. | From correctable memory errors to uncorrectable memory errors: What error bits tell | |
US20140317473A1 (en) | Implementing ecc redundancy using reconfigurable logic blocks | |
JP4973703B2 (ja) | 故障検出方法及び監視装置 | |
CN108833209A (zh) | 一种云计算***可用性确定方法及装置 | |
CN116775351A (zh) | 内存检测方法和计算设备 | |
CN101271419B (zh) | 随机存储器失效的检测处理方法、装置和*** | |
CN115421948A (zh) | 一种检测内存数据故障的方法及其相关设备 | |
CN115080331A (zh) | 故障处理方法及计算设备 | |
CN116521413A (zh) | 内存检测方法和计算设备 | |
CN113722143A (zh) | 一种程序流监控方法、装置、电子设备以及存储介质 | |
CN115705261A (zh) | 内存故障的修复方法、cpu、os、bios及服务器 | |
WO2018010084A1 (zh) | 应用于数字集成电路的esd检测装置、集成电路及方法 | |
CN112799911A (zh) | 一种节点健康状态检测方法、装置、设备及存储介质 |
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 |