cgroup での,知ってる人からすると当たり前かも知れないハマりポイント.
/etc/fstab で
cgroup /cgroup cgroup defaults 0 0
とかやって,デフォルトでマウントしたりして,cgroup ファイルシステム上にグループを作って,そこに pid を登録しようとすると "write error: No space left on device" とか怒られたりすることがあります.
# mkdir /cgroup/test # echo $$ > /cgroup/test/tasks
普通の操作です.
オンラインマニュアルの cpuset(7) にヒントがあります.
ENOSPC Attempted to write(2) the process ID (PID) of a
process to a cpuset tasks file when the cpuset had
an empty cpus or empty mems setting.ENOSPC Attempted to write(2) an empty cpus or mems setting
to a cpuset that has tasks attached.
つまり
- そもそも cpuset サブシステムを使わない.
- グループ内の cpuset.mems と cpuset.cpus に適切な値を設定してから tasks を登録する.とりあえず何をしたら良いか分からない場合は,親グループと同じ値を書いておけば良いでしょう.
# echo "0-1" > cpuset.cpus
# echo 0 > cpuset.mems
のどちらかで解決.
この後 "echo $$ > /cgroup/test/tasks" とかやるとちゃんと書き込めます.