cgroup--blkio子系统测试-2(配合fio 做weight测试)

cgroup-blkio子系统分析 1      概述Cgroup中的blkio子系统的主要功能是实现对磁盘i/o带宽的可定制化控制。目前支持的控制策略只要有两种:BLKIO_POLICY_PROP和BLKIO_POLICY_THROTL,即基于权重方式和基于流量方式。权重方式依赖于内核原生的CFQ i/o调度算法,i/o调度算法本身是工作在i/o调度层的,因此在使用上有一定的局限性,即被控制的设备必须使用cfq调度算法;为了弥补这... 阅读详情

      前面测试了 blkio 的throttle部分,本文测试 blkio 的 weight,也就是每个进程能使用的IOPS的能力的比例,必须通过CFQ调度器来实现。

fio是一个测试 IOPS 的好工具,因此这里用fio 配合 cgroup 测试存储设备IOPS的分配。


要使用blkio的weight限制需要注意几个事情:
1. 必须走directio, 如果buffered io因为最终写IO的进程不是发起IO的进程,结果会有很大的偏差。 (下面是cgroup 文档中一段话)

Currently two IO control policies are implemented. First one is proportional
weight time based division of disk policy. It is implemented in CFQ. Hence
this policy takes effect only on leaf nodes when CFQ is being used.
2. 调度器必须是CFQ。

在linux 内核的配置文件 config-xx中需要有如下两个选项

- Enable Block IO controller
        CONFIG_BLK_CGROUP=y

- Enable group scheduling in CFQ
        CONFIG_CFQ_GROUP_IOSCHED=y
3. 测试工具必须支持cgroup的相关限制。
4. 最好是随机的IO。

新版本的支持 cgroup 的 fio 可以在这里下载 

git clone git://git.kernel.dk/fio.git 
下载完后 make && sudo make install  即可安装。


再创建2个512M大小的文件,进行随机的混合读写,一个给500的比例,一个给100的比例,总的比例是1000。那么理论上可以看到A进程可以得到多于B进程5倍的IO能力。


创建一个文件 test.fio,内容如下:

[global]
bs=1M
ioengine=libaio
iodepth=32
direct=1
rw=randrw
rwmixread=90
time_based
runtime=180
cgroup_nodelete=1

[test1]
filename=disk1.img
size=512M
cgroup_weight=500
cgroup=first

[test2]
filename=disk2.img
size=512M
cgroup_weight=100
cgroup=second

启动测试:
$sudo fio test.fio

sina@ubuntu:~/work/test$ sudo fio test.fio 
test1: (g=0): rw=randrw, bs=1M-1M/1M-1M/1M-1M, ioengine=libaio, iodepth=32
test2: (g=0): rw=randrw, bs=1M-1M/1M-1M/1M-1M, ioengine=libaio, iodepth=32
fio-2.0.9-28-geebd
Starting 2 processes
Jobs: 2 (f=2): [mm] [100.0% done] [1024K/1024K/0K /s] [1 /1 /0  iops] [eta 00m:00s]   


察看 两个进程

root@ubuntu:/sys/fs/cgroup/blkio# cat first/tasks 
15064
root@ubuntu:/sys/fs/cgroup/blkio# cat second/tasks 
15065


$ sudo iotop
察看磁盘 读写 速度,可见读写速度满足1:5的比例。




原文链接:

fio配合cgroup测试存储设备IOPS分配

http://blog.yufeng.info/archives/2001


相关链接:

linux使用FIO测试磁盘的iops

http://www.xclinux.cn/?p=958


附:

linux IO 协议栈框图:



从上面可以看出什么是 direct  IO。



redhat 官方链接:

https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch-Subsystems_and_Tunable_Parameters.html





【访问控制】cgroup限制磁盘读写 blkio是cgroup中的一个子系统,可以用于限制及监控磁盘读写io blkio控制子系统可以限制进程读写的 IOPS 和吞吐量,但它只能对 Direct I/O 的文件读写进行限速,对 Buffered I/O 的文件读写无法限制 Buffered I/O 指会经过 PageCache 然后再写入到存储设备中。这里面的 Buffered 的含义跟内存中 buffer cache 不同,这里的 Buffered 含义相当于内存中的buffer cache+page cache。 阅读详情

