linux:kernel:cgroup:マウントオプション

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
linux:kernel:cgroup:マウントオプション [2013/04/24 10:00] – [mount option] tenforwardlinux:kernel:cgroup:マウントオプション [2013/04/25 11:01] (現在) – [release_agent=] tenforward
行 8: 行 8:
 ^ (各サブシステム名) | そのサブシステムを使用 (マウント) する | ^ (各サブシステム名) | そのサブシステムを使用 (マウント) する |
 ^ noprefix | cgroup ファイルシステム内の各ファイルにサブシステムを表す prefix を付けない | ^ noprefix | cgroup ファイルシステム内の各ファイルにサブシステムを表す prefix を付けない |
 +^ clone_children | cpu_set サブシステムだけで有効.子グループを作成したら親グループの設定を継承(コピー)する |
 +^ xattr | 拡張ファイル属性サポートでマウント |
 +^ release_agent= | release_agent ファイルに書き込む実行ファイルのパス |
 ^ name= | マウントした階層構造を後で名前でマウントできるように名前を付ける.もしくは既にある名前と同じ階層構造をマウントする | ^ name= | マウントした階層構造を後で名前でマウントできるように名前を付ける.もしくは既にある名前と同じ階層構造をマウントする |
  
行 64: 行 67:
 memory.limit_in_bytes               tasks</code> memory.limit_in_bytes               tasks</code>
  
 +===== noprefix =====
 +通常であれば各サブシステム名が prefix となって,各サブシステムの制御ファイルが作成されるが,その prefix を付けない.サブシステム毎にマウントする時には便利かも
 +<code>
 +root@plamo50:/# mount -t cgroup -ocpuset,noprefix X /cgroup/
 +root@plamo50:/# ls /cgroup
 +cgroup.clone_children  mem_hardwall             mems
 +cgroup.event_control   memory_migrate           notify_on_release
 +cgroup.procs           memory_pressure          release_agent
 +cpu_exclusive          memory_pressure_enabled  sched_load_balance
 +cpus                   memory_spread_page       sched_relax_domain_level
 +mem_exclusive          memory_spread_slab       tasks
 +root@plamo50:/# umount /cgroup/
 +root@plamo50:/# mount -t cgroup -ocpuset X /cgroup/
 +root@plamo50:/# ls /cgroup/
 +cgroup.clone_children   cpuset.memory_pressure_enabled
 +cgroup.event_control    cpuset.memory_spread_page
 +cgroup.procs            cpuset.memory_spread_slab
 +cpuset.cpu_exclusive    cpuset.mems
 +cpuset.cpus             cpuset.sched_load_balance
 +cpuset.mem_exclusive    cpuset.sched_relax_domain_level
 +cpuset.mem_hardwall     notify_on_release
 +cpuset.memory_migrate   release_agent
 +cpuset.memory_pressure  tasks
 +</code>
 +
 +当然,複数のサブシステムを一つのディレクトリに収めるような場合には使えない
 +
 +<code>
 +root@plamo50:~# mount -t cgroup -oall,noprefix X /cgroup/
 +mount: wrong fs type, bad option, bad superblock on X,
 +       missing codepage or helper program, or other error
 +       (for several filesystems (e.g. nfs, cifs) you might
 +       need a /sbin/mount.<type> helper program)
 +       In some cases useful info is found in syslog - try
 +       dmesg | tail  or so
 +root@plamo50:~# mount -t cgroup -omemory,cpu,noprefix X /cgroup/
 +mount: wrong fs type, bad option, bad superblock on X,
 +       missing codepage or helper program, or other error
 +       (for several filesystems (e.g. nfs, cifs) you might
 +       need a /sbin/mount.<type> helper program)
 +       In some cases useful info is found in syslog - try
 +       dmesg | tail  or so
 +</code>
 +
 +===== clone_children =====
 +
 +普通
 +<code>
 +root@plamo50:/# mount -t cgroup -o cpuset cgroup /cgroup
 +root@plamo50:/# cd cgroup/
 +root@plamo50:/cgroup# cat cpuset.cpus 
 +0-1
 +root@plamo50:/cgroup# mkdir test01
 +root@plamo50:/cgroup# cd test01
 +root@plamo50:/cgroup/test01# cat cpuset.cpus 
 +
 +root@plamo50:/cgroup/test01# 
 +</code>
 +
 +clone_children
 +
 +<code>
 +root@plamo50:~# mount -t cgroup -o cpuset,clone_children cgroup /cgroup
 +root@plamo50:~# cd /cgroup/
 +root@plamo50:/cgroup# cat cgroup.clone_children 
 +1
 +root@plamo50:/cgroup# cat cpuset.cpus 
 +0-1
 +root@plamo50:/cgroup# mkdir test01
 +root@plamo50:/cgroup# cd test01
 +root@plamo50:/cgroup/test01# cat cpuset.cpus 
 +0-1
 +</code>
 +
 +===== xattr =====
 +<code>
 +root@plamo50:~# mount -t cgroup -o memory,xattr cgroup /cgroup
 +root@plamo50:~# cd /cgroup
 +root@plamo50:/cgroup# setfattr -n security.test -v test tasks 
 +root@plamo50:/cgroup# setfattr -n trusted.test -v test tasks 
 +root@plamo50:/cgroup# setfattr -n system.test -v test tasks 
 +setfattr: tasks: Invalid argument
 +root@plamo50:/cgroup# setfattr -n user.test -v test tasks 
 +setfattr: tasks: Invalid argument
 +root@plamo50:/cgroup# getfattr -n security.test  tasks 
 +# file: tasks
 +security.test="test"
 +
 +root@plamo50:/cgroup# getfattr -n trusted.test  tasks 
 +# file: tasks
 +trusted.test="test"
 +
 +root@plamo50:/cgroup# getfattr -d tasks 
 +root@plamo50:/cgroup# 
 +</code>
 +
 +xattr の名前空間としては security.* と trusted.* だけが許可されているようです.getattr -d コマンドが何も返さないですね.
 +
 +許可する名前空間は kernel/cgroup.c 内で
 +
 +<code c>
 +static bool is_valid_xattr(const char *name)
 +{
 + if (!strncmp(name, XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN) ||
 +     !strncmp(name, XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN))
 + return true;
 + return false;
 +}
 +</code>
 +
 +===== release_agent= =====
 +<code>
 +root@plamo50:/# mount -t cgroup -o cpu,release_agent=/test.sh cgroup /cgroup
 +root@plamo50:/# cd cgroup/
 +root@plamo50:/cgroup# cat release_agent 
 +/test.sh
 +root@plamo50:/cgroup# cat notify_on_release 
 +0
 +root@plamo50:/cgroup# echo 1 > notify_on_release 
 +root@plamo50:/cgroup# cat notify_on_release 
 +1
 +root@plamo50:/cgroup# mkdir test01
 +root@plamo50:/cgroup# echo 2810 > test01/tasks 
 +root@plamo50:/cgroup# cat test01/tasks 
 +2810
 +root@plamo50:/cgroup# cat test01/tasks 
 +root@plamo50:/cgroup# tail -n 1 /var/log/syslog
 +Apr 25 19:59:49 plamo50 logger: Release!!Release!!
 +</code>
 +
 +/test.sh は
 +<code bash>
 +#!/bin/bash
 +/bin/logger "Release!!Release!!"
 +</code>
  • linux/kernel/cgroup/マウントオプション.1366797611.txt.gz
  • 最終更新: 2013/04/24 10:00
  • by tenforward