[Toybox] [PATCH] ps: drop dependency on Android's libprocessgroup.

T.J. Mercier tjmercier at google.com
Mon Aug 26 08:14:29 PDT 2024


On Fri, Aug 23, 2024 at 3:52 PM enh <enh at google.com> wrote:
>
> This dependency keeps getting hairier and hairier (json!) and the
> current system for policy scheduling is actually quite different from
> the original anyway.
> ---
>  lib/portability.h | 14 --------------
>  toys/posix/ps.c   | 33 ++++++++++++++++++++++++++++-----
>  2 files changed, 28 insertions(+), 19 deletions(-)

Hi,

I assume this mailing list is supposed to be Content-Type: text/plain?


> +          else if (!strcmp(s, "system-background")) strcpy(tb->pcy, "  ");

Is this empty for compatibility with the existing output?

system_server is a "fun" case but I think this new toybox code should
still report the same info. It has threads in different cgroups (all
under the same pid of course):
husky:/dev/cpuset/system-background # cat cgroup.procs | xargs ps -o
pid,pcy,comm,cmd
  PID PCY COMM                        CMD
  492     logd                        logd
  493     lmkd                        lmkd
  503     hwservicemanager            hwservicemanage
  504     vndservicemanager           vndservicemanag
  574     android.hardware.composer.+ binder:574_3
  727     tombstoned                  tombstoned
  976     android.hardware.sensors-s+ binder:976_3
  985  fg app_process64               system_server
 1475     storaged                    storaged
 1483     dmd                         dmd
 1581     gatekeeperd                 gatekeeperd
 1637     logcat                      logcat

husky:/dev/cpuset/system-background # cat /proc/985/cgroup
3:cpuset:/foreground
2:cpu:/
1:blkio:/
0::/uid_1000/pid_985

