Hi Johannes, May I ask you a question about refault distance? Is it supposed the distance of the first and second time to access the a faulted page cache is the same? In reality how about the
ratio will be the same? Refault Distance1 = Refault Distance2 On the first refault, We supposed that: Refault Distance = A NR_INACTIVE_FILE = B NR_ACTIVE_FILE = C * fault page add to inactive list tail The Refault Distance = A |
* B | | C * +--------------+ | +-------------+ * reclaim <- | inactive | <-+-- demotion | active | <--+ * +--------------+ +-------------+ | * | | * +-------------- promotion ------------------+ Why we use A <= C to add faulted page to ACTIVE LIST? Your patch is want to solve “A workload is thrashing when its pages are frequently used
but they are evicted from the inactive list every time before another access would have
promoted them to the active list.” ? so when a First Refault page add to INACTIVE LIST, it is a Distance B before eviction.
So I am confuse the condition on workingset_refault(). Best, Figo.zhang |