用于多核系统的内存同步的系统和方法与流程

文档序号:11635262阅读:338来源:国知局
用于多核系统的内存同步的系统和方法与流程

本申请涉及通过将分区绑定到核心从而在内存数据库中扩展混合联机事务处理/联机分析处理的领域。本申请尤其涉及一种用于多核系统的内存同步的系统。



背景技术:

传统上,需要同时服务于联机事务处理(online-transaction-processing,简称oltp)和联机分析处理(onlineanalyticalprocessing,简称olap)工作负载的数据库系统是分离的,其中一个系统实时服务于oltp事务负载,另一个单独的系统服务于在预先导入的数据集上运行的olap分析工作负载。这种设置有许多缺点:需要更多的物理资源,维护开销,最重要的是妨碍了在oltp数据库之上近实时地进行olap分析,因为必须要将数据从oltp批量导出并导入到olap系统。

利用内存管理单元(memorymanagementunit,简称mmu)提供分析查询的内存快照的想法是,通过使单个数据库同时服务于oltp和olap工作负载来部分解决该问题,但是这样做严重受制于与操作系统内核与底层硬件平台之间的必要交互相关的,具体地,尤其是在呈现了大量计算单元(cpu核心)的多核平台的情况下,与操作系统保持tlb缓存表项一致性的责任相关的可扩展性瓶颈。

us2013/0073513a1描述了用于维护混合oltp和olap数据库的方法,该方法包括:执行一个或多个oltp事务;创建虚拟内存快照;通过该虚拟内存快照执行一个或多个olap查询。本文所描述的方法进一步包括:复制为响应对数据对象的更新而存储该数据对象所在的虚拟内存页面,由此,更新后的数据对象可以由oltp事务访问,而未更新的数据对象仍可由olap查询访问。相应地,本文描述的混合系统可通过硬件辅助的复制机制来同时处理oltp和olap,以保持事务数据的快照的一致性。



技术实现要素:

本发明的目的是提高多核系统的内存同步,特别是提供一种用于内存数据库中扩展混合oltp/olap的改进技术,该内存数据库利用mmu给硬件辅助的虚拟内存拍摄快照,即制作快照或控制数据版本。

该目的通过独立权利要求的特征实现。结合从属权利要求、说明书和附图,具体实现形式显而易见。

本发明直接解决了内存数据库中的混合oltp/olap的可扩展性问题,该内存数据库利用mmu给硬件辅助的虚拟内存拍摄快照或控制数据版本。

根据第一方面,提供了一种用于多核系统的内存同步的系统,所述系统包括:分配模块,用于向所述多核系统中的至少一个核心分配至少一个内存分区;映射模块,用于:如果与分配给至少一个核心的内存分区相关联的页表项被修改,通过向所述多核系统中的至少一个核心发送中断,向所利用的多核系统提供转换后备缓冲器终止的信息;接口模块,用于从用户空间提供访问分配模块的接口。

换言之,本发明通过呈现从操作系统内核到数据库的接口解决可扩展性的问题,通过该接口数据库可以通知内核关于内存区域或内存分区到特定的中央处理器(centralprocessingunit,简称cpu)核心的“绑定”。操作系统内核基于数据库中预先提供的信息有选择性地废止特定的转换后备缓冲器(translationlookasidebuffer,简称tlb)和特定核心的表项(tlb终止),而不是向通过线程方式共享数据库地址空间的所有核心“广播”tlb终止。

本发明的另一优点是,本发明有利地提供了通过向数据库系统呈现tlb终止过程的隐式控制使任何基于mmu的快照方案在现代多核机器上进行扩展的方式。

例如,数据库系统,通过控制其事务(oltp)线程的放置,意识到哪些cpu核心/线程在哪部分的内存(数据库分区)上运行。通过将此信息传递给内核,数据库隐式控制tlb终止过程,通过限制tlb终止,对于每个分区,处理器之间的中断ipi受限于一组选定的核心。这减轻了系统对在缺页异常处理期间共享地址空间的所有可用内核进行非常昂贵的基于ipi的tlb终止相关的过度开销,并使用基于mmu的快照方案实现了系统的高度可扩展性。

本发明利用如下事实:为了具有更多选择性的和定向性的tlb终止应对写时复制缺页异常,作为内存数据库系统中的混合oltp/olap的一致快照机制,应用或数据库能够维持oltp线程到内存分区的绑定,并且将此信息提供给内核。

在没有从数据库向操作系统内核提供的此信息的情况下,内核必须向共享地址空间的所有核心广播tlb终止ipi,这会产生非常高的成本;或者可替代性地,操作系统内核需要重新设计,以便跟踪所有可用系统核心的页面使用情况,这会产生很高的实施成本和运行成本。