相关推荐

blkio.weight使用感想

blkio.weight使用感想根据尝试,发现设置blkio.weight并不会对写入产生很大的影响,其影响的主要是read的IO。

白橙纸的不知道什么 2737

docker(五)私有仓库registry和资源控制cgroup

Cgroup概述 Cgroup是control groups的缩写,是linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制 物理资源如CPU、内存、磁盘IO等等 Cgroup被LXC、docker等很多项目用于实现进程资源控制。cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,IO或内存的分配控制等具体的资源管理是通过该方式 这些具体的资源管理功能成为cgroup子系统,有以下几大子系统实现: blkio:设置限制每个块设备的输入输出控制,例如磁盘、光盘及USB等 CPU

lv74134的博客 438

【CGroup原理篇V1】五、BLKIO子系统

blkio,Block IO Controller,指block io控制器或块IO子系统。 IO控制策略就是用于控制特定设备的IO速率的一个节流策略。这种策略可以应用在内核通用块层(Generic Block Layer),也可以应用在页节点上和高级别逻辑设备,如设备映射器。

从0到1,突破自己 3075

Cgroup blkio简介和测试(使用fio测试)

Cgroup blkio简介和测试(使用fio测试) 因需要对docker镜像内的进程对磁盘读写的速度进行限制,研究了下Cgroup blkio,并使用fio对其iops/bps限速进行测试。 Cgroup blkio简介 Linux Cgroup(Control Groups)是Linux内核提供的用于限制、记录、隔离进程组可以使用的资源(cpu、memory、IO等)的一种机制。 在/boot...

weixin_34106122的博客 670

Qt上位机实战:5步搞定STM32 IAP固件升级(附拖拽文件处理技巧)

本文详细介绍了如何使用Qt开发STM32 IAP固件升级上位机。通过五个核心步骤,包括理解IAP机制、搭建Qt环境、实现拖拽文件加载、封装串口通信以及设计可靠通信协议,帮助开发者快速构建一个稳定、易用且支持图形化操作的固件升级工具,显著提升嵌入式产品开发与维护效率。

ss78901的博客 1073

Python-OpenCV及cv2,numpy库最新安装教程[最全步骤]

安装教程目录前言OpenCV-Python安装教程报错解决cv2安装numpy安装opencv安装(附加)总结 前言 首先,我知道一些看到我的Blog的人已经在网上找了很多歪路子,现在已经火冒三丈了(我也是这样过来的hhhh),那么现在,深呼吸,跟着我的教程,不要着急,每一步都要读一遍。完整安装过程需要1个小时左右(仅供参考,本人第一次安装python花了一天(确信)) OpenCV-Python...

qq_45425286的博客 7430

Cgroup 资源配置方法

cgroups是一个非常强大的linux内核工具。他不仅可以现在被namespace隔离起来的资源,还可以为资源设置权重,计算使用量,控制进程启停等等,所以cgroups实现了对资源的配额和度量

小杨博客 学习交流 2933

西门子CPU与汇川伺服通信与控制

第三方驱动器的配置内容和西门子的配置内容基本一致,基本上会一种即可知道其他品牌的配置默认报文,需要激活硬限位才能收到限位信号默认报文,原点信号不能实时输出到PLC;自定义报文,需要伺服端设置DIN点位。

大小曲奇的博客 1万+

Docker---cgroups资源限制

通过-cpu-share并不是cpu资源的绝对数量,而是一个相对的权重值,某个容器最终能分配到的cpu资源取决于它的cpu share占所有容器 cpu share综合的比例。共享式CPU资源,是按比例切分CPU资源,Docker默认每个容器的权值为1024。Block IO 是另一种可以限制容器使用的资源,Block IO 指的是磁盘的读写,docker可通过设置权重,限制。在有多个容器竞争CPU时,我们可以设置每个容器能会用的CPU时间比例,这个比例叫做。和iops的方式控制容器读写磁盘的带宽。

