So I ran some (admittedly cursed) benchmarks (don't ask about my methodology (it involved energy drinks and 3am)) on 128-tick CS2 servers. KVM vs LXC. Thought I'd share before I forget (which I will (probably already am)).
KVM: stable 128 tick, ±1ms variance, kernel handles scheduling cleanly
LXC: 128 tick reported, actual 115-128 oscillation, container scheduler fighting host (you can see it in perf (if you squint (with a microscope)))
My theory (and it's just that (a theory (nested theories are my brand))) is that LXC's cgroup cpu.shares creates jitter under load. KVM gets pinned vCPUs. LXC gets "best effort" which for competitive CS2 means "your headshots don't register."
Then this Xen guy (yes Xen (the undead hypervisor)) DMs me about paravirtualization. I don't know what to do with this information. Do I care? Should I care? (I care a little (the curiosity burns)).
Has anyone actually made LXC work for sub-millisecond game hosting? Or is this just "use KVM and stop being clever?"