linux 内核级资源查看,Linux资源管理

前一篇博客介绍了利用 cgroup 来控制进程的 CPU和内存使用情况, 这次补上使用 cgroup 来控制进程的IO优先级的方法.

前提条件

如果想控制进程的IO优先级, 需要内核的支持, 内核编译时需要打开下面2个参数.

CONFIG_BLK_CGROUP=y

CONFIG_CFQ_GROUP_IOSCHED=y

查看是否开启这2个内核编译选项的方法很简单:

root@debian-113:~# grep -i 'blk_cgroup' /boot/config-`uname -r`

root@debian-113:~# grep -i 'cfq_group' /boot/config-`uname -r`

如果这2个内核选项没有打开, 只能重新编译内核后再来实验下面的实例了.

再次通过 /proc/cgroups 来查看 blkio 是否已经启用.

root@debian-113:~# cat /proc/cgroups

#subsys_name hierarchy num_cgroups enabled

cpuset0 1 1cpu0 1 1cpuacct0 1 1memory0 1 1devices0 1 1freezer0 1 1net_cls0 1 1blkio0 1 1

perf_event0 1 1

如果 blkio 没有启用, 可以通过grub设置启动参数来启用它.

类似的可以参考: Linux资源控制-CPU和内存  中 实例4 - cgroup 对使用的内存的控制 中启用memory的方法。

除此之外, 还得查看是否能够将 CFQ 作为IO调度程序来使用.

root@debian-113:~# cat /sys/class/block/sda/queue/scheduler

noop deadline [cfq]

上述结果表示支持cfq调度, []括住cfq 表示当前使用的就是 cfq调度.

如果 cat 的结果中没有 cfq, 需要重新编译内核, 使之能够支持 cfq调度.

如果 cat 的结果中有 cfq, 但是 cfq 不是当前正在使用的调度程序, 即 [] 没有括在 cfq上, 那么

cat cfq /sys/class/block/sda/queue/scheduler

注: 上面的 sda 是我的测试的硬盘, 如果你的是 sdb 或者其它, 请对应修改.

实例 - 控制IO优先级

挂载 cgroup文件系统, 挂载参数 -o blkio

建立2个group, 分别为 A 和 B

默认情况, 2个 group中的dd进程同时进行文件操作

查看默认情况下, 2个dd进程完成的时间

设置 A 的优先级为 100, B 的优先级为 1000

同时在2个group A 和 B 中运行 dd进程

查看group A 和 B 中的 dd进程完成的时间

实验之前, 先制作测试脚本. (简单写了一个如下)

#!/bin/bash

####################################################################

#1. 创造2个测试文件, 大小都是1G

#2. 将当前进程加入到指定 cgroup

#3. 执行 dd操作

#4. 删除 测试文件

#5. 显示log

####################################################################functionusage()

