多核系统上可伸缩的读写同步

来源 :复旦大学 | 被引量 : 0次 | 上传用户:netwanderchf
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着计算机硬件技术的飞速发展,单个处理器性能的增长已经遇到了瓶颈,处理器个数的增长成为了提高单个计算机性能的主要发展方向。处理器个数的增长给应用程序的性能提升带来了新的机遇,也带来了性能和正确性上的挑战。为了充分的利用这些处理器资源,操作系统和计算密集型的应用正在向并行化的模型演进。在一个并行的系统中,多个任务之间往往需要共享一些信息以进行协同工作。为了使得多个任务可以正确有序的访问这些共享信息,并行程序采用同步的方法对不同任务的访问进行控制和限制,使得对每一个单独的任务来说,这些共享信息都维持着某种一致性。错误的使用同步可能会导致并行程序的错误或者影响其执行的性能,设计一个易于正确使用,而又具有良好性能的同步原语是一个十分重要的问题。一个理想的同步原语应该具有定义清晰的较强的语义保证,同时又尽量不影响应用在多核系统上的可伸缩性。读写锁是一种在语义上非常清晰的同步机制,它将对共享状态的访问者分为读者和写者两个类别,在同一时刻,仅允许一个写者进入临界区更新共享状态,或允许多个读者同时进入临界区读取共享状态。因为其易于理解的语义,读写锁在操作系统内核以及并行应用程序中得到了广泛的应用。理论上说,因为读写锁中的不同的读者并没有逻辑上的依赖,多个读者在没有写者的情况下应该可以快速的进入和离开临界区,并且不需要相互通信。事实上,现有的读写锁设计中,往往读者获取锁时要产生相互通信,或者使用昂贵的内存屏障指令确保同步的正确性。这些设计限制了使用读写锁的并行系统中读者的可伸缩性和吞吐量。针对读写锁的潜在性能问题,我们设计了一个高可伸缩的读写锁算法PRWLock,这一算法巧妙利用了现代多核系统较短的内存写可见时间以及较小的核间中断开销,在满足TSO内存一致性模型的系统上实现了不需要共享信息以及内存屏障的读者锁,同时保证了写者锁可接受的性能。我们进一步发现,在现代主流操作系统中的睡眠,唤醒机制会对同步机制的可伸缩性造成限制。当多个因为某一条件而进入睡眠的任务的唤醒条件达到时,唤醒操作是由单一任务串行完成的。针对这一问题,我们设计了操作系统中可以并发的唤醒睡眠任务的机制PWake,并将其与PRWLock相结合实现了可伸缩性更好的读写同步机制。为了验证这两种机制的有效性,我们在Linux的内核和用户态分别实现了PRWLock,并结合了PWake唤醒机制。我们将PRWLock应用在了Linux内核的地址空间管理机制上和一个用户态的内存数据库中,多项实验表明PRWLock具有同前人研究成果相似或更好的性能特性,并且更加易于部署到现有并行系统中。
其他文献
代码生成器是用来生成软件代码的工具,是用来辅助软件开发并提高开发效率的手段,受到越来越多的开发人员的喜爱。但是目前市面上的代码生成器参差不齐,存在众多问题。目前主流代
经济全球化给我国企业带来发展机遇的同时,也加剧了企业之间的竞争,实质是资源的竞争。企业实现信息化管理已是大势所趋,实施ERP工程是目前实现企业信息化的主要手段。ERP系统能
随着信息技术的快速发展,目前,多媒体信息发布系统已广泛应用于酒店、医院、银行、商场、交通、传媒、社区等场所,为现代化城市提供了便捷、多样、实时的信息传播。大规模的
随着移动终端的广泛使用,人们对于移动定位、导航服务的需求日渐增多,移动终端上应用服务受到了前所未有的关注,导航等相关服务功能也从过去的单一设备支持逐步发展到了手机
随着网络和信息技术的发展,各种网络应用不断普及。网络在给人们带来巨大便利的同时,也不可避免地遭受各种安全威胁。防火墙作为一种重要的网络安全技术,有着十分重要的研究意义
计算机网络的日益发展和普及以及跨地域分布的企业组织机构使得数据的存储和应用越来越分布化。分布式数据库(Distributed Database)技术就是在这种环境下应运而生的。基于这
空管系统对空管事务进行调度,保证空中交通的安全。在空管系统中,必须保证关键服务的容错性和高可用性。数据复制技术为实现这一目的提供了一个较好的解决方案。因此,研究数
所谓VPN(Virtual Private Network,虚拟专用网络)是指通过公用骨干网联接,利用隧道协议和安全措施构建的专用网络,这里的公用网主要指Interet。为了保障信息在Internet上传输
数据挖掘作为一门学科,汇聚了数据库、人工智能、统计学、可视化、并行计算等不同学科和领域,受到各界的广泛关注。目前,就国内来说,虽然数据挖掘技术本身已经逐步趋向成熟,而且从
学位