diff --git a/src/space.c b/src/space.c
index d7aa9a32fd9c8e663a23b3287c26af81559652ce..57af364f1c53090280f533778c716f43b03d0d60 100644
--- a/src/space.c
+++ b/src/space.c
@@ -60,7 +60,8 @@
 
 /* Split size. */
 int space_splitsize = space_splitsize_default;
-int space_subsize = space_subsize_default;
+int space_subsize_pair = space_subsize_pair_default;
+int space_subsize_self = space_subsize_self_default;
 int space_maxsize = space_maxsize_default;
 int space_maxcount = space_maxcount_default;
 
@@ -2689,15 +2690,19 @@ void space_init(struct space *s, const struct swift_params *params,
   /* Get the constants for the scheduler */
   space_maxsize = parser_get_opt_param_int(params, "Scheduler:cell_max_size",
                                            space_maxsize_default);
-  space_subsize = parser_get_opt_param_int(params, "Scheduler:cell_sub_size",
-                                           space_subsize_default);
+  space_subsize_pair = parser_get_opt_param_int(
+      params, "Scheduler:cell_sub_size_pair", space_subsize_pair_default);
+  space_subsize_self = parser_get_opt_param_int(
+      params, "Scheduler:cell_sub_size_self", space_subsize_self_default);
   space_splitsize = parser_get_opt_param_int(
       params, "Scheduler:cell_split_size", space_splitsize_default);
   space_maxcount = parser_get_opt_param_int(params, "Scheduler:cell_max_count",
                                             space_maxcount_default);
   if (verbose)
-    message("max_size set to %d, sub_size set to %d, split_size set to %d",
-            space_maxsize, space_subsize, space_splitsize);
+    message(
+        "max_size set to %d, sub_size_pair set to %d, sub_size_self set to %d, "
+        "split_size set to %d",
+        space_maxsize, space_subsize_pair, space_subsize_self, space_splitsize);
 
   /* Apply h scaling */
   const double scaling =
diff --git a/src/space.h b/src/space.h
index 5d548b53b10ebfb75e6371ff78a163e8e71f4c15..30d614f982dd1b12ef3f7cb5b7d9723ab19e2a14 100644
--- a/src/space.h
+++ b/src/space.h
@@ -43,7 +43,8 @@ struct cell;
 #define space_cellallocchunk 1000
 #define space_splitsize_default 400
 #define space_maxsize_default 8000000
-#define space_subsize_default 64000000
+#define space_subsize_pair_default 64000000
+#define space_subsize_self_default 8000
 #define space_maxcount_default 10000
 #define space_max_top_level_cells_default 12
 #define space_stretch 1.10f
@@ -55,7 +56,8 @@ struct cell;
 /* Split size. */
 extern int space_splitsize;
 extern int space_maxsize;
-extern int space_subsize;
+extern int space_subsize_pair;
+extern int space_subsize_self;
 extern int space_maxcount;
 
 /**