Re: [PATCH 1/6] prctl: introduce PR_THP_POLICY_DEFAULT_HUGE for the process

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 15, 2025 at 06:11:55PM +0200, David Hildenbrand wrote:
> > > > So if you're not overriding VM_NOHUGEPAGE, the whole point of this exercise
> > > > is to override global 'never'?
> > > >
> > >
> > > Again, I am not overriding never.
> > >
> > > hugepage_global_always and hugepage_global_enabled will evaluate to false
> > > and you will not get a hugepage.
> >
> > Yeah, again ack, but I kind of hate that we set VM_HUGEPAGE everywhere even
> > if the policy is never.
>
> I think it should behave just as if someone does manually an madvise(). So
> whatever we do here during an madvise, we should try to do the same thing
> here.

Ack I agree with this.

It actually simplifies things a LOT to view it this way - we're saying 'by
default apply madvise(...) to new VMAs'.

Hm I wonder if we could have a more generic version of this...

Note though that we're not _quite_ doing this.

So in hugepage_madvise():

int hugepage_madvise(struct vm_area_struct *vma,
		     unsigned long *vm_flags, int advice)
{
	...

	switch (advice) {
	case MADV_HUGEPAGE:
		*vm_flags &= ~VM_NOHUGEPAGE;
		*vm_flags |= VM_HUGEPAGE;

		...

		break;

		...
	}

	...
}

So here we're actually clearing VM_NOHUGEPAGE and overriding it, but in the
proposed code we're not.

So we're back into confusing territory again :)

I wonder if we could...

1. Add an MADV_xxx that mimics the desired behaviour here.

2. Add a generic 'madvise() by default' thing at a process level?

Is this crazy?

>
> --
> Cheers,
>
> David / dhildenb
>




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux