Chunxin Zang writes:
My usecase is that there are two types of services in one server. They have difference priorities. Type_A has the highest priority, we need to ensure it's schedule latency、I/O latency、memory enough. Type_B has the lowest priority, we expect it will not affect Type_A when executed. So Type_A could use memory without any limit. Type_B could use memory only when the memory is absolutely sufficient. But we cannot estimate how much memory Type_B should use. Because everything is dynamic. So we can't set Type_B's memory.high. So we want to release the memory of Type_B when global memory is insufficient in order to ensure the quality of service of Type_A . In the past, we used the 'force_empty' interface of cgroup v1.
This sounds like a perfect use case for memory.low on Type_A, and it's pretty much exactly what we invented it for. What's the problem with that?