On 07/08/2016 11:35 AM, Mel Gorman wrote:
The scan_control structure has enough information available for
compaction_ready() to make a decision. The classzone_idx manipulations in
shrink_zones() are no longer necessary as the highest populated zone is
no longer used to determine if shrink_slab should be called or not.
Signed-off-by: Mel Gorman <[email protected]>
Acked-by: Hillf Danton <[email protected]>
Acked-by: Vlastimil Babka <[email protected]>
@@ -2621,8 +2609,8 @@ static void shrink_zones(struct zonelist *zonelist,
struct scan_control *sc)
*/
if (IS_ENABLED(CONFIG_COMPACTION) &&
sc->order > PAGE_ALLOC_COSTLY_ORDER &&
- zonelist_zone_idx(z) <= classzone_idx &&
- compaction_ready(zone, sc->order, classzone_idx)) {
+ zonelist_zone_idx(z) <= sc->reclaim_idx &&
Hm I notice that the condition on the line above should be always true
as the same sc->reclaim_idx value is used to limit zone_idx in
for_each_zone_zonelist_nodemask(). The implication was probably true
even before this patch (classzone_idx would be <= sc->reclaim_idx), but
now it stands out clearly.
+ compaction_ready(zone, sc)) {
sc->compaction_ready = true;
continue;
}