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

差分

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

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
linux:kernel:cgroup:マウントオプション [2013/04/18 11:32] – [name] tenforwardlinux:kernel:cgroup:マウントオプション [2013/04/25 11:01] (現在) – [release_agent=] tenforward
行 4: 行 4:
  
 ^ オプション ^ 意味 ^ ^ オプション ^ 意味 ^
 +^ none | どのサブシステムも使わない (?) |
 ^ all | 全サブシステムを使用 (マウント) する指定 | ^ all | 全サブシステムを使用 (マウント) する指定 |
 ^ (各サブシステム名) | そのサブシステムを使用 (マウント) する | ^ (各サブシステム名) | そのサブシステムを使用 (マウント) する |
 +^ noprefix | cgroup ファイルシステム内の各ファイルにサブシステムを表す prefix を付けない |
 +^ clone_children | cpu_set サブシステムだけで有効.子グループを作成したら親グループの設定を継承(コピー)する |
 +^ xattr | 拡張ファイル属性サポートでマウント |
 +^ release_agent= | release_agent ファイルに書き込む実行ファイルのパス |
 +^ name= | マウントした階層構造を後で名前でマウントできるように名前を付ける.もしくは既にある名前と同じ階層構造をマウントする |
 +
  
 ===== name ===== ===== name =====
行 35: 行 42:
 root@plamo50:/home/karma# mount -t cgroup -o memory,name=myhier1 cgroup2 /cgroup2 root@plamo50:/home/karma# mount -t cgroup -o memory,name=myhier1 cgroup2 /cgroup2
 mount: cgroup2 already mounted or /cgroup2 busy</code> mount: cgroup2 already mounted or /cgroup2 busy</code>
-  * 名前を指定しなければ OK だが,階層構造はコピーされていない+  * 名前を指定しなければ OK だが,階層構造はコピーされていない <code>root@plamo50:/home/karma# mount -t cgroup -o cpu,name=myhier1 cgroup /cgroup1 
 +root@plamo50:/cgroup1# mkdir test01 test02 
 +root@plamo50:~# ls /cgroup1 
 +cgroup.clone_children  cpu.cfs_quota_us   cpu.stat           test01/ 
 +cgroup.event_control   cpu.rt_period_us   notify_on_release  test02/ 
 +cgroup.procs           cpu.rt_runtime_us  release_agent 
 +cpu.cfs_period_us      cpu.shares         tasks 
 +root@plamo50:~# mount -t cgroup -o memory cgroup /cgroup2 
 +root@plamo50:~# ls /cgroup2 
 +cgroup.clone_children               memory.max_usage_in_bytes 
 +cgroup.event_control                memory.memsw.failcnt 
 +cgroup.procs                        memory.memsw.limit_in_bytes 
 +memory.failcnt                      memory.memsw.max_usage_in_bytes 
 +memory.force_empty                  memory.memsw.usage_in_bytes 
 +memory.kmem.failcnt                 memory.move_charge_at_immigrate 
 +memory.kmem.limit_in_bytes          memory.oom_control 
 +memory.kmem.max_usage_in_bytes      memory.soft_limit_in_bytes 
 +memory.kmem.slabinfo                memory.stat 
 +memory.kmem.tcp.failcnt             memory.swappiness 
 +memory.kmem.tcp.limit_in_bytes      memory.usage_in_bytes 
 +memory.kmem.tcp.max_usage_in_bytes  memory.use_hierarchy 
 +memory.kmem.tcp.usage_in_bytes      notify_on_release 
 +memory.kmem.usage_in_bytes          release_agent 
 +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  
 +
 +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/マウントオプション.1366284726.txt.gz
  • 最終更新: 2013/04/18 11:32
  • by tenforward