参照元†
- struct zone *zone
- int order
返り値†
/* Returns true if compaction should be skipped this time */
static bool compaction_deferred(struct zone *zone, int order)
{
unsigned long defer_limit = 1UL << zone->compact_defer_shift;
if (order < zone->compact_order_failed)
return false;
- 前回のコンパクションが成功しているか、失敗していても今回のorderより小さければコンパクションを延期しない。
/* Avoid possible overflow */
if (++zone->compact_considered >= defer_limit) {
zone->compact_considered = defer_limit;
return false;
}
- コンパクションを延期した回数が一定数を超えていたら、コンパクションを延期しない。
trace_mm_compaction_deferred(zone, order);
return true;
}
- いずれの条件も成立しないならコンパクションを延期する。
コメント†