CN109343986B - 处理内存故障的方法与计算机*** - Google Patents

处理内存故障的方法与计算机*** Download PDF

Info

Publication number
CN109343986B
CN109343986B CN201810942648.9A CN201810942648A CN109343986B CN 109343986 B CN109343986 B CN 109343986B CN 201810942648 A CN201810942648 A CN 201810942648A CN 109343986 B CN109343986 B CN 109343986B
Authority
CN
China
Prior art keywords
storage space
control unit
memory
address
fault
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
Application number
CN201810942648.9A
Other languages
English (en)
Other versions
CN109343986A (zh
Inventor
邓誉春
尹泽生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201810942648.9A priority Critical patent/CN109343986B/zh
Publication of CN109343986A publication Critical patent/CN109343986A/zh
Application granted granted Critical
Publication of CN109343986B publication Critical patent/CN109343986B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请提供了一种处理内存故障的方法,包括:第一控制单元确定第一存储空间中存在故障的内存的地址,第一存储空间能够存储第二控制单元以直接内存访问DMA的方式在第一控制单元中备份的数据;第一控制单元将第一存储空间中存在故障的内存的地址同步至第二控制单元;第二控制单元获取第一存储空间中存在故障的内存的地址;第二控制单元以DMA的方式将缓存的数据存储至所述第一存储空间,并且在存储该数据时隔离该第一存储空间中存在故障的内存,其中,该数据是由处理单元通过第二控制单元进行存储的数据。该方法能够降低镜像访问时由于内存故障导致的OOM发生的概率。

Description

处理内存故障的方法与计算机***
技术领域
本申请涉及信息技术领域,并且更具体地,涉及处理内存故障的方法与计算机***。
背景技术
一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像(mirroring),镜像是冗余的一种类型。在存储控制设备上,镜像是由一个控制器将接收到的数据通过镜像通道在另一个控制器做副本。
当通过直接内存访问(direct memory access,DMA)方式进行镜像访问时,由于是直接访问内存的物理地址空间,一个控制器中的数据从该控制器的物理地址空间直接复制到另一个控制器中完全相同的地址空间。
如果另一个控制器的内存存在故障,当将数据写入该控制器中存在故障的内存时,则会导致内存溢出(out of memory,OOM)。
发明内容
本申请提供一种处理内存故障的方法,能够降低镜像访问时由于内存故障导致的OOM发生的概率。
第一方面,提供了一种处理内存故障的方法,应用于计算机***中,该计算机***包括处理单元、第一控制单元、第二控制单元,该第一控制单元与该第二控制单元均与该处理单元连接,包括:该第一控制单元确定该第一存储空间中存在故障的内存的地址,该第一存储空间是该第一控制单元中的存储空间,该第一存储空间能够存储该第二控制单元以直接内存访问DMA的方式在该第一控制单元中备份的数据;该第一控制单元将该第一存储空间中存在故障的内存的地址同步至该第二控制单元;该第二控制单元获取该第一存储空间中存在故障的内存的地址;该第二控制单元以DMA的方式将缓存在该第二控制单元中的该数据存储至该第一存储空间,并且在存储该数据时隔离该第一存储空间中存在故障的内存,其中,该数据是由该处理单元通过该第二控制单元进行存储的数据。
可选地,该第二控制单元以DMA的方式将缓存在该第二控制单元中的该数据存储至该第一存储空间,并且在存储该数据时隔离该第一存储空间中存在故障的内存,包括:该第二控制单元向该第二控制单元中的第二DMAC发送第二写数据指令,该第二写数据指令用于指示该第二DMAC将缓存在该第二控制单元中的该数据存储至该第一存储空间中,该第二写数据指令携带的目的地址所指示的存储空间为该第一存储空间中存在故障的内存之外的存储空间。
通过使本控(例如,第一控制单元)在OS启动之前或启动之后对支持进行DMA的存储空间进行故障检测,并将该存储空间中发生故障的内存的地址通知给对控(例如,第二控制单元),当对控在该存储空间中进行数据备份时,对该存储空间中存在故障的内存进行隔离,即,仅在本控中没有发生内存故障的存储空间中进行数据备份,从而降低发生OOM的概率。
结合第一方面,在第一方面的某些实现方式中,在该第二控制单元以DMA的方式将缓存在该第二控制单元中的该数据存储至该第一存储空间之前,该方法还包括:该第二控制单元将缓存在与该第一存储空间中存在故障的内存的地址对应的地址空间的数据,迁移到第二存储空间其它的存储空间中;其中,该第二存储空间是该第二控制单元中的存储空间。
在第二控制单元以DMA的方式将缓存在第二控制单元中的数据存储至第一存储空间之前,通过使第二控制单元将缓存在与第一存储空间中存在故障的内存的地址对应的地址空间的数据,迁移到第二存储空间其它的存储空间中,以使第二控制单元在将该数据存储至第一存储空间时,能够实现对第一存储空间中存在故障的内存的隔离,进而降低发生OOM的概率。
结合第一方面,在第一方面的某些实现方式中,该第一控制单元将该第一存储空间中存在故障的内存的地址同步至该第二控制单元,包括:该第一控制单元统计该第一存储空间中存在故障的内存的地址的数量;如果该数量小于或等于预设的阈值,该第一控制单元将该第一存储空间中存在故障的内存的地址同步至该第二控制单元。
在将第一存储空间中存在故障的内存的地址同步至对控之前,通过对第一存储空间中存在故障的内存的地址的数量进行统计,当该数量小于预设的阈值时,才将第一存储空间中存在故障的内存的地址同步至对控,否则将重新在本控内分配用于进行DMA的存储空间,避免在第一存储空间中的故障情况比较严重时,仍将存在故障的内存地址同步至对控所带来的资源浪费。
结合第一方面,在第一方面的某些实现方式中,该第一控制单元包括第一处理器与第一主板管理控制器BMC,该第二控制单元包括第二BMC,该将该第一存储空间中存在故障的内存的地址同步至该第二控制单元,包括:该第一处理器将该第一存储空间中存在故障的内存的地址写入该第一控制单元中预先分配的存储空间中;该第一BMC从该第一控制单元中预先分配的存储空间中获取该第一存储空间内存在故障的内存的地址;该第一BMC向该第二BMC发送第一报文,该第一报文中携带有该第一存储空间中存在故障的内存的地址。
结合第一方面,在第一方面的某些实现方式中,该第一控制单元还包括第一平台控制单元PCH与第一复杂可编程逻辑器件CPLD,该第一控制单元中预先分配的存储空间是该第一CPLD中的存储空间,该第一处理器将该第一存储空间中存在故障的内存的地址写入该第一控制单元中预先分配的存储空间中,包括:该第一处理器通过该第一PCH将该第一存储空间中存在故障的内存的地址写入该第一CPLD中的预先分配的存储空间中;该第一BMC从该第一控制单元中预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址,包括:该第一BMC从该第一CPLD中的预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址。
结合第一方面,在第一方面的某些实现方式中,该第一控制单元包括第一处理器与第一直接内存访问控制器DMAC,该第二控制单元包括第二处理器,该将该第一存储空间中存在故障的内存的地址同步至该第二控制单元,包括:该第一处理器向该第一DMAC发送第一写数据指令,该第一写数据指令中携带有该第一存储空间中存在故障的内存的地址在第二存储空间中的第一存储子空间中的存储地址,该第二存储空间为该第二控制单元中的存储空间,该第一存储子空间用于存储该第一存储空间中存在故障的内存的地址,该第二存储空间还包括第二存储子空间,该第二存储子空间用于存储该第一控制单元以DMA的方式在该第二控制单元中备份的数据;该第一DMAC根据该第一写数据指令,将该第一存储空间中存在故障的内存的地址存储至该存储地址在该第一存储子空间中对应的存储空间;该第一处理器向该第二处理器发送第二报文,该第二报文中携带有该第一存储空间中存在故障的内存的地址在该第一存储子空间中的存储地址。
通过将第一存储空间中存在故障的内存的地址通过DMA的方式同步至对控,从而提高故障同步的速度,使得对控能够及时发现本控中存在故障的内存的地址,在对本控的存储空间进行数据访问时,能够及时对发生故障的内存进行隔离,避免由于故障同步不及时导致对控对本控中存在故障的存储空间进行数据访问,进而导致发生OOM的情况。
结合第一方面,在第一方面的某些实现方式中,该第二控制单元包括第二处理器与第二BMC,该第二控制单元获取该第一存储空间中存在故障的内存的地址,包括:该第二BMC接收该第一BMC发送的该第一报文,该第一报文中携带有该第一存储空间中存在故障的内存的地址;该第二BMC对该第一报文进行解析,获取该第一存储空间中存在故障的内存的地址;该第二BMC将该第一存储空间中存在故障的内存的地址写入该第二控制单元中预先分配的存储空间中;该第二处理器从该第二控制单元中预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址。
结合第一方面,在第一方面的某些实现方式中,该第二控制单元还包括第二PCH与第二CPLD,该第二控制单元中预先分配的存储空间是该第二CPLD中的存储空间,该第二BMC将该第一存储空间中存在故障的内存的地址写入该第二控制单元中预先分配的存储空间中,包括:该第二BMC将该第一存储空间中存在故障的内存的地址写入该第二CPLD中的预先分配的存储空间中;该第二处理器从该第二CPLD中的预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址,包括:该第二处理器通过该第二PCH从该第二CPLD中的预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址。
结合第一方面,在第一方面的某些实现方式中,该第二控制单元包括第二处理器,该第二控制单元获取该第一存储空间中存在故障的内存的地址,包括:该第二处理器接收该第一处理器发送的该第二报文,该第二报文中携带有该第一存储空间中存在故障的内存的地址在该第一存储子空间中的存储地址;该第二处理器根据该第二报文,从该存储地址在该第一存储子空间中对应的存储空间获取该第一存储空间中存在故障的内存的地址。
结合第一方面,在第一方面的某些实现方式中,该第一控制单元确定该第一存储空间中存在故障的内存的地址,包括:该第一处理器对该第一存储空间进行可纠正错误ECC检测;该第一处理器根据对该第一存储空间进行ECC检测的检测结果,确定该第一存储空间中存在故障的内存的地址。
结合第一方面,在第一方面的某些实现方式中,该第一存储空间中存在故障的内存的地址包括该第一存储空间存在故障的内存所在的页帧的首地址。
结合第一方面,在第一方面的某些实现方式中,该计算机***还包括存储单元,该第一控制单元与该第二控制单元均与该存储单元连接,该方法还包括:处理单元通过第二控制单元将该数据存储至该存储单元。
第二方面,提供一种处理内存故障的装置,配置于计算机***中,该计算机***还包括处理单元,该装置与该处理单元连接,该装置包括第一控制单元与第二控制单元,第一控制单元用于执行上述第一方面或第一方面的任一可能的实现方式中由第一控制单元执行的方法的操作步骤,第二控制单元用于执行上述第一方面或第一方面的任一可能的实现方式中由第二控制单元执行的方法的操作步骤。
第三方面,提供一种计算机***,该计算机***包括处理单元与存储控制单元,存储控制单元与处理单元连接,存储控制单元包括:第一控制单元,用于确定第一存储空间中存在故障的内存的地址,该第一存储空间是该第一控制单元中的存储空间,该第一存储空间能够存储第二控制单元以直接内存访问DMA的方式在该第一控制单元中备份的数据;第一控制单元,还用于将该第一存储空间中存在故障的内存的地址同步至该第二控制单元;第二控制单元,用于获取该第一存储空间中存在故障的内存的地址;第二控制单元,还用于以DMA的方式将缓存在该第二控制单元中的该数据存储至该第一存储空间,并且在存储该数据时隔离该第一存储空间中存在故障的内存,其中,该数据是由该处理单元通过该第二控制单元进行存储的数据。
本申请提供的计算机***,通过使本控(例如,第一控制单元)在OS启动之前或启动之后对支持进行DMA的存储空间进行故障检测,并将该存储空间中发生故障的内存的地址通知给对控(例如,第二控制单元),当对控在该存储空间中进行数据备份时,对该存储空间中存在故障的内存进行隔离,即,仅在本控中没有发生内存故障的存储空间中进行数据备份,从而降低发生OOM的概率。
结合第三方面,在第三方面的某些实现方式中,第二控制单元,还用于在以DMA的方式将缓存在该第二控制单元中的该数据存储至该第一存储空间之前,将缓存在与该第一存储空间中存在故障的内存的地址对应的地址空间的数据,迁移到第二存储空间其它的存储空间中;其中,该第二存储空间是该第二控制单元中的存储空间。
在第二控制单元以DMA的方式将缓存在第二控制单元中的数据存储至第一存储空间之前,通过使第二控制单元将缓存在与第一存储空间中存在故障的内存的地址对应的地址空间的数据,迁移到第二存储空间其它的存储空间中,以使第二控制单元在将数据存储至第一存储空间时,能够实现对第一存储空间中存在故障的内存的隔离,进而降低发生OOM的概率。
结合第三方面,在第三方面的某些实现方式中,第一控制单元,还用于统计该第一存储空间中存在故障的内存的地址的数量;如果该数量小于或等于预设的阈值,将第一存储空间中存在故障的内存的地址同步至该第二控制单元。
在将第一存储空间中存在故障的内存的地址同步至对控之前,通过对第一存储空间中存在故障的内存的地址的数量进行统计,当该数量小于预设的阈值时,才将第一存储空间中存在故障的内存的地址同步至对控,否则将重新在本控内分配用于进行DMA的存储空间,避免在第一存储空间中的故障情况比较严重时,仍将存在故障的内存地址同步至对控所带来的资源浪费。
结合第三方面,在第三方面的某些实现方式中,第一控制单元包括第一处理器与第一主板管理控制器BMC,该第二控制单元包括第二BMC,第一处理器,用于将该第一存储空间中存在故障的内存的地址写入该第一控制单元中预先分配的存储空间中;第一BMC,用于从该第一控制单元中预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址;第一BMC,还用于向该第二BMC发送第一报文,该第一报文中携带有该第一存储空间中存在故障的内存的地址。
结合第三方面,在第三方面的某些实现方式中,该第一控制单元还包括第一平台控制单元PCH与第一复杂可编程逻辑器件CPLD,该第一控制单元中预先分配的存储空间是该第一CPLD中的存储空间,第一处理器,还用于通过该第一PCH将该第一存储空间中存在故障的内存的地址写入该第一CPLD中的预先分配的存储空间中;第一BMC,还用于从该第一控制单元中预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址,包括:第一BMC,还用于从该第一CPLD中的预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址。
结合第三方面,在第三方面的某些实现方式中,该第一控制单元包括第一处理器与第一直接内存访问控制器DMAC,该第二控制单元包括第二处理器,第一处理器,还用于向该第一DMAC发送第一写数据指令,该第一写数据指令中携带有该第一存储空间中存在故障的内存的地址在第二存储空间中的第一存储子空间中的存储地址,该第二存储空间为该第二控制单元中的存储空间,该第一存储子空间用于存储该第一存储空间中存在故障的内存的地址,该第二存储空间还包括第二存储子空间,该第二存储子空间用于存储该第一控制单元以DMA的方式在该第二控制单元中备份的数据;第一DMAC,用于根据该第一写数据指令,将该第一存储空间中存在故障的内存的地址存储至该存储地址在该第一存储子空间中对应的存储空间;第一处理器,还用于向该第二处理器发送第二报文,该第二报文中携带有该第一存储空间中存在故障的内存的地址在该第一存储子空间中的存储地址。
通过将第一存储空间中存在故障的内存的地址通过DMA的方式同步至对控,从而提高故障同步的速度,使得对控能够及时发现本控中存在故障的内存的地址,在对本控的存储空间进行数据访问时,能够及时对发生故障的内存进行隔离,避免由于故障同步不及时导致对控对本控中存在故障的存储空间进行数据访问,进而导致发生OOM的情况。
结合第三方面,在第三方面的某些实现方式中,第二控制单元包括第二处理器与第二BMC,第二BMC,用于接收该第一BMC发送的该第一报文,该第一报文中携带有该第一存储空间中存在故障的内存的地址;第二BMC,还用于对该第一报文进行解析,获取该第一存储空间中存在故障的内存的地址;第二BMC,还用于将该第一存储空间中存在故障的内存的地址写入该第二控制单元中预先分配的存储空间中;第二处理器,用于从该第二控制单元中预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址。
结合第三方面,在第三方面的某些实现方式,第二控制单元还包括第二PCH与第二CPLD,该第二控制单元中预先分配的存储空间是该第二CPLD中的存储空间,第二BMC,还用于将该第一存储空间中存在故障的内存的地址写入该第二CPLD中的预先分配的存储空间中;该第二处理器,还用于通过该第二PCH从该第二CPLD中的预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址。
结合第三方面,在第三方面的某些实现方式中,第二控制单元包括第二处理器,第二处理器,还用于接收该第一处理器发送的该第二报文,该第二报文中携带有该第一存储空间中存在故障的内存的地址在该第一存储子空间中的存储地址;第二处理器,还用于根据该第二报文,从该存储地址在该第一存储子空间中对应的存储空间获取该第一存储空间中存在故障的内存的地址。
结合第三方面,在第三方面的某些实现方式中,该第一存储空间中存在故障的内存的地址包括该第一存储空间存在故障的内存所在的页帧的首地址。
结合第三方面,在第三方面的某些实现方式中,该第一处理器,还用于对第一存储空间进行可纠正错误ECC检测;根据对该第一存储空间进行ECC检测的检测结果,确定该第一存储空间中存在故障的内存的地址。
结合第三方面,在第三方面的某些实现方式中,第二控制单元,还用于向该第二控制单元中的第二DMAC发送第二写数据指令,该第二写数据指令用于指示该第二DMAC将缓存在该第二控制单元中的该数据存储至该第一存储空间中,该第二写数据指令携带的目的地址所指示的存储空间为该第一存储空间中存在故障的内存之外的存储空间。
结合第三方面,在第三方面的某些实现方式中,计算机***还包括存储单元,第一控制单元与第二控制单元均与该存储单元连接,处理单元,还用于通过第二控制单元将该数据存储至存储单元。
需要说明的是,在该计算机***中,处理单元、存储控制单元与存储单元可以由同一个计算设备实现;或者,处理单元、存储控制单元与存储单元可以分别由独立的三个设备实现,例如,处理单元可以由独立的服务器实现,存储控制单元可以由独立的存储控制设备实现,存储单元可以由独立的存储设备实现,服务器、存储控制设备与存储设备之间可以通过网络连接。或者,处理单元与存储控制单元可以由一个独立的计算设备实现,存储单元可以由另一个独立的计算设备实现。或者,存储控制单元与存储单元可以由一个独立的计算设备实现,处理单元可以由另一个独立的计算设备实现。
第四方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行第一方面或第一方面的任一可能的实现方式中的方法。
第五方面,提供一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得计算机执行第一方面或第一方面的任一可能的实现方式中的方法。
附图说明
图1是本申请提供的计算机***的示意性框图。
图2是本申请提供的计算机***的另一示意性框图。
图3是本申请提供的计算机***的另一示意性框图。
图4是本申请提供的DMA传输过程的示意性流程图。
图5是本申请提供的处理内存故障的方法的示意***互流程图。
图6是本申请提供的同步存在故障的内存的地址时,存在故障的内存的地址在计算机***中的流向示意图。
图7是本申请提供的计算机***的另一示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
首先结合图1对计算机***100进行介绍。
如图1所示,计算机***100包括处理单元101、存储控制单元102与存储单元103。
存储控制单元102内部部署有第一控制单元1021与第二控制单元1022,第一控制单元内部部署有中央处理器(central processing unit,CPU)10211与存储器10212,第二控制单元内部部署有CPU10221与存储器10222。
其中,存储器10212与存储器10222可以为第三代双倍速率同步动态随机存储器(double data rate SDRAM,DDR SDRAM)。
第一控制单元1021与处理单元101之间通过前端接口10213(例如,处理器10211与处理单元101之间的接口)通信,第二控制单元1022与处理单元101之间通过前端端口10223(例如,处理器10221与处理单元101之间的接口)通信,第一控制单元1021与第二存储控制单元1022之间通过镜像接口10214与镜像接口10224通信,第一控制单元1021与存储单元103之间通过后端接口10215(例如,处理器10211与存储单元103之间的接口)通信,第二控制单元1022与存储单元103之前通过后端接口10225(例如,处理器10221与存储设备103之间的接口)通信。
作为示例而非限定,在计算机***100中,处理单元101、存储控制单元102与存储单元103可以由同一个计算设备实现;或者,处理单元101、存储控制单元102与存储单元103可以分别由独立的三个设备实现,例如,处理单元101可以由独立的服务器实现,存储控制单元102可以由独立的存储控制设备实现,存储单元103可以由独立的存储设备实现,服务器、存储控制设备与存储设备之间可以通过网络连接;或者,处理单元101与存储控制单元102可以由一个独立的计算设备实现,存储单元103可以由另一个独立的计算设备实现;或者,存储控制单元102与存储单元103可以由一个独立的计算设备实现,处理单元101可以由另一个独立的计算设备实现。
其中,处理单元101在具体实现时可以为处理器或包含处理器的计算机设备,存储单元103在具体实现时可以为固态硬盘(solid state drives,SSD)或包含SSD的存储设备。
下面以处理单元101位于服务器中、存储控制单元102位于存储控制设备中、存储单元103位于存储设备中为例,对镜像存储的一般方法进行介绍。
当处理单元101位于服务器中、存储控制单元102位于存储控制设备中、存储单元103位于存储设备中时,相应的计算机***100示意性框图如图2所示。
第一控制单元1021中的处理器10211将从处理单元101接收的数据存储至存储器10212,再将该数据通过第二控制单元1022中的处理器10221存储至存储器10222,其中,该数据被存储在存储器10212与存储器10222中完全相同的地址空间。即,在第二控制单元中对该数据进行备份。
之所以将数据存储至两个完全相同的地址空间,是为了保证由于其中一个控制单元发生故障导致存储在该控制单元中的数据丢失时,在另一个控制单元中还能保存一份完全相同的数据。
最终由处理器10211将存储器10212中缓存的数据保存至存储单元103中;或者,由处理器10221将存储器10222中缓存的与存储器10212中完全相同的数据保存至存储单元103。
下面对直接内存访问(direct memory access,DMA)进行介绍。
DMA是一种硬件机制,它允许***设备和主内存之间直接传输它们的输入/输出(input/output,I/O)数据,而不需要处理器的参与,使用这种机制可以大大提高与设备通信的吞吐量。
例如,当使用DMA机制进行数据访问时,需要在第一控制单元1021与第二控制单元1022中分别增加直接内存访问控制器(direct memory access controller,DMAC)10216与DMAC10226,如图3所示。
此时,无需第一控制单元1021中的处理器10211将该数据通过第二控制单元1022中的处理器10221存储至存储器10222,而是由第一控制单元1021中的DMAC10216直接对第二控制单元中1022中的存储器10222进行访问,将该数据存储至第二控制单元中1022中的存储器10222。
一个完整的DMA传输过程主要包括以下几个步骤,图4示出了DMA传输过程的示意性流程图,下面分别进行说明。
(1)DMA请求
处理器对DMAC初始化,并向I/O接口发出操作命令,I/O接口向DMAC提出DMA请求。DMAC接到请求后,向处理器发出请求,并且将请求信号加到处理器的保持(HOLD)请求输入端上。
(2)DMA响应
处理器接到请求后对DMAC做出回应,将其响应信号加到DMAC的保持认可(holdacknowledge,HLDA)响应输出端上,同时向DMAC预置待访问的存储空间的首地址、交换数据个数以及读写命令,并且放弃对***总线的控制权,此时,DMAC获得***总线的控制权。
(3)DMA传输
DMAC获得***总线的控制权后,处理器即刻挂起或只执行内部操作,由DMAC进行数据传输。
(4)DMA结束
当完成规定的成批数据传送后,DMAC即释放总线控制权,并向I/O接口发出结束信号。
由此可见,DMA传输方式无需处理器直接控制传输,使处理器的效率大为提高。
然而,对于图3所示的计算机***而言,当通过DMA传输方式进行镜像存储时,由于数据需要被存储至存储器10212与存储器10222中完全相同的物理地址空间,例如,DMAC10216将数据从存储器10212物理地址空间直接复制到存储器10222中完全相同的物理地址空间。
如果存储器10222中的内存空间存在故障,而DMAC10216将数据从存储器10212物理地址空间直接复制到存储器10222中完全相同的物理地址空间时,并不感知存储器10222中的内存故障情况,当存储器10212将数据写入存储器10222中存在故障的内存空间时,则会导致内存溢出(out of memory,OOM)。
所谓内存溢出,通常是内存不足以存储需要存储的数据的情况。例如,通常在运行大型软件或游戏时,软件或游戏所需要的内存远远超出了主机内安装的内存所承受的大小,就叫内存溢出。此时,软件或游戏便无法运行,***会提示内存溢出。
针对该问题,本发明实施例提出了一种处理内存故障的方法,通过使本控(例如,第一控制单元)在OS启动之前或启动之后对支持进行DMA的存储空间进行故障检测,并将该存储空间中发生故障的内存的地址通知给对控(例如,第二控制单元),以使对控在该存储空间中进行数据备份时,能够对发生故障的内存进行隔离,从而降低发生OOM的概率。
下面对本发明实施例提供的处理内存故障的方法200进行介绍。图5示出了该方法的示意***互流程图。该方法200可以应用于计算机***100中。
201,第一控制单元确定第一存储空间中存在故障的内存的地址,第一存储空间是第一控制单元中的存储空间,第一存储空间能够存储第二控制单元以直接内存访问DMA的方式在第一控制单元中备份的数据。
具体地,第一控制单元(例如,第一控制单元1021)确定存储器10212中被配置为能够存储第二控制单元(例如,第二控制单元1022)以DMA的方式在第一控制单元1021中备份的数据的存储空间(例如,第一存储空间)中存在故障的内存的地址。
作为示例而非限定,第一控制单元确定该第一存储空间中存在故障的内存的地址,包括:第一处理器对该第一存储空间进行可纠正错误(error correcting check,ECC)检测;该第一处理器根据对该第一存储空间进行ECC检测的检测结果,确定该第一存储空间中存在故障的内存的地址。
具体地,第一控制单元1021中的处理器10211(例如,第一处理器)在计算机***上电时(即,在基本输入输出***(basic input output system,BIOS)启动期间),对存储器10212中的第一存储空间进行ECC检测,即,ECC检测发生在操作***OS启动之前。根据对第一存储空间进行ECC检测的检测结果,确定第一存储空间中存在故障的内存的地址。
此外,处理器10211还可以在OS启动之后对第一存储空间进行检测,即,ECC检测还可以发生在操作***OS启动之后。
处理器10211可以以字节为最小单位对第一存储空间进行检测;或者,还可以以一定数量的比特为最小单位进行检测。
例如,处理器10211对第一存储空间以字节为单位进行ECC检测,经过检测,处理器10211确定第一存储空间中存在故障的内存的位置为索引号为4、7、9的字节对应的内存的位置。
当对第一存储空间进行分页管理时,可以对第一存储空间进行分页ECC检测。所谓分页管理,是指将第一存储空间中的若干字节视为一页(page),例如,每页包括4千比特(Kbyte),此时,第一存储空间变成了连续的页,即第一存储空间为页数组,每一页物理内存叫页帧,以页为最小单位对第一存储空间进行编号,该编号可作为页数组的索引号,又称为页帧号。
即,当对第一存储空间进行分页管理时,可以以分页为单位对第一存储空间进行ECC检测。
例如,处理器10211对第一存储空间以分页为单位进行ECC检测,经过检测,处理器10211确定第一存储空间中存在故障的内存的位置为页帧号为3、8、10、11的分页对应的内存的位置。
需要说明的是,上述的通过对第一存储空间进行ECC检测,从而确定第一存储空间中存在故障的内存的位置的方案仅为示例性说明,并不对本发明实施例构成任何限定,通过其他检测方法确定第一存储空间中存在故障的内存的位置的方案均落入本发明实施例的保护范围内。
202,第一控制单元将第一存储空间中存在故障的内存的地址同步至第二控制单元。
具体地,处理器10211确定了第一存储空间中存在故障的内存的地址,将第一存储空间中存在故障的内存的地址同步至第二控制单元1022中处理器10221(例如,第二处理器)中。
例如,处理器10211检测到第一存储空间中存在故障的内存为一段连续的存储空间,则处理器10211可以将该段连续的存储空间的起始地址与结束地址同步至处理器10221中。
再例如,处理器10211检测到第一存储空间内的索引号为6的字节至索引号为8的字节均存在故障,则处理器10211将索引号为6的字节至索引号为8的字节对应的存储空间的起始地址与结束地址同步至处理器10221中。
再例如,处理器10211检测到第一存储空间中存在故障的内存为若干离散的字节,则处理器10211可以将若干个字节对应的内存的地址同步至处理器10221中。
此外,处理器10211同步至处理器10221中的第一存储空间中存在故障的内存的地址还可以是该第一存储空间中存在故障的内存所在的页帧的首地址。
具体地,当对第一存储空间进行分页管理时,处理器10211将检测到的第一存储空间中存在故障的内存所在的分页的首地址同步至处理器10221中。
例如,处理器10211检测到的第一存储空间中存在故障的内存所在的页帧号为1、2、4的分页的首地址同步至处理器10221中。
需要说明的是,当处理器10211对第一存储空间进行的ECC检测发生在BIOS启动期间时,如果处理器10211确定第一存储空间中的内存存在故障时,可以立即将第一存储空间中存在故障的内存的地址同步至处理器10221中。
此外,处理器10211还可以在将第一存储空间中存在故障的内存的地址同步至处理器10221中之前,先对第一存储空间中存在故障的内存的地址的数量进行统计,并将该数量与预设的阈值进行比较:
当该数量小于或等于预设的阈值时,处理器10211将第一存储空间中存在故障的内存的地址同步至处理器10221;
当该数量大于预设的阈值时,处理器10211在存储器10212中重新分配用于进行DMA的存储空间。
例如,处理器10211以字节为最小单位对第一存储空间进行检测,预设的阈值为10字节,经过检测,处理器10211确定第一存储空间中存在故障的内存的地址的数量为12字节,由于第一存储空间中存在故障的内存的地址的数量大于预设的阈值,则处理器10211在存储器10212内重新分配能够存储第二控制单元1022以DMA的方式在第一控制单元1021中备份的数据的存储空间。
需要说明的是,在本发明实施例中,处理器10211在存储器10212内重新分配的该存储空间通常是无故障的存储空间。
但是在后续运行中,重新分配的该存储空间有可能会出现故障,因此,处理器10211可以对该重新分配的存储空间进行检测,在检测到该重新分配的存储空间中的内存存在故障时,处理器10211可以将该重新分配的存储空间中的内存的地址同步至处理器10221。
在将第一存储空间中存在故障的内存的地址同步至对控之前,通过对第一存储空间中存在故障的内存的地址的数量进行统计,当该数量小于预设的阈值时,才将第一存储空间中存在故障的内存的地址同步至对控,否则在本控内重新分配能够存储对控以DMA的方式在本控中备份的数据的存储空间,避免在第一存储空间的内存故障情况比较严重时,仍将存在故障的内存地址同步至对控所带来的资源浪费。
203,第二控制单元获取第一存储空间中存在故障的内存的地址。
具体地,处理器10221获取处理器10211同步至处理器10221中的第一存储空间中存在故障的内存的地址,将第一存储空间中存在故障的内存的地址写入隔离地址表,该隔离地址表可以存储在存储器10222中。
例如,处理器10221获取的第一存储空间中存在故障的内存的地址为一段连续的存储空间的起始地址与结束地址,该段连接的存储空间为索引号为6的字节至索引号为8的字节对应的存储空间,处理器10221将该段连续的存储空间的起始地址与结束地址写入隔离地址表,即,处理器10221对第一存储空间中存在故障的内存进行标记。
205,第二控制单元以DMA的方式将缓存在第二控制单元中的数据存储至第一存储空间,并且在存储该数据时隔离第一存储空间中存在故障的内存,其中,该数据是由处理单元通过第二控制单元进行存储的数据。
可选地,第二控制单元以DMA的方式将缓存在第二控制单元中的数据存储至第一存储空间中存在故障的内存之外的存储空间,包括:第二控制单元向第二控制单元中的第二DMAC发送第二写数据指令,第二写数据指令用于指示第二DMAC将缓存在第二控制单元中的数据存储至第一存储空间中,第二写数据指令携带的目的地址所指示的存储空间为第一存储空间中存在故障的内存之外的存储空间。
具体地,如果处理器10221需要将数据在存储器10212中进行备份,处理器10221首先查看隔离地址表,根据隔离地址表中记录的第一存储空间中存在故障的内存的地址,确定第一存储空间中可以用于进行DMA的内存的地址。
处理器10221可以向DMAC10226(例如,第二DMAC)发送写数据访问指令(例如,第二写数据指令),该数据访问指令中携带的目的地址不包括第一存储空间中存在故障的内存的地址,即,处理器10221对第一存储空间中存在故障的内存进行隔离。
当DMAC10226获得总线控制权后,根据第二写数据指令携带的目的地址,将第二写数据指令中携带的数据以DMA的方式写入第一存储空间中的该目的地址所指示的存储位置。
例如,处理器10221确定第一存储空间中存在故障的内存空间为一段连续的存储空间,该段连续的存储空间为索引号为6的字节至索引号为8的字节对应的存储空间。
假设处理器10221将从服务器接收的数据缓存在存储器10222中的索引号为4的字节对应的存储空间,则处理器10221可以向DMAC10226发送第二写数据指令,第二写数据指令中携带的目的地址可以对应第一存储空间中的索引号为4的字节对应的存储空间。
当DMAC10226获得总线控制权后,根据该第二写数据指令中携带的目的地址,将该数据以DMA的方式写入第一存储空间中的索引号为4的字节对应的存储空间。
可选地,在第二控制单元以DMA的方式将缓存在第二控制单元中的数据存储至第一存储空间之前,方法200还包括:
204,第二控制单元将缓存在与第一存储空间中存在故障的内存的地址对应的地址空间的数据,迁移到第二存储空间其它的存储空间中;其中,该第二存储空间是该第二控制单元中的存储空间。
具体地,在处理器10221以DMA的方式将缓存在第二控制单元中的数据存储至第一存储空间之前,处理器10221还要确定该数据在存储器10222中的存储地址与第一存储空间中存在故障的内存的地址是否相同:
如果该数据在存储器10222中的存储地址与第一存储空间中存在故障的内存的地址完全不同,则处理器10221可以将该数据存储至第一存储空间中与该数据在第二控制单元中的存储地址相同的存储空间;
如果该数据在存储器10222中的存储地址与第一存储空间中存在故障的内存的地址对应时,此处的该数据在存储器10222中的存储地址与第一存储空间中存在故障的内存的地址对应,包括数据在存储器10222中的部分存储地址或全部存储地址与第一存储空间中存在故障的内存的地址对应。
当数据在存储器10222中的部分存储地址与第一存储空间中存在故障的内存的地址对应时,处理器10221可以将该部分存储地址对应的存储空间中存储的该数据迁移至该第二控制单元中与该第一存储空间中存在故障的内存地址不同的存储地址对应的存储空间。例如,将该数据迁移到第二控制单元中的第二存储空间的其他的存储空间,或者,处理器10221还可以将该全部存储地址对应的存储空间中存储的该数据均进行迁移,本发明实施例对此不作特别限定。
下面针对数据在存储器10222中的部分存储地址或全部存储地址与第一存储空间中存在故障的内存的地址对应的情况分别进行举例说明。
例如,处理器确定第一存储空间中存在故障的内存为若干离散的字节,该若干离散的字节的索引号可以为2、6、8、9。
假设处理器10221将从服务器接收的数据缓存在存储器10222中的索引号为6的字节对应的存储空间,即该数据在存储器10222中的存储地址(索引号为6的字节)与第一存储空间中存在故障的内存的地址(索引号为6的字节)对应,由于该数据需要存储在第一控制单元与第二控制单元中完全相同的地址空间,然而,第一存储空间中索引号为6的字节对应的存储空间存在故障。
此时,处理器10221需要将数据在存储器10222中进行迁移,例如,处理器10221将该数据从索引号为6的字节对应的存储空间迁移至索引号为7的字节对应的存储空间,处理器10221向DMAC10226发送的第二写数据指令中携带的目的地址对应第一存储空间中的索引号为7的字节对应的存储空间。即,对第一存储空间中存在故障的内存进行隔离。
DMAC10226根据该第二写数据指令中携带的目的地址,将该数据以DMA的方式写入第一存储空间中的索引号为7的字节对应的存储空间。
再例如,处理器确定第一存储空间中存在故障的内存为若干离散的字节,该若干离散的字节的索引号可以为4、5、6、9。
假设处理器10221将从服务器接收的数据缓存在存储器10222中的索引号为6的字节、索引号为7的字节以及索引号为8的字节对应的存储空间,即,索引号为6的字节、索引号为7的字节以及索引号为8的字节对应的存储空间中分别存储了该数据,该数据在存储器10222中的部分存储地址(索引号为6的字节)与第一存储空间中存在故障的内存的地址(索引号为6的字节)对应,由于该数据需要存储在第一控制单元与第二控制单元中完全相同的地址空间,然而,第一存储空间中索引号为6的字节对应的存储空间存在故障。
此时,处理器10221需要将数据在存储器10222中进行迁移,例如,处理器10221将该索引号为6的字节对应的存储空间存储的该数据的迁移至索引号为3的字节对应的存储空间,处理器10221向DMAC10226发送的第二写数据指令中携带的目的地址对应第一存储空间中的索引号为3的字节、索引号为7的字节以及索引号为8的字节对应的存储空间。即,对第一存储空间中存在故障的内存进行隔离。需要说明的是,处理器10221在对数据进行迁移时,可以仅将索引号为6的字节对应存储空间中存储的该数据进行迁移。作为另外一种实现方式,为保证该数据存储地址的连续性,也可以将索引号为6的字节、索引号为7的字节以及索引号为8的字节对应的存储空间中分别存储的该数据均进行迁移,本发明实施例对此不作特别限定。例如,处理器10221将该索引号为6的字节、索引号为7的字节以及索引号为8的字节对应的存储空间中分别存储的该数据迁移至索引号为1的字节至索引号为3的字节对应的存储空间。由于索引号为1的字节至索引号为3的字节对应的存储空间没有出现故障,处理器10221向DMAC10226发送的第二写数据指令中携带的目的地址对应第一存储空间中的索引号为1至索引号为3的字节对应的存储空间,即实现了对第一存储空间中存在故障的内存进行隔离。
DMAC10226根据该第二写数据指令中携带的目的地址,将该数据以DMA的方式写入第一存储空间中的索引号为1的字节至索引号为3的字节对应的存储空间。
再例如,当对存储空间进行分页管理时,处理器10221确定第一存储空间中存在故障的内存所在的分页的首地址分别为d1、d3、d5
假设处理器10221将从服务器接收的数据缓存在存储器10222中的首地址为d5的分页中,由于该数据需要存储在第一控制单元与第二控制单元中完全相同的地址空间,然而,第一存储空间中的首地址为d5的分页存在故障。
此时,处理器10221需要将数据在存储器10222中进行迁移,例如,处理器10221将该数据从首地址为d5的分页迁移至首地址为d4的分页中的索引号为8的字节对应的存储空间,处理器10221向DMAC10226发送的第二写数据指令中携带的目的地址对应第一存储空间中的首地址为d4的分页中的索引号为8的字节对应的存储空间。即,对第一存储空间中存在故障的内存进行隔离。
DMAC10226根据该第二写数据指令中携带的目的地址,将该数据以DMA的方式写入第一存储空间中的首地址为d4的分页中的索引号为8的字节对应的存储空间。
需要说明的是,上述列举的数据在存储器10222中的迁移前或迁移后的存储地址,例如d4的分页中的索引号为8的字节对应的存储空间,仅为示例性说明,并不对本发明实施例构成任何限定。
此外,在本发明实施例中,处理器10211还可以对第一存储空间中存在故障的内存进行重复检测,若发现原本存在故障的内存已经恢复,则判定该原本存在故障的内存为软失效,进而可以将第一存储空间中已经恢复故障的内存的地址同步至处理器10221。
通过使本控(例如,第一控制单元)在OS启动之前或启动之后对支持进行DMA的存储空间进行故障检测,并将该存储空间中发生故障的内存的地址通知给对控(例如,第二控制单元),以使对控在该存储空间中进行数据备份时,能够对发生故障的内存进行隔离,从而降低发生OOM的概率。
下面以分别以ECC检测发生在计算机***上电时或ECC检测发生在OS启动之后,对处理器10211将第一存储空间中存在故障的内存的地址同步至处理器10221中的方法以及处理器10221获取该第一存储空间中存在故障的内存的地址的方法进行说明。
场景1:ECC检测发生在计算机***上电时,且第一存储空间中存在故障的内存的地址的数量小于或等于预设的阈值。
第一控制单元包括第一处理器与第一主板管理控制器(baseboard managementcontroller,BMC),第二控制单元包括第二BMC,将第一存储空间中存在故障的内存的地址同步至第二控制单元,包括:第一处理器将第一存储空间中存在故障的内存的地址写入第一控制单元中预先分配的存储空间中;第一BMC从第一控制单元中预先分配的存储空间中获取第一存储空间中存在故障的内存的地址;第一BMC向第二BMC发送第一报文,第一报文中携带有第一存储空间中存在故障的内存的地址。
第二控制单元包括第二处理器与第二BMC,第二控制单元获取第一存储空间中存在故障的内存的地址,包括:第二BMC接收第一BMC发送的第一报文,第一报文中携带有第一存储空间中存在故障的内存的地址;第二BMC对第一报文进行解析,获取第一存储空间中存在故障的内存的地址;第二BMC将第一存储空间中存在故障的内存的地址写入第二控制单元中预先分配的存储空间中;第二处理器从第二控制单元中预先分配的存储空间中获取第一存储空间中存在故障的内存的地址。
具体地,处理器10211在对第一存储空间进行ECC检测时,在检测到第一存储空间中存在故障的内存时,将检测到的第一存储空间中存在故障的内存的地址写入第一控制单元1021中预先分配的存储空间中,该第一控制单元1021中预先分配的存储空间可以是存储器10212中的存储空间,或者,该第一控制单元1021中预先分配的存储空间还可以是第一控制单元1021中的复杂可编程逻辑器件(complex programmable logic device,CPLD)10218(例如,第一CPLD)中的存储空间。
第一控制单元1021中的BMC10219(例如,第一BMC)从第一控制单元1021中的预先分配的存储空间中获取第一存储空间中存在故障的内存的地址,BMC10219将获取到的第一存储空间中存在故障的内存的地址封装在报文(例如,第一报文)中,并通过心跳通道将该报文传输至第二控制单元1022中BMC10229(例如,第二BMC),其中,该报文可以为以太网报文。
BMC10229将接收到的报文进行解析,获取该报文中携带的第一存储空间中存在故障的内存的地址,并将该第一存储空间中存在故障的内存的地址写入第二控制单元1022中预先分配的存储空间中,该第二控制单元1022中预先分配的存储空间可以是存储器10222中的存储空间,或者,该第二控制单元1021中预先分配的存储空间还可以是第二控制单元1022中的CPLD10228(例如,第二CPLD)中的存储空间。
处理器10212从该第二控制单元1022中预先分配的存储空间中获取第一存储空间中存在故障的内存的地址。
下面以第一控制单元1021中预先分配的存储空间是CPLD10218中的存储空间,并且第二控制单元1022中预先分配的存储空间是CPLD10228中的存储空间为例,对处理器10211将第一存储空间中存在故障的内存的地址同步至处理器10221中的方法以及处理器10221获取该第一存储空间中存在故障的内存的地址的方法进行详细说明。
当第一控制单元1021中预先分配的存储空间是CPLD10218中的存储空间时,第一控制单元1021中还包括平台控制单元(platform controller hub,PCH)10217(例如,第一PCH),其中,PCH 10217为处理器10211与CPLD10218之间进行通信的接口;当第二控制单元1022中预先分配的存储空间是CPLD10227中的存储空间时,第二控制单元1022中还包括平台控制单元(platform controller hub,PCH)10227(例如,第一PCH),其中,PCH 10227为处理器10221与CPLD10228之间进行通信的接口。
如图6所示,图6中的PCH10217与图1至图3中所示的处理器10211连接,CPLD10218分别与PCH10217、BMC10219连接,PCH10227与图1至图3中所示的处理器10221连接,CPLD10228分别与PCH10227、BMC10229连接。其中,PCH也可称为桥片。
处理器10211在对第一存储空间进行ECC检测时,在检测到第一存储空间中存在故障的内存时,将检测到的第一存储空间中存在故障的内存的地址通过PCH10217写入CPLD10218中的预先分配的存储空间中,该存储空间专用于存储第一存储空间中存在故障的内存的地址,并且,PCH10217与BMC10219均能够获知该存储空间的地址。
CPLD10218向BMC10219上报中断,此时,BMC10219便会从CPLD10218中的预先分配的存储空间中获取第一存储空间中存在故障的内存的地址。
当BMC10219从CPLD10218中的预先分配的存储空间中成功获取到第一存储空间中存在故障的内存的地址后,BMC10219便会在CPLD10218中预先分配的存储空间中写入默认的字段(例如,写入全0或全1),即对该CPLD10218中预先分配的存储空间中存储的第一存储空间中存在故障的内存的地址进行擦除,以便PCH10217将后续检测到的第一存储空间中存在故障的内存的地址写入CPLD10218中的预先分配的存储空间。
此外,BMC10219还可以通过轮询的方式从CPLD10218中的预先分配的存储空间中获取第一存储空间中存在故障的内存的地址,例如,BMC10219可以对CPLD10218中的预先分配的存储空间进行周期性的监控,当该预先分配的存储空间中被写入新的信息时,BMC10219便可以从CPLD10218中的预先分配的存储空间中获取第一存储空间中存在故障的内存的地址。
同样地,当BMC10219从CPLD10218中的预先分配的存储空间中成功获取到第一存储空间中存在故障的内存的地址后,便会对该CPLD10218中预先分配的存储空间中存储的第一存储空间中存在故障的内存的地址进行擦除。
BMC10219将获取到的第一存储空间中存在故障的内存的地址封装在报文(例如,第一报文)中,并通过心跳通道将该报文传输至BMC10229,其中,该报文可以为以太网报文。
BMC10229将接收到的报文进行解析,获取该报文中携带的第一存储空间中存在故障的内存的地址,并将该第一存储空间中存在故障的内存的地址写入CPLD10228中预先分配的存储空间中,由CPLD10228向PCH10227上报中断,PCH10227从CPLD10228中的预先分配的存储空间中获取第一存储空间中存在故障的内存的地址,并将第一存储空间中存在故障的内存的地址发送至处理器10221。
当PCH10227从CPLD10228中的预先分配的存储空间中成功获取到第一存储空间中存在故障的内存的地址后,PCH10227便会在CPLD10228中预先分配的存储空间中写入默认的字段(例如,写入全0或全1),即对该CPLD10228中预先分配的存储空间中存储的第一存储空间中存在故障的内存的地址进行擦除,以便BMC10229将后续检测到的第一存储空间中存在故障的内存的地址写入CPLD10228中的预先分配的存储空间。
此外,PCH10227还可以通过轮询的方式从CPLD10228中的预先分配的存储空间中获取第一存储空间中存在故障的内存的地址,例如,PCH10227可以对CPLD10228中的预先分配的存储空间进行周期性的监控,当该预先分配的存储空间中被写入新的信息时,PCH10227便可以从CPLD10228中的预先分配的存储空间中获取第一存储空间中存在故障的内存的地址。
同样地,当PCH10227从CPLD10228中的预先分配的存储空间中成功获取到第一存储空间中存在故障的内存的地址后,便会对该CPLD10228预先分配的存储空间中存储的第一存储空间中存在故障的内存的地址进行擦除。
需要说明的是,处理器10211除了按照上述描述的方式将第一存储空间中存在故障的内存的地址同步至处理器10221以外,还可以由PCH10217将第一存储空间中存在故障的内存的地址封装在报文中,将该报文发送至PCH10227,PCH10227对该报文进行解析后,将获得的第一存储空间中存在故障的内存的地址发送至处理器10221。
场景2:ECC检测发生在OS启动之后。
第一控制单元包括第一处理器与第一直接内存访问控制器DMAC,第二控制单元包括第二处理器,将第一存储空间中存在故障的内存的地址同步至第二控制单元,包括:第一处理器向第一DMAC发送第一写数据指令,第一写数据指令中携带有第一存储空间中存在故障的内存的地址信息在第二存储空间中的第一存储子空间中的存储地址,第二存储空间为第二控制单元中的存储空间,第一存储子空间用于存储第一存储空间中存在故障的内存的地址,第二存储空间还包括第二存储子空间,第二存储子空间用于存储第一控制单元以DMA的方式在第二控制单元中备份的数据;第一DMAC根据第一写数据指令,将第一存储空间中存在故障的内存的地址存储至第一存储子空间;第一处理器向第二处理器发送第二报文,第二报文中携带有第一存储空间中存在故障的内存的地址信息在第一存储子空间中的存储地址。
第二控制单元包括第二处理器,第二控制单元获取第一存储空间中存在故障的内存的地址,包括:第二处理器接收第一处理器发送的第二报文,第二报文中携带有第一存储空间中存在故障的内存的地址信息在第一存储子空间中的存储地址;第二处理器根据第二报文中的存储地址,从第一存储子空间中获取第一存储空间中存在故障的内存的地址。
具体地,当OS***启动之后,处理器10211还可以继续对第一存储空间进行ECC检测,经过检测,如果处理器10211发现第一存储空间中包括存在故障的内存,则处理器10211可以将第一存储空间中存在故障的内存的地址以DMA的方式同步至存储器10222中被配置为用于存储第一存储空间中存在故障的内存的地址的存储空间(例如,第二存储空间中的第一存储子空间)。
例如,处理器10211可以将第一存储空间中存在故障的内存的地址以DMA的方式同步至存储器10222中的第一存储子空间,即由处理器10211中的DMAC10216(例如,第一DMAC)以DMA的方式对存储器10222中的第一存储子空间进行访问,将第一存储空间中存在故障的内存的地址写入存储器10222中的第一存储子空间。
其中,第一存储子空间可以是在BIOS阶段在存储器10222中划分的存储空间。此外,还可以在存储器10222中划分第二存储子空间,该第二存储子空间用于存储第一控制单元以DMA的方式在第二控制单元中备份的数据。
即,处理器10211向DMAC10216发送写数据指令(例如,第一写数据指令),第一写数据指令中携带有第一存储空间中存在故障的内存的地址在第一存储子空间中的存储地址,DMAC10216在获得总线控制权后,DMAC10216根据第一写数据指令,将第一存储空间中存在故障的内存的地址存储至存储器10222中的第一存储子空间。
处理器10211在恢复总线控制权后,向处理器10221发送报文(例如,第二报文),该报文中携带有第一存储子空间内存储第一存储空间中存在故障的内存的地址的存储空间的地址。
处理器10221对该报文进行解析,获取第一存储子空间内存储第一存储空间中存在故障的内存的地址的存储空间的地址,并在存储器10222中相应的存储位置获取第一存储空间中存在故障的内存的地址。
至此,处理器10211将第一存储空间中存在故障的内存的地址同步到了处理器10221中。
需要说明的是,上述的第二存储子空间用于存储第一控制单元以DMA的方式在第二控制单元中备份的数据仅为示例性说明,本发明实施例对此不作特别限定,例如,第二存储子空间还可以用于缓存第二控制单元从服务器接收的需要以DMA的方式在第一控制单元中进行备份的数据。
还需要说明的是,在本发明实施例中,第一存储空间中存在故障的内存的地址也可以称为第一存储空间中存在故障的内存的地址信息,本发明实施例对此不作特别限定。通过将第一存储空间中存在故障的内存的地址通过DMA的方式同步至对控,从而提高故障同步的速度,使得对控能够及时发现本控中存在故障的内存的地址,在对本控的存储空间进行数据访问时,能够及时对发生故障的内存进行隔离,避免由于故障同步不及时导致对控对本控中存在故障的存储空间进行数据访问,进而导致发生OOM的情况。
需要说明的是,当ECC检测发生在OS启动之后时,本发明实施例上述场景2中的方法为例,对处理器10211将第一存储空间中存在故障的内存的地址同步至处理器10221的方法进行说明,但本发明实施例并不限定于此,例如,当ECC检测发生在OS启动之后时,处理器10211还可以按照场景1中描述的方法将第一存储空间中存在故障的内存的地址同步至处理器10221中。
还需要说明的是,处理器10211将第一存储空间内已经恢复故障的内存的地址同步至处理器10221的方法请参考上述场景1与场景2中的相关描述,为了简洁,此处不再赘述。
还需要说明的是,本发明实施例中仅以处理器10211将第一存储空间中存在故障的内存的地址同步至处理器10221中的方法为例进行说明,该方法同样适用于处理器10221将存储器10222中支持进行DMA的存储空间中存在故障的内存的地址同步至处理器10211的场景中,关于处理器10221将存储器10222中用于进行DMA的存储空间中存在故障的内存的地址同步至处理器10211中的方法,请参考上述相关描述,为了简洁,此处不再赘述。
本发明实施例还提供了一种处理内存故障的装置,该装置配置在计算机***100中,包括第一控制单元与第二控制单元,第一控制单元用于执行方法200中由第一控制单元1021执行的方法的操作步骤,第二控制单元用于执行方法200中由第二控制单元1022执行的步骤,且第二控制单元中包括第二控制单元1022执行的方法的操作步骤。
本发明实施例提供的处理内存故障的装置,通过使本控(例如,第一控制单元)在OS启动之前或启动之后对支持进行DMA的存储空间进行故障检测,并将该存储空间中发生故障的内存的地址通知给对控(例如,第二控制单元),当对控在该存储空间中进行数据备份时,对该存储空间中存在故障的内存进行隔离,即,仅在本控中没有发生内存故障的存储空间中进行数据备份,从而降低发生OOM的概率。
本发明实施例还提供了一种计算机***300,如图7所示,该计算机***300包括处理单元301与存储控制单元302,该存储控制单元302与该处理单元301连接,该存储控制单元302包括:
第一控制单元3021,用于确定第一存储空间中存在故障的内存的地址,该第一存储空间是该第一控制单元3021中的存储空间,该第一存储空间能够存储第二控制单元3022以直接内存访问DMA的方式在该第一控制单元3021中备份的数据;
该第一控制单元3021,还用于将该第一存储空间中存在故障的内存的地址同步至该第二控制单元3022;
该第二控制单元3022,用于获取该第一存储空间中存在故障的内存的地址;
该第二控制单元3022,还用于以DMA的方式将缓存在该第二控制单元3022中的该数据存储至该第一存储空间,并且在存储该数据时隔离该第一存储空间中存在故障的内存,其中,该数据是由该处理单元通过该第二控制单元3022进行存储的数据。
可选地,第二控制单元3022,还用于在以DMA的方式将缓存在第二控制单元3022中的数据存储至第一存储空间之前,将缓存在与第一存储空间中存在故障的内存的地址对应的地址空间的数据,迁移到第二存储空间其它的存储空间中;其中,第二存储空间是第二控制单元3022中的存储空间。
可选地,该第一控制单元3021包括第一处理器与第一主板管理控制器BMC,该第二控制单元3022包括第二BMC,第一处理器,用于将该第一存储空间中存在故障的内存的地址写入该第一控制单元3021中预先分配的存储空间中;第一BMC,用于从该第一控制单元3021中预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址;第一BMC,还用于向该第二BMC发送第一报文,该第一报文中携带有该第一存储空间中存在故障的内存的地址。
可选地,第一控制单元3021还包括第一平台控制单元PCH与第一复杂可编程逻辑器件CPLD,该第一控制单元3021中预先分配的存储空间是该第一CPLD中的存储空间,第一处理器,还用于通过该第一PCH将该第一存储空间中存在故障的内存的地址写入该第一CPLD中的预先分配的存储空间中;第一BMC,还用于从该第一CPLD中的预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址。
可选地,第一控制单元3021包括第一处理器与第一直接内存访问控制器DMAC,第二控制单元3022包括第二处理器,第一处理器,还用于向该第一DMAC发送第一写数据指令,该第一写数据指令中携带有该第一存储空间中存在故障的内存的地址在第二存储空间中的第一存储子空间中的存储地址,该第二存储空间为该第二控制单元3022中的存储空间,该第一存储子空间用于存储该第一存储空间中存在故障的内存的地址,该第二存储空间还包括第二存储子空间,该第二存储子空间用于存储该第一控制单元3021以DMA的方式在该第二控制单元3022中备份的数据;第一DMAC,用于根据该第一写数据指令,将该第一存储空间中存在故障的内存的地址存储至该存储地址在该第一存储子空间中对应的存储空间;
第一处理器,还用于向该第二处理器发送第二报文,该第二报文中携带有该第一存储空间中存在故障的内存的地址在该第一存储子空间中的存储地址。
可选地,第二控制单元3022包括第二处理器与第二BMC,第二BMC,用于接收该第一BMC发送的该第一报文,该第一报文中携带有该第一存储空间中存在故障的内存的地址;第二BMC,还用于对该第一报文进行解析,获取该第一存储空间中存在故障的内存的地址;第二BMC,还用于将该第一存储空间中存在故障的内存的地址写入该第二控制单元3022中预先分配的存储空间中;第二处理器,用于从该第二控制单元3022中预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址。
可选地,第二控制单元3022还包括第二PCH与第二CPLD,第二控制单元3022中预先分配的存储空间是第二CPLD中的存储空间,第二BMC,还用于将该第一存储空间中存在故障的内存的地址写入该第二CPLD中的预先分配的存储空间中;第二处理器,还用于从该第二CPLD中的预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址,包括:第二处理器,还用于通过该第二PCH从该第二CPLD中的预先分配的存储空间中获取该第一存储空间中存在故障的内存的地址。
可选地,第二控制单元3022包括第二处理器,第二处理器还用于接收该第一处理器发送的该第二报文,该第二报文中携带有该第一存储空间中存在故障的内存的地址在该第一存储子空间中的存储地址;第二处理器,还用于根据该第二报文,从该存储地址在该第一存储子空间中对应的存储空间获取该第一存储空间中存在故障的内存的地址。
可选地,第一处理器,还用于对第一存储空间进行可纠正错误ECC检测;根据对该第一存储空间进行ECC检测的检测结果,确定该第一存储空间中存在故障的内存的地址。
可选地,第一控制单元3021,还用于统计该第一存储空间中存在故障的内存的地址的数量;如果该数量小于或等于预设的阈值,将该第一存储空间中存在故障的内存的地址同步至第二控制单元3022。
可选地,第一存储空间中存在故障的内存的地址包括该第一存储空间存在故障的内存所在的页帧的首地址。
可选地,第二控制单元3022,还用于向该第二控制单元3022中的第二DMAC发送第二写数据指令,该第二写数据指令用于指示该第二DMAC将缓存在该第二控制单元中的该数据存储至该第一存储空间中,该第二写数据指令携带的目的地址所指示的存储空间为该第一存储空间中存在故障的内存之外的存储空间。
可选地,计算机***300还包括存储单元303,第一控制单元3021与第二控制单元3022均与存储单元303连接,处理单元301还用于通过第二控制单元3022将该数据存储至存储单元303。
本发明实施例提供的计算机***,通过使本控(例如,第一控制单元)在OS启动之前或启动之后对支持进行DMA的存储空间进行故障检测,并将该存储空间中发生故障的内存的地址通知给对控(例如,第二控制单元),当对控在该存储空间中进行数据备份时,对该存储空间中存在故障的内存进行隔离,即,仅在本控中没有发生内存故障的存储空间中进行数据备份,从而降低发生OOM的概率。
本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述方法200中的步骤。
本发明实施例提供了一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得计算机执行上述方法200中的步骤。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (20)

1.一种处理内存故障的方法,应用于计算机***中,其特征在于,所述计算机***包括处理单元、第一控制单元、第二控制单元,所述第一控制单元与所述第二控制单元均与所述处理单元连接,包括:
所述第一控制单元确定第一存储空间中存在故障的内存的地址,所述第一存储空间是所述第一控制单元中的存储空间,所述第一存储空间能够存储所述第二控制单元以直接内存访问DMA的方式在所述第一控制单元中备份的数据;
所述第一控制单元将所述第一存储空间中存在故障的内存的地址同步至所述第二控制单元;
所述第二控制单元获取所述第一存储空间中存在故障的内存的地址;
所述第二控制单元以DMA的方式将缓存在所述第二控制单元中的所述数据存储至所述第一存储空间,并且在存储所述数据时隔离所述第一存储空间中存在故障的内存,其中,所述数据是由所述处理单元通过所述第二控制单元进行存储的数据。
2.根据权利要求1所述的方法,其特征在于,在所述第二控制单元以DMA的方式将缓存在所述第二控制单元中的所述数据存储至所述第一存储空间之前,所述方法还包括:
所述第二控制单元将缓存在与所述第一存储空间中存在故障的内存的地址对应的地址空间的数据,迁移到第二存储空间其它的存储空间中;其中,所述第二存储空间是所述第二控制单元中的存储空间。
3.根据权利要求1或2所述的方法,其特征在于,所述第一控制单元包括第一处理器与第一BMC,所述第二控制单元包括第二BMC,所述将所述第一存储空间中存在故障的内存的地址同步至所述第二控制单元,包括:
所述第一处理器将所述第一存储空间中存在故障的内存的地址写入所述第一控制单元中预先分配的存储空间中;
所述第一BMC从所述第一控制单元中预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址;
所述第一BMC向所述第二BMC发送第一报文,所述第一报文中携带有所述第一存储空间中存在故障的内存的地址。
4.根据权利要求3所述的方法,其特征在于,所述第一控制单元还包括第一PCH与第一CPLD,所述第一控制单元中预先分配的存储空间是所述第一CPLD中的存储空间,所述第一处理器将所述第一存储空间中存在故障的内存的地址写入所述第一控制单元中预先分配的存储空间中,包括:
所述第一处理器通过所述第一PCH将所述第一存储空间中存在故障的内存的地址写入所述第一CPLD中的预先分配的存储空间中;
所述第一BMC从所述第一控制单元中预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址,包括:
所述第一BMC从所述第一CPLD中的预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址。
5.根据权利要求1或2所述的方法,其特征在于,所述第一控制单元包括第一处理器与第一DMAC,所述第二控制单元包括第二处理器,所述将所述第一存储空间中存在故障的内存的地址同步至所述第二控制单元,包括:
所述第一处理器向所述第一DMAC发送第一写数据指令,所述第一写数据指令中携带有所述第一存储空间中存在故障的内存的地址在第二存储空间中的第一存储子空间中的存储地址,所述第二存储空间为所述第二控制单元中的存储空间,所述第一存储子空间用于存储所述第一存储空间中存在故障的内存的地址,所述第二存储空间还包括第二存储子空间,所述第二存储子空间用于存储所述第一控制单元以DMA的方式在所述第二控制单元中备份的数据;
所述第一DMAC根据所述第一写数据指令,将所述第一存储空间中存在故障的内存的地址存储至所述存储地址在所述第一存储子空间中对应的存储空间;
所述第一处理器向所述第二处理器发送第二报文,所述第二报文中携带有所述第一存储空间中存在故障的内存的地址在所述第一存储子空间中的存储地址。
6.根据权利要求3所述的方法,其特征在于,所述第二控制单元包括第二处理器与第二BMC,所述第二控制单元获取所述第一存储空间中存在故障的内存的地址,包括:
所述第二BMC接收所述第一BMC发送的所述第一报文,所述第一报文中携带有所述第一存储空间中存在故障的内存的地址;
所述第二BMC对所述第一报文进行解析,获取所述第一存储空间中存在故障的内存的地址;
所述第二BMC将所述第一存储空间中存在故障的内存的地址写入所述第二控制单元中预先分配的存储空间中;
所述第二处理器从所述第二控制单元中预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址。
7.根据权利要求6所述的方法,其特征在于,所述第二控制单元还包括第二PCH与第二CPLD,所述第二控制单元中预先分配的存储空间是所述第二CPLD中的存储空间,
所述第二BMC将所述第一存储空间中存在故障的内存的地址写入所述第二控制单元中预先分配的存储空间中,包括:
所述第二BMC将所述第一存储空间中存在故障的内存的地址写入所述第二CPLD中的预先分配的存储空间中;
所述第二处理器从所述第二控制单元中的预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址,包括:
所述第二处理器通过所述第二PCH从所述第二CPLD中的预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址。
8.根据权利要求5所述的方法,其特征在于,所述第二控制单元包括第二处理器,所述第二控制单元获取所述第一存储空间中存在故障的内存的地址,包括:
所述第二处理器接收所述第一处理器发送的所述第二报文,所述第二报文中携带有所述第一存储空间中存在故障的内存的地址在所述第一存储子空间中的存储地址;
所述第二处理器根据所述第二报文,从所述存储地址在所述第一存储子空间中对应的存储空间获取所述第一存储空间中存在故障的内存的地址。
9.根据权利要求1或2所述的方法,其特征在于,所述第二控制单元以DMA的方式将缓存在所述第二控制单元中的所述数据存储至所述第一存储空间,并且在存储所述数据时隔离所述第一存储空间中存在故障的内存,包括:
所述第二控制单元向所述第二控制单元中的第二DMAC发送第二写数据指令,所述第二写数据指令用于指示所述第二DMAC将缓存在所述第二控制单元中的所述数据存储至所述第一存储空间中,所述第二写数据指令携带的目的地址所指示的存储空间为所述第一存储空间中存在故障的内存之外的存储空间。
10.根据权利要求1或2所述的方法,其特征在于,所述计算机***还包括存储单元,所述第一控制单元与所述第二控制单元均与所述存储单元连接,所述方法还包括:
所述处理单元通过所述第二控制单元将所述数据存储至所述存储单元。
11.一种计算机***,其特征在于,所述计算机***包括处理单元与存储控制单元,所述存储控制单元与所述处理单元连接,所述存储控制单元包括:
第一控制单元,用于确定第一存储空间中存在故障的内存的地址,所述第一存储空间是所述第一控制单元中的存储空间,所述第一存储空间能够存储第二控制单元以直接内存访问DMA的方式在所述第一控制单元中备份的数据;
所述第一控制单元,还用于将所述第一存储空间中存在故障的内存的地址同步至所述第二控制单元;
所述第二控制单元,用于获取所述第一存储空间中存在故障的内存的地址;
所述第二控制单元,还用于以DMA的方式将缓存在所述第二控制单元中的所述数据存储至所述第一存储空间,并且在存储所述数据时隔离所述第一存储空间中存在故障的内存,其中,所述数据是由所述处理单元通过所述第二控制单元进行存储的数据。
12.根据权利要求11所述的计算机***,其特征在于,
所述第二控制单元,还用于在以DMA的方式将缓存在所述第二控制单元中的所述数据存储至所述第一存储空间之前,将缓存在与所述第一存储空间中存在故障的内存的地址对应的地址空间的数据,迁移到第二存储空间其它的存储空间中;其中,所述第二存储空间是所述第二控制单元中的存储空间。
13.根据权利要求11或12所述的计算机***,其特征在于,所述第一控制单元包括第一处理器与第一BMC,所述第二控制单元包括第二BMC,
所述第一处理器,用于将所述第一存储空间中存在故障的内存的地址写入所述第一控制单元中预先分配的存储空间中;
所述第一BMC,用于从所述第一控制单元中预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址;
所述第一BMC,还用于向所述第二BMC发送第一报文,所述第一报文中携带有所述第一存储空间中存在故障的内存的地址。
14.根据权利要求13所述的计算机***,其特征在于,所述第一控制单元还包括第一PCH与第一CPLD,所述第一控制单元中预先分配的存储空间是所述第一CPLD中的存储空间,
所述第一处理器,还用于通过所述第一PCH将所述第一存储空间中存在故障的内存的地址写入所述第一CPLD中的预先分配的存储空间中;
所述第一BMC,还用于从所述第一控制单元中预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址,包括:
所述第一BMC,还用于从所述第一CPLD中的预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址。
15.根据权利要求11或12所述的计算机***,其特征在于,所述第一控制单元包括第一处理器与第一DMAC,所述第二控制单元包括第二处理器,
所述第一处理器,还用于向所述第一DMAC发送第一写数据指令,所述第一写数据指令中携带有所述第一存储空间中存在故障的内存的地址在第二存储空间中的第一存储子空间中的存储地址,所述第二存储空间为所述第二控制单元中的存储空间,所述第一存储子空间用于存储所述第一存储空间中存在故障的内存的地址,所述第二存储空间还包括第二存储子空间,所述第二存储子空间用于存储所述第一控制单元以DMA的方式在所述第二控制单元中备份的数据;
所述第一DMAC,用于根据所述第一写数据指令,将所述第一存储空间中存在故障的内存的地址存储至所述存储地址在所述第一存储子空间中对应的存储空间;
所述第一处理器,还用于向所述第二处理器发送第二报文,所述第二报文中携带有所述第一存储空间中存在故障的内存的地址在所述第一存储子空间中的存储地址。
16.根据权利要求13所述的计算机***,其特征在于,所述第二控制单元包括第二处理器与第二BMC,
所述第二BMC,用于接收所述第一BMC发送的所述第一报文,所述第一报文中携带有所述第一存储空间中存在故障的内存的地址;
所述第二BMC,还用于对所述第一报文进行解析,获取所述第一存储空间中存在故障的内存的地址;
所述第二BMC,还用于将所述第一存储空间中存在故障的内存的地址写入所述第二控制单元中预先分配的存储空间中;
所述第二处理器,用于从所述第二控制单元中预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址。
17.根据权利要求16所述的计算机***,其特征在于,所述第二控制单元还包括第二PCH与第二CPLD,所述第二控制单元中预先分配的存储空间是所述第二CPLD中的存储空间,
所述第二BMC,还用于将所述第一存储空间中存在故障的内存的地址写入所述第二CPLD中的预先分配的存储空间中;所述第二处理器,还用于通过所述第二PCH从所述第二CPLD中的预先分配的存储空间中获取所述第一存储空间中存在故障的内存的地址。
18.根据权利要求15所述的计算机***,其特征在于,所述第二控制单元包括第二处理器,
所述第二处理器,还用于接收所述第一处理器发送的所述第二报文,所述第二报文中携带有所述第一存储空间中存在故障的内存的地址在所述第一存储子空间中的存储地址;
所述第二处理器,还用于根据所述第二报文,从所述存储地址在所述第一存储子空间中对应的存储空间获取所述第一存储空间中存在故障的内存的地址。
19.根据权利要求11或12所述的计算机***,其特征在于,所述第二控制单元,还用于向所述第二控制单元中的第二DMAC发送第二写数据指令,所述第二写数据指令用于指示所述第二DMAC将缓存在所述第二控制单元中的所述数据存储至所述第一存储空间中,所述第二写数据指令携带的目的地址所指示的存储空间为所述第一存储空间中存在故障的内存之外的存储空间。
20.根据权利要求11或12所述的计算机***,其特征在于,所述计算机***还包括存储单元,所述第一控制单元与所述第二控制单元均与所述存储单元连接,
所述处理单元,还用于通过所述第二控制单元将所述数据存储至所述存储单元。
CN201810942648.9A 2018-08-17 2018-08-17 处理内存故障的方法与计算机*** Active CN109343986B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810942648.9A CN109343986B (zh) 2018-08-17 2018-08-17 处理内存故障的方法与计算机***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810942648.9A CN109343986B (zh) 2018-08-17 2018-08-17 处理内存故障的方法与计算机***

Publications (2)

Publication Number Publication Date
CN109343986A CN109343986A (zh) 2019-02-15
CN109343986B true CN109343986B (zh) 2020-12-22

Family

ID=65291698

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810942648.9A Active CN109343986B (zh) 2018-08-17 2018-08-17 处理内存故障的方法与计算机***

Country Status (1)

Country Link
CN (1) CN109343986B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588112A (en) * 1992-12-30 1996-12-24 Digital Equipment Corporation DMA controller for memory scrubbing
CN101040268A (zh) * 2004-10-05 2007-09-19 索尼计算机娱乐公司 宽带网络计算机体系结构中的外部数据接口
CN101876925A (zh) * 2009-11-27 2010-11-03 成都市华为赛门铁克科技有限公司 内存镜像处理方法、装置和***
CN104519516A (zh) * 2013-09-29 2015-04-15 华为技术有限公司 对存储器进行测试的方法及装置
CN105976868A (zh) * 2016-05-05 2016-09-28 浪潮电子信息产业股份有限公司 一种通过故障隔离技术提高内存可靠性的方法
CN106021014A (zh) * 2016-05-12 2016-10-12 浪潮电子信息产业股份有限公司 一种内存管理方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049220B (zh) * 2012-12-19 2016-05-25 华为技术有限公司 存储控制方法、存储控制装置和固态存储***
CN103942013B (zh) * 2014-04-21 2016-09-07 北京网视通联科技有限公司 一种arm平台下高速读写与大容量存储***及其工作方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588112A (en) * 1992-12-30 1996-12-24 Digital Equipment Corporation DMA controller for memory scrubbing
CN101040268A (zh) * 2004-10-05 2007-09-19 索尼计算机娱乐公司 宽带网络计算机体系结构中的外部数据接口
CN101876925A (zh) * 2009-11-27 2010-11-03 成都市华为赛门铁克科技有限公司 内存镜像处理方法、装置和***
CN104519516A (zh) * 2013-09-29 2015-04-15 华为技术有限公司 对存储器进行测试的方法及装置
CN105976868A (zh) * 2016-05-05 2016-09-28 浪潮电子信息产业股份有限公司 一种通过故障隔离技术提高内存可靠性的方法
CN106021014A (zh) * 2016-05-12 2016-10-12 浪潮电子信息产业股份有限公司 一种内存管理方法及装置

Also Published As

Publication number Publication date
CN109343986A (zh) 2019-02-15

Similar Documents

Publication Publication Date Title
US8799745B2 (en) Storage control apparatus and error correction method
US9047219B2 (en) Storage system, storage control device, and storage control method
US8943358B2 (en) Storage system, apparatus, and method for failure recovery during unsuccessful rebuild process
US20130254457A1 (en) Methods and structure for rapid offloading of cached data in a volatile cache memory of a storage controller to a nonvolatile memory
JP4939180B2 (ja) 接続された装置を構成するための初期設定コードの実行
WO2015010327A1 (zh) 数据发送方法、数据接收方法和存储设备
US8762771B2 (en) Method for completing write operations to a RAID drive pool with an abnormally slow drive in a timely fashion
US7197599B2 (en) Method, system, and program for managing data updates
US11068337B2 (en) Data processing apparatus that disconnects control circuit from error detection circuit and diagnosis method
JP2006139478A (ja) ディスクアレイシステム
JPH07311661A (ja) 半導体ディスク装置
US9378092B2 (en) Storage control apparatus and storage control method
US20230251931A1 (en) System and device for data recovery for ephemeral storage
US7653831B2 (en) Storage system and data guarantee method
JP2019036163A (ja) ストレージ制御装置、および制御プログラム
JP6540334B2 (ja) システム、情報処理装置、および情報処理方法
US9223645B2 (en) Storage apparatus and method for controlling storage apparatus
WO2013080299A1 (ja) データ管理装置、データコピー方法、およびプログラム
US10235255B2 (en) Information processing system and control apparatus
US7130973B1 (en) Method and apparatus to restore data redundancy and utilize spare storage spaces
CN116414616A (zh) 一种固态硬盘ssd故障恢复方法、ssd及***
US8418029B2 (en) Storage control device and storage control method
JP2004102395A (ja) メモリダンプデータの取得方法および情報処理装置、ならびにそのプログラム
CN109343986B (zh) 处理内存故障的方法与计算机***
US7287182B2 (en) Method and apparatus for copying data of disk drive in disk array system

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