CN107003949A - 用于多核系统的内存同步的系统和方法 - Google Patents
用于多核系统的内存同步的系统和方法 Download PDFInfo
- Publication number
- CN107003949A CN107003949A CN201580067463.2A CN201580067463A CN107003949A CN 107003949 A CN107003949 A CN 107003949A CN 201580067463 A CN201580067463 A CN 201580067463A CN 107003949 A CN107003949 A CN 107003949A
- Authority
- CN
- China
- Prior art keywords
- core
- database
- multiple nucleus
- memory
- memory partitioning
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 115
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 title claims description 35
- 238000000638 solvent extraction Methods 0.000 claims abstract description 38
- 238000013519 translation Methods 0.000 claims abstract description 24
- 238000013507 mapping Methods 0.000 claims abstract description 14
- 238000012545 processing Methods 0.000 claims description 32
- 230000027455 binding Effects 0.000 claims description 20
- 238000009739 binding Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 238000005192 partition Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005314 correlation function Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/682—Multiprocessor TLB consistency
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了一种用于多核系统(1000)的内存同步的系统(100),所述系统(100)包括:分配模块(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)提供转换后备缓冲器终止的信息;接口模块(30),用于从用户空间提供访问分配模块(10)的接口。
Description
技术领域
本申请涉及通过将分区绑定到核心从而在内存数据库中扩展混合联机事务处理/联机分析处理的领域。本申请尤其涉及一种用于多核系统的内存同步的系统。
背景技术
传统上,需要同时服务于联机事务处理(Online-Transaction-Processing,简称OLTP)和联机分析处理(Online Analytical Processing,简称OLAP)工作负载的数据库系统是分离的,其中一个系统实时服务于OLTP事务负载,另一个单独的系统服务于在预先导入的数据集上运行的OLAP分析工作负载。这种设置有许多缺点:需要更多的物理资源,维护开销,最重要的是妨碍了在OLTP数据库之上近实时地进行OLAP分析,因为必须要将数据从OLTP批量导出并导入到OLAP系统。
利用内存管理单元(Memory Management Unit,简称MMU)提供分析查询的内存快照的想法是,通过使单个数据库同时服务于OLTP和OLAP工作负载来部分解决该问题,但是这样做严重受制于与操作系统内核与底层硬件平台之间的必要交互相关的,具体地,尤其是在呈现了大量计算单元(CPU核心)的多核平台的情况下,与操作系统保持TLB缓存表项一致性的责任相关的可扩展性瓶颈。
US 2013/0073513 A1描述了用于维护混合OLTP和OLAP数据库的方法,该方法包括:执行一个或多个OLTP事务;创建虚拟内存快照;通过该虚拟内存快照执行一个或多个OLAP查询。本文所描述的方法进一步包括:复制为响应对数据对象的更新而存储该数据对象所在的虚拟内存页面,由此,更新后的数据对象可以由OLTP事务访问,而未更新的数据对象仍可由OLAP查询访问。相应地,本文描述的混合系统可通过硬件辅助的复制机制来同时处理OLTP和OLAP,以保持事务数据的快照的一致性。
发明内容
本发明的目的是提高多核系统的内存同步,特别是提供一种用于内存数据库中扩展混合OLTP/OLAP的改进技术,该内存数据库利用MMU给硬件辅助的虚拟内存拍摄快照,即制作快照或控制数据版本。
该目的通过独立权利要求的特征实现。结合从属权利要求、说明书和附图,具体实现形式显而易见。
本发明直接解决了内存数据库中的混合OLTP/OLAP的可扩展性问题,该内存数据库利用MMU给硬件辅助的虚拟内存拍摄快照或控制数据版本。
根据第一方面,提供了一种用于多核系统的内存同步的系统,所述系统包括:分配模块,用于向所述多核系统中的至少一个核心分配至少一个内存分区;映射模块,用于:如果与分配给至少一个核心的内存分区相关联的页表项被修改,通过向所述多核系统中的至少一个核心发送中断,向所利用的多核系统提供转换后备缓冲器终止的信息;接口模块,用于从用户空间提供访问分配模块的接口。
换言之,本发明通过呈现从操作系统内核到数据库的接口解决可扩展性的问题,通过该接口数据库可以通知内核关于内存区域或内存分区到特定的中央处理器(centralprocessing unit,简称CPU)核心的“绑定”。操作系统内核基于数据库中预先提供的信息有选择性地废止特定的转换后备缓冲器(translation lookaside buffer,简称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)会随着不断增加的处理核心数目进行扩展。
本发明所用的术语“写时复制”可描述计算机编程中使用的优化策略。写时复制源于对以下内容的理解:当多个单独的任务使用一些信息的最初相同的副本(即计算机内存中存储的数据)时,将其视为它们可能偶尔需要修改的本地数据,则没有必要立即为每个任务创建该信息的单独副本。
本发明使用的术语“内存同步”可描述进行用于多核系统的内存同步的同步机制的多核系统计算机中使用的过程。
本发明使用的术语“内存管理单元(memory management unit,简称MMU)”,有时称为页式内存管理单元(paged memory management unit,简称PMMU),可描述具有通过自身传递的所有内存参考,主要执行将虚拟内存地址转换为物理地址的计算机硬件单元。
本发明使用的术语“快照”或“拍摄快照”可描述快照,这是系统在特定时间点的状态。该术语可以用作摄影的类比。该术语可以指一个系统的状态的实际副本或某些系统提供的能力。
本发明使用的术语“处理器之间的中断”可描述一种特殊类型的中断,即如果中断处理器要求来自其他处理器的动作,则多处理器系统中的一个处理器可以中断另一个处理器。
根据第一方面,在所述系统的第一种可能的实现形式中,所述映射模块用于在至少一个内存分区的写时复制页面共享期间提供转换后备缓冲器终止的信息。这有利地提供了使任何基于MMU的快照方案在多核机器上扩展的方式。
根据第一方面本身或者根据第一方面的第一种实现形式,在所述系统的第二种可能的实现形式中,所述接口模块用于通过用于对所述至少一个内存分区到所述至少一个核心的绑定进行控制的一组系统调用来向用户空间提供访问分配模块的接口。这有利于数据库或应用意识到哪些CPU核心和/或线程在哪部分的内存(数据库分区)上运行。
根据第一方面本身或者根据第一方面的任一前述实现形式,在所述系统的第三种可能的实现形式中,所述接口模块用于通过该组系统调用所接收的信息来适应转换后备缓冲器终止。这有利于进行更具有选择性和定向性的TLB-终止。
根据第二方面,本发明涉及一种数据库,包括:具有至少一个核心的多核系统;具有至少一个内存分区的内存系统;用于多核系统的内存同步的系统,所述系统包括:分配模块,用于向所述多核系统中的至少一个核心分配至少一个内存分区;映射模块,用于:如果与分配给至少一个核心的内存分区相关联的页表项被修改,通过向所述多核系统中的至少一个核心发送中断,向多核系统提供转换后备缓冲器终止的信息;接口模块,用于从用户空间提供访问分配模块的接口。
根据第二方面,在所述数据库的第一种可能的实现形式中,所述数据库是一种混合联机事务处理和联机分析处理数据库。这有利于在相同内存数据上进行OLTP事务和OLAP分析。
根据第二方面或者根据第二方面的任一前述实现形式,在所述数据库的第二种可能的实现形式中,所述数据库用于通过确保至少一个联机事务处理线程在一个或多个所述至少一个内存分区上运行以进行联机事务处理。这有利地提供了一个高效的多处理方法,并提高了它们之间分配任务的效率。
根据第二方面或者根据第二方面的任一前述实现形式,在所述数据库的第三种可能的实现形式中,启用所述数据库,以通过用于指示所述至少一个核心中的哪一个与所述至少一个内存分区中的哪一个进行绑定的数据结构,对所述转换后备缓冲器终止进行受控调度。这进一步改进了多核系统的多个并发进程的执行。
根据第二方面或者根据第二方面的任一前述实现形式,在所述数据库的第四种可能的实现形式中,所述接口模块用于发送所述至少一个内存分区到所述至少一个核心的绑定。这有利于数据库或应用意识到哪些CPU核心/线程在哪部分的内存(数据库分区)上运行。
根据第二方面的第四种可能的实现形式,在所述数据库的第五种可能的实现形式中,所述接口模块用于通过该组系统调用所接收的信息来适应转换后备缓冲器终止。这有利于进行更具有选择性和定向性的TLB-终止。
根据第三方面,本发明涉及一种用于多核系统的内存同步的方法,所述方法包括:通过分配模块向所述多核系统中的至少一个核心分配至少一个内存分区;如果与分配给至少一个核心的内存分区相关联的页表项被修改,通过向所述多核系统中的至少一个核心发送中断,通过映射模块向所述多核系统提供转换后备缓冲器终止;通过接口模块向用户空间提供访问分配模块的接口。
根据第三方面,在所述方法的第一种可能的实现形式中,提供所述转换后备缓冲器终止的步骤在至少一个内存分区的写时复制页面共享期间进行。这有利地提供了使任何基于MMU的快照方案在多核机器上扩展的方式。
根据第三方面或者根据第三方面所述方法的第一种可能的实现形式,在所述方法的第二种可能的实现形式中,提供所述转换后备缓冲器终止的步骤通过用于对所述至少一个内存分区到所述至少一个核心的绑定进行控制的一组系统调用进行。这有利于数据库或应用意识到哪些CPU核心和/或线程在哪部分的内存(数据库分区)上运行。
根据第三方面本身或者根据第三方面的任一前述实现形式,在所述方法的第三种可能的实现形式中,所述转换后备缓冲器终止通过该组系统调用所接收的信息来适应。这有利于进行更具有选择性和定向性的TLB-终止。
根据第四方面,本发明涉及一种计算机程序,包括:程序代码,用于当所述计算机程序在计算机上运行时执行根据第三方面的任一前述实现形式所述的方法。
本文描述的方法,系统和设备可以作为数字信号处理器(Digital SignalProcessor,简称DSP),微控制器或任何其它侧处理器中的软件得以实现,或作为专用集成电路(application specific integrated circuit,简称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整个运行时间的绑定修改。
本发明还支持包含计算机可执行代码或计算机可执行指令的计算机程序产品,这些计算机可执行代码或计算机可执行指令在执行时使得至少一台计算机执行本文所述的执行及计算步骤。
通过以上启示,对于本领域技术人员来说,许多替代产品、修改及变体是显而易见的。当然,所属领域的技术人员容易意识到除本文所述的应用之外,还存在本发明的众多其它应用。
虽然已参考一个或多个特定实施例描述了本发明,但所属领域的技术人员将认识到在不偏离本发明的范围的前提下,仍可对本发明作出许多改变。因此,应理解,只要是在所附权利要求书及其等效文句的范围内,可以用不同于本文具体描述的方式来实践本发明。
在权利要求书中,词语“包括”不排除其它元素或步骤,不定冠词“一”不排除多个。单个处理器或其它单元可以完成权利要求中描述的几个器件的功能。
在仅凭某些措施被记载在相互不同的从属权利要求书中这个单纯的事实并不意味着这些措施的结合不能被有效地使用。计算机程序可存储或分发到合适的介质上,例如与其它硬件一起或者作为其它硬件的部分提供的光存储介质或者固态介质,还可以以其它形式例如通过因特网或者其它有线或无线电信系统分发。
Claims (15)
1.一种用于多核系统(1000)的内存同步的系统(100),其特征在于,所述系统(100)包括:
-分配模块(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)提供转换后备缓冲器终止的信息;
-接口模块(30),用于从用户空间提供访问分配模块(10)的接口。
2.根据权利要求1所述的系统(100),其特征在于,
所述映射模块(20)用于在至少一个内存分区(200-1,...,200-n)的写时复制页面共享期间提供所述转换后备缓冲器终止的信息。
3.根据权利要求1和2任一项所述的系统(100),其特征在于,
所述接口模块(30)用于通过用于对所述至少一个内存分区(200-1,...,200-n)到所述至少一个核心(1010-1,...,1010-n)的绑定进行控制的一组系统调用来向用户空间提供访问分配模块的接口。
4.根据权利要求3所述的系统(100),其特征在于,
所述接口模块(30)用于通过该组系统调用所接收的信息来适应转换后备缓冲器终止。
5.一种数据库(2000),其特征在于,包括:
-具有至少一个核心(1010-1,...,1010-N)的多核系统(1000);
-具有至少一个内存分区(200-1,...,200-n)的内存系统(200);
-用于多核系统(1000)的内存同步的系统(100),其中所述系统(100)包括:
-分配模块(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)提供转换后备缓冲器终止的信息;
-接口模块(30),用于从用户空间提供访问分配模块(10)的接口。
6.根据权利要求5所述的数据库(2000),其特征在于,
所述数据库(2000)是一种混合联机事务处理和联机分析处理数据库。
7.根据权利要求6所述的数据库(2000),其特征在于,
所述数据库(2000)用于通过确保至少一个联机事务处理线程在一个或多个所述至少一个内存分区(200-1,...,200-n)上运行,以进行联机事务处理。
8.根据权利要求5至7任一项所述的数据库(2000),其特征在于,
启用所述数据库(2000),以通过用于指示所述至少一个核心(1010-1,...,1010-n)中的哪一个与所述至少一个内存分区(200-1,...,200-n)中的哪一个进行绑定的数据结构,对所述转换后备缓冲器终止进行受控调度。
9.根据权利要求5至8任一项所述的数据库(2000),其特征在于,
所述接口模块(30)用于发送所述至少一个内存分区(200-1,...,200-n)到所述至少一个核心(1010-1,...,1010-n)的绑定。
10.根据权利要求9所述的数据库(2000),其特征在于,
所述接口模块(30)用于通过该组系统调用所接收的信息来适应转换后备缓冲器终止。
11.一种用于多核系统(1000)的内存同步的方法,其特征在于,所述方法包括:
-通过分配模块(10)向所述多核系统(1000)中的至少一个核心(1010-1,...,1010-n)分配(S1)至少一个内存分区(200-1,...,200-n);
-如果与分配给至少一个核心(1010-1,...,1010-n)的内存分区(200-1,...,200-n)相关联的页表项被修改,通过向所述多核系统(1000)中的至少一个核心(1010-1,...,1010-n)发送(S3)中断,通过映射模块(20)向所述多核系统(1000)提供(S2)转换后备缓冲器终止;
-通过接口模块(30)向用户空间提供(S4)访问分配模块(10)的接口。
12.根据权利要求11所述的方法,其特征在于,
提供(S2)所述转换后备缓冲器终止的步骤在至少一个内存分区的写时复制页面共享期间进行。
13.根据权利要求11或12所述的方法,其特征在于,
提供(S2)所述转换后备缓冲器终止的步骤通过用于对所述至少一个内存分区(200-1,...,200-n)到所述至少一个核心(1010-1,...,1010-n)的绑定进行控制的一组系统调用来进行。
14.根据权利要求13所述的方法,其特征在于,
所述转换后备缓冲器终止通过该组系统调用所接收的信息来适应。
15.一种计算机程序,其特征在于,包括:程序代码,用于当所述计算机程序在计算机上运行时执行前述权利要求12至14任一所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15153769.3A EP3054384B1 (en) | 2015-02-04 | 2015-02-04 | System and method for memory synchronization of a multi-core system |
EPEP15153769.3 | 2015-02-04 | ||
PCT/EP2015/067784 WO2016124259A1 (en) | 2015-02-04 | 2015-08-03 | System and method for memory synchronization of a multi-core system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003949A true CN107003949A (zh) | 2017-08-01 |
CN107003949B CN107003949B (zh) | 2020-02-14 |
Family
ID=52465223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580067463.2A Active CN107003949B (zh) | 2015-02-04 | 2015-08-03 | 用于多核系统的内存同步的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10452686B2 (zh) |
EP (1) | EP3054384B1 (zh) |
JP (1) | JP6421247B2 (zh) |
CN (1) | CN107003949B (zh) |
RU (1) | RU2681409C1 (zh) |
WO (1) | WO2016124259A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388228A (zh) * | 2018-02-01 | 2018-08-10 | 北京东土科技股份有限公司 | 一种针对多通道嵌入式控制系统的同步调试方法和装置 |
CN108897714A (zh) * | 2018-07-03 | 2018-11-27 | 中国人民解放军国防科技大学 | 一种区域自治的多核或众核处理器芯片 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3079060B1 (en) | 2015-04-08 | 2018-03-28 | Huawei Technologies Co., Ltd. | Load balancing for large in-memory databases |
EP3291103B1 (en) * | 2016-09-01 | 2019-11-06 | Huawei Technologies Co., Ltd. | System and method for creating a snapshot of a subset of a database |
CN108334420B (zh) * | 2017-01-19 | 2021-06-08 | 中国科学院声学研究所 | 一种基于多核网络处理器系统的数据恢复方法 |
US10552339B2 (en) * | 2018-06-12 | 2020-02-04 | Advanced Micro Devices, Inc. | Dynamically adapting mechanism for translation lookaside buffer shootdowns |
US11360918B1 (en) * | 2020-12-21 | 2022-06-14 | Otis Elevator Company | Real-time processing system synchronization in a control system |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1489059A (zh) * | 2002-10-10 | 2004-04-14 | �Ҵ���˾ | 管理多处理器系统中虚拟化的物理存储器的方法和系统 |
CN1728113A (zh) * | 2004-07-30 | 2006-02-01 | 惠普开发有限公司 | 利用转换后备缓冲器选中的多处理器系统和方法 |
US20080270739A1 (en) * | 2007-04-27 | 2008-10-30 | Hamilton Eric W | Management of copy-on-write fault |
CN102346714A (zh) * | 2011-10-09 | 2012-02-08 | 西安交通大学 | 用于多核处理器的一致性维护装置及一致性交互方法 |
US8176282B2 (en) * | 2009-03-11 | 2012-05-08 | Applied Micro Circuits Corporation | Multi-domain management of a cache in a processor system |
US20120284463A1 (en) * | 2011-05-02 | 2012-11-08 | International Business Machines Corporation | Predicting cache misses using data access behavior and instruction address |
US20130339595A1 (en) * | 2011-12-30 | 2013-12-19 | Amit Kumar | Identifying and prioritizing critical instructions within processor circuitry |
US20140114906A1 (en) * | 2012-10-23 | 2014-04-24 | Sumanth HEGDE | Generic semantic layer for in-memory database reporting |
CN104021344A (zh) * | 2014-05-14 | 2014-09-03 | 南京大学 | 一种用于收集和截获计算机内存行为的蜜罐机制及其方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02101552A (ja) * | 1988-10-11 | 1990-04-13 | Fujitsu Ltd | アドレス変換バッファ処理方式 |
US5497480A (en) | 1990-12-31 | 1996-03-05 | Sun Microsystems, Inc. | Broadcast demap for deallocating memory pages in a multiprocessor system |
KR100278034B1 (ko) * | 1992-04-17 | 2001-01-15 | 리패치 | 다중처리기 컴퓨터 시스템의 메모리페이지를 할당해제하는 브로드 캐스트 디맵 |
JPH05314009A (ja) * | 1992-05-07 | 1993-11-26 | Hitachi Ltd | マルチプロセッサシステム |
JP2845754B2 (ja) * | 1994-06-29 | 1999-01-13 | 甲府日本電気株式会社 | マルチプロセッサシステム |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US20090100435A1 (en) | 2007-10-11 | 2009-04-16 | Microsoft Corporation | Hierarchical reservation resource scheduling infrastructure |
US9388961B2 (en) * | 2009-12-15 | 2016-07-12 | Whelen Engineering Compnay, Inc. | Asymmetrical optical system |
GB2480599A (en) | 2010-05-17 | 2011-11-30 | Tech Universit T Muenchen | Hybrid OLTP and OLAP database |
US9916257B2 (en) * | 2011-07-26 | 2018-03-13 | Intel Corporation | Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory |
US10261916B2 (en) * | 2016-03-25 | 2019-04-16 | Advanced Micro Devices, Inc. | Adaptive extension of leases for entries in a translation lookaside buffer |
-
2015
- 2015-02-04 EP EP15153769.3A patent/EP3054384B1/en active Active
- 2015-08-03 CN CN201580067463.2A patent/CN107003949B/zh active Active
- 2015-08-03 RU RU2017126306A patent/RU2681409C1/ru active
- 2015-08-03 JP JP2017538971A patent/JP6421247B2/ja active Active
- 2015-08-03 WO PCT/EP2015/067784 patent/WO2016124259A1/en active Application Filing
-
2017
- 2017-08-04 US US15/669,547 patent/US10452686B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1489059A (zh) * | 2002-10-10 | 2004-04-14 | �Ҵ���˾ | 管理多处理器系统中虚拟化的物理存储器的方法和系统 |
CN1728113A (zh) * | 2004-07-30 | 2006-02-01 | 惠普开发有限公司 | 利用转换后备缓冲器选中的多处理器系统和方法 |
US20080270739A1 (en) * | 2007-04-27 | 2008-10-30 | Hamilton Eric W | Management of copy-on-write fault |
US8176282B2 (en) * | 2009-03-11 | 2012-05-08 | Applied Micro Circuits Corporation | Multi-domain management of a cache in a processor system |
US20120284463A1 (en) * | 2011-05-02 | 2012-11-08 | International Business Machines Corporation | Predicting cache misses using data access behavior and instruction address |
CN102346714A (zh) * | 2011-10-09 | 2012-02-08 | 西安交通大学 | 用于多核处理器的一致性维护装置及一致性交互方法 |
US20130339595A1 (en) * | 2011-12-30 | 2013-12-19 | Amit Kumar | Identifying and prioritizing critical instructions within processor circuitry |
US20140114906A1 (en) * | 2012-10-23 | 2014-04-24 | Sumanth HEGDE | Generic semantic layer for in-memory database reporting |
CN104021344A (zh) * | 2014-05-14 | 2014-09-03 | 南京大学 | 一种用于收集和截获计算机内存行为的蜜罐机制及其方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388228A (zh) * | 2018-02-01 | 2018-08-10 | 北京东土科技股份有限公司 | 一种针对多通道嵌入式控制系统的同步调试方法和装置 |
CN108897714A (zh) * | 2018-07-03 | 2018-11-27 | 中国人民解放军国防科技大学 | 一种区域自治的多核或众核处理器芯片 |
CN108897714B (zh) * | 2018-07-03 | 2022-05-24 | 中国人民解放军国防科技大学 | 一种区域自治的多核或众核处理器芯片 |
Also Published As
Publication number | Publication date |
---|---|
US20170337256A1 (en) | 2017-11-23 |
JP6421247B2 (ja) | 2018-11-07 |
JP2018506790A (ja) | 2018-03-08 |
US10452686B2 (en) | 2019-10-22 |
EP3054384B1 (en) | 2018-06-27 |
EP3054384A1 (en) | 2016-08-10 |
CN107003949B (zh) | 2020-02-14 |
RU2681409C1 (ru) | 2019-03-06 |
WO2016124259A1 (en) | 2016-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107003949A (zh) | 用于多核系统的内存同步的系统和方法 | |
US9959337B2 (en) | Independent data processing environments within a big data cluster system | |
EP3738045B1 (en) | Distributed partitioned map reduce using a data fabric | |
CN109144679B (zh) | 中断请求的处理方法、装置及虚拟化设备 | |
CN103049334B (zh) | 一种任务处理的方法和虚拟机 | |
US20210224279A1 (en) | Distributed real-time partitioned mapreduce for a data fabric | |
US9619430B2 (en) | Active non-volatile memory post-processing | |
US9141173B2 (en) | Thread consolidation in processor cores | |
CN102629221B (zh) | 用于分布式共享存储的任务同步方法、装置及系统 | |
US20140223060A1 (en) | Injecting Interrupts in Virtualized Computer Systems | |
US9563569B2 (en) | Memory transformation in virtual machine live migration | |
CN101013415A (zh) | 用于多处理器阵列的线程感知分布式软件系统 | |
CN101149728A (zh) | 一种多核处理系统及其管理方法 | |
CN107491340B (zh) | 跨物理机的巨型虚拟机实现方法 | |
CN106815068A (zh) | 基于Openstack实现Hyperv虚拟机热迁移的方法 | |
CN102681890A (zh) | 一种应用于线程级推测并行的限制性值传递方法和装置 | |
US9038075B2 (en) | Batch execution of system calls in an operating system | |
US9104465B2 (en) | Main processor support of tasks performed in memory | |
CN111459620B (zh) | 安全容器操作系统到虚拟机监控器的信息调度方法 | |
US10255198B2 (en) | Deferring registration for DMA operations | |
CN105930210A (zh) | Mpi函数调用方法和装置 | |
CN110019049A (zh) | 一种操作请求的处理方法及装置 | |
US20230418648A1 (en) | Efficient network device failover management for virtual machines | |
US20150293780A1 (en) | Method and System for Reconfigurable Virtual Single Processor Programming Model | |
Wentzlaff | dPool: a distributed data structure for factored operating systems |
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 |