Re: [PATCH] mm, memcg: Optionally disable memcg by default using Kconfig

Mel Gorman
2015-05-19T15:41:25Z

On Tue, May 19, 2015 at 05:27:10PM +0200, Michal Hocko wrote:
> On Tue 19-05-15 16:13:02, Mel Gorman wrote:
> [...]
> > :ffffffff811c160f: je ffffffff811c1630 <mem_cgroup_try_charge+0x40>
> > :ffffffff811c1611: xor %eax,%eax
> > :ffffffff811c1613: xor %ebx,%ebx
> > 1 1.7e-05 :ffffffff811c1615: mov %rbx,(%r12)
> > 7 1.2e-04 :ffffffff811c1619: add $0x10,%rsp
> > 1211 0.0203 :ffffffff811c161d: pop %rbx
> > 5 8.4e-05 :ffffffff811c161e: pop %r12
> > 5 8.4e-05 :ffffffff811c1620: pop %r13
> > 1249 0.0210 :ffffffff811c1622: pop %r14
> > 7 1.2e-04 :ffffffff811c1624: pop %rbp
> > 5 8.4e-05 :ffffffff811c1625: retq
> > :ffffffff811c1626: nopw %cs:0x0(%rax,%rax,1)
> > 295 0.0050 :ffffffff811c1630: mov (%rdi),%rax
> > 160703 2.6973 :ffffffff811c1633: mov %edx,%r13d
>
> Huh, what? Even if this was off by one and the preceding instruction has
> consumed the time. This would be reading from page->flags but the page
> should be hot by the time we got here, no?
>

I would have expected so but it's not the first time I've seen cases where
examining the flags was a costly instruction. I suspect it's due to an
ordering issue or more likely, a frequent branch mispredict that is being
accounted for against this instruction.

--
Mel Gorman
SUSE Labs