android_kernel_oneplus_msm8998/init
Patrick Bellasi 92757bdea5 sched/tune: add initial support for CGroups based boosting
To support task performance boosting, the usage of a single knob has the
advantage to be a simple solution, both from the implementation and the
usability standpoint.  However, on a real system it can be difficult to
identify a single value for the knob which fits the needs of multiple
different tasks. For example, some kernel threads and/or user-space
background services should be better managed the "standard" way while we
still want to be able to boost the performance of specific workloads.

In order to improve the flexibility of the task boosting mechanism this
patch is the first of a small series which extends the previous
implementation to introduce a "per task group" support.
This first patch introduces just the basic CGroups support, a new
"schedtune" CGroups controller is added which allows to configure
different boost value for different groups of tasks.
To keep the implementation simple but still effective for a boosting
strategy, the new controller:
  1. allows only a two layer hierarchy
  2. supports only a limited number of boost groups

A two layer hierarchy allows to place each task either:
  a) in the root control group
     thus being subject to a system-wide boosting value
  b) in a child of the root group
     thus being subject to the specific boost value defined by that
     "boost group"

The limited number of "boost groups" supported is mainly motivated by
the observation that in a real system it could be useful to have only
few classes of tasks which deserve different treatment.
For example, background vs foreground or interactive vs low-priority.
As an additional benefit, a limited number of boost groups allows also
to have a simpler implementation especially for the code required to
compute the boost value for CPUs which have runnable tasks belonging to
different boost groups.

cc: Tejun Heo <tj@kernel.org>
cc: Li Zefan <lizefan@huawei.com>
cc: Johannes Weiner <hannes@cmpxchg.org>
cc: Ingo Molnar <mingo@redhat.com>
cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Patrick Bellasi <patrick.bellasi@arm.com>
2016-09-14 14:58:22 +05:30
..
calibrate.c kernel: add calibration_delay_done() 2014-06-16 12:47:39 -06:00
do_mounts.c CHROMIUM: dm: boot time specification of dm= 2016-08-18 18:56:03 +05:30
do_mounts.h CHROMIUM: dm: boot time specification of dm= 2016-08-18 18:56:03 +05:30
do_mounts_dm.c ANDROID: dm: fix dm_substitute_devices() 2016-08-18 18:56:03 +05:30
do_mounts_initrd.c usermodehelper: split remaining calls to call_usermodehelper_fns() 2013-04-30 17:04:06 -07:00
do_mounts_md.c init: disable sparse checking of the mount.o source files 2012-05-31 17:49:27 -07:00
do_mounts_rd.c initramfs: support initramfs that is bigger than 2GiB 2014-08-08 15:57:26 -07:00
init_task.c sched/rt: Move rt specific bits into new header file 2013-02-07 20:51:08 +01:00
initramfs.c initramfs: Add skip_initramfs command line option 2016-02-16 13:54:10 -08:00
Kconfig sched/tune: add initial support for CGroups based boosting 2016-09-14 14:58:22 +05:30
main.c mm/init: Add 'rodata=off' boot cmdline parameter to disable read-only kernel mappings 2016-03-17 18:51:51 +00:00
Makefile CHROMIUM: dm: boot time specification of dm= 2016-08-18 18:56:03 +05:30
noinitramfs.c initramfs: Add skip_initramfs command line option 2016-02-16 13:54:10 -08:00
version.c copy address of proc_ns_ops into ns_common 2014-12-04 14:34:47 -05:00