本发明在内存数据库系统的上下文中有利地提供了基于mmu的快照的可扩展性。

本发明的基本构思是实现采用基于mmu的快照机制的混合oltp/olap数据库系统的高度可扩展性。这通过从操作系统内核向用户空间呈现tlb终止控制的方式实现,这可能受数据库系统的影响。

在基于mmu的快照方案(进行迟缓的写时复制页面共享)下,大批开销来自于在写时复制(copy-on-write,简称cow)缺页异常处理期间进行的tlb终止ipi。

特别地,通过使数据库控制哪些核心应该接收地址空间的不同部分的tlb终止ipi,本发明有利地提供了作为内存混合oltp/olap数据库系统的快照机制实现的基于mmu的方法的可扩展性。

特别地,本发明有利地利用了该数据库系统具有的可以由操作系统利用的知识或信息,以便大幅减少基于mmu的快照机制的本质固有的tlb终止成本。

特别地,本发明有利地提供了一种为了在cow期间的tlb终止目的,数据库系统分配内存和/或分区到硬件核心的绑定,并确保进行事务(oltp)的线程在其分配的分区上运行的方法。

特别地,本发明有利地提供了一种为了在cow期间的tlb终止目的,通过新系统调用的方式将硬件核心到数据分区的绑定从数据库传递到操作系统内核的方式。

特别地,本发明有利地提供了一种操作系统内核机制,在该机制中,对于cow缺页异常处理期间所需的tlb终止,查询数据库预先提供的绑定,因此以选择性方式仅针对绑定到故障页面所属的特定内存的特定核心发出tlb终止ipi。

作为一个优点,通过减少进行事务的线程的处理时间,提高oltp性能(就较低时延的响应时间和吞吐量两者而言)。

作为另一个优点,当cow缺页异常发生时,系统在内核中花费的时间显著较少。此外,mmu/硬件辅助的快照机制(cow)会随着不断增加的处理核心数目进行扩展。

本发明所用的术语“写时复制”可描述计算机编程中使用的优化策略。写时复制源于对以下内容的理解:当多个单独的任务使用一些信息的最初相同的副本(即计算机内存中存储的数据)时,将其视为它们可能偶尔需要修改的本地数据,则没有必要立即为每个任务创建该信息的单独副本。

本发明使用的术语“内存同步”可描述进行用于多核系统的内存同步的同步机制的多核系统计算机中使用的过程。

本发明使用的术语“内存管理单元(memorymanagementunit,简称mmu)”,有时称为页式内存管理单元(pagedmemorymanagementunit,简称pmmu),可描述具有通过自身传递的所有内存参考,主要执行将虚拟内存地址转换为物理地址的计算机硬件单元。

本发明使用的术语“快照”或“拍摄快照”可描述快照,这是系统在特定时间点的状态。该术语可以用作摄影的类比。该术语可以指一个系统的状态的实际副本或某些系统提供的能力。

本发明使用的术语“处理器之间的中断”可描述一种特殊类型的中断,即如果中断处理器要求来自其他处理器的动作,则多处理器系统中的一个处理器可以中断另一个处理器。

根据第一方面,在所述系统的第一种可能的实现形式中,所述映射模块用于在至少一个内存分区的写时复制页面共享期间提供转换后备缓冲器终止的信息。这有利地提供了使任何基于mmu的快照方案在多核机器上扩展的方式。

根据第一方面本身或者根据第一方面的第一种实现形式,在所述系统的第二种可能的实现形式中,所述接口模块用于通过用于对所述至少一个内存分区到所述至少一个核心的绑定进行控制的一组系统调用来向用户空间提供访问分配模块的接口。这有利于数据库或应用意识到哪些cpu核心和/或线程在哪部分的内存(数据库分区)上运行。

根据第一方面本身或者根据第一方面的任一前述实现形式,在所述系统的第三种可能的实现形式中,所述接口模块用于通过该组系统调用所接收的信息来适应转换后备缓冲器终止。这有利于进行更具有选择性和定向性的tlb-终止。

根据第二方面,本发明涉及一种数据库,包括:具有至少一个核心的多核系统;具有至少一个内存分区的内存系统;用于多核系统的内存同步的系统,所述系统包括:分配模块,用于向所述多核系统中的至少一个核心分配至少一个内存分区;映射模块,用于:如果与分配给至少一个核心的内存分区相关联的页表项被修改,通过向所述多核系统中的至少一个核心发送中断,向多核系统提供转换后备缓冲器终止的信息;接口模块,用于从用户空间提供访问分配模块的接口。

