CentOS 7
Sponsored Link

Cgroups : インストール
2017/08/30
 
Linux カーネル搭載のコントロールグループ (Cgroups) を利用することにより、特定のリソースの利用制限やモニタリング、隔離等が可能となります。
[1] コントロールグループを利用するためのパッケージをインストールして起動します。
[root@dlp ~]#
yum -y install libcgroup libcgroup-tools
[root@dlp ~]#
systemctl start cgconfig

[root@dlp ~]#
systemctl enable cgconfig
[2] Systemd が コントロールグループを利用している関係で libcgroup パッケージはデフォルトでもインストールされ存在していますが、[/sys/fs/cgroup] 配下には以下のようにサブシステム毎にリソースコントローラーが自動マウントされています。 コントロールグループでのサブシステムとは、CPU やメモリーなどの単一のリソースを表します。
[root@dlp ~]#
ll /sys/fs/cgroup

total 0
drwxr-xr-x. 2 root root  0 Aug 30 09:23 blkio
lrwxrwxrwx. 1 root root 11 Aug 30 09:23 cpu -> cpu,cpuacct
lrwxrwxrwx. 1 root root 11 Aug 30 09:23 cpuacct -> cpu,cpuacct
drwxr-xr-x. 2 root root  0 Aug 30 09:23 cpu,cpuacct
drwxr-xr-x. 2 root root  0 Aug 30 09:23 cpuset
drwxr-xr-x. 4 root root  0 Aug 30 09:23 devices
drwxr-xr-x. 2 root root  0 Aug 30 09:23 freezer
drwxr-xr-x. 2 root root  0 Aug 30 09:23 hugetlb
drwxr-xr-x. 2 root root  0 Aug 30 09:23 memory
lrwxrwxrwx. 1 root root 16 Aug 30 09:23 net_cls -> net_cls,net_prio
drwxr-xr-x. 2 root root  0 Aug 30 09:23 net_cls,net_prio
lrwxrwxrwx. 1 root root 16 Aug 30 09:23 net_prio -> net_cls,net_prio
drwxr-xr-x. 2 root root  0 Aug 30 09:23 perf_event
drwxr-xr-x. 2 root root  0 Aug 30 09:23 pids
drwxr-xr-x. 4 root root  0 Aug 30 09:23 systemd
blkio ブロックデバイスの入出力アクセスの制限を設定
cpu CPU へのアクセスの制限を設定
cpuacct CPU リソースについての自動レポートを生成
cpuset CPU のコア単位 および メモリーノードをコントロールグループ内のタスクに割り当てる
devices デバイスへのアクセスを許可/拒否
freezer コントロールグループ内のタスクの一時停止/再開
hugetlb HugeTLB 使用の制限を設定
memory メモリーに対する制限の設定 および 使用されるメモリーリソースの自動レポートを生成
net_cls ネットワークパケットにタグを付ける
net_prio NIC 別にネットワークトラフィックの優先度を動的に設定
perf_event perf_event が接続された階層内のコントロールグループは perf ツールでモニタリング可能
pids プロセス数の制限を設定

[3] コントロールグループは以下のようにして確認可能です。
以下は最小構成で OSインストールした後のデフォルトの状態です。
[root@dlp ~]#
lscgroup

cpuset:/
net_cls,net_prio:/
blkio:/
cpu,cpuacct:/
perf_event:/
memory:/
pids:/
freezer:/
hugetlb:/
devices:/
devices:/user.slice
devices:/system.slice
devices:/system.slice/rsyslog.service
devices:/system.slice/tuned.service
devices:/system.slice/sshd.service
devices:/system.slice/postfix.service
devices:/system.slice/polkit.service
devices:/system.slice/crond.service
devices:/system.slice/systemd-udevd.service
devices:/system.slice/dbus.service
devices:/system.slice/irqbalance.service
devices:/system.slice/lvm2-lvmetad.service
devices:/system.slice/auditd.service
devices:/system.slice/system-getty.slice
devices:/system.slice/chronyd.service
devices:/system.slice/NetworkManager.service
devices:/system.slice/systemd-logind.service
devices:/system.slice/systemd-journald.service
devices:/system.slice/firewalld.service

# system.slice   すべてのシステムサービスのデフォルトの場所
# user.slice     すべてのユーザーセッションのデフォルトの場所
# ***.service    ユニット設定ファイルに基づいて Systemd が起動したプロセスまたはプロセスのグループ
# ***.slice      階層的に編成されたユニットのグループ
                 スライスにはプロセスが含まれずスコープやサービスが置かれる階層を編成
[4] ちなみに、デフォルト設定の Systemd のコントロールグループ階層は以下のようにして確認できます。
[root@dlp ~]#
systemd-cgls

+--1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
+--user.slice
| +--user-0.slice
|   +--session-1.scope
|     +-- 791 login -- root
|     +--1095 -bash
|     +--8395 systemd-cgls
|     +--8396 less
+--system.slice
  +--rsyslog.service
  | +--986 /usr/sbin/rsyslogd -n
  +--tuned.service
  | +--985 /usr/bin/python -Es /usr/sbin/tuned -l -P
  +--sshd.service
  | +--984 /usr/sbin/sshd -D
  +--postfix.service
  | +--1084 /usr/libexec/postfix/master -w
  | +--1086 qmgr -l -t unix -u
  | +--8359 pickup -l -t unix -u
  +--NetworkManager.service
  | +--647 /usr/sbin/NetworkManager --no-daemon
  +--firewalld.service
  | +--641 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
  +--crond.service
  | +--634 /usr/sbin/crond -n
  +--dbus.service
  | +--619 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --sy
  +--polkit.service
  | +--618 /usr/lib/polkit-1/polkitd --no-debug
  +--irqbalance.service
  | +--616 /usr/sbin/irqbalance --foreground
  +--chronyd.service
  | +--622 /usr/sbin/chronyd
  +--systemd-logind.service
  | +--613 /usr/lib/systemd/systemd-logind
  +--auditd.service
  | +--591 /sbin/auditd -n
  | +--597 /sbin/audispd
  | +--602 /usr/sbin/sedispatch
  +--systemd-udevd.service
  | +--487 /usr/lib/systemd/systemd-udevd
  +--lvm2-lvmetad.service
  | +--477 /usr/sbin/lvmetad -f
  +--system-getty.slice
  | +--getty@tty1.service
  |   +--645 /sbin/agetty --noclear tty1 linux
  +--systemd-journald.service
    +--462 /usr/lib/systemd/systemd-journald
 
Tweet