{echo "./blkio-test.sh "exit1}if [ $# != 2 ]; thenusagefigroup1_src=~/group1.src

group2_src=~/group2.src

group1_log=/tmp/group1.log

group2_log=/tmp/group2.log

group1=$1group2=$2

echo "生成测试数据 $group1_src 和 $group2_src (大小都是1G)"

dd if=/dev/zero of=$group1_src count=1024 bs=1Mdd if=/dev/zero of=$group2_src count=1024 bs=1Mecho "同时在 $group1 和 $group2 中开始 dd 测试"

echo 3 > /proc/sys/vm/drop_cachesecho $$ >> $group1/tasks

(date; dd if=$group1_src of=/dev/null; date;) > $group1_log 2>&1 &

echo $$ >> $group2/tasks

(date; dd if=$group2_src of=/dev/null; date;) > $group2_log 2>&1 &

wait

echo "测试完成!"

echo "开始清除测试文件"

rm -rf $group1_src $group2_srcecho "测试文件清除完成"

echo "------------------------------------------"

echo "显示group1 的log"

cat$group1_logecho "------------------------------------------"

echo "显示group2 的log"

cat$group2_logecho "------------------------------------------"

开始实验:

# 挂载 cgroup 文件系统

root@debian-113:~# mount -t cgroup -o blkio cgroup /mnt/cgroup/root@debian-113:~# mkdir /mnt/cgroup/{A,B}

root@debian-113:~# ll /mnt/cgroup/total0drwxr-xr-x 2 root root 0 Sep 5 13:23A

drwxr-xr-x 2 root root 0 Sep 5 13:23B-r--r--r-- 1 root root 0 Sep 5 13:23blkio.io_merged-r--r--r-- 1 root root 0 Sep 5 13:23blkio.io_queued-r--r--r-- 1 root root 0 Sep 5 13:23blkio.io_service_bytes-r--r--r-- 1 root root 0 Sep 5 13:23blkio.io_serviced-r--r--r-- 1 root root 0 Sep 5 13:23blkio.io_service_time-r--r--r-- 1 root root 0 Sep 5 13:23blkio.io_wait_time--w------- 1 root root 0 Sep 5 13:23blkio.reset_stats-r--r--r-- 1 root root 0 Sep 5 13:23blkio.sectors-r--r--r-- 1 root root 0 Sep 5 13:23 blkio.time

-rw-r--r-- 1 root root 0 Sep 5 13:23 blkio.weight

# 默认2个组内的IO优先级都是500

root@debian-113:~# cat /mnt/cgroup/A/blkio.weight500

root@debian-113:~# cat /mnt/cgroup/B/blkio.weight500# 默认情况下的测试结果如下: A和B耗时都是 20秒

root@debian-113:~# ./blkio-test.sh /mnt/cgroup/A /mnt/cgroup/B

生成测试数据/root/group1.src 和 /root/group2.src (大小都是1G)1024+0 records in

1024+0records out1073741824 bytes (1.1 GB) copied, 6.01188 s, 179 MB/s1024+0 records in

1024+0records out1073741824 bytes (1.1 GB) copied, 9.4272 s, 114 MB/s

同时在/mnt/cgroup/A 和 /mnt/cgroup/B 中开始 dd测试

测试完成!开始清除测试文件

测试文件清除完成------------------------------------------显示group1 的log

Fri Sep5 13:26:31 CST 2014

2097152+0 records in

2097152+0records out1073741824 bytes (1.1 GB) copied, 20.0504 s, 53.6 MB/s

Fri Sep5 13:26:51 CST 2014

------------------------------------------显示group2 的log

Fri Sep5 13:26:31 CST 2014

2097152+0 records in

2097152+0records out1073741824 bytes (1.1 GB) copied, 18.8583 s, 56.9 MB/s

Fri Sep5 13:26:51 CST 2014

------------------------------------------# 修改A的优先级为100, B的优先级为1000

root@debian-113:~# echo 100 > /mnt/cgroup/A/blkio.weight

root@debian-113:~# echo 1000 > /mnt/cgroup/B/blkio.weight

root@debian-113:~# cat /mnt/cgroup/A/blkio.weight100root@debian-113:~# cat /mnt/cgroup/B/blkio.weight1000# 不同优先级下的测试结果如下: A耗时 19秒; B耗时 11秒

root@debian-113:~# ./blkio-test.sh /mnt/cgroup/A /mnt/cgroup/B

生成测试数据/root/group1.src 和 /root/group2.src (大小都是1G)1024+0 records in

1024+0records out1073741824 bytes (1.1 GB) copied, 6.52967 s, 164 MB/s1024+0 records in

1024+0records out1073741824 bytes (1.1 GB) copied, 8.01311 s, 134 MB/s

同时在/mnt/cgroup/A 和 /mnt/cgroup/B 中开始 dd测试

测试完成!开始清除测试文件

测试文件清除完成------------------------------------------显示group1 的log

Fri Sep5 13:30:06 CST 2014

2097152+0 records in

2097152+0records out1073741824 bytes (1.1 GB) copied, 18.5598 s, 57.9 MB/s

Fri Sep5 13:30:25 CST 2014

------------------------------------------显示group2 的log

Fri Sep5 13:30:06 CST 2014

2097152+0 records in

2097152+0records out1073741824 bytes (1.1 GB) copied, 10.6127 s, 101 MB/s

Fri Sep5 13:30:17 CST 2014

------------------------------------------

可以看出, IO优先级调整之后, 确实优先级高的cgroup中的进程能更快完成IO操作.

总结

其实 cgroup 除了能够IO优先级之外, 还可以控制进程的其它IO属性, 具体参见挂载在 cgroup 的IO相关设置文件.

各个文件的具体含义, 请参考更详细的 cgroup 相关文档.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux cpu uuid 查看,Linux下查看UUID方法介绍

Linux下查看UUID方法介绍。1. sudo blkid/dev/sda1: UUID”9ADAAB4DDAAB250B” TYPE”ntfs”/dev/sdb1: UUID”B2FCDCFBFCDCBAB5″ TYPE”ntfs”/dev/sdb5: UUID”46FC5C74FC5C5FEB” TYPE”ntfs”/dev/sdb6: TYPE”swap” UUID”2cec6109-5bcf-45a3-ba1b-978b041c037f”/dev/s…

linux 自定义vi dd,Vim常用命令及配置方案

几句话很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新手不是很友好。我也就简单看了下基本操作就上手了,但又不是长期在vim下工作,这就导致了每一次重新使用vim都要再去回温下基本操作,很是难受,所…

linux指纹登录实现原理,指纹识别技术原理与基于Linux系统的指纹识别门禁系统设计...

指纹作为人体的身体特征,具有唯一性、稳定性和不易盗用等特点。随着指纹识别理论逐渐成熟、指纹采集工具这一难题得到解决,指纹识别已经成为目前最广泛应用的生物识别之一,逐渐取代了传统的认证识别方式,广泛应用于金融、公安、证…

linux 搜索命令 历史,Linux 控制台神器:搜索历史命令 Ctrl + R ( ctrl + r to search the history command )...

Linux 控制台神器:搜索历史命令 Ctrl R ( ctrl r to search the history command )2013-01-29 15:30访问量: 23761分类:技术Linux下的神器 ctrl r (reverse-i-search ) 的使用方法: (reverse-i-search usage: )(press ctl r ) 输入任意…

linux 有名管道pipe,linux 用無名管道pipe和有名管道fifo實現線程間通信

1.pipe用與實現同一個進程下不同線程間的通信(跟IPC進程間通信中的具有血緣關系的進程通信實現方式一樣)#include #include #include #include #include using namespace std;void *func(void * fd){char str[] "this is write thread!\n";write( *(int*)fd, str, s…

linux apache 跨域,解决nginx/apache静态资源跨域访问问题详解

1. apache静态资源跨域访问找到apache配置文件httpd.conf找到这行#LoadModule headers_module modules/mod_headers.so把#注释符去掉LoadModule headers_module modules/mod_headers.so目的是开启apache头信息自定义模块在独立主机配置文件中新增headerHeader set Access-Contr…

linux wps历史版本下载,WPS Office 2019 For Linux 11.1.0.9604版携新更新发布下载

WPS Office 2019 For Linux 11.1.0.9604版本发布了,仅支持64位计算机,提供Deb和Rpm格式软件包下载。更新详情1、WPS公共:优化界面绘制相关api的调用效率。适配ibus和fcitx框架的输入法,解决无法输入中文,预输入显示等问…

Linux双独立显卡SLI,玩点新奇的 双显卡给你不同的“SLI”效果

显卡老是千篇一律的常规测试对于我们这些测试人员来说早就已经没有什么意思了,无非就是跑分,超频后跑分,拷机等等一些测试项目,常看我们测试的玩家应该也知道同芯片显卡除非是频率的差别非常大才会有较为明显的性能差距体现出来&a…

三个等价c语言表达式,C语言习题综合(20页)-原创力文档

第二章练习题—.选择题1. 以下选项中正确的实型常量2A 0 B 3. 1415 C 0.32910 D .8712.不合法的用户标识符A _123 B printf C A $ D Dim1.表达式3.51/2的计算结果是___2.对数学表达式 ,写出三个等价的c语言表达式_____}第三章 练习题一.选择题1.若a ,b,c都是int型变…

