Re: [PATCH v2 1/1] mm: do not increment pgfault stats when page fault handler retries

From: Matthew Wilcox
Date: Tue Apr 18 2023 - 11:09:36 EST


On Tue, Apr 18, 2023 at 07:54:01AM -0700, Suren Baghdasaryan wrote:
> On Tue, Apr 18, 2023 at 7:25 AM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
> >
> > On Mon, Apr 17, 2023 at 04:17:45PM -0700, Suren Baghdasaryan wrote:
> > > On Mon, Apr 17, 2023 at 3:52 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
> > > >
> > > > On Mon, Apr 17, 2023 at 03:40:33PM -0400, Peter Xu wrote:
> > > > > > /*
> > > > > > - * We don't do accounting for some specific faults:
> > > > > > - *
> > > > > > - * - Unsuccessful faults (e.g. when the address wasn't valid). That
> > > > > > - * includes arch_vma_access_permitted() failing before reaching here.
> > > > > > - * So this is not a "this many hardware page faults" counter. We
> > > > > > - * should use the hw profiling for that.
> > > > > > - *
> > > > > > - * - Incomplete faults (VM_FAULT_RETRY). They will only be counted
> > > > > > - * once they're completed.
> > > > > > + * Do not account for incomplete faults (VM_FAULT_RETRY). They will be
> > > > > > + * counted upon completion.
> > > > > > */
> > > > > > - if (ret & (VM_FAULT_ERROR | VM_FAULT_RETRY))
> > > > > > + if (ret & VM_FAULT_RETRY)
> > > > > > + return;
> > > > > > +
> > > > > > + /* Register both successful and failed faults in PGFAULT counters. */
> > > > > > + count_vm_event(PGFAULT);
> > > > > > + count_memcg_event_mm(mm, PGFAULT);
> > > > >
> > > > > Is there reason on why vm events accountings need to be explicitly
> > > > > different from perf events right below on handling ERROR?
> > > >
> > > > I think so. ERROR is quite different from RETRY. If we are, for
> > > > example, handling a SIGSEGV (perhaps a GC language?) that should be
> > > > accounted. If we can't handle a page fault right now, and need to
> > > > retry within the kernel, that should not be accounted.
> > >
> > > IIUC, the question was about the differences in vm vs perf accounting
> > > for errors, not the difference between ERROR and RETRY cases. Matthew,
> > > are you answering the right question or did I misunderstand your
> > > answer?
> >
> > Maybe I'm misunderstanding what you're proposing. I thought the
> > proposal was to make neither ERROR nor RETRY increment the counters,
> > but if the proposal is to make ERROR increment the perf counters
> > instead, then that's cool with me.
>
> Oh, I think now I understand your answer. You were not highlighting
> the difference between the who but objecting to the proposal of not
> counting both ERROR and RETRY. Am I on the same page now?

I think so. Let's see your patch and then we can be sure we're talking
about the same thing ;-)