# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#

on early-boot
    # Mount SchedTune controller and create tuning groups.
    mkdir /dev/stune
    mount cgroup none /dev/stune schedtune
    mkdir /dev/stune/foreground
    chown system system /dev/stune
    chown system system /dev/stune/foreground
    chown system system /dev/stune/tasks
    chown system system /dev/stune/foreground/tasks
    chmod 0664 /dev/stune/tasks
    chmod 0664 /dev/stune/foreground/tasks

    # Foreground tasks get schedule boost
    write /dev/stune/foreground/schedtune.boost 20
    write /dev/stune/foreground/schedtune.prefer_idle 1

on property:sys.boot_completed=1
    # Adjust cpusets in container to better split work between
    # little and big cores.
    write /dev/cpuset/foreground/cpus 0-5
    write /dev/cpuset/background/cpus 0
    write /dev/cpuset/system-background/cpus 0-3
    write /dev/cpuset/restricted/cpus 0
    write /dev/cpuset/top-app/cpus 0-5