weixin_46254171的博客 880

手把手教你用C语言实现GNSS卫星方位角计算(附RTKLIB风格代码解析)

本文详细介绍了如何使用C语言实现GNSS卫星方位角计算,包括从地固坐标系到站心坐标系的转换链条。通过RTKLIB风格的代码解析,展示了XYZ到ENU坐标转换的核心原理和C语言实现框架,帮助开发者掌握卫星方位角和高度角的计算技巧,适用于GNSS观测数据质量分析和精密定位算法开发。

weixin_30699915的博客 364

用Verilog搭建PCIe控制器核心模块

PCIe控制器是硬件设计的核心模块,负责实现设备与主机之间的高速通信。本文将以Verilog语言为例,分步骤讲解如何从零构建一个简化的PCIe控制器核心模块,涵盖事务层(TLP)生成、数据链路层(DLLP)处理和物理层(PHY)接口适配。目标是为嵌入式开发者、FPGA工程师提供一个可扩展的硬件设计框架。​。

xiaoheshang_123的博客 279

Linux源码编译开启cgroup blk限制io性能

经过上面的mout之后就可以看到/sys/fs/cgroup/blkio中出现了各种控制节点。

GetnextWindow的专栏 904

游戏大厂射击游戏无缝大世界游戏DS服务器架构设计方案详解

摘要: 本文深入解析游戏大厂无缝大世界射击游戏的分布式服务器(DS)架构设计方案。以《和平精英》《量子特攻》为例,阐述如何通过动态分区、兴趣管理、弹性扩缩等核心技术应对高并发、低延迟、无缝切换等挑战。架构分为世界协调层、分区计算层、物理判定层等模块,结合微服务化、快照同步和Kubernetes调度,实现玩家跨区无感知迁移与一致判定。重点优化动态负载均衡、状态同步算法及容灾备份,依托分布式数据库与多云部署保障高可用性,为同类游戏提供可扩展的技术范本。(149字) 关键词: 无缝大世界、分布式服务器、动态分区、

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 562

Control Groups (Cgroups)-详解

提供了一个新的内核特性:(Cgroups),它为内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。包括如下子系统:blkio--这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等)。cpu--这个子系统使用调度程序提供对 CPU 的 cgroup 任务访问。cpuacct--这个子系统自动生成 cgroup 中任务所使用的 CPU 报告。

太极淘的博客 2411

装配完整性检查系统:基于YOLOv10的螺丝/零件缺失自动检测(含UI界面与完整代码)

建议自行采集装配场景数据,标注缺失螺丝、错误零件等,模拟真实缺陷。手机/工业相机采集图像;使用LabelImg进行目标标注;转换为 YOLO 格式。本文构建了一个完整的装配完整性检测系统,基于 YOLOv10 实现高精度螺丝缺失检测,并使用 PyQt5 构建了图形界面,实现一键导入与可视化检测流程,适用于工业质检自动化部署。项目可灵活扩展至零件缺失、错装、错位、顺序错误等检测场景,是深度学习在制造业中落地的典型应用案例之一。

YOLO 701

基于ArduPilot的旋翼式无人机飞行器开发系列(二,学习路线)

一,热爱 作为一名耿直的技术男,在这里我只想说一句,热爱是可持续学习的第一要素,也只有热爱才能让你坚持到最后。 至于最后能得到什么,只有你自己知道。常说书中自有颜如玉,书中自有黄金屋。如果你是为了颜如玉,我相信大多数颜如玉做不了你的红颜知己。如果是为了黄金屋,当你持续投入时间和金钱却看不到回报的时候,相信退堂鼓早已隆隆作响。 我给自己的信条就是为当下努力工作,为将来持续学习。当前飞控行业并没有爆发,如果想赚块钱,去互联网汽车,去VR/AR吧,去元宇宙吧。 那么我热爱...

从0到1,突破自己 1666

CGroup 介绍、应用实例及原理描述

