Ok now I have better understanding of the problem... In my opinion DefaultMemoryAccounting=Yes is not and should not be required for lxc containers to run. Some change, presumable in systemd or its configuration, made this issue surface. At a first glance I think this is an lxc/systemd interoperability issue. If I read the source correctly, the libvirt LXC driver assumes it can check cgroup controller availability with its own cgroup. Under the current circumstances this assumption is wrong. When the LXC driver is run with systemd, the container process cgroup is moved under machine.slice, where the memory controller is available regardless of the DefaultMemoryAccounting setting. If the current behaviour/configuration of systemd/cgroups is correct and desired I could write a "crude" fix for the LXC driver to not check controller availability when started with systemd and the cgroupv2 backend.