iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux中如何使用cgroups管理进程磁盘io
  • 132
分享到

Linux中如何使用cgroups管理进程磁盘io

2023-06-13 03:06:31 132人浏览 八月长安
摘要

这篇文章给大家分享的是有关linux中如何使用cgroups管理进程磁盘io的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。linux 的 cgroups 还可以限制和监控进程的磁盘 io。这个功能通过 blkio

这篇文章给大家分享的是有关linux中如何使用cgroups管理进程磁盘io的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

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 的。很明显地分成两类,其中带“throttle”的,顾名思义就是节流阀,将流量限制在某个值下。而“weight”就是分配 io 的权重。

“throttle”的那四个参数看名字就知道是做什么用的。拿 blkio.throttle.read_bps_device 来限制每秒能读取的字节数。先跑点 io 出来

代码如下:


dd if=/dev/sda of=/dev/null &


[1] 2750
用 iotop 看看目前的 io

代码如下:


 TID  PRIO  USER     DISK READ  DISK WRITE  SWapiN     IO>    COMMAND
2750 be/4 root       66.76 M/s    0.00 B/s  0.00 % 68.53 % dd if=/dev/sda of=/dev/null
...

然后修改一下资源限制,把进程加入控制组

代码如下:


echo '8:0   1048576' >/sys/fs/cgroup/blkio/foo/blkio.throttle.read_bps_device
echo 2750 >/sys/fs/cgroup/blkio/foo/tasks


这里的 8:0 就是对应块设备的主设备号和副设备号。可以通过 ls -l 设备文件名查看。如

代码如下:


# ls -l /dev/sda
brw-rw----. 1 root disk 8, 0 Oct 24 11:27 /dev/sda


这里的 8, 0 就是对应的设备号。所以,cgroups 可以对不同的设备做不同的限制。然后来看看效果

代码如下:


 TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
2750 be/4 root      989.17 K/s    0.00 B/s  0.00 % 96.22 % dd if=/dev/sda of=/dev/null
...


可见,进程的每秒读取立马就降到了 1MB 左右。要解除限制,写入如 “8:0 0” 到文件中即可

不过需要注意的是,这种方式对小于采样间隔里产生的大量 io 是没用的。比如,就算在 1s 内产生一个每秒写入 100M 的峰值,也不会因此被限制掉。

再看看 blkio.weight 。blkio 的 throttle 和 weight 方式和 cpu 子系统的 quota 和 shares 有点像,都是一种是绝对限制,另一种是相对限制,并且在不繁忙的时候可以充分利用资源,权重值的范围在 10 – 1000 之间。

测试权重方式要麻烦一点。因为不是绝对限制,所以会受到文件系统缓存的影响。如在虚拟机中测试,要关闭虚机如我用的 VirtualBox 在宿主机上的缓存。如要测试读 io 的效果,先生成两个几个 G 的大文件 /tmp/file_1,/tmp/file_2 ,可以用 dd 搞。然后设置两个权重

代码如下:


# echo 500 >/sys/fs/cgroup/blkio/foo/blkio.weight
# echo 100 >/sys/fs/cgroup/blkio/bar/blkio.weight


测试前清空文件系统缓存,以免干扰测试结果

代码如下:


sync
echo 3 >/proc/sys/vm/drop_caches


在这两个控制组中用 dd 产生 io 测试效果。

代码如下:


# cgexec -g "blkio:foo" dd if=/tmp/file_1 of=/dev/null &
[1] 1838
# cgexec -g "blkio:bar" dd if=/tmp/file_2 of=/dev/null &
[2] 1839

还是用 iotop 看看效果

代码如下:


 TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
1839 be/4 root       48.14 M/s    0.00 B/s  0.00 % 99.21 % dd if=/tmp/file_2 of=/dev/null
1838 be/4 root      223.59 M/s    0.00 B/s  0.00 % 16.44 % dd if=/tmp/file_1 of=/dev/null


 两个进程每秒读的字节数虽然会不断变动,但是大致趋势还是维持在 1:5 左右,和设定的 weight 比例一致。blkio.weight_device 是分设备的。写入时,前面再加上设备号即可。

blkio 子系统里还有很多统计项

blkio.time
各设备的 io 访问时间,单位毫秒

blkio.sectors
换入者或出各设备的扇区数

blkio.io_serviced
各设备中执行的各类型 io 操作数,分read、write、sync、async 和 total

blkio.io_service_bytes
各类型 io 换入者或出各设备的字节数

blkio.io_service_time
各设备中执行的各类型 io 时间,单位微秒

blkio.io_wait_time
各设备中各类型 io 在队列中的 等待时间

blkio.io_merged
各设备中各类型 io 请求合并的次数

blkio.io_queued
各设备中各类型 io 请求当前在队列中的数量

通过这些统计项更好地统计、监控进程的 io 情况


代码如下:

echo 1 >blkio.reset_stats


可以将所有统计项清零。

感谢各位的阅读!关于“Linux中如何使用cgroups管理进程磁盘io”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Linux中如何使用cgroups管理进程磁盘io

