[问题描述]: ltp测试controllers:cgroup_fj_function_cpu用例执行fail <<<test_start>>> tag=cgroup_fj_function_cpu stime=1731036149 cmdline="cgroup_fj_function.sh cpu" contacts="" analysis=exit <<<test_output>>> cgroup_fj_function 1 TINFO: Running: cgroup_fj_function.sh cpu cgroup_fj_function 1 TINFO: Tested kernel: Linux 4f7Lab15 6.6.25-2.2_rc1.an23.aarch64 #1 SMP PREEMPT_DYNAMIC Thu Oct 31 21:22:28 CST 2024 aarch64 aarch64 aarch64 GNU/Linux cgroup_fj_function 1 TINFO: Using /tmp/ltp-1XFi6RGUBn/LTP_cgroup_fj_function.iJEbaNh9fT as tmpdir (tmpfs filesystem) cgroup_fj_function 1 TINFO: timeout per run is 0h 5m 0s tst_cgroup.c:918: TBROK: vdprintf(5</sys/fs/cgroup/ltp>, 'cgroup.subtree_control', '+%s'<+cpu>): ENOENT (2) cgroup_fj_function 1 TBROK: 'tst_cgctl require' exited cgroup_fj_function 1 TINFO: Removing all ltp subgroups... [环境信息]: 物理机 [内核信息]: 6.6.25-2.2_rc1.an23.x86_64 [操作系统信息]: [root@localhost ~]# cat /etc/os-release NAME="Anolis OS" VERSION="23.1" ID="anolis" VERSION_ID="23.1" PLATFORM_ID="platform:an23" PRETTY_NAME="Anolis OS 23.1" ANSI_COLOR="0;31" HOME_URL="https://openanolis.cn/" BUG_REPORT_URL="https://bugzilla.openanolis.cn/" [期望结果]: 执行pass [实际结果]: fail [复现步骤]: 1、安装ltp测试套 2、执行./runltp -f controllers -s cgroup_fj_function_cpu
以下用例均为相同问题: cgroup_fj_stress_cpu_2_2_none cgroup_fj_stress_cpu_3_3_none cgroup_fj_stress_cpu_4_4_none cgroup_fj_stress_cpu_2_9_none cgroup_fj_stress_cpu_10_3_none cgroup_fj_stress_cpu_1_200_none cgroup_fj_stress_cpu_200_1_none cgroup_fj_stress_cpu_2_2_one cgroup_fj_stress_cpu_3_3_one cgroup_fj_stress_cpu_4_4_one cgroup_fj_stress_cpu_2_9_one cgroup_fj_stress_cpu_10_3_one cgroup_fj_stress_cpu_1_200_one cgroup_fj_stress_cpu_200_1_one cgroup_fj_stress_cpu_2_2_each cgroup_fj_stress_cpu_3_3_each cgroup_fj_stress_cpu_4_4_each cgroup_fj_stress_cpu_2_9_each cgroup_fj_stress_cpu_10_3_each cgroup_fj_stress_cpu_1_200_each cgroup_fj_stress_cpu_200_1_each
在该内核的aarch64内部物理机环境下,使用版本号为 " LTP Version: 20240930-63-g6408294d8"的LTP测试套,下面case也存在同样问题: ============================= cgroup_fj_function_cpu cgroup_fj_stress_cpu_2_2_none cgroup_fj_stress_cpu_3_3_none cgroup_fj_stress_cpu_4_4_none cgroup_fj_stress_cpu_2_9_none cgroup_fj_stress_cpu_10_3_none cgroup_fj_stress_cpu_1_200_none cgroup_fj_stress_cpu_200_1_none cgroup_fj_stress_cpu_2_2_one cgroup_fj_stress_cpu_3_3_one cgroup_fj_stress_cpu_4_4_one cgroup_fj_stress_cpu_2_9_one cgroup_fj_stress_cpu_10_3_one cgroup_fj_stress_cpu_1_200_one cgroup_fj_stress_cpu_200_1_one cgroup_fj_stress_cpu_2_2_each cgroup_fj_stress_cpu_3_3_each cgroup_fj_stress_cpu_4_4_each cgroup_fj_stress_cpu_2_9_each cgroup_fj_stress_cpu_10_3_each cgroup_fj_stress_cpu_1_200_each cgroup_fj_stress_cpu_200_1_each ============================ 以 cgroup_fj_function_cpu 为例: ------------------------------ <<<test_start>>> tag=cgroup_fj_function_cpu stime=1731303991 cmdline="cgroup_fj_function.sh cpu" contacts="" analysis=exit <<<test_output>>> cgroup_fj_function 1 TINFO: Running: cgroup_fj_function.sh cpu cgroup_fj_function 1 TINFO: Tested kernel: Linux 5f9Lab15 6.6.25-2.2_rc1.an23.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Oct 31 21:26:10 CST 2024 x86_64 x86_64 x86_64 GNU/Linux cgroup_fj_function 1 TINFO: Using /tmp/ltp-41zCXuJrrm/LTP_cgroup_fj_function.lB4KrpUF59 as tmpdir (tmpfs filesystem) cgroup_fj_function 1 TINFO: timeout per run is 0h 5m 0s tst_cgroup.c:918: TBROK: vdprintf(5</sys/fs/cgroup/ltp>, 'cgroup.subtree_control', '+%s'<+cpu>): ENOENT (2) cgroup_fj_function 1 TBROK: 'tst_cgctl require' exited cgroup_fj_function 1 TINFO: Removing all ltp subgroups... Summary: passed 0 failed 0 broken 1 skipped 0 warnings 0
该用例报错的原因为当前内核使用cgroup v2,在对cgroup子系统cpu开始测试时需要执行echo "+cpu" > /sys/fs/cgroup/ltp/cgroup.subtree_control,该命令会报错显示不存在该文件。实际上需要先在/sys/fs/cgroup/cgroup.subtree_control中添加cpu,才能在自己创建的cgroup添加。在添加时可能会报错无效参数,可能原因为内核同时使用cgroup v1和v2或者存在使用实时调度策略(RR)的进程。综上,属于用例问题。
OK,用例问题,先记录基线