Linux-Kernel

Linux cgroups:任務與 pid?

  • December 21, 2020

atask和 a 和有什麼不一樣pid?在裡面/sys/fs/cgroup有一個名為的文件tasks,它只列出了 pid,

$ 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 的程序持有的命名空間。

為什麼 cgroups 呼叫 pid 的任務?有區別嗎?

man cgroups

在 cgroups v1 中,程序任務之間存在區別。在這個視圖中,一個程序可以包含多個任務(從使用者空間的角度來看,通常稱為執行緒,在本手冊的其餘部分中稱為執行緒)。在 cgroups v1 中,可以獨立操作程序中執行緒的 cgroup 成員資格。

在某些情況下,cgroups v1 跨不同 cgroup 拆分執行緒的能力會導致問題。例如,它對記憶體控制器沒有意義,因為一個程序的所有執行緒共享一個地址空間。由於這些問題,在最初的 cgroups v2 實現中刪除了在程序中獨立操作執行緒的 cgroup 成員資格的能力,隨後以更有限的形式恢復(見下文“執行緒模式”的討論)。

一般來說,任務是Linux中的執行緒;另請參閱/proc/*/task,以及tids的隱藏/proc條目。

引用自:https://unix.stackexchange.com/questions/625567