我们都知道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。你学会了吗?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)