Wait-Free Code Patching of Multi-Threaded Processes

Florian Rommel, Lennart Glauer, Christian J. Dietrich, Daniel Lohmann
{"title":"Wait-Free Code Patching of Multi-Threaded Processes","authors":"Florian Rommel, Lennart Glauer, Christian J. Dietrich, Daniel Lohmann","doi":"10.1145/3365137.3365404","DOIUrl":null,"url":null,"abstract":"In the operation and maintenance phase of a deployed software component, security and bug-fix updates are regular events. However, for many high-availability services, costly restarts are no acceptable option as the induced downtimes lead to a degradation of the service quality. One solution to this problem are live updates, where we inject the desired software patches directly into the volatile memory of a currently running process. However, before the actual patch gets applied, most live-update methods use a stop-the-world approach to bring the process into a safe state; an operation that is highly disruptive for the execution of multi-threaded programs. In this paper, we present a wait-free approach to inject code changes into a running multi-threaded process. We avoid the disruption of a global barrier synchronization over all threads by first preparing a patched clone of the process's address space. Into the updated address space, we gradually migrate individual threads at predefined quiescence points while all other threads make uninterrupted progress. In a first case study with a simple network service, we could completely eliminate the impact of applying a live update on the request latency.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"26 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/3365137.3365404","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

Abstract

In the operation and maintenance phase of a deployed software component, security and bug-fix updates are regular events. However, for many high-availability services, costly restarts are no acceptable option as the induced downtimes lead to a degradation of the service quality. One solution to this problem are live updates, where we inject the desired software patches directly into the volatile memory of a currently running process. However, before the actual patch gets applied, most live-update methods use a stop-the-world approach to bring the process into a safe state; an operation that is highly disruptive for the execution of multi-threaded programs. In this paper, we present a wait-free approach to inject code changes into a running multi-threaded process. We avoid the disruption of a global barrier synchronization over all threads by first preparing a patched clone of the process's address space. Into the updated address space, we gradually migrate individual threads at predefined quiescence points while all other threads make uninterrupted progress. In a first case study with a simple network service, we could completely eliminate the impact of applying a live update on the request latency.
多线程进程的无等待代码补丁
在已部署软件组件的操作和维护阶段,安全性和bug修复更新是定期事件。然而,对于许多高可用性服务来说,代价高昂的重新启动是不可接受的选择,因为由此导致的停机会降低服务质量。这个问题的一个解决方案是实时更新,我们将所需的软件补丁直接注入当前运行进程的易失性内存中。然而,在实际的补丁被应用之前,大多数实时更新方法使用停止世界的方法将进程带入安全状态;一种对多线程程序的执行具有高度破坏性的操作。在本文中,我们提出了一种无等待的方法来将代码更改注入正在运行的多线程进程中。我们通过首先准备一个进程地址空间的补丁克隆来避免所有线程的全局屏障同步中断。在更新的地址空间中,我们在预定义的静止点逐渐迁移单个线程,而所有其他线程则不间断地前进。在使用简单网络服务的第一个案例研究中,我们可以完全消除应用实时更新对请求延迟的影响。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信