使用cgroups管理Linux磁盘io的方法

使用cgroups管理Linux磁盘io的方法,第1张

使用cgroups管理Linux磁盘io的方法

我们都知道Linux系统软件中的cgroups可以用来管理cpu资源。芒果云给大家详细介绍了Linux中cgroups管理方法的应用的进程盘io,一定要参考。

该功能根据blkio子系统完成。

blkio子系统有很多东西。但是,其中大多数都是写保护报告,只应写入以下参数:

编码如下:

blkio.throttle.read_bps_device

blKIO.throttle.read_IOPs_device

blKIO.throttle.write_bps_device

blKIO.throttle.write_IOPs_device

blkio.weight

blkio.weight_device

这都是用来 *** 纵磁盘io的进程。很明显分为两类,其中带“节流”的是溢流阀,将总流量限制在一定值。而“权重”是分配的io的权重值。

“throttle”的四个参数,从名字就可以知道。使用blkio.throttle.read_bps_device来限制每秒可以加载的字节数。首先运行一些io

编码如下:

ddif=/dev/sdaof=/dev/null。

[1]2750

用iotop看看现在的io。

编码如下:

TIDPRIO用户磁盘读磁盘写交换IO”命令

2750be/4根66.76M/s0.00B/s0.00%68.53%DDif=/dev/sdaof=/dev/null

。。。

然后更改资源限制,并将该进程添加到控制组。

编码如下:

echo'8:01048576'》/sys/fs/cgroup/blKIO/foo/blKIO.throttle.read_bps_device

echo2750"/sys/fs/cgroup/blKIO/foo/tasks

这里8:0是匹配机的关键设备号和辅助设备号。可以根据ls-l机器和设备的名称查询文件夹。诸如

编码如下:

#ls-l/dev/sda

brw-rw-.1根磁盘8,010月24日11:27/dev/sda

这里,8,0是匹配的设备号。因此,cgroups可以对不同的机器和设备进行不同的限制。然后讨论实际效果。

编码如下:

TIDPRIO用户磁盘读磁盘写交换IO”命令

2750be/4root989.17K/s0.00B/s0.00%96.22%DDif=/dev/sdaof=/dev/null

。。。

因此,每秒的进程负载立即下降到1MB左右。要取消限制,只需将“8:00”加载到文档中。

但必须注意的是,这种方法对于很多由采样间隔引起的io是无效的。例如,即使在1s内造成每秒100M的最大负载,也不会受到限制。

再看blkio.weight。Blkio的throttle和weight方法与cpu子系统的配额和份额非常相似。都是正面限制,一个是相对限制。除此之外,他们还可以在不忙的时候灵活利用资源,权重范围在10–1000之间。

检测重量值的方法不方便。因为没有明确限制,所以会遭受系统文件缓存文件的危害。比如在vm虚拟机中,需要在主机上关闭虚拟机的缓存文件,比如我用的VirtualBox。如果想检查读取io的实际效果,老先生可以用很多G做两个大文件/tmp/file_1和/tmp/file_2,用dd就可以了。然后设置两个权重值。

编码如下:

#echo500"/sys/fs/cgroup/blKIO/foo/blKIO.weight

#echo100"/sys/fs/cgroup/blKIO/bar/blKIO.weight

测试前清除系统文件的缓存文件,以防止干扰测试结果。

编码如下:

同步

echo3》/proc/sys/VM/drop_cache

这里在两个控制组中选择dd,产生io检测的实际效果。

编码如下:

#CGexec-g"blKIO:foo"DDif=/tmp/file_1of=/dev/null&;

[1]1838

#CGexec-g"blKIO:bar"DDif=/tmp/file_2of=/dev/null&;

[2]1839

或者用iotop看看实际效果。

编码如下:

TIDPRIO用户磁盘读磁盘写交换IO”命令

1839be/4root48.14M/s0.00B/s0.00%99.21%DDif=/tmp/file_2of=/dev/null

1838be/4根223.59M/s0.00B/s0.00%16.44%DDif=/tmp/file_1of=/dev/null

虽然两个进程每秒读取的字节数会不断变化,但发展趋势是1:5左右,与设定的权重比一致。Blkio.weight_device分为机器设备。加载时,在前面加上设备号。

blkio子系统中也有很多统计分析项目。

blkio.时间

在每次io面试中,企业ms

blkio.sectors

要安装在内部或外部的扇区数量。

blkio.io_serviced

每个设备中有各种io *** 作,包括读、写、同步、异步和总 *** 作。

blkio.io_service_bytes

每种输入输出类型的字段数。

blkio.io_service_time

各种io时间,企业分秒,落实在每个设备上。

blkio.io_wait_time

序列中每个设备中各种io的等待时间。

blkio.io_merged

每个设备中各种io要求的组合频率

blkio.io_queued

每个设备中的各种io需求是今天序列中的总数。

根据这个统计分析项目,可以更好地统计分析和监督流程的io状态。

使用

编码如下:

echo1》blkio.reset_stats

所有统计分析项目都可以清零。

以上是我对Linux下如何应用cgroups管理方法处理磁盘io的总结。管理进程磁盘io时,将使用blkio子系统。按照上面的方法,可以限制和监督进程磁盘io。你学会了吗?

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/770938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-02
下一篇 2022-05-02

发表评论

登录后才能评论

评论列表(0条)

保存