面向真实 Go 程序的乐观并发控制(含附录的扩展版)
分布式、并行与集群计算
2021-06-04 v1 性能
编程语言
摘要
我们提出一个源到源的转换框架 GOCC,它接收 Go 语言中基于锁的悲观并发程序,并将其转换为使用硬件事务内存(HTM)的乐观并发程序。选择 Go 语言是因为并发在 Go 中是头等公民,且在 Go 程序中被广泛使用。GOCC 执行丰富的过程间程序分析以检测并过滤锁保护区域,并在有利时对周围锁进行 AST 级代码转换。是否转换由临界区的静态分析以及通过执行剖面的动态分析共同驱动。一个使用感知机的定制 HTM 库学习并发行为,并在重写的加锁/解锁点动态决定是否使用 HTM。鉴于事务内存研究历史丰富却未在任何工业环境中被采用,我们认为这种最终生成源代码补丁的工作流更适合工业规模采用。在广泛使用的 Go 库和应用上的结果展示了我们的自动化转换带来的显著(高达 10 倍)且可扩展的性能提升,同时避免了主要的性能回退。
引用
@article{arxiv.2106.01710,
title = {Optimistic Concurrency Control for Real-world Go Programs (Extended Version with Appendix)},
author = {Zhizhou Zhang and Milind Chabbi and Adam Welc and Timothy Sherwood},
journal= {arXiv preprint arXiv:2106.01710},
year = {2021}
}