DSP C2000汇编语言,DSPC2000汇编指令

值。XT寄存器的低16位部分是TL寄存器。该寄存器能装载一个16位有符号数,能自动对该数进行符号扩展,然后将其送人32位XT寄存器。XT寄存器的高16位部分是T寄存器。该寄存器主要用来存储16位乘法操作之前的16位整数值。T寄存器也可以为一些移位操作设定移位…

c语言编程算法精选,c语言经典程序算法【DOC精选】.doc

c语言经典程序算法【DOC精选】c语言经典程序算法浏览次数:47017次悬赏分:15 | 解决时间:2007-9-14 10:02 | 提问者:liyufei05j3最佳答案经典C源程序100例【程序1】题目:有1、2、3、4个数字,能组成多少个互不…

android win10 驱动安装失败,解决在win10系统下小米手机驱动安装失败的具体步骤...

随着系统的升级越来越快,对于许多用户的系统都已经升级到win10系统了,win10系统在给用户带来方便的同时,有时候也会遇到一些小麻烦,比如说对于最新的Window10正式版系统而言,基本主流的手机驱动都能自动检测安装。不过…

z3735f android x86,英特尔的Atom Z3735F分析 全文总结_台电 X80HD_平板电脑评测-中关村在线...

硬件配置:英特尔64位提供性能保证台电X80HD双系统使用Intel Atom Z3735F四核处理器,最高睿频可达1.83GHz,其采用64位X86架构,搭载最新一代睿频加速技术,并拥有四核四线程,支持多任务同时处理。英特尔的Atom…

