linux系统调优-Cgroups

一.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的两倍

200047_MmZU_1393804.png

应用场景:当服务器有一个大型的应用程序运行时,可以给其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


转载于:https://my.oschina.net/CentralD/blog/380924

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 优化 Linux 系统的方法有很多,以下是一些常见的技巧: 1. 清理系统垃圾文件,如 /tmp 和 /var/log 目录。 2. 缩小系统的进程,关闭不必要的服务和后台进程。 3. 优化系统内存使用,可以使用内存管理工具如 'sysctl' 或 'sysfs'。 4. 安装性能监控工具,如 'top' 和 'htop',以了解系统性能瓶颈。 5. 安装系统优化工具,如 'preload' 和 'ethtool'。 6. 更新系统内核以获得最新的性能优化。 7. 更新软件包并卸载不再使用的软件包。 8. 安装轻量级的桌面环境,如 'Xfce' 或 'LXDE'。 这只是一个简单的清单,每个系统都有不同的需求和优化方法,请根据实际情况进行优化. ### 回答2: 要优化Linux系统可以从以下几个方面入手: 1.内核优化:Linux系统的性能优化离不开对内核的优化。可以根据硬件配置调整内核参数,如修改文件系统缓冲区大小、网络缓冲区大小、提高进程调度优先级等。使用更适合硬件的内核版本,可以提升系统的性能和稳定性。 2.服务和进程管理:关闭不必要的系统服务和进程可以释放系统资源,并提高系统的响应速度。可以使用systemctl或service命令管理系统服务,并使用ps或top命令查看和终止不必要的进程。 3.内存管理:合理管理内存资源可以提高系统的运行效率。可以使用swap空间来提高系统的交换能力,避免物理内存不足导致系统性能下降。同时可以使用vm.swappiness参数调整内核的内存管理机制。 4.磁盘管理:优化磁盘性能可以提升系统的整体效能。可以使用文件系统的journaling和disk I/O调度算法来提高磁盘的读写性能。另外,定期清理无用的日志和临时文件,可以释放磁盘空间,并提高文件系统的性能。 5.网络优化:调整网络参数和使用更高效的协议可以提高系统的网络性能。可以通过修改TCP/IP协议栈参数,如调整TCP窗口大小、修改MTU等来增强系统对网络的响应能力。 6.安全配置:合理的安全配置是优化Linux系统的重要环节。限制不必要的开放网络端口、关闭不需要的服务、配置防火墙等措施可以提高系统的安全性和性能。 7.使用优化工具:Linux系统有许多优化工具可以帮助进行系统性能的调优,如sysstat、hdparm、iostat等。这些工具可以提供系统资源的详细信息和性能指标,并帮助找到系统优化的瓶颈。 综上所述,优化Linux系统需要综合考虑硬件配置、内核参数、服务进程管理、内存磁盘网络性能以及安全配置等因素。通过不断优化和调整可以提高系统的性能和稳定性,提升用户体验。 ### 回答3: 优化Linux系统是为了提高其性能和效率,让其更好地满足用户的需求。以下是一些方法可以优化Linux系统。 1.升级内核:使用最新的Linux内核版本可以提供更好的性能和稳定性,修复和改进已知的漏洞和问题。 2.优化启动过程:禁用不必要的启动服务和程序,可以加快系统的启动速度。可以使用开机管理器如systemd或SysVinit来控制启动过程。 3.优化文件系统:采用更高效的文件系统如ext4或Btrfs可以提高磁盘IO的效率,并使用noatime选项来减少对文件访问时间的记录。 4.优化磁盘空间:使用定期清理工具如BleachBit或Stacer来清理临时文件和不再需要的数据,释放磁盘空间。 5.优化内存管理:使用适当的内存分页和交换设置,以及减少不必要的内存使用,可以提高系统的性能。 6.限制资源使用:使用工具如cpulimit和cgroups来限制特定进程的CPU和内存使用,以避免系统资源被过度占用。 7.使用轻量级应用程序:选择适合的轻量级应用程序替代资源占用较高的程序,以提高系统的运行效率。 8.使用硬件加速:启用硬件加速可提供更快的图形处理和视频解码能力,提高系统的多媒体性能。 9.定期更新软件包:经常更新系统和应用程序的软件包以获取最新的功能和修复的bug,以确保系统的安全性和稳定性。 10.优化网络设置:调整网络参数如TCP窗口大小和队列长度,可以提高网络传输的效率和响应速度。 总之,优化Linux系统是一个综合性的过程,需要根据具体情况进行调整和优化,以提高系统的性能和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值