Encoding the page state in the bottom two bits of the first field, rather than using up a whole word, in order to make room for a free list pointer.
Further tidying up of the page descriptor and naming.
Adding a cache of free pages per zone to the arena, so that we recycle single pages fast, especially after each reclaim.
Fixing boundary cases for unmapping page table pages when there aren’t a nice whole number of descriptors on each page.
Purging half of the spare memory, rather than just enough to get under the limit, so that there aren’t many small unmaps, and many scans for spare pages.