Bug 4395 - [Anolis 23][社区nightly & ANCK-5.10-14-rc1][aarch64]LTP测试中cgroup相关测试为v1版本命令,Anolis 23默认cgroup版本为v2,LTP用例未适配Anolis23
Summary: [Anolis 23][社区nightly & ANCK-5.10-14-rc1][aarch64]LTP测试中cgroup相关测试为v1版本命令,Ano...
Status: NEW
Alias: None
Product: Anolis OS 23
Classification: Anolis OS
Component: Others (show other bugs) Others
Version: 23.0
Hardware: All Linux
: P3-Medium S3-normal
Target Milestone: ---
Assignee: Jacob
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-03-07 10:30 UTC by Banana
Modified: 2023-03-15 11:12 UTC (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Banana alibaba_cloud_group 2023-03-07 10:30:21 UTC
[问题描述]:
1、anolis23LTP测试中cgroup相关测试为v1版本命令,Anolis 23默认cgroup版本为v2

2、anolis23测试LTP controllers模块中,测试命令为v1版本,部分测试命令依然成功,部分提示为:'xx'already mounted or mount point busy。


查看默认挂载项
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount | grep cgroup
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,seclabel,nsdelegate,memory_recursiveprot)

[环境信息]:
机器类型:ECS

[内核信息]:
[root@iZbp1ivbnxxe7k7crvylttZ cgroup]# uname -r
5.10.134-12.1.an23.x86_64

操作系统信息:
[root@iZbp1ivbnxxe7k7crvylttZ cgroup]# cat /etc/os-release
NAME="Anolis OS"
VERSION="23"
ID="anolis"
VERSION_ID="23"
PLATFORM_ID="platform:an23"
PRETTY_NAME="Anolis OS 23"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"
BUG_REPORT_URL="https://bugzilla.openanolis.cn/"

[问题发生概率]:必现

[期望结果]
如果v1、v2版本不可同时使用,需要合理的将未开启的版本禁用,如使用v2版本 v1的挂载操作不应部分正常,部分异常。
如果v1、v2可以共存,期望v1的挂载命令挂载均正常。

[复现步骤]:
执行LTP controllers模块
Comment 1 Banana alibaba_cloud_group 2023-03-07 10:33:20 UTC
之前不确定默认版本是v2时,验证anolis23 cgroup v1挂载测试,部分模块可以挂载 部分模块提示已经挂载。

查看默认挂载项
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount | grep cgroup
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,seclabel,nsdelegate,memory_recursiveprot)

在/sys/fs/cgroup/路径下创建任意文件夹,此处创建的是memory文件夹

挂载上面查询到的各个子系统
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o cpuset mem /sys/fs/cgroup/memory

[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o memory memory /sys/fs/cgroup/memory
mount: /sys/fs/cgroup/memory: memory already mounted or mount point busy.
       dmesg(1) may have more information after failed mount system call.

[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o blkio blkio /sys/fs/cgroup/memory
mount: /sys/fs/cgroup/memory: blkio already mounted or mount point busy.
       dmesg(1) may have more information after failed mount system call.

[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o devices  /sys/fs/cgroup/memory
mount: /sys/fs/cgroup/memory: can't find in /etc/fstab.
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o devices devi /sys/fs/cgroup/memory
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o freezer free /sys/fs/cgroup/memory
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o net_cls net /sys/fs/cgroup/memory
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o pids pid /sys/fs/cgroup/memory
mount: /sys/fs/cgroup/memory: pid already mounted or mount point busy.
       dmesg(1) may have more information after failed mount system call.
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o perf_event perf /sys/fs/cgroup/memory
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o rdma rdma /sys/fs/cgroup/memory
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o hugetlb huge /sys/fs/cgroup/memory
[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount -t cgroup -o blkio mem /sys/fs/cgroup/memory
mount: /sys/fs/cgroup/memory: mem already mounted on /sys/fs/cgroup/memory.
       dmesg(1) may have more information after failed mount system call.

[root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount | grep cgroup.
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,seclabel,nsdelegate,memory_recursiveprot)
tmpfs on /usr/local/aegis/cgroup type tmpfs (rw,relatime,seclabel,size=51200k)
cgroup on /usr/local/aegis/cgroup/cpu type cgroup (rw,relatime,seclabel,cpu)
mem on /sys/fs/cgroup/memory type cgroup (rw,relatime,seclabel,cpuset)
devi on /sys/fs/cgroup/memory type cgroup (rw,relatime,seclabel,devices)
free on /sys/fs/cgroup/memory type cgroup (rw,relatime,seclabel,freezer)
net on /sys/fs/cgroup/memory type cgroup (rw,relatime,seclabel,net_cls)
perf on /sys/fs/cgroup/memory type cgroup (rw,relatime,seclabel,perf_event)
rdma on /sys/fs/cgroup/memory type cgroup (rw,relatime,seclabel,rdma)
huge on /sys/fs/cgroup/memory type cgroup (rw,relatime,seclabel,hugetlb)

最终结果:存在v1版本部分模块可以挂载,memory、pids、blkio无法正常挂载的现象。
Comment 2 escape alibaba_cloud_group 2023-03-14 16:08:31 UTC
(In reply to anolislhy from comment #0)
> [问题描述]:
> 1、anolis23LTP测试中cgroup相关测试为v1版本命令,Anolis 23默认cgroup版本为v2
> 
> 2、anolis23测试LTP controllers模块中,测试命令为v1版本,部分测试命令依然成功,部分提示为:'xx'already
> mounted or mount point busy。
> 
> 
> 查看默认挂载项
> [root@iZbp18osflnsnyoj47cbkoZ cgroup]# mount | grep cgroup
> cgroup2 on /sys/fs/cgroup type cgroup2
> (rw,nosuid,nodev,noexec,relatime,seclabel,nsdelegate,memory_recursiveprot)
> 
> [环境信息]:
> 机器类型:ECS
> 
> [内核信息]:
> [root@iZbp1ivbnxxe7k7crvylttZ cgroup]# uname -r
> 5.10.134-12.1.an23.x86_64
> 
> 操作系统信息:
> [root@iZbp1ivbnxxe7k7crvylttZ cgroup]# cat /etc/os-release
> NAME="Anolis OS"
> VERSION="23"
> ID="anolis"
> VERSION_ID="23"
> PLATFORM_ID="platform:an23"
> PRETTY_NAME="Anolis OS 23"
> ANSI_COLOR="0;31"
> HOME_URL="https://openanolis.cn/"
> BUG_REPORT_URL="https://bugzilla.openanolis.cn/"
> 
> [问题发生概率]:必现
> 
> [期望结果]
> 如果v1、v2版本不可同时使用,需要合理的将未开启的版本禁用,如使用v2版本 v1的挂载操作不应部分正常,部分异常。
> 如果v1、v2可以共存,期望v1的挂载命令挂载均正常。
> 
> [复现步骤]:
> 执行LTP controllers模块

原因:
1. anolis 23默认在/sys/fs/cgroup/ 下挂载了cgroup v2
2. systemd在使能cpu,pids,memory等子系统的前提下,创建了user.slice,system.slice等子cgroup
3. 内核有限制,在cgroup v2中开启了子系统,且有子cgroup的情况下,不允许再以cgroup v1的方式挂子系统
4. LTP controllers的部分testcase以cgroup v1的方式挂载子系统,出现错误

解决办法:
上游社区LTP controllers已经适配了系统默认cgroup v2的情况,以memcg_regression_test为例,对应的commit为 https://github.com/linux-test-project/ltp/commit/4d3ad2e5a8badd09573f650668c54f4997edb2e1


建议tone的LTP进行更新