CGroup 介绍CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制。2007 年进入 Linux 2.6.24 内核,CGroups 不是全新创造的,它将进程管理从 cpuset 中剥离出来,作者是 Google 的 Pa...

diaotuhui6321的博客 1394

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

使用cgroup踩过的坑

cgroup 全称 control group,控制组。通过 cgroup 可以限制应用使用的资源,资源包括 cpu、内存、磁盘 io、网络等。工作中经常使用的 docker 容器就使用了 cgroup 进行资源限制和隔离,cgroup 是 docker 的基础。

weixin_38184628的博客 7918

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

blkio限制容器的iops

当容器的IOPS超过限定时,具体的行为取决于您所使用的容器管理工具和操作系统。请注意,具体的行为可能因不同的操作系统、容器管理工具和配置而有所不同。I/O请求被丢弃:在某些情况下,操作系统可能会选择丢弃容器的一部分I/O请求,以确保其他进程或容器的正常运行。I/O请求被延迟:如果容器的IOPS超过了限制,操作系统可能会将容器的I/O请求排队等待执行。容器进程被终止:某些容器管理工具可能会监控容器的资源使用情况,并在IOPS超出限制时终止容器进程,以防止对其他容器或系统造成不利影响。

喝醉酒的小白 486

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[Android Q][cgroup][blkio]关于blkio分组bg在Android Q上失效的分析

新项目,Android Q,按照之前的惯例,在配置blkio的前后台weight比例。 今天在验证效果时发现,/bg分组下的tasks为空——即表示没有任何task被移入此组。 第一反应是cgroup的blkio没有生效,但是在ls -al /dev/blkio查看后发现,存在一个我并没有创建的目录(分组):/dev/blkio/background: XXX:/ $ ls -al dev...

Ryan ZHENG的专栏 1947

Cgroups使用

Cgroups使用 一.                      Cgroups介绍 linux内核提供了cgroups控制组(controlgroups)的功能,最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是LXC(LinuxContainer容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复

thundermeng的博客 3106

Cgroup - Linux 的 IO 资源隔离

Hi ,我是 Zorro 。这是我的微博地址,我会不定期在这里更新文章,如果你有兴趣,可以来关注我呦。 另外,我的其他联系方式: Email: mini.jerry@gmail.com QQ: 30007147 本文PDF 今天我们来谈谈: Linux 的 IO 隔离 跟内存管理那部分复杂度类似, IO 的资源隔离要讲清楚也是比较麻烦的。这部分内容都是这样

linux内核,glusterfs, 无人机,机器人 2102

Linux下CGroup进行CPU内存等资源控制

留存 from: http://www.cnblogs.com/kevingrace/p/5685433.html  and  http://www.cnblogs.com/wang_yb/p/3942208.html CGroup 介绍 CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups)

lbyyy的专栏 8816

Cgroup blkio I/O 控制

1.1 I/O 控制(blkio)blkio子系统限制对指定块设备的 I/O 操作1)对于分配给blkio子系统的进程,我们可以通过两种方式控制它们对块设备的 I/O 操作a)通过加权系统Blkio 子系统参数(bkiio.weight)允许每个Cgroup 拥有相对份额的可用I/O.加权机制可用在公平调度器中实现b)通过I/0 限制可用使用子系统参数来为块设备设置I/0操作...

weixin_33785972的博客 576

深入了解Linux命名空间中cgroups相关概念:打开容器技术的黑匣子

在当今云计算和容器化技术的兴起下,Linux命名空间和cgroups成为了容器技术的核心支撑。本文将深入探讨Linux命名空间和cgroups的原理和运行机制,解密这两项关键技术在容器化领域的作用和影响。 一、cgroups概念。 二、cpu子系统:CFS、RT、示例。 其他子系统: cpuset子系统、 cpuacct子系统、 memory子系统、 blkio子系统、 devices子系统、 freezer子系统、 net_cls子系统、 net_prio子系统、 perf_event、 hugetlb。

Lion_Long的博客 6888
上一篇: cgroup--device测试
下一篇: cgroup--blkio子系统测试-1(throttle测试)
xianjian_x
博客等级 码龄14年 231粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值