Linux cgroup: 작업과 pid?

Linux cgroup: 작업과 pid?

task이들a그리고 a의 차이점은 무엇인가요 pid? 그 안에는 pid만 나열하는 /sys/fs/cgroup파일이 있습니다 .tasks

$ ls /sys/fs/cgroup/*/tasks
/sys/fs/cgroup/blkio/tasks        /sys/fs/cgroup/net_cls,net_prio/tasks
/sys/fs/cgroup/cpuacct/tasks      /sys/fs/cgroup/net_cls/tasks
/sys/fs/cgroup/cpu,cpuacct/tasks  /sys/fs/cgroup/net_prio/tasks
/sys/fs/cgroup/cpuset/tasks       /sys/fs/cgroup/perf_event/tasks
/sys/fs/cgroup/cpu/tasks          /sys/fs/cgroup/pids/tasks
/sys/fs/cgroup/devices/tasks      /sys/fs/cgroup/rdma/tasks
/sys/fs/cgroup/freezer/tasks      /sys/fs/cgroup/systemd/tasks
/sys/fs/cgroup/memory/tasks

lsns이를 수행하는 옵션도 제공됩니다.

-p, --task pid해당 pid를 가진 프로세스가 보유한 네임스페이스만 표시됩니다.

cgroup이 pid 작업을 호출하는 이유는 무엇입니까? 차이점이 있나요?

답변1

바라보다man cgroups:

cgroups v1에서는 다음을 구별합니다.프로세스그리고 . 이 보기에서 프로세스는 여러 작업으로 구성될 수 있습니다(사용자 공간 관점에서 더 일반적으로 스레드라고 하며 이 매뉴얼 페이지의 나머지 부분에서도 그렇게 언급됩니다). cgroups v1에서는 프로세스에 있는 스레드의 cgroup 멤버십을 독립적으로 조작할 수 있습니다.

여러 cgroup 간에 스레드를 분할하는 cgroups v1의 기능은 경우에 따라 문제를 일으킬 수 있습니다. 예를 들어,메모리컨트롤러는 프로세스의 모든 스레드가 단일 주소 공간을 공유하기 때문입니다. 이러한 문제로 인해 프로세스에서 스레드의 cgroup 멤버십을 독립적으로 조작하는 기능은 원래 cgroups v2 구현에서 제거되었으며 이후에 보다 제한된 형태로 복원되었습니다(아래 "스레딩 모드"에 대한 설명 참조).

/proc/*/task일반적 으로 Linux의 작업은 스레드입니다./proctid에 대한 숨겨진 항목.

관련 정보