1. 程式人生 > >cgroup實現cpu綁定和資源使用比例限制

cgroup實現cpu綁定和資源使用比例限制

cgroup cpu.share cpuset

背景原理:部分物理服務器上部署了多個應用,為了避免由於部分應用異常造成機器負載過高,影響其他應用,對每個應用所屬進程進行cpu使用限制。

限制內容:A,綁定應用使用除0號cpu以外的其他cpu;B,設定cpu資源使用比例,當資源充足時候,可以使用超過預設比例的cpu資源,當資源緊張時候,按照比例使用cpu資源。

啟動腳本如下:

#!/bin/bash
source /etc/profile
#獲取cpu核心數量並減去1,保留cpu 0
cpuNumber=$(cat /proc/cpuinfo |grep processor|wc -l)
cgCpuNumber=$(expr $cpuNumber - 1)

#應用名稱
appName="test_tomcat"
#設置cgroup 中cpu 綁定
cgcreate -g cpuset:cpuset_${appName}
cgset -r cpuset.mems="0" cpuset_${appName}
cgset -r cpuset.cpus="1-${cgCpuNumber}" cpuset_${appName}
#設置cgroup資源使用比例
cgcreate -g cpu:cpu_share_${appName}
cgset -r cpu.shares=1024 cpu_share_${appName}
#啟動進程,該方式會限制該主進程,以及創建的子進程
cgexec -g cpuset:cpuset_${appName} -g cpu:cpu_share_${appName} su - tomcat -c "/data/tomcat01/bin/start.sh"


使用效果:使用後 8核心虛擬機,cpu load 增加到 50以上,ssh 操作無卡頓現象,其他正常應用未收到高負載影響。


參考文獻中提供壓測腳本,可以替換上面的tomcat:

http://www.jianshu.com/p/dc3140699e79


cgroup實現cpu綁定和資源使用比例限制