浏览器 android x86,360浏览器x86版下载

360浏览器x86版下载,是专门针对现在越来越多的win10和安卓双系统的国产平板电脑使用的安卓版app,例如台电平板,适用机型 适用于联想K800、联想K900、MOTO MT788、MOTO XT890、Acer联想平板等,只要安装了x86版本就可以愉快的玩耍啦,你还不赶快…

js百度地图android定位不准,百度地图js定位不准

浏览器H5定位即navigator.geolocation,通过IP或者域名的形式,如:http://172.21.3.82:8080 和http://b.cunzhang.com进行访问时,调用navigator.geolocation.getCurrentPosition,打开控制台,你会发现有以下错…

Android在线更新安装包,Android在线更新下载方案

目的App的在线更新是每一个项目必有的功能,但在过程当中会遇到一些问题,在此记录下心得。步骤1、将最新版本号和本地版本号进行对比;2、如需更新,则弹出更新提示对话框;3、下载更新APK文件,并显示进度条和通…

c汇编语言例题,汇编语言例题分析.doc

汇编语言例题分析汇编语言例题分析《汇编语言程序设计》练习题作者名:不详 来源:网友提供 06年6月8日一、基本概念1、8088/8086CPU内部寄存器有______个 ,其中的______是通用寄存器,______是基址和变址寄存器,______是段寄存器&a…

api网关 android,如何通过Android上的retrofit2使用Cognito Credentials调用API网关?

我在我的Android应用程序中使用retrofit2进行任何http / rest调用.现在我需要调用Amazon AWS API Gateway生成的api.AWS文档say我应该生成客户端代码抛出API网关控制台并使用类ApiClientFactory来构建请求:ApiClientFactory factory new ApiClientFactory();// Use…

android测光代码,常用测光表软件:Android篇

《常用测光表软件:Android篇》由会员分享,可在线阅读,更多相关《常用测光表软件:Android篇(5页珍藏版)》请在人人文库网上搜索。1、常用测光表软件:Android篇 在Android系统中也有经典的测光表软件。Light Meter测光表…

android怎么换小米系统更新,miui8怎么更新 miui8更新升级方法汇总

小米miui8系统已经开始测试,相信你的小米手机已准备好迎接新系统的到来,下文介绍小米miui8更新方法大全,一起小编一起了解下吧!小米miui8刷机方法大全:一、系统推送OTA升级OTA推送升级MIUI8(需连接Wifi进行)根据微博上…