Messages in this thread | | | From | Greg Thelen <> | Subject | Re: [patch] memcg: fix unit mismatch in memcg oom limit calculation | Date | Tue, 09 Nov 2010 12:00:26 -0800 |
| |
Johannes Weiner <hannes@cmpxchg.org> writes:
> Adding the number of swap pages to the byte limit of a memory control > group makes no sense. Convert the pages to bytes before adding them. > > The only user of this code is the OOM killer, and the way it is used > means that the error results in a higher OOM badness value. Since the > cgroup limit is the same for all tasks in the cgroup, the error should > have no practical impact at the moment. > > But let's not wait for future or changing users to trip over it.
Thanks for the fix.
> Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Reviewed-by: Greg Thelen <gthelen@google.com>
> --- > mm/memcontrol.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -1552,8 +1552,9 @@ u64 mem_cgroup_get_limit(struct mem_cgro > u64 limit; > u64 memsw; > > - limit = res_counter_read_u64(&memcg->res, RES_LIMIT) + > - total_swap_pages; > + limit = res_counter_read_u64(&memcg->res, RES_LIMIT); > + limit += total_swap_pages << PAGE_SHIFT; > + > memsw = res_counter_read_u64(&memcg->memsw, RES_LIMIT); > /* > * If memsw is finite and limits the amount of swap space available
| |