husky:/ # grep cpuset /proc/`pidof system_server`/task/*/cgroup
/proc/985/task/1028/cgroup:3:cpuset:/foreground
/proc/985/task/1029/cgroup:3:cpuset:/foreground
/proc/985/task/1031/cgroup:3:cpuset:/foreground
/proc/985/task/1032/cgroup:3:cpuset:/foreground
/proc/985/task/1033/cgroup:3:cpuset:/foreground
/proc/985/task/1034/cgroup:3:cpuset:/foreground
/proc/985/task/1035/cgroup:3:cpuset:/foreground
/proc/985/task/1036/cgroup:3:cpuset:/foreground
/proc/985/task/1037/cgroup:3:cpuset:/foreground
/proc/985/task/1038/cgroup:3:cpuset:/foreground
/proc/985/task/1049/cgroup:3:cpuset:/foreground
/proc/985/task/1050/cgroup:3:cpuset:/foreground
/proc/985/task/1051/cgroup:3:cpuset:/foreground
/proc/985/task/1052/cgroup:3:cpuset:/foreground
/proc/985/task/1053/cgroup:3:cpuset:/foreground
/proc/985/task/1054/cgroup:3:cpuset:/foreground
/proc/985/task/1055/cgroup:3:cpuset:/top-app
/proc/985/task/1056/cgroup:3:cpuset:/top-app
/proc/985/task/1057/cgroup:3:cpuset:/top-app
/proc/985/task/1058/cgroup:3:cpuset:/foreground
/proc/985/task/1074/cgroup:3:cpuset:/system-background
/proc/985/task/1075/cgroup:3:cpuset:/foreground
/proc/985/task/1083/cgroup:3:cpuset:/foreground
/proc/985/task/1084/cgroup:3:cpuset:/foreground
/proc/985/task/1089/cgroup:3:cpuset:/foreground
/proc/985/task/1090/cgroup:3:cpuset:/foreground
/proc/985/task/1092/cgroup:3:cpuset:/foreground
/proc/985/task/1094/cgroup:3:cpuset:/foreground
/proc/985/task/1095/cgroup:3:cpuset:/foreground
/proc/985/task/1096/cgroup:3:cpuset:/foreground
/proc/985/task/1097/cgroup:3:cpuset:/foreground
/proc/985/task/1101/cgroup:3:cpuset:/foreground
/proc/985/task/1104/cgroup:3:cpuset:/foreground
/proc/985/task/1106/cgroup:3:cpuset:/foreground
/proc/985/task/1107/cgroup:3:cpuset:/foreground
/proc/985/task/1108/cgroup:3:cpuset:/foreground
/proc/985/task/1109/cgroup:3:cpuset:/foreground
/proc/985/task/1110/cgroup:3:cpuset:/foreground
/proc/985/task/1111/cgroup:3:cpuset:/foreground
/proc/985/task/1112/cgroup:3:cpuset:/foreground
/proc/985/task/1113/cgroup:3:cpuset:/foreground
/proc/985/task/1114/cgroup:3:cpuset:/foreground
/proc/985/task/1115/cgroup:3:cpuset:/foreground
/proc/985/task/1117/cgroup:3:cpuset:/foreground
/proc/985/task/1124/cgroup:3:cpuset:/foreground
/proc/985/task/1126/cgroup:3:cpuset:/foreground
/proc/985/task/1127/cgroup:3:cpuset:/foreground
/proc/985/task/1131/cgroup:3:cpuset:/foreground
/proc/985/task/1615/cgroup:3:cpuset:/foreground
/proc/985/task/1617/cgroup:3:cpuset:/foreground
/proc/985/task/1621/cgroup:3:cpuset:/foreground
/proc/985/task/1659/cgroup:3:cpuset:/foreground
/proc/985/task/1660/cgroup:3:cpuset:/foreground
/proc/985/task/1661/cgroup:3:cpuset:/foreground
/proc/985/task/1662/cgroup:3:cpuset:/foreground
/proc/985/task/1663/cgroup:3:cpuset:/foreground
/proc/985/task/1664/cgroup:3:cpuset:/foreground
/proc/985/task/1665/cgroup:3:cpuset:/foreground
/proc/985/task/1668/cgroup:3:cpuset:/foreground
/proc/985/task/1669/cgroup:3:cpuset:/foreground
/proc/985/task/1672/cgroup:3:cpuset:/system-background
/proc/985/task/1673/cgroup:3:cpuset:/foreground
/proc/985/task/1674/cgroup:3:cpuset:/foreground
/proc/985/task/1675/cgroup:3:cpuset:/foreground
/proc/985/task/1676/cgroup:3:cpuset:/foreground
/proc/985/task/1677/cgroup:3:cpuset:/foreground
/proc/985/task/1678/cgroup:3:cpuset:/foreground
/proc/985/task/1854/cgroup:3:cpuset:/foreground
/proc/985/task/1855/cgroup:3:cpuset:/foreground
/proc/985/task/1859/cgroup:3:cpuset:/foreground
/proc/985/task/1860/cgroup:3:cpuset:/foreground
/proc/985/task/1871/cgroup:3:cpuset:/foreground
/proc/985/task/1872/cgroup:3:cpuset:/top-app
/proc/985/task/1873/cgroup:3:cpuset:/top-app
/proc/985/task/1883/cgroup:3:cpuset:/foreground
/proc/985/task/1886/cgroup:3:cpuset:/foreground
/proc/985/task/1887/cgroup:3:cpuset:/foreground
/proc/985/task/1888/cgroup:3:cpuset:/foreground
/proc/985/task/1889/cgroup:3:cpuset:/foreground
/proc/985/task/1890/cgroup:3:cpuset:/foreground
/proc/985/task/1897/cgroup:3:cpuset:/foreground
/proc/985/task/1898/cgroup:3:cpuset:/foreground
/proc/985/task/1900/cgroup:3:cpuset:/foreground
/proc/985/task/1905/cgroup:3:cpuset:/foreground
/proc/985/task/1906/cgroup:3:cpuset:/foreground
/proc/985/task/1911/cgroup:3:cpuset:/foreground
/proc/985/task/1913/cgroup:3:cpuset:/foreground
/proc/985/task/1922/cgroup:3:cpuset:/foreground
/proc/985/task/1930/cgroup:3:cpuset:/foreground
/proc/985/task/1933/cgroup:3:cpuset:/foreground
/proc/985/task/1941/cgroup:3:cpuset:/foreground
/proc/985/task/1959/cgroup:3:cpuset:/foreground
/proc/985/task/1964/cgroup:3:cpuset:/foreground
/proc/985/task/1966/cgroup:3:cpuset:/foreground
/proc/985/task/1967/cgroup:3:cpuset:/foreground
/proc/985/task/1968/cgroup:3:cpuset:/foreground
/proc/985/task/1969/cgroup:3:cpuset:/foreground
/proc/985/task/1971/cgroup:3:cpuset:/foreground
/proc/985/task/1972/cgroup:3:cpuset:/foreground
/proc/985/task/1978/cgroup:3:cpuset:/foreground
/proc/985/task/1979/cgroup:3:cpuset:/foreground
/proc/985/task/1980/cgroup:3:cpuset:/foreground
/proc/985/task/1981/cgroup:3:cpuset:/foreground
/proc/985/task/1984/cgroup:3:cpuset:/foreground
/proc/985/task/1985/cgroup:3:cpuset:/foreground
/proc/985/task/1986/cgroup:3:cpuset:/foreground
/proc/985/task/1989/cgroup:3:cpuset:/foreground
/proc/985/task/1990/cgroup:3:cpuset:/foreground
/proc/985/task/1991/cgroup:3:cpuset:/foreground
/proc/985/task/1992/cgroup:3:cpuset:/foreground
/proc/985/task/1993/cgroup:3:cpuset:/foreground
/proc/985/task/1994/cgroup:3:cpuset:/foreground
/proc/985/task/1997/cgroup:3:cpuset:/foreground
/proc/985/task/1998/cgroup:3:cpuset:/foreground
/proc/985/task/2000/cgroup:3:cpuset:/foreground
/proc/985/task/2001/cgroup:3:cpuset:/foreground
/proc/985/task/2002/cgroup:3:cpuset:/foreground
/proc/985/task/2003/cgroup:3:cpuset:/foreground
/proc/985/task/2005/cgroup:3:cpuset:/foreground
/proc/985/task/2006/cgroup:3:cpuset:/foreground
/proc/985/task/2007/cgroup:3:cpuset:/foreground
/proc/985/task/2010/cgroup:3:cpuset:/foreground
/proc/985/task/2011/cgroup:3:cpuset:/foreground
/proc/985/task/2012/cgroup:3:cpuset:/foreground
/proc/985/task/2013/cgroup:3:cpuset:/foreground
/proc/985/task/2014/cgroup:3:cpuset:/foreground
/proc/985/task/2015/cgroup:3:cpuset:/foreground
/proc/985/task/2018/cgroup:3:cpuset:/foreground
/proc/985/task/2019/cgroup:3:cpuset:/foreground
/proc/985/task/2020/cgroup:3:cpuset:/foreground
/proc/985/task/2021/cgroup:3:cpuset:/foreground
/proc/985/task/2024/cgroup:3:cpuset:/foreground
/proc/985/task/2025/cgroup:3:cpuset:/foreground
/proc/985/task/2026/cgroup:3:cpuset:/foreground
/proc/985/task/2028/cgroup:3:cpuset:/foreground
/proc/985/task/2029/cgroup:3:cpuset:/foreground
/proc/985/task/2030/cgroup:3:cpuset:/foreground
/proc/985/task/2031/cgroup:3:cpuset:/foreground
/proc/985/task/2033/cgroup:3:cpuset:/foreground
/proc/985/task/2038/cgroup:3:cpuset:/foreground
/proc/985/task/2039/cgroup:3:cpuset:/foreground
/proc/985/task/2041/cgroup:3:cpuset:/foreground
/proc/985/task/2042/cgroup:3:cpuset:/foreground
/proc/985/task/2045/cgroup:3:cpuset:/foreground
/proc/985/task/2046/cgroup:3:cpuset:/foreground
/proc/985/task/2047/cgroup:3:cpuset:/foreground
/proc/985/task/2048/cgroup:3:cpuset:/foreground
/proc/985/task/2050/cgroup:3:cpuset:/foreground
/proc/985/task/2051/cgroup:3:cpuset:/foreground
/proc/985/task/2052/cgroup:3:cpuset:/foreground
/proc/985/task/2053/cgroup:3:cpuset:/foreground
/proc/985/task/2054/cgroup:3:cpuset:/foreground
/proc/985/task/2056/cgroup:3:cpuset:/foreground
/proc/985/task/2060/cgroup:3:cpuset:/foreground
/proc/985/task/2062/cgroup:3:cpuset:/foreground
/proc/985/task/2066/cgroup:3:cpuset:/foreground
/proc/985/task/2069/cgroup:3:cpuset:/system-background
/proc/985/task/2075/cgroup:3:cpuset:/foreground
/proc/985/task/2076/cgroup:3:cpuset:/foreground
/proc/985/task/2077/cgroup:3:cpuset:/foreground
/proc/985/task/2078/cgroup:3:cpuset:/foreground
/proc/985/task/2082/cgroup:3:cpuset:/foreground
/proc/985/task/2086/cgroup:3:cpuset:/foreground
/proc/985/task/2089/cgroup:3:cpuset:/foreground
/proc/985/task/2113/cgroup:3:cpuset:/foreground
/proc/985/task/2126/cgroup:3:cpuset:/foreground
/proc/985/task/2127/cgroup:3:cpuset:/foreground
/proc/985/task/2173/cgroup:3:cpuset:/foreground
/proc/985/task/2183/cgroup:3:cpuset:/foreground
/proc/985/task/2211/cgroup:3:cpuset:/system-background
/proc/985/task/2232/cgroup:3:cpuset:/foreground
/proc/985/task/2247/cgroup:3:cpuset:/foreground
/proc/985/task/2248/cgroup:3:cpuset:/foreground
/proc/985/task/2414/cgroup:3:cpuset:/foreground
/proc/985/task/2417/cgroup:3:cpuset:/foreground
/proc/985/task/2419/cgroup:3:cpuset:/foreground
/proc/985/task/2421/cgroup:3:cpuset:/foreground
/proc/985/task/2422/cgroup:3:cpuset:/foreground
/proc/985/task/2423/cgroup:3:cpuset:/foreground
/proc/985/task/2425/cgroup:3:cpuset:/foreground
/proc/985/task/2426/cgroup:3:cpuset:/foreground
/proc/985/task/2428/cgroup:3:cpuset:/foreground
/proc/985/task/2471/cgroup:3:cpuset:/foreground
/proc/985/task/2527/cgroup:3:cpuset:/top-app
/proc/985/task/2563/cgroup:3:cpuset:/foreground
/proc/985/task/2565/cgroup:3:cpuset:/foreground
/proc/985/task/2567/cgroup:3:cpuset:/foreground
/proc/985/task/2568/cgroup:3:cpuset:/foreground
/proc/985/task/2569/cgroup:3:cpuset:/foreground
/proc/985/task/2571/cgroup:3:cpuset:/foreground
/proc/985/task/2799/cgroup:3:cpuset:/foreground
/proc/985/task/2856/cgroup:3:cpuset:/top-app
/proc/985/task/2860/cgroup:3:cpuset:/top-app
/proc/985/task/2864/cgroup:3:cpuset:/foreground
/proc/985/task/2865/cgroup:3:cpuset:/foreground
/proc/985/task/2882/cgroup:3:cpuset:/foreground
/proc/985/task/2883/cgroup:3:cpuset:/foreground
/proc/985/task/2884/cgroup:3:cpuset:/foreground
/proc/985/task/2885/cgroup:3:cpuset:/foreground
/proc/985/task/2886/cgroup:3:cpuset:/foreground
/proc/985/task/2887/cgroup:3:cpuset:/foreground
/proc/985/task/2888/cgroup:3:cpuset:/foreground
/proc/985/task/2889/cgroup:3:cpuset:/foreground
/proc/985/task/2890/cgroup:3:cpuset:/foreground
/proc/985/task/2905/cgroup:3:cpuset:/foreground
/proc/985/task/2989/cgroup:3:cpuset:/foreground
/proc/985/task/3013/cgroup:3:cpuset:/foreground
/proc/985/task/3018/cgroup:3:cpuset:/foreground
/proc/985/task/3020/cgroup:3:cpuset:/foreground
/proc/985/task/3022/cgroup:3:cpuset:/foreground
/proc/985/task/3063/cgroup:3:cpuset:/foreground
/proc/985/task/3071/cgroup:3:cpuset:/foreground
/proc/985/task/3112/cgroup:3:cpuset:/foreground
/proc/985/task/3113/cgroup:3:cpuset:/foreground
/proc/985/task/3116/cgroup:3:cpuset:/foreground
/proc/985/task/3200/cgroup:3:cpuset:/foreground
/proc/985/task/3220/cgroup:3:cpuset:/foreground
/proc/985/task/3223/cgroup:3:cpuset:/foreground
/proc/985/task/3224/cgroup:3:cpuset:/foreground
/proc/985/task/3225/cgroup:3:cpuset:/foreground
/proc/985/task/3226/cgroup:3:cpuset:/foreground
/proc/985/task/3229/cgroup:3:cpuset:/foreground
/proc/985/task/3230/cgroup:3:cpuset:/foreground
/proc/985/task/3280/cgroup:3:cpuset:/foreground
/proc/985/task/3293/cgroup:3:cpuset:/foreground
/proc/985/task/3294/cgroup:3:cpuset:/foreground
/proc/985/task/3649/cgroup:3:cpuset:/foreground
/proc/985/task/3708/cgroup:3:cpuset:/foreground
/proc/985/task/3737/cgroup:3:cpuset:/foreground
/proc/985/task/3835/cgroup:3:cpuset:/foreground
/proc/985/task/3836/cgroup:3:cpuset:/foreground
/proc/985/task/3840/cgroup:3:cpuset:/foreground
/proc/985/task/3841/cgroup:3:cpuset:/foreground
/proc/985/task/4828/cgroup:3:cpuset:/foreground
/proc/985/task/4838/cgroup:3:cpuset:/foreground
/proc/985/task/4977/cgroup:3:cpuset:/foreground
/proc/985/task/5188/cgroup:3:cpuset:/foreground
/proc/985/task/5765/cgroup:3:cpuset:/foreground
/proc/985/task/5988/cgroup:3:cpuset:/foreground
/proc/985/task/5998/cgroup:3:cpuset:/foreground
/proc/985/task/7793/cgroup:3:cpuset:/foreground
/proc/985/task/7995/cgroup:3:cpuset:/foreground
/proc/985/task/985/cgroup:3:cpuset:/foreground


> +        if ((s = strstr(line, ":cpuset:/"))) {

So this ignores the old schedtune case from get_sched_policy, however
I think that's ok because schedtune is an out of tree driver only in
Android 4.19 kernels which are EOL in 4 months at the end of this
December.


> +          else if (!strcmp(s, "foreground-window")) strcpy(tb->pcy, "wi");

I think this should be "foreground_window". Underscore instead of
hyphen for that one. Maybe we should fix that one on our side since
it's unlike all the others, and not actually in use yet.


> else strcpy(tb->pcy, "?");

Should this be two ?s to maintain the column width?


This solution will work as long as Android continues to use cpuset v1.
A v2 upgrade should happen at some point, but it's not clear when.
New policy names and abbreviations will have to be manually synced
with this if any are added (which should be rare):
https://cs.android.com/android/platform/superproject/main/+/main:system/core/rootdir/init.rc;l=360?q=mkdir.*%2Fdev%2Fcpuset

Best,
T.J. from the Android team


More information about the Toybox mailing list