searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

ctyunos3 cgroupv1 writeback功能使用说明

2024-07-24 09:43:43
61
0

一 背景介绍
由于业务需求需要在ctyunos3操作系统使用cgroupv1 writeback功能,实现对缓存异步I/O(Buffered I/O) 进行限速。ctyunos操作系统对该功能的实现和openeuler保持一致,由于欧拉版本对该功能的使用说明不够详细,网上大部分文档基于龙蜥版本进行说明介绍。而实现细节上与龙蜥有不完全一致,使用方式上有一定的差异,因此基于ctyunos3操作系统对该功能使用进行说明。

二 功能说明
cgroup writeback功能需要memcg和blkcg协同工作,完成Buffered I/O的限速,但是内核接口cgroup v1的各个控制子系统间默认不协同工作。因此需要通过一定的规则把memcg和blkcg连接起来,规则为:通过任意一个memcg必须可以找到与之唯一对应的blkcg。即memcg和blkcg的映射关系可以是一对一或多对一,不可以是一对多或多对多。

例如,存在进程A和B,对它们进行Buffered I/O限速,需要遵循以下约束。

  • 如果A和B分属不同的memcg,它们可以映射到不同的blkcg,只需各自一一对应。例如:A属于memcg1blkcg1;B属于memcg2blkcg0
  • 如果A和B分属不同的memcg,它们也可以映射到同一个blkcg。例如:A属于memcg1,B属于memcg2,A和B都属于blkcg2
  • 如果A和B属于相同的memcg,那么它们只能映射到同一个blkcg。例如:A和B均属于memcg0,它们同时属于blkcg3

三 开启cgroupv1 writeback功能

cgroup v1接口中的cgroup writeback功能默认是关闭的,按照以下步骤开启该功能。

3.1 通过命令grubby内添加cgroup1_writeback字段( 与龙蜥字段不同)开启该功能

grubby --update-kernel=ALL --args=cgroup1_writeback

3.2 重启系统使能生效

sudo reboot

3.3 验证功能是否生效

cat /proc/cmdline | grep  cgroup1_writeback

确认内核命令行参数中带有cgroup1_writeback字段

四 功能验证
4.1 模拟出两个产生I/O的进程,并按照限制条件优先设置blkcg的cgroup.procs接口

sudo mkdir /sys/fs/cgroup/blkio/blkcg1

sudo mkdir /sys/fs/cgroup/memory/memcg1

sudo bash -c "echo $$ > /sys/fs/cgroup/blkio/blkcg1/cgroup.procs"    # $$为您的进程ID

sudo bash -c "echo $$ > /sys/fs/cgroup/memory/memcg1/cgroup.procs"    # $$为您的进程ID

4.2 将memcg与blkcg绑定
4.2.1 拿到blkcg1的node id

ls -i /sys/fs/cgroup/blkio/

image.png
4.2.2 将inode设置到memcg1的memory.wb_blkio_ino项

echo 23 > /sys/fs/cgroup/memory/memcg1/memory.wb_blkio_ino

4.2.3 确认是否设置成功

cat /sys/fs/cgroup/memory/memcg1/memory.wb_blkio_ino

image.png

4.3 使用blkcg下的blkio.throttle.write_bps_device接口对Buffered I/O进行限速

sudo bash -c "echo 254:48 10485760 > /sys/fs/cgroup/blkio/blkcg1/blkio.throttle.write_bps_device"    # 通过设备号配置磁盘的回写限流bps为10 M
通过lsblk 命令查找设备号

4.4 使用不带参数oflag=sync的dd命令产生缓存异步I/O

sudo dd if=/dev/zero of=/mnt/vdd/testfile bs=4k count=10000

4.5 使用iostat工具查询结果
查看输出列wMB/s,如果被限制到10 MB/s,则表示cgroup writeback功能已生效。

iostat -xdm 1 sda
0条评论
0 / 1000
zhangzq
6文章数
1粉丝数
zhangzq
6 文章 | 1 粉丝
原创

