Hi Patrick,
On Tue, May 10, 2016 at 11:39:18AM +0100, Patrick Bellasi wrote:
[...]
With non-root user in Android, I cannot add PID to SchedTune's cgroup; At beginning I thought it's related with cgroup's file node attribution, so tried to use "root" user to change permission with "a+rwx", even so still cannot set cgroup's node by non-root user.
hikey:/ $ su hikey:/ # chmod a+rwx /sys/fs/cgroup/stune/performance/cgroup.procs hikey:/ # exit
hikey:/ $ echo 1937 > /sys/fs/cgroup/stune/performance/cgroup.procs hikey:/ $ cat /sys/fs/cgroup/stune/performance/cgroup.procs
That's strange, provided that you have node permission (and task 1937 is still alive) what you are doing should work.
I randomly picked up one kernel thread "1937" of kworker, not sure if it's related with this or not? Does this means all kernel threads cannot be set for SchedTune's group or just it's special for "kworker" thread?
Yes and no, some kernel threads are CPU pinned thus for example using a cpuset CGroup you cannot move it, but you get an error on the write syscall.
However, I do NOT expect this limitation to be there when SchedTune CGroups are in use, we do not check any task specific attribute when moving them on boost groups. Unless, there are some "assumptions" in the CGroup core code which does not allow to move kthreads into subgroups...
Here have another limitation to set task into SchedTune's CGroup: the user must match with process's UID, then this user can set this task into SchedTune's CGroup. For example, "com.android.smspush" its UID is "u0_a42", so I can add this process into SchedTune's CGroup by two methods:
- Change to root with "su", then can add task into CGroup; - Manually use command "su u0_a42" to firstly switch to user u0_a42, then finally can this user into "tasks" node;
If I login to other users, then cannot add this process into CGroup.
I think this is okay for debugging and experimental testing, but for formal booting sequence in product, I'm curious how we can ensure the executing user is same one with process's UID? Sorry I have very less knowledge for Android's booting sequence, it's interesting these processes are launched by many different users.
USER PID PPID VSZ RSS WCHAN PC S NAME u0_a32 2360 1659 147696 90176 0 0 S com.android.inputmethod.latin radio 2385 1659 148222 92740 0 0 S com.android.phone u0_a7 2390 1659 151780 10242 0 0 S com.android.launcher u0_a26 2484 1659 147063 78208 0 0 S com.android.deskclock u0_a42 2507 1659 146150 53868 0 0 S com.android.smspush u0_a1 2557 1659 146450 73132 0 0 S com.android.providers.calendar u0_a8 2573 1659 146254 57684 0 0 S com.android.managedprovisioning u0_a10 2590 1659 146128 54732 0 0 S com.android.onetimeinitializer
Thanks, Leo Yan