Điểm:0

Làm cách nào để tự động thay đổi cgroup của các quy trình con dịch vụ systemd (trình chạy gitlab)?

lá cờ ru

Tôi đang điều hành một trình chạy gitlab và tôi muốn mỗi công việc tự đưa vào nhóm riêng của mình.

Tôi có thể đặt quy trình con gitlab bash thành nhóm bên phải, nhưng các phần tử con của nó không kế thừa nhóm đó.

Đây là cách tôi đang làm:

$ /usr/bin/ps -opid,cgroup $PPID $$
   NHÓM PID
 43547 11:blkio:/user.slice,9:devices:/user.slice,7:pids:/user.slice,6:memory:/user.slice,2:cpuacct,cpu:/user.slice,1: tên=systemd:/user.slice/user-988.slice/session-c2500.scope
 43548 11:blkio:/user.slice,9:devices:/user.slice,7:pids:/user.slice,6:memory:/user.slice,2:cpuacct,cpu:/user.slice,1: tên=systemd:/user.slice/user-988.slice/session-c2500.scope
$ /usr/bin/sudo /usr/bin/env CGROUP_LOGLEVEL=DEBUG /usr/bin/cgclassify -g cpu,cpuacct:/gitlab-runner/$CI_CONCURRENT_PROJECT_ID --sticky $PPID $$
đã tìm thấy cpu trong rw,nosuid,nodev,noexec,relatime,cpuacct,cpu
Đã tìm thấy tùy chọn cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu, đếm 0
...cắt tỉa...
Sẽ chuyển pid 43547 sang cgroup '/gitlab-runner/0'
Thêm bộ điều khiển cpu
Thêm bộ điều khiển cpuacct
Sẽ chuyển pid 43548 sang cgroup '/gitlab-runner/0'
Thêm bộ điều khiển cpu
Thêm bộ điều khiển cpuacct
$ /usr/bin/ps -opid,cgroup $PPID $$
   NHÓM PID
 43547 11:blkio:/user.slice,9:devices:/user.slice,7:pids:/user.slice,6:memory:/user.slice,2:cpuacct,cpu:/gitlab-runner/0, 1:name=systemd:/user.slice/user-988.slice/session-c2500.scope
 43548 11:blkio:/user.slice,9:devices:/user.slice,7:pids:/user.slice,6:memory:/user.slice,2:cpuacct,cpu:/gitlab-runner/0, 1:name=systemd:/user.slice/user-988.slice/session-c2500.scope

Truy vấn một lần chạy khác, tìm các quy trình trong cgroup:

$ ps -e -opid,comm,cgroup | grep gitlab-runner/3
 77554 su 11:blkio:/user.slice,9:devices:/user.slice,7:pids:/user.slice,6:memory:/user.slice,2:cpuacct,cpu:/gitlab-runner/3 ,1:name=systemd:/user.slice/user-988.slice/session-c2604.scope
 77555 bash 11:blkio:/user.slice,9:devices:/user.slice,7:pids:/user.slice,6:memory:/user.slice,2:cpuacct,cpu:/gitlab-runner/3 ,1:name=systemd:/user.slice/user-988.slice/session-c2604.scope

Nhìn con nó...

$ pstree -p 77554
su(77554)âââbash(77555)âââbash(77575)âââpython3.6(78199)ââ ârun-cypress-spl(78206)âââcoverage(80245)ââ¬ânode(91561)ââ¬âCypress(91796 )ââ¬âCypress(91799)âââCypress(91990)ââ¬â{Cypress}(91992)
                                                                                                    â â â ââ{Cypress}(91993)
  

con của nó không có trong cgroup:

$ ps -opid,comm,cgroup 78206 | con mèo
   CGROUP LỆNH PID
   78206 run-cypress-spl 78206 run-cypress-spl 11:blkio:/user.slice,9:devices:/user.slice,7:pids:/user.slice,6:memory:/user.slice,2: cpuacct,cpu:/user.slice,1:name=systemd:/user.slice/user-988.slice/session-c2604.scope

tôi cũng tìm thấy https://stackoverflow.com/questions/50749408/how-systemd-tracks-fork- process-with-type-fork điều đó ngụ ý rằng systemd có thể ngăn kế thừa cgroup tại ngã ba.

Có cách nào để giái quyết vấn đề này không?

CentOS7, systemd-219-78.el7_9.5.x86_64.

Cập nhật: Nếu tôi hiểu cái này câu trả lời, câu trả lời có thể là Delegate=true. Tôi không nghĩ rằng điều này được hỗ trợ trên hệ thống này... Tôi sẽ thử nó tiếp theo.

Cập nhật: Tôi đã thử điều này và không tìm thấy sự khác biệt nào:

$ con mèo /etc/systemd/system/gitlab-runner.service.d/override.conf
[Dịch vụ]
Đại biểu = có

Cập nhật: đây có thể là một cách thay thế tôi sẽ thử tiếp theo: https://unix.stackexchange.com/questions/490978/limit-cpu-and-memory-consumption-of-all-x-applications

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.