Hi Ryan,
First off, this is excellent work! Your cover page was very detailed
and made the patch set easier to understand.
Some questions/comments:
Once a kernel is booted with a certain page size, could there be issues
if it is booted later with a different page size? How about if this is
done frequently?
I think that is the reason why you are only given the option in RHEL
to select the kernel (4K vs. 64K) to use at install time.
Software can easily use a different data format for persistance based
on the base page size. I would suspect DBs might be the usual suspects.
One example is swap space I think, where the base page size used when
formatting the device is used, and it cannot be used with a different
page size unless reformatting it.
So ... one has to be a bit careful ...
Yes, that is what I was thinking. Once a userspace process does an I/O
and if it is based on PAGE_SIZE things can go south. I think this is
not an issue with THP, so maybe it's possible with boot-time page selection?
THP is a different beast and has different semantics: the base page size
doesn't change: the result of getpagesize() is unmodified ("transparent").
One would have to emulate for a given user space process a different
page size ... and Ryan can likely tell some stories about that.
Not that I consider it reasonable to have dynamic page sizes in the
kernel and then try emulating a different one for all user space.
--
Cheers,
David / dhildenb