[LTP] [PATCH 6/6] controllers: Expand cgroup_lib shell library
Li Wang
liwang@redhat.com
Tue Jan 11 11:50:49 CET 2022
> +# Find mountpoint of the given controller
> +# USAGE: cgroup_get_mountpoint CONTROLLER
> +# RETURNS: Prints the mountpoint of the given controller
> +# Must call cgroup_require before calling
> +cgroup_get_mountpoint()
> +{
> + local ctrl=$1
> + local mountpoint
> +
> + [ $# -eq 0 ] && tst_brk TBROK "cgroup_get_mountpoint: controller not defined"
> + [ "$_cgroup_state" = "" ] && tst_brk TBROK "cgroup_get_mountpoint: No previous state found. Forgot to call cgroup_require?"
> +
> + mountpoint=$(echo "$_cgroup_state" | grep -w "$ctrl" | awk '{ print $4 }')
> + echo "$mountpoint"
> +
> + return 0
> +}
> +
> +# Get the test path of a given controller that has been created by the cgroup C API
> +# USAGE: cgroup_get_test_path CONTROLLER
> +# RETURNS: Prints the path to the test direcory
> +# Must call cgroup_require before calling
> +cgroup_get_test_path()
> +{
> + local ctrl="$1"
> + local mountpoint
> + local test_path
> +
> + [ $# -eq 0 ] && tst_brk TBROK "cgroup_get_test_path: controller not defined"
> + [ "$_cgroup_state" = "" ] && tst_brk TBROK "cgroup_get_test_path: No previous state found. Forgot to call cgroup_require?"
> +
> + mountpoint=$(cgroup_get_mountpoint "$ctrl")
> +
> + test_path="$mountpoint/ltp/test-$$"
> +
> + [ ! -d "$test_path" ] && tst_brk TBROK "cgroup_get_test_path: No test path found. Forgot to call cgroup_require?"
> +
> + echo "$test_path"
> +
> + return 0
> +}
> +
> +# Gets the cgroup version of the given controller
> +# USAGE: cgroup_get_version CONTROLLER
> +# RETURNS: "V1" if version 1 and "V2" if version 2
> +# Must call cgroup_require before calling
> +cgroup_get_version()
> +{
> + local ctrl="$1"
> +
> + [ $# -eq 0 ] && tst_brk TBROK "cgroup_get_version: controller not defined"
> + [ "$_cgroup_state" = "" ] && tst_brk TBROK "cgroup_get_version: No previous state found. Forgot to call cgroup_require?"
> +
> + version=$(echo "$_cgroup_state" | grep -w "$ctrl" | awk '{ print $2 }')
This won't work on my x86_64 KVM platform, maybe we need: grep -w "^$ctrl".
# echo $$
1801
# ./tst_cgctl require memory 1801
Detected Controllers:
memory V1 @ /sys/fs/cgroup/memory Required
cpu V1 @ /sys/fs/cgroup/cpu,cpuacct
cpuset V1 @ /sys/fs/cgroup/cpuset
Detected Roots:
/sys/fs/cgroup/memory Mounted_Root=no Created_Ltp_Dir=no
Created_Drain_Dir=no Test_Id=test-1801
/sys/fs/cgroup/cpu,cpuacct Mounted_Root=no Created_Ltp_Dir=no
Created_Drain_Dir=no Test_Id=NULL
/sys/fs/cgroup/cpuset Mounted_Root=no Created_Ltp_Dir=no
Created_Drain_Dir=no Test_Id=NULL
# _cgroup_state=$(./tst_cgctl require memory 1801)
# echo "$_cgroup_state" | grep -w "memory" | awk '{ print $2 }'
V1
Mounted_Root=no
# echo "$_cgroup_state" | grep -w "memory" | awk '{ print $4 }'
/sys/fs/cgroup/memory
Created_Drain_Dir=no
# ./tst_cgctl cleanup "$_cgroup_state"
tst_cgroup.c:414: TBROK: Could not find root from config. Roots
changing between calls?
> + [ "$version" = "" ] && tst_brk TBROK "cgroup_get_version: Could not find controller $ctrl"
> +
> + echo "$version"
> +
> + return 0
> +}
> +
--
Regards,
Li Wang
More information about the ltp
mailing list