너무 많은 CPU를 사용하는 하나의 프로세스를 피하고 싶습니다. 사실 저는 Debian이 설치된 Raspberry Pi에서 실행해야 하는 매우 긴 CPU 요구 작업(비디오 변환)이 있기 때문에 CPU가 과열되는 것을 방지하고 싶습니다. 온도가 80°C 이상으로 상승합니다.
명령 이 있는 것을 보았지만 cpulimit
명령을 실행하는 방법을 모르겠습니다. bash 명령 자체가 아닌 pid(프로세스 ID)를 인수로 사용하거나 실행할 코드가 포함된 실행 파일로 사용하는 것 같기 때문입니다. . 내 작업이 무엇을 반환하는지 직접 확인하고 필요할 때 Ctrl-C를 누를 수 있기를 원합니다. 참고: 작업 명령을 파일에 넣고 실행하려고 하면 cpulimit -l 20 --path=/path/to/my/file.sh
반환되므로 Warning: no target process found. Waiting for it...
1) --path 매개변수가 실제로 수행하는 작업, 2) CPUlimit 명령을 올바르게 사용하는 방법을 이해할 수 없는 것처럼 보입니다. 어느 터미널.. .
저 할 수 있어요선호하다 사용하지 마세요유사한 해결 방법 nohup my-command --my-args &
은 두 번째로 pid를 반환하고 그에 대한 cpulimit 명령을 작성할 수 있게 해주더라도 마찬가지입니다.
미리 감사드립니다!
답변1
하드웨어의 전원 관리 기능을 활용하세요
CPU 온도를 낮추는 것이 목표라면 CPU가 더 일찍 제한되도록 전원 관리 매개변수를 조정하는 것이 좋습니다. Raspberry Pi 모델에 따라 온도를 낮춰야 할 수도 있습니다 temp_soft_limit
( config.txt
기본값은 60°C인 것 같습니다). 보다라즈베리 파이 문서더 알아보기.
통제 그룹 사용
또 다른 옵션은 cgroup을 사용하여 프로세스가 사용할 수 있는 리소스의 양을 제한하는 것입니다. cgroup은 생성될 수 있는 하위 프로세스도 고려하며 데몬에도 적용될 수 있습니다. CPU 사용량을 제한하고 싶다면 즐겨 사용하는 셸이 sed, awk 등과 같은 도구를 생성하거나 Chrome 브라우저가 각 탭에 대해 별도의 프로세스를 생성한다고 가정하면 CPU 주기 수에 제한이 설정됩니다.모두영향을 받은 cgroup의 프로세스가 태워질 수 있습니다.
다음과 같이 "cpulimit"라는 제어 그룹을 생성할 수 있습니다.
$ sudo cgcreate -g cpu:/cpulimit
이 제어 그룹의 프로세스 제한을 CPU 시간의 20%로 설정합니다.
$ sudo cgset -r cpu.cfs_period_us=1000000 cpulimit
$ sudo cgset -r cpu.cfs_quota_us=200000 cpulimit
애플리케이션을 실행합니다.
$ sudo cgexec -g cpu:cpulimit <command>
답변2
두 가지 답변을 드리겠습니다. 하나는 유용 cpulimit
하고 다른 하나는 더 의미가 있습니다.
첫 번째 답변: 조절 스크립트를 사용하려는 경우 cpulimit
아래 스크립트 내에서 개별 작업을 실행해 보는 것은 어떨까요 cpulimit
? 예를 들어:
#!/bin/dash
cpulimit --limit 20 -- ~/bin/mprime/mprime -t # starts a slow mprime
대체 답변: 몇 가지 xy 질문을 하셨습니다. CPU에 냉각 시간을 주고 싶지만 사용 중인 프로그램은 프로세스를 빠르게 일시 중지하고 다시 시작하여 이를 수행합니다.
NOTES
cpulimit always sends the SIGSTOP and SIGCONT signals to a process,
both to verify that it can control it and to limit the average
amount of CPU it consumes ...
bash
이는 단 한 줄의 코드로 복제 할 수 있는 부정확한 복사일 뿐만 아니라 cpulimit
프로그램을 망칠 수 있는 방식으로 파일 설명자를 망친다는 점에도 유의하세요. 예를 들어, 대화형 모드 에서 첫 번째 예제를 mprime
실행 하면 SIGKILL 신호를 수동으로 발행할 때까지 터미널에 cpulimit --limit 20 -- ~/bin/mprime/mprime
무한 루프의 프롬프트가 표시되는 것을 볼 수 있습니다 .mprime
cpulimit
mprime
목표는 프로세서에 유휴 시간을 주는 것입니다. 이를 수행하는 적절한 방법은 프로세서의 클럭 주파수를 낮추어 아무것도 하지 않고 더 많은 시간을 보낼 수 있도록 하는 것입니다. 문제의 장치는 Raspberry Pi이므로 수행하기가 그리 어렵지 않습니다.
추신: Rui F Ribeiro의 말이 맞습니다. 프로세서 집약적인 작업을 단일 코어로 제한하면 온도를 더 낮게 유지하는 데 도움이 됩니다. 동일한 양의 전력이 여전히 동일한 칩에 주입되기 때문에 프로세서 냉각에 도움이 되지 않으므로 코어 간에 프로세스를 지속적으로 이동하는 것은 의미가 없습니다.