根据第二方面,在所述数据库的第一种可能的实现形式中,所述数据库是一种混合联机事务处理和联机分析处理数据库。这有利于在相同内存数据上进行oltp事务和olap分析。

根据第二方面或者根据第二方面的任一前述实现形式,在所述数据库的第二种可能的实现形式中,所述数据库用于通过确保至少一个联机事务处理线程在一个或多个所述至少一个内存分区上运行以进行联机事务处理。这有利地提供了一个高效的多处理方法,并提高了它们之间分配任务的效率。

根据第二方面或者根据第二方面的任一前述实现形式,在所述数据库的第三种可能的实现形式中,启用所述数据库,以通过用于指示所述至少一个核心中的哪一个与所述至少一个内存分区中的哪一个进行绑定的数据结构,对所述转换后备缓冲器终止进行受控调度。这进一步改进了多核系统的多个并发进程的执行。

根据第二方面或者根据第二方面的任一前述实现形式,在所述数据库的第四种可能的实现形式中,所述接口模块用于发送所述至少一个内存分区到所述至少一个核心的绑定。这有利于数据库或应用意识到哪些cpu核心/线程在哪部分的内存(数据库分区)上运行。

根据第二方面的第四种可能的实现形式,在所述数据库的第五种可能的实现形式中,所述接口模块用于通过该组系统调用所接收的信息来适应转换后备缓冲器终止。这有利于进行更具有选择性和定向性的tlb-终止。

根据第三方面,本发明涉及一种用于多核系统的内存同步的方法,所述方法包括:通过分配模块向所述多核系统中的至少一个核心分配至少一个内存分区;如果与分配给至少一个核心的内存分区相关联的页表项被修改,通过向所述多核系统中的至少一个核心发送中断,通过映射模块向所述多核系统提供转换后备缓冲器终止;通过接口模块向用户空间提供访问分配模块的接口。

根据第三方面,在所述方法的第一种可能的实现形式中,提供所述转换后备缓冲器终止的步骤在至少一个内存分区的写时复制页面共享期间进行。这有利地提供了使任何基于mmu的快照方案在多核机器上扩展的方式。

根据第三方面或者根据第三方面所述方法的第一种可能的实现形式,在所述方法的第二种可能的实现形式中,提供所述转换后备缓冲器终止的步骤通过用于对所述至少一个内存分区到所述至少一个核心的绑定进行控制的一组系统调用进行。这有利于数据库或应用意识到哪些cpu核心和/或线程在哪部分的内存(数据库分区)上运行。

根据第三方面本身或者根据第三方面的任一前述实现形式,在所述方法的第三种可能的实现形式中,所述转换后备缓冲器终止通过该组系统调用所接收的信息来适应。这有利于进行更具有选择性和定向性的tlb-终止。

根据第四方面,本发明涉及一种计算机程序,包括:程序代码,用于当所述计算机程序在计算机上运行时执行根据第三方面的任一前述实现形式所述的方法。

本文描述的方法,系统和设备可以作为数字信号处理器(digitalsignalprocessor,简称dsp),微控制器或任何其它侧处理器中的软件得以实现,或作为专用集成电路(applicationspecificintegratedcircuit,简称asic)或现场可编程门阵列中的硬件电路得以实现,所述现场可编程门阵列是设计用于生产后由客户或设计者配置的集成电路——因此是“现场可编程的”。

本发明能在数字电子电路或者计算机硬件、固件和软件或其组合中实现,例如,在常规移动设备的可用硬件或者专门用于处理此处描述的方法的新硬件中实现。

结合以下描述的实施例,本发明的这些和其他方面将会显而易见、清晰易懂。结合以下示意性附图更清楚地理解对于本发明及其伴随的优点的更完整的评价。

附图说明

本发明的实施例将结合以下附图进行描述,其中:

图1示出了本发明一实施例提供的用于多核系统的内存同步的系统的示意图;

图2示出了本发明一实施例提供的包括用于多核系统的内存同步的系统的数据库的示意图;

图3示出了本发明一实施例提供的用于多核系统的内存同步的方法的流程示意图;

图4示出了本发明一实施例提供的向共享父地址空间的所有硬件处理核心发出tlb终止ipi的操作系统内核的示意图;

图5示出了本发明一实施例提供的在cow缺页异常处理期间的操作系统内核的示意图。

具体实施方式

在相关附图中,相同标号表示相同或至少等效元件、部件、单元或步骤。另外,需要说明的是,并不绘制所有附图。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

图1示出了本发明一实施例提供的用于多核系统的内存同步的系统的示意图。