本文链接: https://www.lsjlt.com/news/264775.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux中如何使用cgroups管理进程磁盘io
    这篇文章给大家分享的是有关Linux中如何使用cgroups管理进程磁盘io的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。linux 的 cgroups 还可以限制和监控进程的磁盘 io。这个功能通过 blkio...
    99+
    2023-06-13
  • Linux磁盘如何管理
    这篇“Linux磁盘如何管理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux磁盘如何管理”文章吧。Linux磁盘管理...
    99+
    2023-06-30
  • 如何在LINUX中使用du磁盘管理命令
    这期内容当中小编将会给大家带来有关如何在LINUX中使用du磁盘管理命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。命令用途du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何...
    99+
    2023-06-13
  • Linux如何查找占用磁盘IO读写很高的进程方法
    这篇文章给大家分享的是有关Linux如何查找占用磁盘IO读写很高的进程方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通过 iostat -x 1 10 查看相关磁盘使用信息相关截图如下:1 ...
    99+
    2023-06-05
  • 如何使用Linux中mdadm命令管理RAID磁盘阵列
    这篇文章主要介绍“如何使用Linux中mdadm命令管理RAID磁盘阵列”,在日常操作中,相信很多人在如何使用Linux中mdadm命令管理RAID磁盘阵列问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使...
    99+
    2023-06-12
  • Linux系统下如何查看磁盘IO使用情况
    这篇文章主要为大家展示了Linux系统下如何查看磁盘IO使用情况,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“Linux系统下如何查看磁盘IO使用情况”这篇文章吧。1.iostat:1.1 命令格...
    99+
    2023-06-27
  • Linux中如何使用cgroups限制cpu
    这篇文章主要讲解了“Linux中如何使用cgroups限制cpu”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中如何使用cgroups限制cpu”吧!cgroups 里,可以用 c...
    99+
    2023-06-13
  • HDFS中DataNode磁盘如何管理
    这篇文章将为大家详细讲解有关HDFS中DataNode磁盘如何管理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在单一DataNode管理多个磁盘的情况下,执行普通写操作时的每个磁盘用量比较平均。但是,添...
    99+
    2023-06-02
  • Linux磁盘管理之LVM磁盘操作命令怎么使用
    这篇文章主要讲解了“Linux磁盘管理之LVM磁盘操作命令怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux磁盘管理之LVM磁盘操作命令怎么使用”吧!LVM,Logical V...
    99+
    2023-07-05
  • 如何日均线Linux磁盘管理命令du的使用
    这篇文章的内容主要围绕如何日均线Linux磁盘管理命令du的使用进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!如果想要查看电脑中目录或文件得大小或者...
    99+
    2023-06-28
  • 如何使用Pureftpd进行FTP权限和磁盘配额管理
    这篇文章主要讲解了“如何使用Pureftpd进行FTP权限和磁盘配额管理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Pureftpd进行FTP权限和磁盘配额管理”吧!Pureftp...
    99+
    2023-06-16
  • Linux磁盘管理中df命令详细介绍以及如何使用
    这篇文章给大家介绍Linux磁盘管理中df命令详细介绍以及如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.命令格式:du [选项][文件]2.命令功能:显示每个文件和目录的磁盘使用空间。3.命令参数...
    99+
    2023-06-13
  • 使用WinXP自己的磁盘管理进行硬盘分区
      有许多游戏玩家对经典的WinXP系统非常忠实,即使重新购买了一台超强配置的电脑,依然选择安装WinXP系统,因为WinXP对很多老游戏兼容性更强,游戏玩家也对硬盘的分配非常讲究,因为每一款好玩的游戏容量都是非常庞大,...
    99+
    2023-06-10
    WinXP 硬盘 分区 磁盘 管理 硬盘分区
  • Linux下如何使用cryptsetup对磁盘进行加密
    这篇文章主要介绍Linux下如何使用cryptsetup对磁盘进行加密,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!cryptsetup是linux下的一个分区加密工具,cryptsetup是分区级别的加密,比文件系...
    99+
    2023-06-27
  • 如何在ArchLinux中进行磁盘空间监控和管理
    在ArchLinux中,可以使用工具如df和du来监控和管理磁盘空间。 使用df命令来查看磁盘空间的使用情况。可以使用以下命令查看...
    99+
    2024-04-02
  • Linux如何使用Supervisor管理后台进程
    小编给大家分享一下Linux如何使用Supervisor管理后台进程,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 1.安装easy_install supe...
    99+
    2024-04-02
  • Mac电脑怎么使用NTFS磁盘管理器 NTFS磁盘详细使用教程
    Mac是可以识别NTFS硬盘的,但是macOS系统虽然能够正确识别NTFS硬盘,但只支持读取,不支持写入。换句话说,Mac不支持对NTFS硬盘进行编辑、创建、删除等写入操作,比如将Mac里的文件拖入NTFS硬盘,在NTFS硬盘里新建文件等等...
    99+
    2023-10-07
    macos
  • Linux查找占用磁盘IO读写很高的进程方法是什么
    这篇文章跟大家分析一下“Linux查找占用磁盘IO读写很高的进程方法是什么”。内容详细易懂,对“Linux查找占用磁盘IO读写很高的进程方法是什么”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编...
    99+
    2023-06-28
  • 如何理解Linux的磁盘和文件系统管理
    这篇文章主要介绍“如何理解Linux的磁盘和文件系统管理”,在日常操作中,相信很多人在如何理解Linux的磁盘和文件系统管理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Linux的磁盘和文件系统管理...
    99+
    2023-06-13
  • Linux中如何使用cgroups控制内存资源
    这篇文章将为大家详细讲解有关Linux中如何使用cgroups控制内存资源,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。cgroups 中有个 memory 子系统,用于限制和报告进程的内存使用情况。其中...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作