歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> CentOS 7 - 使用cgroups限制進程資源

CentOS 7 - 使用cgroups限制進程資源

日期:2017/2/28 14:24:15   编辑:Linux教程

cgroups簡介

控制組(cgroups)是一個Linux內核特性,它允許你指定內核應該如何給一個進程組分配特定的資源。你可以用cgroups指定在某一個組中的進程使用多少cpu時間、系統內存、網絡帶寬、或者這些資源的組合。

cgroups使用

# 下載一個可以模擬cpu高負載的工具,mathomatic是質數生成器,會加大處理器的負荷
wget http://mathomatic.orgserve.de/mathomatic-16.0.5.tar.bz2

tar xf mathomatic-16.0.5.tar.bz2
cd mathomatic-16.0.5/primes/
make && make install # 編譯安裝

# CentOS7系統需要安裝libcgroup-tools包,才有cgroup配置命令
yum install -y libcgroup-tools.x86_64

# 創建兩個不同cpu資源分配的組
cgcreate -g cpu:/large # 具體命令使用cgcreate -h
cgcreate -g cpu:/small

# cpu.shares是cpu控制的一個屬性,更多的屬性
# 可以到/sys/fs/cgroup/cpu目錄下查看,默認值是1024,值越大,能獲得更多的cpu時間
cgset -r cpu.shares=512 small

# cgexec啟動一個cgroup任務
matho-primes 0 999999999 > /dev/null & # 生成一個從0到999999999的質數列表
cgexec -g cpu:small /usr/local/bin/matho-primes 0 999999999 > /dev/null & # 後台運行

# 使用top命令查看發現cpu被100%占用,因為是一個單獨的進程,它使用盡可能多的cpu
# cgroups限制僅在兩個或多個以上進程競爭cpu資源時起作用
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6726 root 20 0 9208 2540 488 R 99.9 0.0 0:34.47 matho-primes

cgexec -g cpu:large /usr/local/bin/matho-primes 0 9999999999 > /dev/null
cgexec -g cpu:small /usr/local/bin/matho-primes 0 9999999999 > /dev/null
cgexec -g cpu:small /usr/local/bin/matho-primes 0 9999999999 > /dev/null
# 在small組中起兩個matho-primes進程,然後top觀察cpu時間
# small組兩個matho-primes進程差不多共享cpu,large組的進程得到更多的cpu時間

下次打算將cgroups應用到我們的計算存儲一體機上,用來限制glusterfs進程和nova-compute,避免存儲服務和計算服務搶占cpu等資源。

Copyright © Linux教程網 All Rights Reserved