static unsigned long monitor_region_end __read_mostly;
 module_param(monitor_region_end, ulong, 0600);
 
+/*
+ * Skip anonymous pages reclamation.
+ *
+ * If this parameter is set as ``Y``, DAMON_RECLAIM does not reclaim anonymous
+ * pages.  By default, ``N``.
+ */
+static bool skip_anon __read_mostly;
+module_param(skip_anon, bool, 0600);
+
 /*
  * PID of the DAMON thread
  *
 static int damon_reclaim_apply_parameters(void)
 {
        struct damos *scheme;
+       struct damos_filter *filter;
        int err = 0;
 
        err = damon_set_attrs(ctx, &damon_reclaim_mon_attrs);
        scheme = damon_reclaim_new_scheme();
        if (!scheme)
                return -ENOMEM;
+       if (skip_anon) {
+               filter = damos_new_filter(DAMOS_FILTER_TYPE_ANON, true);
+               if (!filter) {
+                       /* Will be freed by next 'damon_set_schemes()' below */
+                       damon_destroy_scheme(scheme);
+                       return -ENOMEM;
+               }
+               damos_add_filter(scheme, filter);
+       }
        damon_set_schemes(ctx, &scheme, 1);
 
        return damon_set_region_biggest_system_ram_default(target,