美文网首页Docker容器
cgroup v2的调研与使用

cgroup v2的调研与使用

作者: 随笔随风 | 来源:发表于2019-04-25 12:39 被阅读0次

背景

​ 验证cgroup v2对普通进程io的统计是否正确

命令

​ dd if=/dev/zero of=/xfs/file1 bs=128M count=1

基本信息

  • 10G普通云硬盘

  • 操作系统与内核版本:Linux version 4.14.15-041415-generic (kernel@tangerine) (gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3)) #201801231530 SMP Tue Jan 23 20:33:21 UTC 2018

  • Cgroup v2的io.stat如下所示

    root@VM-16-35-ubuntu:/xfs/cgroup2/cg3# cat io.stat 
    252:16 rbytes=0 wbytes=184549376 rios=0 wios=128
    

使用Cgroup v2的步骤

  • 禁用cgroup v1

    • 在/boot/grub/grub.cfg添加内核启动参数:cgroup_no_v1=all,如下所示

    • reboot

      linux   /boot/vmlinuz-4.14.15-041415-generic root=UUID=971546b4-fe6b-4f81-9cbb-9186ff0454ea ro net.ifnames=0 biosdevname=0 console=ttyS0,115200 console=tty0 panic=5 crashkernel=auto  crashkernel=384M-:128M cgroup_no_v1=all
      
  • 挂载cgroup v2

    • 为了不受其他进程影响,我申请了一块新盘,/xfs是挂载点
    • mount -t cgroup2 nodev /xfs/cgroup2
  • 使用I/O controller

    • 创建新cgroup

      mkdir /xfs/cgroup2/cg3
      
    • 为了可以在新创建的cgroup上使用I/O controller来编辑I/O限制,需要在subtree_control中写上io

      echo "+io" > /xfs/cgroup2/cgroup.subtree_control
      
    • 限制I/O(8:0是磁盘的主次设备号,1048576代表限制I/O为1MB/s)

      echo "8:0 wbps=1048576" > /xfs/cgroup2/cg3/io.max
      
    • 把bash session添加到cg3这个cgroup

      echo $$ > /cgroup2/cg2/cgroup.procs
      
    • 使用dd来生成一些I/O负载

      dd if=/dev/zero of=/tmp/file1 bs=512M count=1
      

结论

  • 三个问题

    1. 使用dd写新文件时,wbytes不增加
    2. 在未加入cgroup的进程写的同时,使用dd写时(无论新旧文件),wbytes不增加
    3. 每次使用dd命令写128M数据时,wbytes增加184549376
  • 正确的地方

    • 每次使用dd写128M到已有文件时,wbytes增加固定值

cgroups的io速率限制体现在page cache到磁盘的过程中。linux数据流可以参见https://lwn.net/Articles/457667/

相关文章

  • cgroup v2的调研与使用

    背景 ​ 验证cgroup v2对普通进程io的统计是否正确 命令 ​ dd if=/dev/zero o...

  • cgroups v2

    cgroups v2 检查操作系统是否支持 cgroups v2 grep cgroup2 /proc/files...

  • blkio cgroup

    blkio cgroup 基本功能 blkio 是 cgroup v1 中的一个子系统,使用 cgroup v1 ...

  • docker 修改Cgroup Driver

    docker 默认Cgroup Driver为cgroup,但是在kubernetes1.14之后的版本推荐使用s...

  • Docker更换Cgroup Driver

    背景 Docker默认的Cgroup Driver是cgroupfs,Kubernetes推荐使用systemd ...

  • cgroup

    简介 CGroup 提供了一个 CGroup 虚拟文件系统,作为进行分组管理和各子系统设置的用户接口。要使用 CG...

  • cgroup限制内存

    cgroup限制内存的脚本(cgroup_mem.sh)如下: 执行方式: sudo sh cgroup_mem....

  • 网易蜗牛读书竞品分析报告

    ————迭代记录———— 版本V2(2018.04.26) :更新全文结构,新增调研目的,用户-场景-需求分析。 ...

  • 如何设置Docker容器中Java应用的内存

    Dokcer 容器如何限制内存 我们知道docker使用Linux内核的 CGroup 来实现限制容器的资源使用...

  • 第五节、容器网络

    容器使用的相关技术有cgroup(资源使用限制包括cpu内存的调用),namespace(名称空间)以及aufs(...

网友评论

    本文标题:cgroup v2的调研与使用

    本文链接:https://www.haomeiwen.com/subject/nhnngqtx.html