Cgroups
cgroups是control groups的縮寫,是Linux內核提供的一種可以限制, 記錄, 隔離進程組(process groups)所使用的物理資源(如:cpu,memory,IO 等等)的機制。
Jstorm 使用 Cgroups
在Jstorm中,我們使用cgroup進行cpu硬件資源的管理。使用前,需要做如下檢查和配置。
檢查/etc/passwd 文件中當前用戶的uid和gid, 假設當前用戶是admin, 則看/etc/passwd文件中admin的uid和gid是多少
cgroup功能在當前系統的內核版本是否支持
檢查/etc/cgconfig.conf是否存在。如果不存在, 請“yum install libcgroup”,如果存在,設置cpu子系統的掛載目錄位置, 以及修改該配置文件中相應的uid/gid爲啓動jstorm用戶的uid/gid, 本例子中以500爲例, 注意是根據第一步來進行設置的。
mount { cpu = /cgroup/cpu; } group jstorm { perm { task { uid = 500; gid = 500; } admin { uid = 500; gid = 500; } } cpu { } }
然後啓動cgroup服務
service cgconfig restart chkconfig --level 23456 cgconfig on Note: cgconfig.conf只能在root模式下修改。 或者直接執行命令
cgconfig.conf配置文件例子。
比如jstorm的啓動用戶爲admin,admin在當前 系統的uid/gid爲500(查看/etc/passwd 可以查看到uid和gid),那麼相對應cpu子系統的jstorm目錄uid/gid也需要設置爲相同的值。 以便jstorm有相應權限可以在這個目錄下爲jstorm的每個需要進行資源隔離的進程創建對應 的目錄和進行相關設置。
```
mkdir /cgroup/cpu
mount -t cgroup -o cpu none /cgroup/cpu
mkdir /cgroup/cpu/jstorm
chown admin:admin /cgroup/cpu/jstorm
```
在jstorm配置文件中打開cgroup, 配置storm.yaml
supervisor.enable.cgroup: true