History log of /system/core/libprocessgroup/processgroup.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d485226951013247dbb502fef7edbc6cf83acb0f 17-Jul-2017 Robert Benea <robenea@google.com> Add memcg related configs to init.

Allow configuring memory.swappiness, memory.soft_limit_in_bytes
and memory.limit_in_bytes by init; by doing so there is better
control of memory consumption per native app.

Test: tested on gobo branch.
bug: 63765067
Change-Id: I8906f3ff5ef77f75a0f4cdfbf9d424a579ed52bb
/system/core/libprocessgroup/processgroup.cpp
3280e48847e5dd16521ad7040d53eb30b66bf740 28-Jun-2017 Robert Benea <robenea@google.com> Use mem cgroups in libprocessgroup if they're available

Use mem cgroups if the kernel is built with CONFIG_MEMCG=y,
additionally add system group.

test: verified on both kernel with/without memcg enabled
Change-Id: Ia2ae89efa3905e9da68fa77adac1225c667864d1
/system/core/libprocessgroup/processgroup.cpp
fc10e3d5e5385081853b7d1b3cc41f882ac6325d 08-Jul-2017 Tim Murray <timmurray@google.com> Revert "Use mem cgroups in libprocessgroup if they're available"

This reverts commit 32375c23284704a7d044ed79060c4431468b4b4e.

bug 63164307

Change-Id: I3336bbf7c2f3297b231c5b0a1ef538faff9513fd
/system/core/libprocessgroup/processgroup.cpp
32375c23284704a7d044ed79060c4431468b4b4e 28-Jun-2017 Robert Benea <robenea@google.com> Use mem cgroups in libprocessgroup if they're available

Use mem cgroups if the kernel is built with CONFIG_MEMCG=y,
additionally add system group.

test: verified on both kernel with/without memcg enabled
Change-Id: Ib9d1c8e3c797e75f160e0e92edf3f11c9d8e9f17
/system/core/libprocessgroup/processgroup.cpp
70a5ed49ef82d0d87508080563ec10b994bf4f9e 06-Jun-2017 Tom Cherry <tomcherry@google.com> init: move killing of process groups to libprocessgroup

libprocessgroup kills the cgroup associated with a given pid and uid,
but not the POSIX process group associated with it. This means that
to kill both, two of the same signals must be sent, which may cause
some issues.

This change kills all POSIX process groups whose group leaders are
found within a cgroup. It only then kills processes in the cgroup
that are not part of the POSIX process groups that have been killed.

Bug: 37853905
Bug: 62418791
Test: Boot, kill zygote, reboot
Change-Id: Id1d96935745899b4c454c36c351ec16a0b1d3827
/system/core/libprocessgroup/processgroup.cpp
20514c4411923e03df4a5057ef43bf9716983e14 21-Apr-2017 Tom Cherry <tomcherry@google.com> Better logging in libprocessgroup and make resources clean up themselves

Bug: 36661364
Bug: 36701253
Bug: 37540956

Test: Reboot bullhead
Test: Start and stop services
Change-Id: I97b6e17a7350850db733bee9fc83bdd296d88c61
/system/core/libprocessgroup/processgroup.cpp
fac4b63effee6c69908f559fd5e260bc95f1893a 29-Mar-2017 Keun-young Park <keunyoung@google.com> add killProcessGroupOnce

- killProcessGroup retries if it fails while
killProcessGroupOnce only tries once.
- useful for sending signal like SIGTERM once.

bug: 36696408
Test: will add usage to init
Change-Id: Ia1e3d4ec848e785a3238f262b02914695cded4c7
/system/core/libprocessgroup/processgroup.cpp
290a228fdca935ab2e702db77516758314900c3a 15-Nov-2016 Elliott Hughes <enh@google.com> Switch fastboot/init/libprocessgroup to std::this_thread::sleep_for.

Bug: http://b/32878766
Test: boots
Change-Id: Ie0ddfb7e60f2da5f6eefbb10c83a92e88c137ae3
/system/core/libprocessgroup/processgroup.cpp
9f206938edc2243e4e4f5de74d67e15befd95576 28-Sep-2016 Elliott Hughes <enh@google.com> Use readdir instead of readdir_r.

http://elliotth.blogspot.com/2012/10/how-not-to-use-readdirr3.html

Test: boots.
Change-Id: If75532e24fe4d17743bf8e8c9590156dee378a63
/system/core/libprocessgroup/processgroup.cpp
b6e1d15056f2a9c136a640336d78d36ab58a719d 03-Aug-2016 Elliott Hughes <enh@google.com> resolve merge conflicts of ed3596a to stage-aosp-master

