[LSF/MM TOPIC] Page flags, can we free up space ?

From: Jerome Glisse
Date: Tue Jan 22 2019 - 15:17:49 EST


So lattely i have been looking at page flags and we are using 6 flags
for memory reclaim and compaction:

PG_referenced
PG_lru
PG_active
PG_workingset
PG_reclaim
PG_unevictable

On top of which you can add the page anonymous flag (anonymous or
share memory)
PG_anon // does not exist, lower bit of page->mapping

And also the movable flag (which alias with KSM)
PG_movable // does not exist, lower bit of page->mapping


So i would like to explore if there is a way to express the same amount
of information with less bits. My methodology is to exhaustively list
all the possible states (valid combination of above flags) and then to
see how we change from one state to another (what event trigger the change
like mlock(), page being referenced, ...) and under which rules (ie do we
hold the page lock, zone lock, ...).

My hope is that there might be someway to use less bits to express the
same thing. I am doing this because for my work on generic page write
protection (ie KSM for file back page) which i talk about last year and
want to talk about again ;) I will need to unalias the movable bit from
KSM bit.


Right now this is more a temptative ie i do not know if i will succeed,
in any case i can report on failure or success and discuss my finding to
get people opinions on the matter.


I think everyone interested in mm will be interested in this topic :)

Cheers,
Jérôme