Hi all, I've recently been looking at lowmemorykiller, userspace lmkd, and memory cgroups on Android.
First of all, no, an Android device will probably not function without a kernel or userspace version of lowmemorykiller. Android userspace expects that if there are many apps running in the background on a machine and the foreground app allocates additional memory, something on the system will kill background apps to free up more memory. If this doesn't happen, I expect that at the very least you'll see page cache thrashing, and you'll probably see the OOM killer run regularly, which has a tendency to cause Android userspace to restart. To the best of my knowledge, no device has shipped with a userspace lmkd.
Second, yes, the current design and implementation of lowmemorykiller are unsatisfactory. I now have some concrete evidence that the design of lowmemorykiller is directly responsible for some very negative user-visible behaviors (particularly the triggers for when to kill), so I'm currently working on an overhaul to the Android memory model that would use mem cgroups and userspace lmkd to make smarter decisions about reclaim vs killing. Yes, this means that we would move to vmpressure (which will require improvements to vmpressure). I can't give a firm ETA for this, as it's still in the prototype phase, but the initial results are promising.