On Wed 21-09-16 09:04:31, Dave Hansen wrote: > On 09/21/2016 05:05 AM, Michal Hocko wrote: > > On Tue 20-09-16 10:43:13, Dave Hansen wrote: > >> On 09/20/2016 08:52 AM, Rui Teng wrote: > >>> On 9/20/16 10:53 PM, Dave Hansen wrote: > >> ... > >>>> That's good, but aren't we still left with a situation where we've > >>>> offlined and dissolved the _middle_ of a gigantic huge page while the > >>>> head page is still in place and online? > >>>> > >>>> That seems bad. > >>>> > >>> What about refusing to change the status for such memory block, if it > >>> contains a huge page which larger than itself? (function > >>> memory_block_action()) > >> > >> How will this be visible to users, though? That sounds like you simply > >> won't be able to offline memory with gigantic huge pages. > > > > I might be missing something but Is this any different from a regular > > failure when the memory cannot be freed? I mean > > /sys/devices/system/memory/memory API doesn't give you any hint whether > > the memory in the particular block is used and > > unmigrateable. > > It's OK to have free hugetlbfs pages in an area that's being offline'd. > If we did that, it would not be OK to have a free gigantic hugetlbfs > page that's larger than the area being offlined.
That was not my point. I wasn't very clear probably. Offlining can fail which shouldn't be really surprising. There might be a kernel allocation in the particular block which cannot be migrated so failures are to be expected. I just do not see how offlining in the middle of a gigantic page is any different from having any other unmovable allocation in a block. That being said, why don't we simply refuse to offline a block which is in the middle of a gigantic page. > It would be a wee bit goofy to have the requirement that userspace go > find all the gigantic pages and make them non-gigantic before trying to > offline something. yes -- Michal Hocko SUSE Labs