一.cgconfig 设计限制策略

Cgroups这个是被cgconfig服务所控制的。如果此服务没有启动,在根目录下的cgroup文件夹里就不会存在内容。

1.安装cgroup

yum install libcgroup

2.# /etc/init.d/cgconfig status  查看cgroup的状态,如果没有启动,则不会有/cgroup目录

3.# /etc/init.d/cgconfig start

4.vim /etc/cgconfig.conf  可以修改cgroup的配置文件,将cpu与memory的信息合并。

mount {

cpuset  = /cgroup/cpuset;

#       cpu     = /cgroup/cpu;

cpuacct = /cgroup/cpuacct;

#       memory  = /cgroup/memory;

cpu     = /cgroup/cpumem;

memory  = /cgroup/cpumem;

devices = /cgroup/devices;

freezer = /cgroup/freezer;

net_cls = /cgroup/net_cls;

blkio   = /cgroup/blkio;

5.# /etc/init.d/cgconfig restart      重新启动cgroup,可以在/cgroup/目录下发现cpumem目录文件,原来的cpu,memory目录失效,里面无内容。

注意:重启cgconfig时需退出cgroup目录再重启

cgred 将需要限制的程序应用到cgroup中

6.# lssubsys -m  查看当前系统已挂载的子系统

cpuset /cgroup/cpuset

cpu /cgroup/cpu

cpuacct /cgroup/cpuacct

memory /cgroup/memory

devices /cgroup/devices

freezer /cgroup/freezer

net_cls /cgroup/net_cls

blkio /cgroup/blkio

二.cpu管理

1.#vim /etc/cgconfig.conf

在配置文件中追加两个组

group lesscpu{     #占用cpu较小的组

cpu{

}

}

group morecpu{   #占用cpu较多的组

cpu{

}

}

2.#/etc/init.d/cgconfig restart 重新启动配置文件

3.#cd /cgroup/cpu/

ls

可以看到多出两个目录文件 lesscpu,morecpu。

lesscpu,morecpu目录文件中的内容与父cpu目录中的内容完全一样。

4.# cat /cgroup/cpu/cpu.shares  查看cpu父亲目录cpu.shares的大小为1024

1024

5.#vim /etc/cgconfig.conf

group lesscpu{

cpu{

cpu.shares=100;  根据父cpu的cpu.shares来设定,当发生资源抢占时,有大约1/10的抢占几率

}

}

group morecpu{

cpu{

cpu.shares=200; 有大约2/10的抢占几率

}

6.#/etc/init.d/cgconfig restart 重新启动配置文件

7.#cat /cgroup/cpu/lesscpu/cpu.shares

100

可以看到lesscpu的cpu.share已经发生改变

8.如果有多个个cpu在运行,可以关闭掉一定数目的cpu

(1)查看cpu运行状况

#lscpu

Architecture:          x86_64

CPU op-mode(s):        32-bit, 64-bit

Byte Order:            Little Endian

CPU(s):                4

On-line CPU(s) list:   0-3  可以看到在线活跃的cpu号为0到3

(2)]# cat /sys/devices/system/cpu/cpu1/online  查看cpu1的在线状况为1

1

注:cpu0默认不能关闭

(3)# echo 0 >> /sys/devices/system/cpu/cpu1/online

(4)# lscpu

Architecture:          x86_64

CPU op-mode(s):        32-bit, 64-bit

Byte Order:            Little Endian

CPU(s):                4

On-line CPU(s) list:   0,2,3

Off-line CPU(s) list:  1  可以看到已经成功关闭cpu1

9.使用cpu进行控制进程运行

(1)]# cgexec -g cpu:lesscpu time dd if=/dev/zero of=/dev/null bs=1M count=200000

200000+0 records in

200000+0 records out

209715200000 bytes (210 GB) copied, 19.2698 s, 10.9 GB/s

0.01user 9.60system 0:19.27elapsed 49%CPU (0avgtext+0avgdata 7600maxresident)k

0inputs+0outputs (0major+516minor)pagefaults 0swaps

(2)# cgexec -g cpu:morecpu time dd if=/dev/zero of=/dev/null bs=1M count=200000

200000+0 records in

200000+0 records out

209715200000 bytes (210 GB) copied, 14.4771 s, 14.5 GB/s

0.01user 9.61system 0:14.47elapsed 66%CPU (0avgtext+0avgdata 7600maxresident)k

0inputs+0outputs (0major+518minor)pagefaults 0swaps