图1示出了用于多核系统1000中的内存同步的系统100的实施例,该系统100包括:分配模块10,映射模块20和接口模块30。

分配模块10可用于向所述多核系统1000中的至少一个核心1010-1,...,1010-n分配至少一个内存分区200-1,...,200-n。

映射模块20可用于:如果与分配给至少一个核心1010-1,...,1010-n的内存分区200-1,...,200-n相关联的页表项被修改,通过向所述多核系统1000中的至少一个核心1010-1,...,1010-n发送中断,向所利用的多核系统1000提供转换后备缓冲器终止的信息。

映射模块20可以提供将在tlb终止期间由操作系统内核3000使用的映射信息,进行tlb终止。

接口模块30可用于从用户空间提供访问分配模块10的接口。

图2示出了本发明一实施例提供的包括用于多核系统的内存同步的系统的数据库的示意图。

图2示出了数据库2000的示意图,该数据库2000包括具有至少一个核心1010-1,...,1010-n的多核系统1000;具有至少一个内存分区200-1,...,200-n的内存系统200;用于多核系统1000的内存同步的系统100。

系统100可以包括分配模块10,映射模块20和接口模块30。

图3示出了本发明一实施例提供的用于多核系统的内存同步的方法的流程示意图。

在该方法的第一步骤中,进行通过分配模块10向所述多核系统1000中的至少一个核心1010-1,...,1010-n分配s1至少一个内存分区200-1,...,200-n。

在该方法的第二步骤中,进行通过映射模块20向所述多核系统1000提供s2转换后备缓冲器终止。

在该方法的第三步骤中,如果与分配给至少一个核心1010-1,...,1010-n的内存分区200-1,...,200-n相关联的页表项被修改,进行向所述多核系统1000中的至少一个核心1010-1,...,1010-n发送s3中断。

在该方法的第四步骤中,进行通过接口模块30向用户空间提供s4访问分配模块10的接口。

图4示出了本发明一实施例提供的向共享父地址空间的所有硬件处理核心发出tlb终止ipi的操作系统内核的示意图。

图4示出了当oltp操作尝试更新内存时向共享父地址空间的所有硬件处理核心发出tlb终止ipi的操作系统内核3000。这种情况发生在由操作系统进行的cow缺页异常处理期间,是由硬件mmu的保护单元产生的异常引起的。

根据本发明的示例性实施例,实现方案可以包括对操作系统内核3000的修改或增强,以便为了tlb终止目的,向对内存分区到特定cpu核心的绑定进行控制的用户空间/数据库应用呈现所需的接口(例如,通过向所述操作系统内核引入一组新的系统调用)。

另一个优点是,通过相应增强涉及写时复制页面的缺页异常期间的相关操作系统内核3000的tlb终止功能,以便查询已经通过新的一组系统调用从数据库2000传递到操作系统内核3000的信息。

此外,通过确保每个oltp线程在一个或多个内存分区上运行,并且通过新的系统调用的方式向内核3000传送该信息,改善了数据库2000对该机制的利用。

根据本发明的示例性实施例,如图4所示,混合oltp/olap内存数据库2000使用基于mmu的cow快照机制的场景中,当oltp事务尝试更新当前正在进行快照拍摄的内存的的任一部分时(cow缺页异常处理期间),操作系统内核3000必然通过ipi向通过线程方式共享父地址空间的所有硬件处理核心1010-1,...,1010-n广播tlb终止请求。

根据本发明的示例性实施例,可以安装tlb终止ipi的受控调度,这受用户空间的影响。数据库/应用负责减少通过一组新引入的系统调用的方式定期(或按需)向内核提供受限制的cpu掩码来接收ipi的该组核心1010-1,...,1010-n的数量。

根据本发明的示例性实施例,cpu掩码是一种指示了多核系统1000中的哪些cpu核心1010-1,...,1010-n应包括在该绑定中,以及哪些应不包括在该绑定中的数据结构。修改内核失效相关功能,以利用提供的cpu掩码在cow缺页异常期间有选择性地调度ipi。

根据本发明的示例性实施例,数据库2000或任何应用还负责通过限制其在相应的内存区域上的操作和绑定到该区域的特定核心1010-1,...,1010-n的操作,确保其用户空间线程(进行oltp事务)遵守已传递给内核3000的绑定。

控制tlb-失效ipi的系统调用通过指定其起始虚拟内存地址所识别的内存块,并通过提供cpu掩码,识别多核系统1000中哪些核心1010-1,...,1010-n应该在内存的特定块中发生cow缺页异常时接收tlb终止ipi。

