一种内存分配方法和装置与流程

文档序号:11323146阅读:172来源:国知局
一种内存分配方法和装置与流程

本发明涉及内存分配领域,特别涉及一种内存分配方法和装置。



背景技术:

在存储系统启动过程中,各个系统成员需要初始化,在这个过程中,存储系统会为系统成员分配内存,以便于后期系统对其进行访问操作。如果有多种存储硬件平台,那么存储系统需要为每个硬件平台分配内存,而每个硬件平台所需要的内存可能各不相同,例如不同的存储硬件平台能够插入不同的hba卡数量,从而导致在hba卡初始化过程中所需要的内存会因硬件平台的不同而不同。

而在存储系统初始化过程之前,需要为每一个系统成员预留一定的内存用于此成员初始化过程,一旦预留成功,那么这个成员的初始化所需内存必须在预留内存范围内,这样可以保证避免某一个成员无限制的预留内存的情况。

现有技术中的内存分配方法是,在一套软件架构中,预留一个公共的memreq(memoryrequire)配置值用于配置所有系统成员在初始化的时候需要的内存数量。由于所有的硬件平台都会分享这一公共的memreq的值,那么这个memreq的值必须以系统成员所需要的最大内存的数量作为memreq的值。比如存储系统有三个硬件平台共享这个memreq的值,第一个硬件平台需要memreq的值为10,第二个硬件平台需要的memreq的值为20,第三个硬件平台需要的memreq的值为30,那么这个存储系统的公共的memreq的值需要取三个平台中的最大值30。

然而,在用上述方法为系统成员初始化分配内存时,会出现为所需memreq值较小的硬件平台预留了较多内存的情况,相应的,会有较少的内存用于系统cache,这导致系统存储性能差。

综上所述,存储系统如何为每个系统成员分配合理的内存数量是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本发明所要解决的技术问题是提供一种内存分配方法,其能够为每个系统成员分配合理的内存数量。本发明还提供了一种内存分配装置。

为解决上述技术问题,本发明提供一种内存分配方法,包括:

获取预先基于存储系统中每个系统成员的软件架构为其设置的第一内存数量,其中每个所述系统成员的软件架构相同;

采集每个所述系统成员的硬件信息,并基于所述硬件信息计算出每个所述系统成员的第二内存数量;

将每个所述系统成员的第一内存数量和该系统成员的第二内存数量相加,得到需要分别分配给每个所述系统成员的内存总数量。

优选的,所述采集每个所述系统成员的硬件信息,包括:

采集每个所述系统成员自身的硬件信息和外接设备的硬件信息。

优选的,所述基于所述硬件信息计算出每个所述系统成员的第二内存数量,包括:

基于每个所述系统成员自身ram的大小计算自身硬件信息对应的第一内存值;基于每个系统成员外接设备的类型和数量计算外接设备硬件信息对应的第二内存值;将每个所述系统成员的第一内存值和该系统成员的第二内存值相加,得到每个所述系统成员的第二内存数量。

优选的,在得到需要分别分配给每个所述系统成员的内存总数量之后还包括:

判断每个所述系统成员的所述内存总数量是否大于预先设定的最大内存数量,若大于则报错。

优选的,在得到需要分别分配给每个所述系统成员的内存总数量之后还包括:

存储每个所述系统成员的所述内存总数量。

本发明还提供一种内存分配装置,包括:

获取模块,用于获取预先基于存储系统中每个系统成员的软件架构为其设置的第一内存数量;

采集模块,用于采集每个所述系统成员的硬件信息;

计算模块,用于基于所述硬件信息计算出每个所述系统成员的第二内存数量;将每个所述系统成员的第一内存数量和该系统成员的第二内存数量相加,得到需要分别分配给每个所述系统成员的内存总数量。

优选的,所述采集模块包括:

采集单元,用于采集每个所述系统成员自身的硬件信息和外接设备的硬件信息。

优选的,所述计算模块包括:

