位置: 编程技术 - 正文
推荐整理分享Linux中使用cgroups管理进程磁盘io介绍(linux中使用最多的命令),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:linux中使用最多的命令,linux中使用最多的命令,linux中使用bash是什么意思,linux中使用less命令分屏查看,linux中使用什么命令可以把两个文件合并,linux中使用less命令分屏查看,linux中使用什么命令可以把两个文件合并,linux中使用less命令分屏查看,内容如对您有帮助,希望把文章链接给更多的朋友!
linux 的 cgroups 还可以限制和监控进程的磁盘 io。这个功能通过 blkio 子系统实现。
blkio 子系统里东西很多。不过大部分都是只读的状态报告,可写的参数就只有下面这几个:复制代码代码如下:blkio.throttle.read_bps_deviceblkio.throttle.read_iops_deviceblkio.throttle.write_bps_deviceblkio.throttle.write_iops_deviceblkio.weightblkio.weight_device
这些都是用来控制进程的磁盘 io 的。很明显地分成两类,其中带“throttle”的,顾名思义就是节流阀,将流量限制在某个值下。而“weight”就是分配 io 的权重。
“throttle”的那四个参数看名字就知道是做什么用的。拿 blkio.throttle.read_bps_device 来限制每秒能读取的字节数。先跑点 io 出来复制代码代码如下:dd if=/dev/sda of=/dev/null &[1] 用 iotop 看看目前的 io复制代码代码如下: TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND be/4 root . M/s 0. B/s 0. % . % dd if=/dev/sda of=/dev/null...
然后修改一下资源限制,把进程加入控制组复制代码代码如下:echo '8:0 ' >/sys/fs/cgroup/blkio/foo/blkio.throttle.read_bps_deviceecho >/sys/fs/cgroup/blkio/foo/tasks这里的 8:0 就是对应块设备的主设备号和副设备号。可以通过 ls -l 设备文件名查看。如复制代码代码如下:# ls -l /dev/sdabrw-rw----. 1 root disk 8, 0 Oct : /dev/sda这里的 8, 0 就是对应的设备号。所以,cgroups 可以对不同的设备做不同的限制。然后来看看效果复制代码代码如下: TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND be/4 root . K/s 0. B/s 0. % . % dd if=/dev/sda of=/dev/null...
可见,进程的每秒读取立马就降到了 1MB 左右。要解除限制,写入如 “8:0 0” 到文件中即可
不过需要注意的是,这种方式对小于采样间隔里产生的大量 io 是没用的。比如,就算在 1s 内产生一个每秒写入 M 的峰值,也不会因此被限制掉。
再看看 blkio.weight 。blkio 的 throttle 和 weight 方式和 cpu 子系统的 quota 和 shares 有点像,都是一种是绝对限制,另一种是相对限制,并且在不繁忙的时候可以充分利用资源,权重值的范围在 – 之间。
测试权重方式要麻烦一点。因为不是绝对限制,所以会受到文件系统缓存的影响。如在虚拟机中测试,要关闭虚机如我用的 VirtualBox 在宿主机上的缓存。如要测试读 io 的效果,先生成两个几个 G 的大文件 /tmp/file_1,/tmp/file_2 ,可以用 dd 搞。然后设置两个权重复制代码代码如下:# echo >/sys/fs/cgroup/blkio/foo/blkio.weight# echo >/sys/fs/cgroup/blkio/bar/blkio.weight测试前清空文件系统缓存,以免干扰测试结果复制代码代码如下:syncecho 3 >/proc/sys/vm/drop_caches在这两个控制组中用 dd 产生 io 测试效果。复制代码代码如下:# cgexec -g "blkio:foo" dd if=/tmp/file_1 of=/dev/null &[1] # cgexec -g "blkio:bar" dd if=/tmp/file_2 of=/dev/null &[2]
还是用 iotop 看看效果复制代码代码如下: TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND be/4 root . M/s 0. B/s 0. % . % dd if=/tmp/file_2 of=/dev/null be/4 root . M/s 0. B/s 0. % . % 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 和 totalblkio.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系统安全:系统优化及安全配置详细介绍 作为一个系统管理员,下面我们聊一下基于服务器应用的Linux,由于个人电脑上使用Linux也许不是像服务器上一样,优先追求安全和稳定,因此个人电脑
Linux Ldd命令介绍及使用方法 LinuxLdd参数说明:--version打印ldd的版本号-v--verbose打印所有信息,例如包括符号的版本信息-d--data-relocs执行符号重部署,并报告缺少的目标对象(只对ELF
linux怎么删除文件夹?Linux删除文件夹命令 linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm-rf命令即可。直接rm就可以了,不过要加两个参数
标签: linux中使用最多的命令
本文链接地址:https://www.jiuchutong.com/biancheng/357049.html 转载请保留说明!友情链接: 武汉网站建设