用于实现可扩展争用自适应统计计数器的系统和方法_6

文档序号:9383066阅读:来源:国知局
中)或者通过减小更新的频率(就 像在本文所述的概率计数器中)。在一些实施例中,与采用通常扩展很差和/或产生高度不 准确计数的单纯不可扩展计数器的事务相比,这些技术可以具有显著减小利用这些计数器 的原子事务将彼此冲突的经常性的副作用。
[0119] 在各种实施例中,各种计数器技术(其中一些计数器技提供精确计数,并且其它 的计数器技旨在合理的相对误差,使得它们仍然对检测递增许多次的计数值有用)可以关 于扩展性和/或准确性产生比单纯并发计数器更好的结果。关于吞吐量和准确性,本文所 述的几个计数器都可以大大超过通常使用的统计计数器,尤其是在NUM系统中,同时保持 空间开销低。
[0120] 本文所述的许多计数器技术都很容易被看到是无锁的。此外,当采用本文所述的 概率计数器技术时,重试递增计数器的尝试的需求会随时间推移变得不太有可能,因为用 于计数器的更新概率随时间推移变得更小(尤其是当存在对采用上述BFP-DUP技术的计数 器的争用时)。在一些实施例中,本文所述的计数器可以被修改,使得它们无需等待,在一些 情况下这会添加开销和/或复杂性。把计数器修改为无需等待还会引入附加的限制(诸如 事先知道最大线程数的需求),或者会导致为了避免这种限制而对更多开销和复杂性的需 求。但是,在实践当中,假定一些类型的退避方案可以在存在对计数器的争用时应用,无锁 在一些实施例中会是足够强的属性,以确保对多线程应用的并发线程的进度。
[0121] 图14示出了根据各种实施例被配置为实现本文所述方法的计算系统。计算机系 统1400可以是任何各种类型的设备,包括,但不限于,个人计算机系统、台式计算机、膝上 型或笔记本计算机、大型计算机系统、手持式计算机、工作站、网络计算机、消费者设备、应 用服务器、存储设备、诸如交换机、调制解调器、路由器等等的外围设备,或者一般而言任何 类型的计算设备。在一些实施例中,计算机系统1400可以是采用NUM型存储器体系架构 和/或NUCA属性的系统中的多个节点之一,或者一般而言包括至少一个耦合到某种类型存 储器(例如,高速缓存、本地存储器、远程存储器,等等)的处理器核心的任何类型的计算节 点。
[0122] 用于实现本文所述的任何或全部可扩展统计计数器的机制可以作为计算机程序 产品或软件提供,该产品或软件可以包括其上存储指令的非暂态计算机可读存储介质,指 令可被用来编程计算机系统(或其它电子设备),以执行根据各种实施例的过程。计算机可 读存储介质可以包括用于以机器(例如,计算机)可读的形式(例如,软件、处理应用)存储 信息的任何机制。机器可读存储介质可以包括,但不限于,磁性存储介质(例如,软盘);光 学存储介质(例如,CD-ROM);磁-光存储介质;只读存储器(ROM);随机存取存储器(RAM); 可擦可编程存储器(例如,EPROM和EEPR0M);闪存存储器;适于存储程序指令的电或其它 类型介质。此外,程序指令可以利用光学、声学或其它形式的传播信号(例如,载波、红外线 信号、数字信号,等等)传送。
[0123] 在各种实施例中,计算机系统1400可以包括一个或多个处理器1470 ;每个处理器 可以包括多个核心,任何核心都可以是单线程或多线程的。例如,如图2中所说明的,多个 处理器核心可以包括在单个处理器芯片(例如,单个处理器1470)中,并且多个处理器芯片 可以包括在CPU板上,两个或更多个CPU可以包括在计算机系统1400中。在各种实施例中, 每个处理器1470可以包括高速缓存的层次结构。例如,如在图2中所说明的,每个处理器 芯片1470可以包括多个Ll高速缓存(例如,每个处理器核心一个)以及单个L2高速缓存 (这可以由处理器芯片上的处理器核心共享)。计算机系统1400还可以包括一个或多个持 久性存储设备1450 (例如,光学储存器、磁性储存器、硬驱、带式驱动器、固态存储器,等等) 以及一个或多个系统存储器1410(例如,高速缓存、SRAM、DRAM、RDRAM、EDO RAM、DDR 10 RAM、SDRAM、Rambus RAM、EEPROM,等等)。各种实施例可以包括更少或者未在图14中说明 的附加部件(例如,视频卡、音频卡、附加的网络接口、外围设备、网络接口,例如ATM接口、 以太网接口、帧中继接口,等等)。
[0124] 一个或多个处理器1470、(一个或多个)存储设备1450,以及系统存储器1410可 以耦合到系统互连1440。一个或多个系统存储器1410可以包含程序指令1420。程序指令 1420可以是可执行的,以实现一个或多个应用1422(这可以包括对共享统计计数器的一个 或多个访问,如本文所述)、共享库1424或操作系统1426。在一些实施例中,程序指令1420 可以是可执行的,以实现争用管理器(未示出)。程序指令1420可以以平台本地的二进制、 诸如Java?字节码的任何解释语言或者以诸如C/C++、Java?的任何其它语言等等或者以 它们的任意组合来编码。程序指令1420可以包括功能、操作和/或其它过程,用于实现可 扩展的统计计数器和相关联的功能(例如,以可扩展统计计数器为目标的增量操作和/或 读操作),如本文所述。在各种实施例中,这样的支持和功能可以存在于共享库1424、操作 系统1426或应用程序1422当中的一个或多个中。系统存储器1410还可以包括其中数据 可以被存储的私人存储位置1430和/或共享存储位置1435。例如,在各种实施例中,共享 存储位置1435可以存储并发执行的线程、进程或原子事务可访问的数据,这可以包括存储 在实现共享统计计数器的一个或多个结构中的数据(例如,本文所述的精确计数器或概率 计数器之一)。
[0125] 虽然以上已经相当详细地描述了实施例,但是,一旦以上公开内容被完全理解,各 种变化和修改就将对本领域技术人员变得显然。预期以下权利要求要被解释为包含所有此 类变化和修改。
【主权项】
1. 一种方法,包括: 由一个或多个计算节点执行以下操作,其中每个节点包括至少一个处理器核心以及存 储器: 开始包括一个或多个递增共享计数器的操作的多线程应用的执行,其中共享计数器实 现为能够由所述多线程应用的多个线程访问的数据结构; 由所述应用的给定线程启动以所述共享计数器为目标的递增操作; 响应于所述启动,确定是否或者何时更新所述数据结构;及 响应于确定所述数据结构要被更新,更新存储在所述数据结构中的值; 其中所述确定是否或何时所述更新数据结构的步骤或者所述更新存储在所述数据结 构中的值的步骤包括依赖于对共享计数器的当前或历史争用量来选择用于执行所述确定 或所述更新的多种技术之一。2. 如权利要求1所述的方法,其中所述选择用于执行所述确定或所述更新的多种技术 之一依赖于重试限制条件是否已经通过递增共享计数器的之前尝试满足或者将通过所述 更新满足。3. 如权利要求1所述的方法,其中所述选择用于执行所述确定或所述更新的多种技术 之一依赖于是否已经有多于预定最大次数的响应于所述启动而递增共享计数器的失败尝 试。4. 如权利要求1所述的方法,其中所述选择用于执行所述确定或所述更新的多种技术 之一依赖于争用管理策略。5. 如权利要求1所述的方法, 其中所述数据结构包括计数值部分和节点标识符部分;及 其中选择用于执行所述更新的多种技术之一包括选择以下之一: 其中只有数据结构的计数值部分被更新的技术;及 其中数据结构的计数值部分和节点标识符部分都被更新的技术。6. 如权利要求1所述的方法, 其中所述数据结构包括: 存储计数值或指针值的计数器部分;及 计数器部分是存储计数值还是指针值的指示符,其中存储在计数器部分中的指针值识 别包括一个或多个值的备选计数器结构; 其中选择用于执行所述更新的多种技术之一包括选择以下之一: 其中计数器部分存储计数值并且所述更新包括递增存储在计数器部分中的计数值的 技术;或者 其中计数器部分存储指针值并且所述更新包括更新由该指针值识别的备选计数器结 构中的值之一的技术。7. 如权利要求1所述的方法, 其中选择用于执行所述更新的多种技术之一包括选择以下之一: 其中所述更新包括响应于所述启动而递增精确计数值的技术;或者 其中预计计数值能够从更新概率值计算并且所述更新包括响应于所述启动而以等于 其当前值的概率更新所述更新概率值的技术。8. 如权利要求7所述的方法, 其中数据结构既存储精确计数值又存储更新概率值;及 其中该方法还包括: 由所述多个线程之一启动以所述共享计数器为目标的读操作;及 响应于所述多个线程之一启动读操作: 生成共享计数器的合成值,合成值包括共享计数器的预计值与精确计数值的聚合;及 返回共享计数器的合成值。9. 如权利要求1所述的方法, 其中数据结构存储概率计数器值的表示,其中共享计数器的预计值能够从概率计数器 值的表示计算,并且其中所述更新导致减小存储在数据结构中的概率计数器值的表示将响 应于后续递增操作的启动而被更新的概率;及 其中选择用于执行所述更新的多种技术之一包括: 响应于对共享计数器的高争用,选择其中概率计数器值的表示将被更新的概率比对共 享计数器的争用低时更频繁地减小的技术;或者 响应于对共享计数器的低争用,选择其中概率计数器值的表示将被更新的概率比对共 享计数器的争用高时更不频繁地减小的技术。10. 如权利要求1所述的方法, 其中数据结构存储概率计数器值的包括尾数部分和指数部分的二进制浮点表示;及 其中选择用于执行所述更新的多种技术之一包括选择以下之一:其中只有数据结构的 尾数部分被更新的技术或者其中数据结构的尾数部分和指数部分都被更新的技术。11. 如权利要求1所述的方法, 其中选择用于执行所述确定的多种技术之一包括: 响应于对共享计数器的低争用,选择其中所述确定无条件导致执行所述更新的技术; 或者 响应于对共享计数器的高争用,选择其中所述确定依赖于与共享计数器关联的更新概 率值的技术。12. 如权利要求1所述的方法, 其中选择用于执行所述确定的多种技术之一包括: 响应于对共享计数器的低争用,选择其中所述确定无条件导致执行所述更新而没有延 迟的技术;或者 响应于对共享计数器的高争用,选择其中确定何时更新数据结构依赖于更新优先权指 不符的技术。13. -种系统,包括: 一个或多个处理器; 存储程序指令的存储器,当程序指令在一个或多个处理器上执行时,使这一个或多个 处理器执行: 开始包括一个或多个递增共享计数器的操作的多线程应用的执行,其中共享计数器实 现为能够由多线程应用的多个线程访问的数据结构; 由应用的给定线程启动以该共享计数器为目标的递增操作; 响应于所述启动,确定是否或者何时更新该数据结构;及 响应于确定数据结构要被更新,更新存储在该数据结构中的值; 其中所述确定是否或何时更新数据结构或者所述更新存储在该数据结构中的值包括 依赖于对共享计数器的当前或历史争用量选择用于执行所述确定或所述更新的多种技术 之一。14. 如权利要求13所述的系统, 其中数据结构包括计数值部分和节点标识符部分;及 其中选择用于执行所述更新的多种技术之一包括选择以下之一: 其中只有数据结构的计数值部分被更新的技术;及 其中数据结构的计数值部分和节点标识符部分都被更新的技术。15. 如权利要求13所述的系统, 其中数据结构存储共同代表共享计数器的值的精确计数值和更新概率值;及 其中选择用于执行所述更新的多种技术之一包括选择以下之一: 其中所述更新包括响应于所述启动而递增精确计数值的技术;或者 其中预计计数值可至少部分地基于更新概率值计算并且所述更新包括响应于所述启 动而以等于其当前值的概率更新所述更新概率值的技术。16. 如权利要求13所述的系统, 其中数据结构存储概率计数器值的表示,其中共享计数器的预计值能够从概率计数器 值的表示计算,并且其中所述更新导致减小存储在数据结构中的概率计数器值的表示将响 应于后续递增操作的启动而被更新的概率;及 其中选择用于执行所述更新的多种技术之一包括: 响应于对共享计数器的高争用,选择其中概率计数器值的表示将被更新的概率比对共 享计数器的争用低时更频繁地减小的技术;或者 响应于对共享计数器的低争用,选择其中概率计数器值的表示将被更新的概率比对共 享计数器的争用高时更不频繁地减小的技术。17. -种存储程序指令的非暂态计算机可读存储介质,当程序指令在一个或多个计算 机上执行时,使这一个或多个计算机执行: 开始包括一个或多个递增共享计数器的操作的多线程应用的执行,其中所述共享计数 器实现为可由所述多线程应用的多个线程访问的数据结构; 由所述应用的给定线程启动以该共享计数器为目标的递增操作; 响应于所述启动,确定是否或者何时更新该数据结构;及 响应于确定数据结构要被更新,更新存储在该数据结构中的值; 其中所述确定是否或何时更新数据结构或者所述更新存储在数据结构中的值包括依 赖于对共享计数器的当前或历史争用量选择用于执行所述确定或所述更新的多种技术之 〇18. 如权利要求17所述的非暂态计算机可读存储介质, 其中数据结构包括计数值部分和节点标识符部分;及 其中选择用于执行所述更新的多种技术之一包括选择以下之一: 其中只有数据结构的计数值部分被更新的技术;及 其中数据结构的计数值部分和节点标识符部分都被更新的技术。19. 如权利要求17所述的非暂态计算机可读存储介质, 其中数据结构存储共同代表共享计数器的值的精确计数值和更新概率值;及 其中选择用于执行所述更新的多种技术之一包括选择以下之一: 其中所述更新包括响应于所述启动而递增精确计数值的技术;或者 其中预计计数值能够至少部分地基于更新概率值计算并且所述更新包括响应于所述 启动而以等于其当前值的概率更新所述更新概率值的技术。20. 如权利要求17所述的非暂态计算机可读存储介质, 其中选择用于执行所述确定的多种技术之一包括: 响应于对共享计数器的低争用,选择其中所述确定无条件导致执行所述更新的技术; 或者 响应于对共享计数器的高争用,选择其中所述确定依赖于与共享计数器关联的更新概 率值的技术。
【专利摘要】本文所述的系统和方法可以实现适于对计数器的争用量的可扩展统计计数器。计数器可以在事务中被访问。用于确定是否或者何时响应于递增操作的启动而递增计数器的方法和/或用于更新计数器的方法可以依赖于当前、最近或历史争用量来选择。各种争用管理策略或重试条件可被用来在多种方法之间进行选择。一种计数器可以包括在低争用情况下递增的精确计数器部分和在高争用情况下更新的概率计数器部分。概率计数器递增的量可以依赖于争用。另一种计数器可以包括只有在争用情况下才鼓励由单个节点上的线程进行连续递增的节点标识符部分。另一种计数器可以响应于对计数器的争用而膨胀。
【IPC分类】G06F9/52, G06F9/50
【公开号】CN105103130
【申请号】CN201380072247
【发明人】D·戴斯, Y·列夫, M·S·莫尔
【申请人】甲骨文国际公司
【公开日】2015年11月25日
【申请日】2013年12月19日
【公告号】EP2936311A1, US9183048, US20140181827, WO2014100295A1
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1