本发明专利技术提供了一种存储空间分配方法及装置,方法包括:接收驱动程序申请存储空间的请求;确定多个可分配存储空间的内存控制器;在多个内存控制器上的内存空间择一分配驱动程序所需的存储空间。由于本发明专利技术实施例所提供的技术方案,在驱动程序申请内存的存储空间时,交替使用服务器上的多个内存控制器上的内存空间为驱动程序分配驱动程序所需的存储空间,为后续读写数据提供多通道,实现多通道读写、并行处理,提高了应用程序读写数据的速度,解决了现有技术所存在的读写速度较慢的问题。
【技术实现步骤摘要】
—种存储空间分配方法及装置
本专利技术涉及数据处理
,尤其涉及一种存储空间分配方法及装置。
技术介绍
龙芯是中国科学院计算所自主研发的通用CPU,采用简单指令集。其中,龙芯3B双路服务器(16核)支持4个内存控制器,在这个平台的高速网络设备为插在主板上的增强型外设部件互连标准(PC1-E, Peripheral Component Interconnect)设备,采用了零拷贝技术。零拷贝技术的基本思想是:数据报从网络设备到用户空间传递的过程中,减少数据拷贝次数、系统调用,实现CPU的零参与,实现零拷贝最主要技术是直接内存存取(DMA,Direct Memory Access)数据传输技术和内存区域映射技术。驱动程序申请缓冲区直接映射到用户空间,这样,数据就可以直接通过DMA写入内存,也就是用户空间。 目前,驱动程序申请的空间是通过调用内核的分页函数得到的一段连续的空间,申请的缓冲区数目和服务器的核数是一致的,也即16个。 现有技术不足在于: 由于驱动程序申请空间是通过调用内核的分页函数来实现,这样就不能保证申请到的16个缓冲区分布在不同的内存控制器上,可能导致应用程序读写网络设备数据的速度较慢。
技术实现思路
本专利技术实施例提出了一种存储空间分配方法及装置,解决了现有技术中应用程序读写网络设备数据速度较慢的技术问题。 本专利技术实施例提供了一种存储空间分配方法,包括如下步骤: 接收驱动程序申请存储空间的请求; 确定多个可分配存储空间的内存控制器; 在多个内存控制器上的内存空间择一分配驱动程序所需的存储空间。 本专利技术实施例提供了一种存储空间分配装置,包括: 接收单元,用于接收驱动程序申请存储空间的请求; 确定单元,用于确定多个可分配存储空间的内存控制器; 分配单元,用于在多个内存控制器上的内存空间择一分配驱动程序所需的存储空间。 有益效果如下: 当前驱动程序申请内存中的存储空间时可能存在应用程序读写速度较慢的问题,由于本专利技术实施例所提供的技术方案,在驱动程序申请存储空间时,首先确定多个可以分配存储空间的内存控制器,然后在这多个内存控制器上的内存空间选择其中一个来分配驱动程序所需的存储空间,从而使得驱动程序申请的存储空间可以分布在不同内存控制器上的内存空间,避免了现有技术中由于利用分页函数分配存储空间的随机性导致数据读写速度较慢的技术问题,提高了应用程序读写数据的速度。 【附图说明】 下面将参照附图描述本专利技术的具体实施例,其中: 图1示出了本专利技术实施例中存储空间分配方法实施的流程示意图; 图2示出了本专利技术实施例中存储空间分配实例示意图; 图3示出了本专利技术实施例中存储空间分配装置的结构示意图。 【具体实施方式】 为了使本专利技术的技术方案及优点更加清楚明白,以下结合附图对本专利技术的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本专利技术的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。 针对现有技术的不足,本专利技术实施例提出了一种存储空间分配方法及装置,下面进行说明。 图1示出了本专利技术实施例存储空间分配方法实施的流程示意图,如图所示,可以包括: 步骤101、接收驱动程序申请存储空间的请求; 步骤102、确定多个可分配存储空间的内存控制器; 步骤103、在多个内存控制器上的内存空间择一分配驱动程序所需的存储空间。 实施中,存储空间可以为用来缓冲输入或输出数据的缓冲区。 本专利技术实施例在驱动程序申请缓冲区时,不同的缓冲区交替使用服务器中各个内存控制器上的内存空间,从而实现多通道读写、并行处理,提高了应用程序读写数据的速度,解决了现有技术所存在的读写速度较慢的问题。 实施中,择一可以为:确定上一次分配存储空间的内存控制器;在除上一次分配存储空间的内存控制器之外的其他内存控制器上的内存空间分配驱动程序所需的存储空间。 实施中,这些内存控制器的内存空间可以采用统一编址。 实施中,择一可以为:根据上一次分配存储空间的内存控制器以及编址顺序确定本次为驱动程序分配存储空间的内存控制器; 在该内存控制器的内存空间上分配驱动程序所需的存储空间。 本专利技术实施例通过采用按照编址顺序,轮流或者交替使用服务器上内存控制器的内存空间,使得所有内存控制器的内存空间都可以充分利用起来,实现数据读写速度的最大化。 实施中,择一可以为:选择在已分配空间最少的内存控制器的内存空间上分配驱动程序所需的存储空间。 本专利技术实施例通过确定已分配空间最少的内存控制器,使得服务器上所有内存控制器的内存空间相对均匀的使用或分配,避免了某一内存控制器的内存空间使用率相对较高而其他内存控制器的内存空间使用率较低的问题,有效提高数据读写速度。 实施中,可以接收16个申请存储空间的请求,在4个内存控制器的内存空间上分配存储空间。 以龙芯3B双路服务器为例,在北桥芯片级里设计有四个内存控制器,这四个内存控制器可以相互独立工作,每个内存控制器控制一个内存通道。由于本专利技术实施例在驱动程序申请缓冲区时是交替在这4个内存控制器上的内存空间进行的,因此,在这四个内存中CPU可分别寻址、读取数据,从而使内存的带宽更多、数据存取速度也相应的提高。 为了便于本专利技术的实施,下面以实例进行说明。 假设驱动程序申请16个缓冲区,服务器上有4个内存控制器,这4个内存控制器上的内存空间分别称为DIMMO、DIMMl、DIMM2、DIMM3。 当第一次接收到驱动程序的申请缓冲区请求时,为其在内存控制器的内存空间DIMMO上分配O号缓冲区;当第二次接收到驱动程序的申请缓冲区请求时,为其在内存控制器的内存空间DIMMl上分配I号缓冲区;当第三次接收到驱动程序的申请缓冲区请求时,为其在内存控制器的内存空间DIMM2上分配2号缓冲区;当第四次接收到驱动程序的申请缓冲区请求时,为其在内存控制器的内存空间DMM3上分配3号缓冲区; 当第五次接收到驱动程序的申请缓冲区请求时,为其在内存控制器的内存空间DIMMO上分配4号缓冲区; … 以此类推,使得这16个缓冲区交替在这4个内存控制器上的内存空间上,分配完成后,如下所示: 0,4,8,12 号缓冲区在 DIMMO ; I,5,9,13 号缓冲区在 DIMMl ; 2,6,10,14 号缓冲区在 DIMM2 ; 3,7,11,15 号缓冲区在 DIMM3。 这样,即使用户空间上的应用程序开启16个线程时,也可以同时达到对内存的并行读写,如图2所示。因此,采用本专利技术实施例的技术方案,不会导致竞争,从而提高设备读写速度。 本专利技术实施例提供了一种龙芯刀片服务器下高速网络设备优化读写性能的方法,它主要是通过在申请连续内存的时候,在不同的内存控制器上进行申请空间,从而达到多通道可以并行处理,提高内存的读写速度。 基于同一专利技术构思,本专利技术实施例中还提供了一种存储空间分配装置,由于这些设备解决问题的原理与一种存储空间分配方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。 如图3所示,装置可以包括: 接收单元301,用于接收驱动程序申请存储空间的请求; 确定单元本文档来自技高网...
【技术保护点】
一种存储空间分配方法,其特征在于,包括如下步骤:接收驱动程序申请存储空间的请求;确定多个可分配存储空间的内存控制器;在多个内存控制器上的内存空间择一分配驱动程序所需的存储空间。
【技术特征摘要】
1.一种存储空间分配方法,其特征在于,包括如下步骤: 接收驱动程序申请存储空间的请求; 确定多个可分配存储空间的内存控制器; 在多个内存控制器上的内存空间择一分配驱动程序所需的存储空间。2.如权利要求1所述的方法,其特征在于,所述的择一为:确定上一次分配存储空间的内存控制器;在除上一次分配存储空间的内存控制器之外的内存控制器上的内存空间分配驱动程序所需的存储空间。3.如权利要求1或2所述的方法,其特征在于,所述多个内存控制器的内存空间采用统一编址。4.如权利要求3所述的方法,其特征在于,所述的择一为:根据上一次分配存储空间的内存控制器以及编址顺序确定本次为驱动程序分配存储空间的内存控制器; 在所述内存控制器的内存空间上分配驱动程序所需的存储空间。5.如权利要求1至3任一所述的方法,其特征在于,所述的择一为:选择在已分配空间最少的内存控制器的内存空间上分配驱动程序所需的存储空间。6.一种存储空间分配装置,其特征在于,包括: 接收单元,用于接收驱动...
【专利技术属性】
技术研发人员:李丰旺,
申请(专利权)人:无锡城市云计算中心有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。