동일한 프로세스에 cgroups와 Nice 사용 - 순서가 중요합니까? 올바른 구문은 무엇입니까?

동일한 프로세스에 cgroups와 Nice 사용 - 순서가 중요합니까? 올바른 구문은 무엇입니까?

내 데스크톱에 CGROUP이라는 CGROUP을 만들었습니다.배경. 이 그룹의 목적은 10% CPU 제한 내에서 모든 sysadmin 스크립트를 실행하는 것입니다. 그룹은 다음 cronjob을 사용하여 다시 시작할 때마다 생성됩니다.

@reboot /usr/bin/cgcreate -t jerzy:jerzy -a jerzy:jerzy -g cpu:background && /usr/bin/cgset -r cpu.cfs_period_us=1000000 background && /usr/bin/cgset -r cpu.cfs_quota_us=100000 background

이러한 제한에도 불구하고 이미 제한된 시스템 관리 스크립트를 원합니다.프로그램 실행, 나머지 프로세스의 우선 순위를 결코 지정하지 않습니다. 그래서 나는 사용하기로 결정했다.좋아요다음 예와 같이 명령을 실행합니다.

cgexec -g cpu:background nice -19 prependPollen.py

프로그램 실행위 명령에서 리소스를 다음으로 제한합니다.prependPollen.py아니면 단지좋아요?

더 일반적으로: 사용프로그램 실행바로 다음에 나오는 하나의 명령으로만 리소스를 제한하십시오.프로그램 실행주문하다? 동일하게 적용됩니다좋아요?

nice -19 cgexec -g cpu:background prependPollen.py

위 명령과 같이 순서를 바꾸면 CPU 사용량/제한에 영향이 있습니까? 둘 다 괜찮아좋아요그리고프로그램 실행동일한 명령/cronjob에서 사용할 수 있습니까?

PS 내 환경: Bash, Debian 10 LTS.

답변1

두 명령 모두 변경된 속성을 유지하면서 다음 명령을 실행하는 준비 명령입니다. 따라서 변경되는 속성이 다른 속성에 부작용이 없는 한(두 속성 모두에 적합) 여기서 순서는 중요하지 않습니다.

cgexec -> nice -> final executable

nice아래에서 실행할 프로세스를 해당 프로세스로 이동합니다.그룹nice최종 실행 파일의 성능을 변경 합니다 (cgroup을 유지하면서).

nice -> cgexec -> final executable

후속 프로세스의 장점을 변경 cgexec하고 cgexec최종 실행 파일을 관련 cgroup에 배치합니다(품질을 유지하면서).

두 명령 모두 동일한 결과를 생성합니다. 두 가지 속성(그룹그리고친절한)은 다음 프로세스의 모든 하위 프로세스에 자동으로 전파됩니다. 그러니 무슨 일이 일어나든 prependPollen.py그 안에 있을 거야중앙처리장치: 배경변화의 아름다움도 있습니다.

다른 유사한 명령은 이 파이프라인의 어느 곳에나 삽입할 수 있습니다. 예를 들어, ionice -c 3Python 프로그램이 다른 프로세스에 대한 I/O 영향을 제한하기 위해 첫 번째, 두 번째 또는 세 번째 위치에 추가할 수 있습니다.cgroup이를 더 잘 수행하려면 일반적으로 다음이 필요합니다.cgroupv2가 제대로 작동하려면).

관련 정보