计算单元,用于基于每个所述系统成员自身ram的大小计算自身硬件信息对应的第一内存值;基于每个所述系统成员外接设备的类型和数量计算外接设备硬件信息对应的第二内存值;将每个所述系统成员的第一内存值和该系统成员的第二内存值相加,得到每个所述系统成员的第二内存数量。

优选的,还包括:

判断模块,用于在计算模块得到每个所述系统成员的内存总数量之后,判断每个所述系统成员的所述内存总数量是否大于预先设定的最大内存数量,若大于则报错。

优选的,还包括:

存储模块,用于在计算模块得到每个所述系统成员的内存总数量之后,存储每个所述系统成员的所述内存总数量。

本发明所提供的内存分配方法将存储系统中每个系统成员需要的内存总数量分为两部分,第一部分是每个系统成员统一的软件架构对应的第一内存数量,第二部分是基于每个系统成员的硬件信息计算出的该系统成员的第二内存数量;将每个系统成员对应的第一内存数量和该系统成员的第二内存数量相加,得到需要分别分配给每个系统成员各自的内存总数量。通过本发明提供的内存分配方法,利用每个系统成员统一的软件架构和各自的硬件信息,得到每个系统成员实际所需要的内存总数量,从而使得存储系统为每个系统成员分配的内存总数量基本等于其实际需要的内存总数量,避免出现现有技术中每个系统成员实际需要的内存总数量跟存储系统为其分配的内存总数量相差太大的情况。本发明提供的内存分配方法有效解决了存储系统如何为每个系统成员分配合理的内存数量的技术问题。本发明所提供的一种内存分配装置也相应的解决了如何为每个系统成员分配合理的内存数量的技术问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明一种具体实施方式所提供内存分配方法的流程图;

图2为本发明另一具体实施方式所提供内存分配方法的流程图;

图3为本发明一种具体实施方式所提供内存分配装置的结构示意图;

图4为本发明另一具体实施方式所提供内存分配装置的结构示意图。

具体实施方式

本发明的核心是提供一种内存分配方法,其解决了如何为每个系统成员分配合理的内存数量的技术问题。本发明的另一核心是提供一种内存分配装置。

为了使本技术领域的人员更好的理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

请参阅图1,图1为本发明一种具体实施方式所提供内存分配方法的流程图。在对应第一种具体实施方式中,本发明实施例所提供的内存分配方法可以包括以下步骤:

步骤s1:获取预先基于存储系统中每个系统成员的软件架构为其设置的第一内存数量,其中每个系统成员的软件架构相同。

由于每个系统成员的软件架构相同,所以每个系统成员软件架构对应第一内存数量均相同。每个系统成员的软件架构及对应第一内存数量可以由工作人员根据实际需要预先进行设定,具体来说,第一内存数量可以由具体的软件模块的工作人员根据设置的软件架构给出:软件模块中具体的部分有plfc、pliscsi、plsa、plpa等等,由工作人员确定出每部分所需分配的内存值,然后将每部分所需分配的内存值进行加和可得到软件模块所需分配的内存值,并确定该内存值为系统成员软件架构对应的第一内存数量。比如pliscsi这一部分的预留内存数量为两个内存page,也就是8k,工作人员统计这个软件模块中所有pliscsi对应部分的数量,将所统计数量与8k相乘便得到pliscsi的预留内存数量,其他部分预留内存的计算方式与此原理相同;工作人员将软件模块中每部分的预留内存数量相加便得到为软件架构设置的第一内存数量。

步骤s2:采集每个系统成员的硬件信息,并基于硬件信息计算出每个系统成员的第二内存数量。

步骤s3:将每个系统成员的第一内存数量和该系统成员的第二内存数量相加,得到需要分别分配给每个系统成员的内存总数量。