如图,可以看到使用morecpu策略的进程消耗的资源是lesscpu的两倍

应用场景:当服务器有一个大型的应用程序运行时,可以给其900的cpu资源,当没有其它进程与它竞争时,它可以满负载运行,当有资源竞争时,给它大约90%cpu资源使用率,避免机器的卡死。

三.memory管理

1.使用系统自带的tmpfs文件系统,

(1)创建临时目录

# mkdir /mnt/tmpfs/

(2)将tmpfs文件系统挂载在/mnt/tmpfs/目录下

# mount -t tmpfs none /mnt/tmpfs/

(3)查看挂载情况

# df

Filesystem                   1K-blocks    Used Available Use% Mounted on

/dev/mapper/VolGroup-lv_root   6926264 1360608   5213812  21% /

tmpfs                           251136       0    251136   0% /dev/shm

/dev/sda1                       495844   33463    436781   8% /boot

none                            251136       0    251136   0% /mnt/tmpfs

挂载的内存盘大小实际是系统剩余的内存大小,现在往/mnt/tmpfs里面写东西实际是往内存中写入

2.添加内存管理信息

# vim /etc/cgconfig.conf

group poormem{

memory{

memory.limit_in_bytes=134217728;

}

}

3.# /etc/init.d/cgconfig restart

4.cd /mnt/tmpfs

(1)

<1>[root@desktop113 tmpfs]# cgexec -g memory:poormem dd if=/dev/zero of=test bs=1M count=100

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 0.0327344 s, 3.2 GB/s

<2>[root@desktop113 tmpfs]# free

total       used       free     shared    buffers     cached

Mem:        502272     273880     228392          0       8712     154364

-/+ buffers/cache:     110804     391468

Swap:       835576          0     835576

由于前面限制的内存大小是100M,所以内存够用,没有使用到交换分区

(2)

<1>[root@desktop113 tmpfs]# cgexec -g memory:poormem dd if=/dev/zero of=test bs=1M count=1000