根据本发明的示例性实施例,内存块是由操作系统自动推断出来的(从用户空间的角度看,没有必要提供地址长度对),因为操作系统内部保持对所分配的区域的跟踪,并且可以很容易地定位所提供的虚拟内存地址所属的包含内存块。

例如,下面的系统调用可以引入到操作系统内核:

·mem_region_set_cpumask(void*addr,cpumask_t*cpumask);

·mem_region_get_cpumask(void*addr,cpumask_t*cpumask);

内部实现通过查询每个进程的内核内部内存分配簿记结构,定位所提供的虚拟内存地址(简称addr)所属的包含内存区域。

根据本发明的示例性实施例,也增强了对应于所分配的内存块的内核内部结构,以便存储系统调用提供的cpu掩码结构。

根据本发明的示例性实施例,定位所述包含内存区域的特定结构之后,系统调用分别对于mem_region_set_cpumask(和mem_region_get_cpumask),将cpu掩码从用户空间内存复制到内核空间内存(或从内核空间复制到用户空间)。在mem_region_set_cpumask的情况下,cpu掩码在内核空间复制并在标识所分配的内存块的结构中存储。

图5示出了本发明一实施例提供的在cow缺页异常处理期间的操作系统内核的示意图。

图5示出的操作系统内核3000在cow缺页异常处理期间可以利用数据库2000早先提供(通过一组新的系统调用)的绑定信息,以便有选择性地发出,而不是向共享地址空间的每个可用核心1010-1,...,1010-n广播tlb终止ipi。

根据本发明的示例性实施例,在写时复制缺页异常处理期间,内核3000有足够的信息(已处理的硬件异常是提供出错的地址),以便定位包含内存区域,并获得与该区域相关联的cpu掩码。

根据本发明的示例性实施例,如图5所示,内核3000可以随后使用cpu掩码,以便有选择性地仅朝向相应cpu掩码指示的核心1010-1,...,1010-n发出tlb终止ipi。

默认情况下,如果数据库没有提供cpu掩码,操作系统内核通过向共享地址空间的所有核心1010-1,...,1010-n广播ipi来处理tlb终止,假设用户空间/数据库没有提供信息可用于缩小在cow缺页异常期间接收tlb终止的该组核心1010-1,...,1010-n的数量。

根据本发明的示例性实施例,在应用/数据库具有提供的cpu掩码之后需要通过相关的系统调用恢复到“默认”操作系统行为的情况下,可以提供“空”cpu掩码以便恢复默认行为。

该参考实现方案仅用作说明目的。相同的方案可以通过数据库/应用到操作系统内核3000的不同种类的接口和语义来实现。

根据本发明的示例性实施例,可以增强内存管理相关的操作系统内核调用(例如mmap或新的系统调用),以便容纳指示cpu掩码(即内存区域到一组处理核心1010-1,...,1010-n的绑定)的参数。

另一个例子是对现有操作系统内核调用(例如mmap)的修改和扩展,为了tlb终止ipi目的,引入了隐式指示要通过调用分配的内存区域的应绑定到引发系统调用的cpu(如分配内存区域的线程的cpu)的新标志(例如map_bind)。

尽管是参考实现方案,但是提供了更多的灵活性,因为允许内存区域到处理内核1010-1,...,1010-n的显式绑定和贯穿数据库系统2000整个运行时间的绑定修改。

本发明还支持包含计算机可执行代码或计算机可执行指令的计算机程序产品,这些计算机可执行代码或计算机可执行指令在执行时使得至少一台计算机执行本文所述的执行及计算步骤。

通过以上启示,对于本领域技术人员来说,许多替代产品、修改及变体是显而易见的。当然,所属领域的技术人员容易意识到除本文所述的应用之外,还存在本发明的众多其它应用。

虽然已参考一个或多个特定实施例描述了本发明,但所属领域的技术人员将认识到在不偏离本发明的范围的前提下,仍可对本发明作出许多改变。因此,应理解,只要是在所附权利要求书及其等效文句的范围内,可以用不同于本文具体描述的方式来实践本发明。

在权利要求书中,词语“包括”不排除其它元素或步骤,不定冠词“一”不排除多个。单个处理器或其它单元可以完成权利要求中描述的几个器件的功能。

在仅凭某些措施被记载在相互不同的从属权利要求书中这个单纯的事实并不意味着这些措施的结合不能被有效地使用。计算机程序可存储或分发到合适的介质上,例如与其它硬件一起或者作为其它硬件的部分提供的光存储介质或者固态介质,还可以以其它形式例如通过因特网或者其它有线或无线电信系统分发。

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