Change-Id: I3c41782e2bf3563d3e3d6232d39eff3da94843fc
171df0a092157deb2cdf868beecc2ca3dcbeb548 02-Aug-2016 Elliott Hughes <enh@google.com> Switch libprocessgroup to libbase logging.

This lets us see what's going on in init.

Bug: http://b/29751426
Merged-In: I73432dc7608ca0dc8e421a2f3a750b37c6743f62
Change-Id: I73432dc7608ca0dc8e421a2f3a750b37c6743f62
/system/core/libprocessgroup/processgroup.cpp
8d532e47376859e2ea8f953ebe75d24560e80464 07-Jun-2016 Elliott Hughes <enh@google.com> resolve merge conflicts of cea1d04 to nyc-dev-plus-aosp

Change-Id: I41cdca717664a16f00fd1b28076dd752fa96653d
f7e79b99c1e9e3128dd9921871f7740bebb755e6 01-Jun-2016 Collin Mulliner <collinrm@squareup.com> use process groups for processes started by init

Put every service into a process group, kill the process group
and all child processes created within the group when killing the
service. Removed libutil dependency in libprocessgroup.

Bug: 25355957
Change-Id: Ieed60ec41579f638ab9b1e66a7e6330ed578ab05
Signed-off-by: Collin Mulliner <collinrm@squareup.com>
/system/core/libprocessgroup/processgroup.cpp
d89cd41bc7f3515133e18231e8f84065f1a9a133 18-Mar-2016 Martijn Coenen <maco@google.com> Merge "Don\'t use mem cgroups for pid accounting." into nyc-dev
am: e9ea8db

* commit 'e9ea8db617f52ddaa51e3b6fb9663e2f9b069425':
Don't use mem cgroups for pid accounting.
5bb91ab5530dd002f6021b2177dc2bcf5467eebd 18-Mar-2016 Martijn Coenen <maco@google.com> Don't use mem cgroups for pid accounting.

Commit b82bab66 introduced the use of memory cgroups for keeping track
of forked PIDs; it basically creates a separate memory cgroup for every
process forked from zygote.

Each such memory cgroup which also have its own LRU with (in)active file
and anonymous pages. The current theory is this could potentially introduce
two problems:
1) kswapd runs longer because it has to iterate over the LRUs of all mem
cgroups, instead of over the LRUs of a single root mem cgroup;
2) the way kswapd reclaims things will be different also - I think it will
tend to bias reclaim to smaller mem cgroups, and process private pages
will end up on ZRAM swap much sooner.

Until we figure this out, fall back to the CPU accounting cgroup for keeping
track of forked PIDs. This leaves us with a single root mem cgroup again. We
can also keep userspace lmkd enabled because it only requires the root mem
cgroup.

Bug: 27381069
Change-Id: Ife397a6ac232761f2adfe6f5056582be0d1b4ff1
/system/core/libprocessgroup/processgroup.cpp
22b6f7a559e02f44442a1f5079d790884971d7f2 19-Feb-2016 James Hawkins <jhawkins@google.com> resolve merge conflicts of 0f5d443d0c to nyc-dev-plus-aosp

Change-Id: I850bda0808ae17ade5bc0e667211a599d284d6e3
588a2cad7faee54bfb16050d0c7398709f304fea 18-Feb-2016 James Hawkins <jhawkins@google.com> system/core: Cleanup direct calls to opendir by containing in a
std::unique_ptr.

Bug: 26643633
Change-Id: Ia3491fdbff086558da694ae949cf08e4c89d0307
/system/core/libprocessgroup/processgroup.cpp
623b56af5da59fb57abcb2d984762669c82f57e9 08-Feb-2016 Martijn Coenen <maco@google.com> Fix libprocessgroup SELinux denials.

libprocessgroup checks whether it can use memory
cgroups for keeping track of forked processes by
seeing whether /dev/memcg/apps is writable. However,
on systems with memory cgroups disabled, SELinux
(correctly) no longer classifies this directory as a cgroup,
and starts denying zygote access. To fix this,
first check whether /dev/memcg/apps/tasks exists to
see if the cgroup is mounted; only then check whether
we can write to the directory.

Bug: 27046965
Change-Id: I6e44cd62d8c396e20ceb162c50606b3e86f2cb3e
/system/core/libprocessgroup/processgroup.cpp
b82bab66f318896ebad80c1feee2347c58e3ce37 21-Jan-2016 Martijn Coenen <maco@google.com> Reuse mem cgroups for tracking forked PIDs.

