[发明专利]用于实现NUMA感知统计计数器的系统和方法有效
申请号: | 201380072254.8 | 申请日: | 2013-12-19 |
公开(公告)号: | CN105190560B | 公开(公告)日: | 2018-12-11 |
发明(设计)人: | D·戴斯;Y·列夫;M·S·莫尔 | 申请(专利权)人: | 甲骨文国际公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/50 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 罗亚男 |
地址: | 美国加*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 线程 递增计数器 节点标识符 优先权 计数器 统计计数器 存储器体系 单个节点 连续更新 数据结构 可扩展 更新 感知 延迟 饥饿 架构 风格 事务 访问 | ||
1.一种用于实现统计计数器的方法,包括:
由多个计算节点执行以下操作,其中每个节点包括至少一个处理器核心以及存储器:
开始包括一个或多个递增共享计数器的操作的多线程应用的执行,其中共享计数器实现为可由在多个计算节点上执行的多线程应用的多个线程访问的数据结构,其中该数据结构包括计数值部分和节点标识符部分;
由所述应用的给定线程启动以该共享计数器为目标的递增操作;及
确定是否尝试执行递增操作或者延迟递增操作的执行,其中所述确定至少部分地依赖于存储在数据结构的节点标识符部分中的值;
其中存储在数据结构的节点标识符部分中的值指示所述多个计算节点当中特定一个节点上的一个或多个线程具有递增共享计数器的优先权或者已经请求递增共享计数器的优先权。
2.如权利要求1所述的方法,
其中存储在数据结构的节点标识符部分中的值识别所述多个计算节点当中最近递增共享计数器的线程在其上执行的特定一个节点;
其中在所识别出的计算节点上执行的线程的递增操作比在所述多个计算节点中其它节点上执行的线程的递增操作具有更高的优先权;及
其中所述确定包括确定存储在数据结构的节点标识符部分中的值是否识别除给定线程在其上执行的计算节点之外的计算节点。
3.如权利要求1所述的方法,
其中存储在数据结构的节点标识符部分中的值识别所述多个计算节点中已经请求递增共享计数器的优先权的线程在其上执行的特定一个节点;及
其中所述确定包括确定存储在数据结构的节点标识符部分中的值是否识别除给定线程在其上执行的计算节点之外的计算节点。
4.如权利要求1所述的方法,其中尝试执行递增操作包括利用单个原子操作尝试递增存储在数据结构的计数值部分中的值以及在数据结构的节点标识符部分中存储给定线程在其上执行的计算节点的标识符。
5.如权利要求4所述的方法,
其中所述确定包括确定数据结构的节点标识符部分的值指示所述多个计算节点中任何一个上都没有线程具有递增共享计数器的优先权或者已经请求递增共享计数器的优先权;及
其中尝试递增存储在数据结构的计数值部分中的值以及在数据结构的节点标识符部分中存储给定线程在其上执行的计算节点的标识符是响应于递增数据结构的计数值部分的一次或多次失败的尝试而执行的,而无需把值写到数据结构的节点标识符部分。
6.如权利要求1所述的方法,还包括:
响应于确定所述多个计算节点中除给定线程在其上执行的计算节点之外的特定一个节点上的一个或多个线程具有递增共享计数器的优先权或者已经请求递增共享计数器的优先权:
延迟递增操作的执行;及
尝试在所述延迟之后执行递增操作。
7.如权利要求1所述的方法,还包括:
响应于确定所述多个计算节点中给定线程在其上执行的一个计算节点上的线程具有递增共享计数器的优先权或者已经请求递增共享计数器的优先权或者所述多个计算节点当中任何一个节点上都没有线程具有递增共享计数器的优先权或者已经请求递增共享计数器的优先权,尝试无延迟地执行递增操作。
8.如权利要求1所述的方法,还包括:
响应于确定存储在数据结构的节点标识符中的值识别除给定线程在其上执行的计算节点之外的计算节点,给定线程在抗饥饿变量中存储给定线程在其上执行的计算节点的标识符,以指示对递增共享计数器的优先权的请求。
9.如权利要求8所述的方法,还包括:
在所述存储之后,在给定线程在其上执行的计算节点上执行的线程尝试无延迟地执行递增操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于甲骨文国际公司,未经甲骨文国际公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201380072254.8/1.html,转载请声明来源钻瓜专利网。