systemd-run을 사용하여 CPU 사용량을 제한하는 방법

systemd-run을 사용하여 CPU 사용량을 제한하는 방법

유휴 상태에서도 CPU를 100% 사용하는 버그가 있는 프로그램이 있습니다. 현재로서는 이를 수정하는 것이 실용적이지 않기 때문에 CPU를 10% 이하로 사용할 수 있도록 제한하고 싶습니다. 하지만 제가 무엇을 하든 그 프로세스는 항상 하나의 CPU를 100% 차지합니다.

나는에 대해 알아냈다아치스 위키다음 내용으로 파일을 생성하라고 알려주세요:

# cpulimit.slice
[Slice]
CPUQuota=10%

분명히 다음과 같은 제한 사항을 사용하여 쉘을 시작할 수 있습니다.

systemd-run --slice=cpulimit.slice --uid=myuser --shell

이것이 작동하는 것 같습니다. sudo 비밀번호를 입력한 후 쉘이 생성되어 100% CPU를 사용하는 간단한 테스트를 실행하고 Ctrl+C 사용을 중지할 수 있습니다.

while true; do true; done

슬라이스 내에서 실행되기 때문에 CPU를 10% 이하로 사용할 것으로 예상했지만 항상 CPU를 100% 사용합니다!

내가 뭘 잘못했나요?

답변1

방금 문제를 발견했습니다. 파일 .slice을 넣고 먼저 실행 /etc/systemd/system/해야 합니다 systemctl daemon-reload. 그러면 모든 것이 잘 작동합니다.

안타깝게도 잘못된 인수를 사용하는 경우 이 systemd-run명령은 오류 메시지를 표시하지 않으며 --slice, 사용자가 제공하는 이름으로 추가 제한 없이 새 슬라이스를 생성할 뿐입니다.

관련 정보