dd: writing `test': No space left on device

246+0 records in

245+0 records out

257163264 bytes (257 MB) copied, 0.736284 s, 349 MB/s

<2>[root@desktop113 tmpfs]# free

total       used       free     shared    buffers     cached

Mem:        502272     302036     200236          0       8712     118248

-/+ buffers/cache:     175076     327196

Swap:       835576     184856     650720

当往内存中写入1G的数据时可以看到虽然内存只使用了限制的大小,但是交换分区swap被使用了

5.继续进行限制,不允许使用交换分区大小

(1)# vim /etc/cgconfig.conf

group poormem{

memory{

memory.limit_in_bytes=134217728;

memory.memsw.limit_in_bytes=134217728;   物理内存加交换分区大小

}

(2)# /etc/init.d/cgconfig restart

注意:必须退出cgroup目录再进行重启,不然会有报错的

(3)[root@desktop113 tmpfs]# cgexec -g memory:poormem dd if=/dev/zero of=test bs=1M count=100

100+0 records in

100+0 records out

104857600 bytes (105 MB) copied, 0.032748 s, 3.2 GB/s

当写入100M的数据时,是在系统限制内的,所以可以顺利执行

(4)[root@desktop113 tmpfs]# cgexec -g memory:poormem dd if=/dev/zero of=test bs=1M count=1000

Killed

当写入1G的数据时,进程是被拒绝的

(5)实验完毕后,可以卸载掉tmpfs

# umount /mnt/tmpfs/

四.freezer冷冻进程管理

1.# vim /etc/cgconfig.conf

group stopit{

freezer{

}

}

# /etc/init.d/cgconfig restart

2.ps ax

1480 pts/0    S+     0:00 top

3.将top添加到freezer的任务列表里

# echo 1480 > /cgroup/freezer/stopit/tasks

4.冷冻top进程

# echo FROZEN > /cgroup/freezer/stopit/freezer.state

进行刷新操作top命令无反应

5.解冻top进程

# echo THAWED > /cgroup/freezer/stopit/freezer.state

linux上cgconfig服务,linux系统调优-Cgroups相关推荐

  1. linux @webserviceclient 访问超时_Linux系统调优

    linux系统linux系统安装完毕后,首先要做的就是系统调优,这样会提高系统的使用效率,接下来为大家介绍一下linux系统调优方法.linuxlinux系统安装完毕后,首先要做的就是系统调优,这样会 ...

  2. 关于 Linux中系统调优的一些笔记

    写在前面 推送的的邮件里看到有大佬讲的公共课,听了之后这里整理学习笔记. 因为是公开课,所以讲的很浅,没接触过,这里做为了解,长长见识. 博文内容包括 系统调优原理概述 如何检测系统的性能瓶颈 如何进 ...

  3. Linux云计算架构-系统调优【CPU、IO、网络、内核参数调优】

    文章目录 Linux云计算架构-系统调优[CPU.IO.网络.内核参数调优] 1. CPU调优 2. IO调优 3. 网络调优 3.1 网络冗余(主备模式) 3.2 负载均衡模式 4. 内核参数调优 ...

  4. 51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)

    51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程 第一课 Linux运维经验分享与思路 1.一般把主机名,写到hosts下    127.0.0.1    hostname,因为 ...

  5. Linux系统调优详解(十二)——IO调优之磁盘测速

    今天继续给大家介绍Linux运维相关知识,本文主要内容是IO调优,测试对磁盘的速度. 在进行Linux系统调优的时候,我们需要对当前系统的硬盘读写速度进行测试.此时,我们可以选择使用hdparm命令或 ...

  6. linux内核 cpu io等待,linux系统调优之IO、cpu

    首先先要再次强调一个概念:系统调优的目的不是怎样去吧那一部分做的特别优化.而是整体的全局的考虑.性能优化是为了找到系统的瓶颈并且想办法提高瓶颈最好能够去除.(个人认为万事皆有利弊,在计算机的世界里同样 ...

  7. Linux 系统调优相关工具

    内容: 11.1 系统调优概述 11.2 查看 CPU 负载相关工具,找出系统中使用 CPU 最多的进程 11.3 查看 Memory 运行状态相关工具,找出系统中使用内存最多的进程 11.4 查看 ...

  8. linux企业级应用实战运维和调优资源,Linux企业级应用实战、运维和调优

    部分 Linux实用生产技能 章 生产常用基础技能 2 1.1 Hostname & Network 3 1.1.1 基础知识 3 1.1.2 Network指令 3 1.1.3 配置以太网静 ...

  9. Elasticsearch官档翻译——2 2 在Linux上启动服务

    #在Linux上启动服务 为了在Linux上启动ES服务,官方提供的包尽可能让你在升级或重启集群的时候轻松地启停集群. 目前我们有构建debian和rpm两种安装包,都可以在下载页获取.包本身没有依赖 ...

最新文章

  1. 从镜像安装vs2010MSDN,错误“您没有权限修改为帮助内容存储区指定的位子下的内容......
  2. shell 做加法运算_C语言探索之旅 | 第一部分第七课:运算那点事
  3. Realtime Ray Tracing RenderMan Point Cloud
  4. 字符串反转python_Python实现字符串反转的几种方法
  5. Python中sorted()函数的高级用法详解
  6. 安全基础知识 最强0到33600端口详解(5)
  7. Elasticsearch】 es Match Query
  8. 年轻人选择创业时,最好避开门槛低的行业
  9. 《郝斌C语言自学教程》课程大纲
  10. TreeSet 和 TreeMap 排序
  11. Jquery实现城市选择(省市联动)
  12. 『前端面试资料』 前端面试考题汇总 摘自校内某内推群群公告
  13. VR全景展示是如何实现的?怎么宣传品牌?
  14. 高级计算机应用a,A东师计算机应用基础15春在线作业.doc
  15. java日期格式化为json字符串,看这个就够了
  16. 用python来做一个五子棋游戏,源码分享~
  17. 如何解决word文档报错打不开呢?
  18. 循环卷积与线性卷积的实现matlab,线性卷积与循环卷积的计算
  19. 七日年化利率是怎么计算的?
  20. 基于thinkphp5开发的微信线上答题

热门文章

  1. 计算机不学c语言的专业,关于高职计算机类专业学生学不好C语言的思考
  2. 鸿蒙系统手机一览表,四款华为鸿蒙系统手机推荐,后续可直接升级鸿蒙2.0
  3. Linux 系统 网卡RTL8723BE 信号差不稳定的解决办法
  4. 第十三届蓝桥杯大赛软件组省赛 Python大学A组 个人题解
  5. 用户控制 键盘鼠标自定义 脚本
  6. 玩客云刷入armbian系统总结
  7. 周报|吉吉拍APP正式上架应用宝
  8. 参考线--深入了解字体
  9. 《Python 3网络爬虫开发实战 》崔庆才著 第三章笔记
  10. 唯品会密码JS解密与python模拟登录