]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/damon: add DAMOS quota goal type for per-memcg per-node memory usage
authorSeongJae Park <sj@kernel.org>
Fri, 17 Oct 2025 21:26:54 +0000 (14:26 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 22 Oct 2025 01:51:41 +0000 (18:51 -0700)
Define a new DAMOS quota auto-tuning target metric for per-cgroup per-node
memory usage.  For specifying the cgroup of the interest, add a field,
namely memcg_id, to damos_quota_goal struct.

Note that this commit is only implementing the interface.  The handling of
the interface (the metric value calculation) will be implemented in the
following commit.

Link: https://lkml.kernel.org/r/20251017212706.183502-3-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/damon.h

index dc9c310e0e7599f13f3b7ba1e79902df15c2f599..0d63ceb7e6ef27995d03c5fd0c56e5dc4bc4ae37 100644 (file)
@@ -147,6 +147,7 @@ enum damos_action {
  * @DAMOS_QUOTA_SOME_MEM_PSI_US:       System level some memory PSI in us.
  * @DAMOS_QUOTA_NODE_MEM_USED_BP:      MemUsed ratio of a node.
  * @DAMOS_QUOTA_NODE_MEM_FREE_BP:      MemFree ratio of a node.
+ * @DAMOS_QUOTA_NODE_MEMCG_USED_BP:    MemUsed ratio of a node for a cgroup.
  * @NR_DAMOS_QUOTA_GOAL_METRICS:       Number of DAMOS quota goal metrics.
  *
  * Metrics equal to larger than @NR_DAMOS_QUOTA_GOAL_METRICS are unsupported.
@@ -156,6 +157,7 @@ enum damos_quota_goal_metric {
        DAMOS_QUOTA_SOME_MEM_PSI_US,
        DAMOS_QUOTA_NODE_MEM_USED_BP,
        DAMOS_QUOTA_NODE_MEM_FREE_BP,
+       DAMOS_QUOTA_NODE_MEMCG_USED_BP,
        NR_DAMOS_QUOTA_GOAL_METRICS,
 };
 
@@ -166,6 +168,7 @@ enum damos_quota_goal_metric {
  * @current_value:     Current value of @metric.
  * @last_psi_total:    Last measured total PSI
  * @nid:               Node id.
+ * @memcg_id:          Memcg id.
  * @list:              List head for siblings.
  *
  * Data structure for getting the current score of the quota tuning goal.  The
@@ -179,6 +182,9 @@ enum damos_quota_goal_metric {
  *
  * If @metric is DAMOS_QUOTA_NODE_MEM_{USED,FREE}_BP, @nid represents the node
  * id of the target node to account the used/free memory.
+ *
+ * If @metric is DAMOS_QUOTA_NODE_MEMCG_USED_BP, @nid and @memcg_id represents
+ * the node id and the cgroup to account the used memory for.
  */
 struct damos_quota_goal {
        enum damos_quota_goal_metric metric;
@@ -187,7 +193,10 @@ struct damos_quota_goal {
        /* metric-dependent fields */
        union {
                u64 last_psi_total;
-               int nid;
+               struct {
+                       int nid;
+                       unsigned short memcg_id;
+               };
        };
        struct list_head list;
 };