루트가 아닌 사용자로 Linux cgroup을 작성하고 사용하려면 어떻게해야합니까?


21

루트가 아닌 사용자로 cgroup 을 만들고 사용하려면 어떻게 해야합니까?

예를 들어, 전적으로 루트가 아닌 사용자로 할 수 있습니까?

  • 하나의 CPU에 액세스 할 수있는 cgroup을 만듭니다.
  • 해당 cgroup에서 새 프로세스를 만듭니다

?

처음 여기에 물 었지만 완전한 답변을받지 못했습니다. 나는 또한 stackoverflow 에 대해 물었지만 질문은 주제가 아닌 것으로 마감되었습니다.

답변:


18

일반 사용자로는 그렇게 할 수 없습니다. 그러나 cgroup을 루트로 설정하고 사용자가 구성 할 수 있습니다.

예를 들어 systemd에 의해 마운트 된 기본 cgroup 컨트롤러가없는 경우 :

$ sudo mount -t tmpfs cgroup_root /sys/fs/cgroup
$ sudo mkdir /sys/fs/cgroup/cpuset
$ sudo mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset

cgroup을 만듭니다.

$ sudo mkdir /sys/fs/cgroup/cpuset/${USER}
$ sudo chown -R ${USER} /sys/fs/cgroup/cpuset/${USER}

이제 cgroup의 구성을 일반 사용자로 수정할 수 있습니다.

$ echo 0-3 > /sys/fs/cgroup/cpuset/${USER}/cpuset.cpus

해당 그룹에 프로세스를 추가하십시오.

$ ./my_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/tasks

또는 하위 그룹을 작성하십시오.

$ mkdir /sys/fs/cgroup/cpuset/${USER}/subgroup
$ echo 0-1 > /sys/fs/cgroup/cpuset/${USER}/subgroup/cpuset.cpus
$ ./my_other_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/subgroup/tasks

하위 그룹을 어떻게 삭제 하시겠습니까? rm -r나를 위해 실패
hbogert

1
rm -r먼저 파일을 삭제하려고 시도하는데 실패합니다. rmdircgroup을 제거하는 데 사용 합니다.
Dennis B.

파일이 비워 rmdir질 때까지 할 수 없습니다 tasks. root는 하위 그룹의 tasks 파일을보고 거기에있는 각 pid를 root cgroup의 tasks 파일 ( /dev/cpuset/tasksRHEL 6.7 [kernel 2.6.32-358] 상자에 있지만 /sys/fs/cgroup/cpuset/tasks여기에 적절한 것처럼 보입니다)에 에코 합니다.
Mike S

1

Ubuntu를 사용하는 경우 루트 사용자는 cgroup-lite를 설치 하고 cgroup의 구성을 변경할 수있는 사용자를 포함하여 /etc/cgconfig.conf에 필요한 것을 추가 할 수 있습니다. 부팅시 실행됩니다.

사용자 (루트 사용자)가 부팅 중에 실행할 고유 스크립트를 추가 할 수 없습니다.


0

cgroup 에 대한 LWN 에 관한 일련의 기사 가 있습니다. 1 부를 보거나 검색하십시오. Systemd 에는 cgroup을 관리 (프로세스가 관리하는) 할 수있는 일련의 도우미가 포함되어 있습니다.


파트 1에 대한 링크는 아마도 lwn.net/Articles/531114가리켜 야 합니다.
chris

링크 된 LWN 기사는 네임 스페이스에 관한 것이고 lwn.net/Articles/604609 는 cgroup에 관한 것입니다.
Dennis B.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.