ctyunos3 cgroupv1 writeback功能使用说明

2024-07-24 09:43:43
61
0

一 背景介绍
由于业务需求需要在ctyunos3操作系统使用cgroupv1 writeback功能,实现对缓存异步I/O(Buffered I/O) 进行限速。ctyunos操作系统对该功能的实现和openeuler保持一致,由于欧拉版本对该功能的使用说明不够详细,网上大部分文档基于龙蜥版本进行说明介绍。而实现细节上与龙蜥有不完全一致,使用方式上有一定的差异,因此基于ctyunos3操作系统对该功能使用进行说明。

二 功能说明
cgroup writeback功能需要memcg和blkcg协同工作,完成Buffered I/O的限速,但是内核接口cgroup v1的各个控制子系统间默认不协同工作。因此需要通过一定的规则把memcg和blkcg连接起来,规则为:通过任意一个memcg必须可以找到与之唯一对应的blkcg。即memcg和blkcg的映射关系可以是一对一或多对一,不可以是一对多或多对多。

例如,存在进程A和B,对它们进行Buffered I/O限速,需要遵循以下约束。

  • 如果A和B分属不同的memcg,它们可以映射到不同的blkcg,只需各自一一对应。例如:A属于memcg1blkcg1;B属于memcg2blkcg0
  • 如果A和B分属不同的memcg,它们也可以映射到同一个blkcg。例如:A属于memcg1,B属于memcg2,A和B都属于blkcg2
  • 如果A和B属于相同的memcg,那么它们只能映射到同一个blkcg。例如:A和B均属于memcg0,它们同时属于blkcg3

三 开启cgroupv1 writeback功能

cgroup v1接口中的cgroup writeback功能默认是关闭的,按照以下步骤开启该功能。

3.1 通过命令grubby内添加cgroup1_writeback字段( 与龙蜥字段不同)开启该功能

grubby --update-kernel=ALL --args=cgroup1_writeback

3.2 重启系统使能生效

sudo reboot

3.3 验证功能是否生效

cat /proc/cmdline | grep  cgroup1_writeback

确认内核命令行参数中带有cgroup1_writeback字段

四 功能验证
4.1 模拟出两个产生I/O的进程,并按照限制条件优先设置blkcg的cgroup.procs接口

sudo mkdir /sys/fs/cgroup/blkio/blkcg1

sudo mkdir /sys/fs/cgroup/memory/memcg1

sudo bash -c "echo $$ > /sys/fs/cgroup/blkio/blkcg1/cgroup.procs"    # $$为您的进程ID

sudo bash -c "echo $$ > /sys/fs/cgroup/memory/memcg1/cgroup.procs"    # $$为您的进程ID

4.2 将memcg与blkcg绑定
4.2.1 拿到blkcg1的node id

ls -i /sys/fs/cgroup/blkio/

image.png
4.2.2 将inode设置到memcg1的memory.wb_blkio_ino项

echo 23 > /sys/fs/cgroup/memory/memcg1/memory.wb_blkio_ino

4.2.3 确认是否设置成功

cat /sys/fs/cgroup/memory/memcg1/memory.wb_blkio_ino

image.png

4.3 使用blkcg下的blkio.throttle.write_bps_device接口对Buffered I/O进行限速

sudo bash -c "echo 254:48 10485760 > /sys/fs/cgroup/blkio/blkcg1/blkio.throttle.write_bps_device"    # 通过设备号配置磁盘的回写限流bps为10 M
通过lsblk 命令查找设备号

4.4 使用不带参数oflag=sync的dd命令产生缓存异步I/O

sudo dd if=/dev/zero of=/mnt/vdd/testfile bs=4k count=10000

4.5 使用iostat工具查询结果
查看输出列wMB/s,如果被限制到10 MB/s,则表示cgroup writeback功能已生效。

iostat -xdm 1 sda
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0