When it comes to synchronization of shared state and intermediacy, developer-controlled locking has always been a double-edged sword. Although effective, it’s been proven to be deadly when done wrong.
Deadlocks, livelocks, and a lack of composability are all way too common, and frankly — hard to avoid — especially when dealing with large, complex applications.
One alternative approach to this pain in the arse problem is moving the locking part inside the runtime, basically freeing the developer from locking decision concerns. It works such that each critical section access is done using an “atomic transaction”.
Before we proceed any further…
Originally posted on my personal blog: https://www.talhoffman.com/introduction-to-criu-and-live-migration
In this blog post I will try and explain what CRIU is and how it works, what Live Migration is, and how those two are related.
What CRIU does is letting you freeze running Linux processes and checkpoint their state to the disk as a collection of files. …