On Wed 16-06-21 11:17:38, Eric W. Biederman wrote: [...] > MemAvailable seems to have a good definition. Roughly the amount of > memory that can be allocated without triggering swapping. Updated > to include not trigger memory cgroup based swapping and I sounds good. yes this definition is at least understandable but how do you want to define it in the memcg scope? There are two different source of memory pressure when dealing with memcgs. Internal one when a limit is hit and and external when the source of the reclaim comes from higher the hierarchy (including the global memory pressure). The former one would be quite easy to mimic with the global semantic but the later will get much more complex very quickly - a) you would need a snapshot of the whole cgroup tree and evaluate it against the global memory state b) you would have to consider memory reclaim protection c) the external memory pressure is distributed proportionaly to the size most of the time which is yet another complication. And more other challenges that have been already discussed. That being said, this might be possible to implement but I am not really sure this is viable and I strongly suspect that it will get unreliable in many situations in context of "how much you can allocate without swapping". -- Michal Hocko SUSE Labs