CRIU is a project to save an application or containers complete running state to a file, and then restore it elsewhere.
It comes with lots of caveats.
CRIU is a project to save an application or containers complete running state to a file, and then restore it elsewhere.
It comes with lots of caveats.
The actual details are far more funny and interesting (we could talk about checkpoint not being an atomic operation for the kernel, how you need to do some magic with "plug" qdiscs and qdiscs being applicable on egress only you'll look into IFBs and I love Linux it is so versatile and full of amazing little features). Don't forget to hot-update conntrack too...
And since libsoccr is GPL you might need to do this yourself, and you'll want to do it anyway, because it's interesting and you'll learn so many things.
My only gripe is the checkpoint still being a bit slow and maybe if I keep annoying Jens Axboe on twitter maybe soon it'll be a io_uring chain <3.
Apparently there are some workloads in finance that use similar hardware.
Not surprising, I've heard from someone who worked at a financial institution doing high-speed trading that basically every ms counts for them.
- you have a human in the loop to take a split second decision, every millisecond counts
- you have a very short time to perform 'looped' operations - where the result of one measurement must be taken into account to effect the next measurement (adaptive optics, some radar systems, some mechanical control loops) and you can't wait.
You'd think 'oh but you got more than 1 ms for that' Well not always since one must take into account the time to detect the failure, and the time to switch other parts of the system (which sometimes must be done in sequence with the connection takeover).
I'd say 'forget tcp' there but we don't always get to decide the comm layer...
If the window of unavailability was instead 1ms, there would be dramatically less noise, potentially none.
(But in practice, we mostly rely on the fact that if you are in Google Cloud and specify a minimum CPU version, Google masks CPUID in that VM to exactly match that CPU, even if the underlying hardware is newer. They do this so live-migration of the whole VM works, but it also helps for process migration. I'm not sure where this is specifically documented but see e.g. https://stackoverflow.com/a/44507857 .)