Re: [RFC] mm/migrate: Add new migration reason MR_HUGETLB

From: Michal Hocko
Date: Wed Jan 31 2018 - 15:32:50 EST


On Wed 31-01-18 12:12:17, Andrew Morton wrote:
> On Wed, 31 Jan 2018 08:58:52 +0100 Michal Hocko <mhocko@xxxxxxxxxx> wrote:
>
> > On Wed 31-01-18 07:55:05, Anshuman Khandual wrote:
> > > On 01/30/2018 01:29 PM, Michal Hocko wrote:
> > > > On Tue 30-01-18 08:37:14, Anshuman Khandual wrote:
> > > >> alloc_contig_range() initiates compaction and eventual migration for
> > > >> the purpose of either CMA or HugeTLB allocation. At present, reason
> > > >> code remains the same MR_CMA for either of those cases. Lets add a
> > > >> new reason code which will differentiate the purpose of migration
> > > >> as HugeTLB allocation instead.
> > > > Why do we need it?
> > >
> > > The same reason why we have MR_CMA (maybe some other ones as well) at
> > > present, for reporting purpose through traces at the least. It just
> > > seemed like same reason code is being used for two different purpose
> > > of migration.
> >
> > But do we have any real user asking for this kind of information?
>
> It seems a reasonable cleanup: reusing MR_CMA for hugetlb just because
> it happens to do the right thing is a bit hacky - the two things aren't
> particularly related and a reader could be excused for feeling
> confusion.

My bad! I thought this is a tracepoint thingy. But it seems to be only
used as a migration reason for page_owner. Now it makes more sense.

> But the change seems incomplete:
>
> > + if (migratetype == MIGRATE_CMA)
> > + migrate_reason = MR_CMA;
> > + else
> > + migrate_reason = MR_HUGETLB;
>
> If we're going to do this cleanup then shouldn't we go all the way and
> add MIGRATE_HUGETLB?

Yes. We can expect more users of alloc_contig_range in future. Maybe we
want to use MR_CONTIG_RANGE instead.
--
Michal Hocko
SUSE Labs