在本实施例中,本发明利用每个系统成员自身统一的软件架构和软件架构之外的硬件信息,将每个系统成员所需要的内存总数量分为:软件架构对应的第一内存数量和硬件部分对应的第二内存数量;将获取的第一内存数量和计算得到的第二内存数量相加,便得到每个系统成员各自需要的内存总数量。本发明利用每个系统成员统一的软件架构和各自不同的硬件部分,得到每个系统成员各自的内存总数量,其基本等于实际需要的内存数量,避免出现每个系统成员实际需要的内存总数量跟理论上为其分配的内存总数量相差太大的情况。本发明提供的内存分配方法解决了存储系统如何为每个系统成员分配合理的内存数量的技术问题。

应当指出,这里并不限制步骤s1和步骤s2这两个步骤的先后顺序。可以先执行步骤s1,也可以先执行步骤s2,还可以两个步骤同时进行。

本发明实施例提供的一种内存分配方法中,采集每个系统成员的硬件信息可以包括:采集每个系统成员自身的硬件信息和其外接设备的硬件信息。

在采集每个系统成员的硬件信息时,对于那些没有外接设备的系统成员,只需要采集系统成员自身的硬件信息即可;而对于那些有外接设备的系统成员,不仅要采集系统成员自身的硬件信息,还要采集系统成员外接设备的硬件信息。这样使分配给具有外接设备的系统成员的内存总数量更加准确。

本发明实施例提供的一种内存分配方法中,基于硬件信息计算出每个系统成员的第二内存数量可以包括:

基于每个系统成员自身ram的大小计算自身硬件信息对应的第一内存值;基于每个系统成员外接设备的类型和数量计算外接设备硬件信息对应的第二内存值;将每个系统成员的第一内存值和该系统成员的第二内存值相加,得到每个系统成员的第二内存数量。

因为系统成员自身的硬件信息基本由其ram的大小决定,所以这里重点依据系统成员自身ram的大小来计算其硬件信息对应的第一内存值。

在根据系统成员自身ram的大小来计算其相应的第一内存值时,可以由工作人员根据实际需要设置一个比例,从而将ram大小与该比例的乘积作为其对应的第一内存值。具体来说,可以采用下述方法。对于ram来说,8g内存ram对应的预留内存为10988个page,而每个page是4k,这样8g内存ram对应的预留内存为42.9m,然后根据这个对应关系具体计算这一部分的值。比如,系统成员自身的ram的大小为4g,由于4g是8g一半,所以4g内存ram对应的预留内存为42.9m的一半,即21.45m。当然,根据8g内存ram对应42.9m的预留内存的对应关系,还可以延伸出其他的对应关系,比如2g内存ram对应10.725m的预留内存,应用这些对应关系均能够计算出系统成员自身ram对应的第一内存值。

在计算系统成员外接设备的硬件信息对应的第二内存值时,一般先根据外接设备的类型,确定每一类每个外接设备对应的内存值;然后再确定每一类外接设备的个数;将同一类的每个外接设备的内存值与该类的外接设备的个数相乘,得到每一类外接设备所对应的内存值;最后,将不同种类外接设备对应的内存值相加,得到系统成员外接设备对应的第二内存值。这里以计算外接设备为外接hba卡的预留内存值为例来进行说明。首先,确定系统成员外接hba卡的类型,得知外接hba卡的类型后,便能够查阅得到这一类每个hba卡所对应的预留内存值;然后确定每类hba卡的数量;将每类hba卡所对应的预留内存值乘以每类hba卡的数量,便得到每类hba卡所对应的预留内存值;最后,将不同类hba卡所对应的预留内存值相加,便得到系统成员外接设备硬件信息所对应的第二内存数量。其他外接设备硬件信息对应的第二内存值的计算方法与此原理相同。

本发明实施例提供的一种内存分配方法中,得到需要分别分配给每个系统成员的内存总数量之后还可以包括:

判断每个系统成员的内存总数量是否大于预先设定的最大内存数量,如果是,则执行报错操作。

