Optimistic Concurrency Control for Real-world Go Programs
Zhizhou Zhang, Milind Chabbi, Adam Welc, Timothy Sherwood
Abstract
We present a source-to-source transformation framework, GOCC, that consumes lock-based pessimistic concurrency programs in the Go language and transforms them into optimistic concurrency programs that use Hardware Transactional Memory (HTM). The choice of the Go language is motivated by the fact that concurrency is a first-class citizen in Go, and it is widely used in Go programs. GOCC performs rich interprocedural program analysis to detect and filter lock-protected regions and performs AST-level code transformation of the surrounding locks when profitable. Profitability is driven by both static analyses of critical sections and dynamic analysis via execution profiles. A custom HTM library, using perceptron, learns concurrency behavior and dynamically decides whether to use HTM in the rewritten lock/unlock points. Given the rich history of transactional memory research but its lack of adoption in any industrial setting, we believe this workflow, which ultimately produces source-code patches, is more apt for industry-scale adoption. Results on widely adopted Go libraries and applications demonstrate significant (up to 10⇥) and scalable performance gains resulting from our automated transformation while avoiding major performance regressions.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Cited by top-tier papers1
Ask how each one uses itRelated papers
- HTMFS: Strong Consistency Comes for Free with Hardware Transactional Memory in Persistent Memory File SystemsJifei Yi, Mingkai Dong, Fangnuo Wu, Haibo ChenFAST 2022 · 19 citations
- go-pmem: Native Support for Programming Persistent Memory in GoJerrin Shaji George, Mohit Verma, Rajesh Venkatasubramanian, Pratap SubrahmanyamUSENIX ATC 2020 · 25 citations
- Safety Hints for HTM Capacity Abort MitigationAnirudh Jain, Divya Kiran Kadiyala, Alexandros DaglisHPCA 2023
- Concrat: An Automatic C-to-Rust Lock API Translator for Concurrent ProgramsJaemin Hong, Sukyoung RyuICSE 2023 · 17 citations
- Verifying vMVCC, a high-performance transaction library using multi-version concurrency controlYun-Sheng Chang, Ralf Jung, Upamanyu Sharma, Joseph Tassarotti et al.OSDI 2023 · 16 citations
