Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f99ca8ae authored by Bart Van Assche's avatar Bart Van Assche
Browse files

Migrate the blkio controller to the v2 cgroup hierarchy



There are multiple use cases in Android for which background writes need
to be controlled via the cgroup mechanism. The cgroup mechanism can only
control background writes if both the blkio and memcg controllers are
mounted in the v2 cgroup hierarchy. Hence this patch that migrates the
blkio controller from the v1 to the v2 cgroup hierarchy.

The changes compared to the previous version of this CL are as follows:
- The JoinCgroup actions for the "io" controller have been left out
  since these caused processes to be migrated to the v2 root cgroup.
- The BfqWeight / CfqGroupIdle / CfqWeight settings have been included
  in this CL instead of applying these settings as a separate CL.

Change-Id: I67e06ce3462bb1c1345dba78f8d3d655b6519c74
Signed-off-by: default avatarBart Van Assche <bvanassche@google.com>
parent 2953a927
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
{
  "Cgroups": [
    {
      "Controller": "blkio",
      "Path": "/dev/blkio",
      "Mode": "0775",
      "UID": "system",
      "GID": "system"
    },
    {
      "Controller": "cpu",
      "Path": "/dev/cpuctl",
@@ -39,6 +32,12 @@
      {
        "Controller": "freezer",
        "Path": "."
      },
      {
        "Controller": "io",
        "Path": ".",
        "NeedsActivation": true,
        "Optional": true
      }
    ]
  }
+103 −12
Original line number Diff line number Diff line
@@ -76,6 +76,21 @@
      "Name": "FreezerState",
      "Controller": "freezer",
      "File": "cgroup.freeze"
    },
    {
      "Name": "BfqWeight",
      "Controller": "io",
      "File": "io.bfq.weight"
    },
    {
      "Name": "CfqGroupIdle",
      "Controller": "io",
      "File": "io.group_idle"
    },
    {
      "Name": "CfqWeight",
      "Controller": "io",
      "File": "io.weight"
    }
  ],

@@ -439,11 +454,30 @@
      "Name": "LowIoPriority",
      "Actions": [
        {
          "Name": "JoinCgroup",
          "Name": "SetAttribute",
          "Params":
          {
            "Controller": "blkio",
            "Path": "background"
            "Name": "BfqWeight",
            "Value": "10",
            "Optional": "true"
          }
        },
        {
          "Name": "SetAttribute",
          "Params":
          {
            "Name": "CfqGroupIdle",
            "Value": "0",
            "Optional": "true"
          }
        },
        {
          "Name": "SetAttribute",
          "Params":
          {
            "Name": "CfqWeight",
            "Value": "200",
            "Optional": "true"
          }
        }
      ]
@@ -452,11 +486,30 @@
      "Name": "NormalIoPriority",
      "Actions": [
        {
          "Name": "JoinCgroup",
          "Name": "SetAttribute",
          "Params":
          {
            "Controller": "blkio",
            "Path": ""
            "Name": "BfqWeight",
            "Value": "100",
            "Optional": "true"
          }
        },
        {
          "Name": "SetAttribute",
          "Params":
          {
            "Name": "CfqGroupIdle",
            "Value": "0",
            "Optional": "true"
          }
        },
        {
          "Name": "SetAttribute",
          "Params":
          {
            "Name": "CfqWeight",
            "Value": "1000",
            "Optional": "true"
          }
        }
      ]
@@ -465,11 +518,30 @@
      "Name": "HighIoPriority",
      "Actions": [
        {
          "Name": "JoinCgroup",
          "Name": "SetAttribute",
          "Params":
          {
            "Controller": "blkio",
            "Path": ""
            "Name": "BfqWeight",
            "Value": "100",
            "Optional": "true"
          }
        },
        {
          "Name": "SetAttribute",
          "Params":
          {
            "Name": "CfqGroupIdle",
            "Value": "0",
            "Optional": "true"
          }
        },
        {
          "Name": "SetAttribute",
          "Params":
          {
            "Name": "CfqWeight",
            "Value": "1000",
            "Optional": "true"
          }
        }
      ]
@@ -478,11 +550,30 @@
      "Name": "MaxIoPriority",
      "Actions": [
        {
          "Name": "JoinCgroup",
          "Name": "SetAttribute",
          "Params":
          {
            "Controller": "blkio",
            "Path": ""
            "Name": "BfqWeight",
            "Value": "100",
            "Optional": "true"
          }
        },
        {
          "Name": "SetAttribute",
          "Params":
          {
            "Name": "CfqGroupIdle",
            "Value": "0",
            "Optional": "true"
          }
        },
        {
          "Name": "SetAttribute",
          "Params":
          {
            "Name": "CfqWeight",
            "Value": "1000",
            "Optional": "true"
          }
        }
      ]
+0 −20
Original line number Diff line number Diff line
@@ -219,26 +219,6 @@ on init
    write /dev/stune/nnapi-hal/schedtune.boost 1
    write /dev/stune/nnapi-hal/schedtune.prefer_idle 1

    # Create blkio group and apply initial settings.
    # This feature needs kernel to support it, and the
    # device's init.rc must actually set the correct values.
    mkdir /dev/blkio/background
    chown system system /dev/blkio
    chown system system /dev/blkio/background
    chown system system /dev/blkio/tasks
    chown system system /dev/blkio/background/tasks
    chown system system /dev/blkio/cgroup.procs
    chown system system /dev/blkio/background/cgroup.procs
    chmod 0664 /dev/blkio/tasks
    chmod 0664 /dev/blkio/background/tasks
    chmod 0664 /dev/blkio/cgroup.procs
    chmod 0664 /dev/blkio/background/cgroup.procs
    write /dev/blkio/blkio.weight 1000
    write /dev/blkio/background/blkio.weight 200
    write /dev/blkio/background/blkio.bfq.weight 10
    write /dev/blkio/blkio.group_idle 0
    write /dev/blkio/background/blkio.group_idle 0

    restorecon_recursive /mnt

    mount configfs none /config nodev noexec nosuid