It turns out we were using the CPU accounting
cgroups for keeping track of processes that were
forked by an app without the framework's knowledge,
so we could kill all of them reliably (see b/15313911
for context).

Since we want to use memory cgroups for other purposes,
we might as well use memory cgroups for tracking forked
PIDs if they're enabled. This also gets us automatic cleanup
of empty mem cgroups.

Also, removed old mem cgroup mount point that is no
longer used, as well as cgroup release agent code that
we're not using.

Change-Id: I69d5cc31c162ffa49ef6945755f41381e306cc8b
/system/core/libprocessgroup/processgroup.cpp
d50393057a6551c3bb498ed3a3bb7bd9eeb48225 16-Jun-2015 Yusuke Sato <yusukes@google.com> processgroup: change the polling interval for killProcessGroup()

to make the function faster on average. Since killing a process
takes about 40-60ms on a recent device, the previous logic tends
to sleep too long. This CL does not significantly change the total
timeout (old code: 204ms, new code: 200ms).

Bug: 21813611
Change-Id: Ica44b2437ccccaebadcf585d7a09d993ce71a499
/system/core/libprocessgroup/processgroup.cpp
0badbd6565fea17be39d82eba858fa76d28920a4 29-Dec-2014 Elliott Hughes <enh@google.com> Fix missing #includes in system/core.

Change-Id: I4736e8c4f7bb8bb03640d26d58243efaa67dc75c
/system/core/libprocessgroup/processgroup.cpp
fcc8115dcf33b547facab9c6f2f4739f85ab69c1 21-Nov-2014 Chih-Hung Hsieh <chh@google.com> Fix format string

Make a format string match the type of the parameter it represents

Change-Id: I0af88636448084b56450996ea9dafdba3c1fd2a3
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org
/system/core/libprocessgroup/processgroup.cpp
758aeb7dadfcd29b11e8648d784ea56f31be05f3 17-Nov-2014 Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org> Make mkdirAndChown do what it claims to do

Currently, mkdirAndChown takes parameters for mode, uid and gid, but
ignores them and hardcodes 0750, AID_SYSTEM, AID_SYSTEM instead.
This doesn't matter much because so far its only invocation passes
exactly those values as parameters -- but clang complains about unused
parameters.

Might as well make the function do what it claims to do.

Change-Id: I5a8056be3278a0c5d0a576dbc061288aa0956a35
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
/system/core/libprocessgroup/processgroup.cpp
67f46cb0e137edbf4a6f7014ca8a3a58484016d1 15-Oct-2014 Dianne Hackborn <hackbod@google.com> Fix issue #18000467: processgroup truncates buffer

Change-Id: I3d98a4da9c47d83d25a11ff0ef94cfcab1feabea
/system/core/libprocessgroup/processgroup.cpp
2c5e7e102bc2059d22f8457db68c567b64cec963 14-Oct-2014 Dianne Hackborn <hackbod@google.com> Maybe fix issue #17969789: Shamu FR: Runtime restart while scrolling Instagram

It looks like there were a couple problems in the code:

- It would not 0-terminate the string it read, to make sure we didn't
see garbage at the end.
- It didn't reduce buf_len as it processes data in the buffer, so if
we need to read more we will increase the buffer length to be longer
than the actual available data.

Also put in some logs about every thing we kill, so we can see what
is going on when debugging. And add a special check for us trying
to kill pid 0 for any reason, since doing so seem to be terminal to
the caller.

Change-Id: I2fe29bfef08938b8a2eb182475c0705c14d8d84f
/system/core/libprocessgroup/processgroup.cpp
c15dd044705aa86f63b2642c1439d5f943a80d18 20-Aug-2014 Colin Cross <ccross@android.com> processgroup: close directories opened by removeAllProcessGroups()

removeAllProcessGroups and removeUidProcessGroups were calling
opendir, but never called closedir. This would leave a leaked
file descriptor for every /acct/uid_* directory that existed
at boot.

Change-Id: Ia08eccd42d6ad7a6c1c78402519ac2e53b4fc83a
/system/core/libprocessgroup/processgroup.cpp
cf8d1c22f7e239f502a7d209e2255d2997dbeb8b 03-Jun-2014 Colin Cross <ccross@android.com> Add libprocessgroup

libprocessgroup will allow Zygote to place processes
in a cgroup, and then kill the process and all forked processes
later. lmkd will also kill all forked processes.

Bug: 15313911
Change-Id: I20404d0dbe448f1c475d2f4c61cccca462f9e544
/system/core/libprocessgroup/processgroup.cpp