其中,最大内存数量可以为工作人员根据实际需要设定的;在上述判断操作中,如果每个系统成员的内存总数量不大于预先设定的最大内存数量,即如果否,则可以将每个系统成员的内存总数量发送给该系统成员,当然,也可以进行其他操作,比如存储内存总数量等等。另外报错操作具体可以是向与工作人员对应的指定终端发送对应的信息,也可以是指示显示屏对对应信息进行显示等,而上述报错操作对应的信息可以包括内存总数量大于最大内存数量的系统成员的编号及其内存总数量等,当然上述技术方案均可以根据实际需要进行其他设定,均在本发明的保护范围之内。

增加上述判断操作的好处是,能够避免系统成员所需的内存总数量大于预先根据实际需要设定的最大内存数量,可以解决为一个系统成员无限制的分配内存等不合法的问题。

本发明实施例提供的一种内存分配方法中,得到需要分别分配给每个系统成员的内存总数量之后还可以包括:

存储每个系统成员的内存总数量。

增加上述存储操作的好处是,在需要重复得知系统成员所需内存总数量的时候,可以直接由存储的数据中获取,从而节约计算内存总数量的过程。

在实际应用中,可以增加上述判断操作或者存储操作中的任意一个操作;也可以两个操作均增加,在这里并不限制增加两种操作的顺序,优选的增加顺序如下实施例所述。

请参阅图2,图2为本发明另一具体实施方式所提供内存分配方法的流程图。在这一具体实施方式中,增加了判断操作和存储操作,并将两者结合起来:在得到每个系统成员的内存总数量后,先执行步骤s4:判断每个系统成员的内存总数量是否大于预先设定的最大内存值,若果是,则执行步骤s6:报错;若果否,则执行步骤s5:存储每个系统成员的内存总数量。这一实施例不仅能为系统成员分配合理的内存总数量;而且能够避免无限制为系统成员分配内存数量的情况;还能够在需要重复得知系统成员所需内存数量的情况下,节省计算过程。

本发明还提供了一种内存分配装置,其具有本发明方法具有的所有有益效果。请参阅图3,图3为本发明一种具体实施方式所提供内存分配装置的结构示意图,可以包括以下模块:

获取模块a1,用于获取预先基于存储系统中每个系统成员的软件架构为其设置的第一内存数量。

采集模块a2,用于采集每个系统成员的硬件信息。

计算模块a3,用于基于采集模块a2采集的硬件信息计算出每个系统成员的第二内存数量;将每个系统成员的第一内存数量和该系统成员的第二内存数量相加,得到需要分别分配给每个系统成员的内存总数量。

本发明实施例提供的一种内存分配装置中,采集模块可以包括:

采集单元,用于采集每个系统成员自身的硬件信息和外接设备的硬件信息。

本发明实施例提供的一种内存分配装置中,计算模块可以包括:

计算单元,用于基于每个系统成员自身ram的大小计算自身硬件信息对应的第一内存值;基于每个系统成员外接设备的类型和数量计算其外接设备硬件信息对应的第二内存值;将每个系统成员的第一内存值和该系统成员的第二内存值相加,得到每个系统成员的第二内存数量。

本发明实施例提供的一种内存分配装置中,还可以包括:

判断模块,用于在计算模块得到内存总数量后,判断每个系统成员的内存总数量是否大于预先设定的最大内存数量,若大于则报错。

本发明实施例提供的一种内存分配装置中,还可以包括:

存储模块,用于在计算模块得到内存总数量后,存储每个系统成员的内存总数量。

在实际的装置应用中,可以增加上述判断模块或者存储模块中的任意一个模块;也可以两个模块均增加,这里并不限制增加两个模块的顺序,优选的增加顺序如下所述:

请参阅图4,图4为本发明另一具体实施方式的结构示意图。在这一具体实施方式中,增加了判断模块a4、存储模块a5,并将两者结合起来:在计算模块得到内存总数量后,判断模块先判断每个系统成员的内存总数量是否大于预先设定的最大内存值,如果是,则报错;如果否,则将内存总数量发送给存储模块,存储模块将内存总数量进行存储。

本发明实施例提供的一种内存分配装置中相关部分的说明请参见本发明实施例提供的一种内存分配方法中对应部分的详细说明,在此不再赘述。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1