Messages in this thread | | | From | Linus Torvalds <> | Date | Wed, 17 Jun 2020 13:15:31 -0700 | Subject | Re: [PATCH 07/25] mm/csky: Use mm_fault_accounting() |
| |
On Wed, Jun 17, 2020 at 12:58 PM Peter Xu <peterx@redhat.com> wrote: > > But currently remote GUP will still do the page fault accounting on the remote > task_struct, am I right? E.g., when the get_user_pages_remote() is called with > "tsk != current", it seems the faultin_page() will still do maj_flt/min_flt > accounting for that remote task/thread?
Well, that would be a data race and fundamentally buggy.
It would be ok with something like ptrace (which only works when the target is quiescent), but is completely wrong otherwise.
I guess it works fine in practice, and it's only statistics so even if you were to have a data race it doesn't much matter, but it's definitely conceptually very very wrong.
The fault stats should be about who does the fault (they are about the _thread_) not about who the fault is done to (which is about the _mm_).
Allocating the fault data to somebody else sounds frankly silly and stupid to me, exactly because it's (a) racy and (b) not even conceptually correct. The other thread literally _isn't_ doing a major page fault, for crissake!
Now, there are some actual per-mm statistics too (the rss stuff etc), and it's fundamentally harder exactly because of the shared data. See the mm_counter stuff etc. Those are not about who does soemthing, they are about the resulting MM state.
Linus
| |