
프로세스의 CPU 사용량을 10%로 제한하고 싶습니다.
이를 수행할 수 있는 한 가지 방법은 매분마다 6초 동안 프로세스를 연속적으로 실행하고 나머지 시간에는 일시 중지하는 것입니다.
나는 nice로 프로세스 우선순위를 바꾸려고 하지 않습니다.
답변1
CPU 한도(최신github 링크는 여기)는 작업을 위한 도구인 것 같습니다. PID, 프로세스 이름 또는 절대 위치로 프로세스의 프로세서 사용량을 제어하고 전체 비율로 프로세서 사용량을 설정할 수 있습니다.
sourceforge 페이지의 문서에서 -
사용 예
실행 파일 이름별로 'bigloop' 프로세스를 CPU 40%로 제한합니다.
cpulimit --exe bigloop --limit 40
cpulimit --exe /usr/local/bin/bigloop --limit 40
PID로 프로세스를 CPU의 55%로 제한합니다.
cpulimit --pid 2960 --limit 55
명령줄로 프로세스를 시작하고 40%로 제한합니다(개발 버전에서만!):
cpulimit --limit 40 /etc/rc.d/rc.boinc start
Cyberciti.biz에는어떻게이는 또한 귀하가 사용할 수 있음을 나타냅니다.
-p : Process PID.
-e : Process name.
-l : percentage of CPU allowed from 0 to 100.
-P: absolute path name of the executable program file.
--exe 대신.
그리고 멀티 프로세서의 경우 100 * 코어 수를 기준으로 백분율을 설정해야 합니다. 따라서 듀얼 시스템은 최대 150까지 백분율을 허용하고 쿼드 코어는 최대 200을 허용할 수 있습니다.
답변2
운영 체제를 지정하지 않았으므로 여기에 Windows용 옵션과 Linux용 옵션을 추가하겠습니다.
리눅스의 경우:
사용스트레스:
스트레스는 POSIX 시스템을 위한 의도적으로 간단한 워크로드 생성기입니다. 시스템에 구성 가능한 양의 CPU, 메모리, I/O 및 디스크 스트레스를 부과합니다. C로 작성되었으며 GPLv2에 따라 라이센스가 부여된 무료 소프트웨어입니다.
다음은 호출 예시입니다. CPU 바인딩 프로세스 2개, I/O 바인딩 프로세스 1개, 메모리 할당자 프로세스 1개를 지정하여 시스템에 로드 평균 4가 부과됩니다.
$ stress --cpu 2 --io 1 --vm 1 --vm-bytes 128M --timeout 10s --verbose
stress: info: [9372] dispatching hogs: 2 cpu, 1 io, 1 vm, 0 hdd
stress: dbug: [9372] (243) using backoff sleep of 12000us
stress: dbug: [9372] (262) setting timeout to 10s
stress: dbug: [9372] (285) --> hogcpu worker 9373 forked
stress: dbug: [9372] (305) --> hogio worker 9374 forked
stress: dbug: [9372] (325) --> hogvm worker 9375 forked
stress: dbug: [9372] (243) using backoff sleep of 3000us
stress: dbug: [9372] (262) setting timeout to 10s
stress: dbug: [9372] (285) --> hogcpu worker 9376 forked
stress: dbug: [9375] (466) hogvm worker malloced 134217728 bytes
stress: dbug: [9372] (382) <-- worker 9374 signalled normally
stress: dbug: [9372] (382) <-- worker 9373 signalled normally
stress: dbug: [9372] (382) <-- worker 9375 signalled normally
stress: dbug: [9372] (382) <-- worker 9376 signalled normally
stress: info: [9372] successful run completed in 10s
Windows의 경우:
사용BES – 배틀 인코더 시라세 1.4.5 / 1.5.2:
프로세스별 CPU 사용량을 제어하는 무료 소프트웨어입니다. "활성" 소프트웨어 CPU 쿨러. BES는 "대상" 프로세스의 CPU 사용량을 조절하는 작은 도구입니다. 예를 들어, CPU를 100% 사용하는 프로세스의 CPU 사용량을 50%(또는 원하는 비율)까지 제한할 수 있습니다. . 이를 통해 백그라운드에서 CPU를 많이 사용하는 작업을 수행하면서 다른 프로그램을 편안하게 사용할 수 있습니다.
CPU 부하를 제한하면 CPU가 너무 뜨거워지면 즉시 CPU 온도를 낮출 수도 있습니다. 이는 "활성" 소프트웨어 CPU 쿨러입니다. 기존의 소프트 쿨러는 CPU가 유휴 상태일 때 CPU를 절전 모드로 전환하여 CPU 에너지를 절약합니다. CPU가 유휴 상태가 될 때까지 수동적으로 기다립니다. BES는 더욱 공격적입니다. 즉, "가열" 프로세스를 느리게 만들어 CPU를 냉각시킵니다. 즉, 주기적으로 CPU를 짧은 시간 동안 유휴 상태로 만듭니다. (그러나 이러한 목적으로 BES를 자주 사용해야 한다면 더 나은 하드웨어 쿨러를 설치해야 합니다. 실제로 가장 먼저 시도해야 할 일은 방열판 주변의 먼지를 제거하는 것입니다(아래 참조). 액티브 소프트 쿨링은 흥미로운 해킹이 될 수 있습니다. 하지만 이는 결국 해결 방법일 뿐입니다. 반면에 애플리케이션이 의미 없이 CPU를 100% 사용한다면 BES가 그 일을 하게 하세요!)
Windows 명령줄을 사용하여 자동화할 수도 있습니다.
다음 명령줄은 BES에게 target.exe를 감시하고, target.exe가 실행되기 시작하면 CPU 사용량을 조절하여 target.exe가 최대 CPU(100 - 백분율) %만 사용할 수 있도록 지시합니다.
"C:\path\to\bes.exe" "D:\path to\target.exe" [percentage] [--minimize]
선택적으로 1에서 99 사이의 정수를 백분율로 사용할 수 있습니다. 백분율이 생략되거나 유효하지 않은 경우 target.exe에 대해 마지막으로 알려진 유효 백분율이 자동으로 사용됩니다(target.exe를 처음 대상으로 하는 경우 백분율을 지정하지 않는 한 기본 감소 33%가 적용됩니다). 명령줄에서 시작하면 BES는 대상을 단지 제한하는 것이 아니라 감시/제한합니다.
답변3
Windows의 경우:(이것은 @Diogo의 답변에 대한 확장일 뿐입니다.)
원하는 대상 프로그램이 원하는 CPU 스로틀에서 자동으로 실행되도록 단일 바로가기를 클릭하기를 원하는 Windows 사용자로서 저는 배치 파일과 관련된 좀 더 많은 단계가 필요하고 정확히 구현하는 방법과 관련하여 몇 가지 설명이 필요하다는 것을 알았습니다. 제안된 명령줄 내의 [percentage] 및 [--minimize] 부분:
"C:\path\to\bes.exe" "D:\path to\target.exe" [percentage] [--minimize]
제가 최종적으로 사용한 방법은 아래와 같습니다. 창문을 만들어라배치 파일, 텍스트 편집기를 사용하여 파일을 만들고 이름을 "[name].bat"(예: Something.bat)로 지정합니다. 파일 내에는 다음이 입력되어 있습니다.
@echo off
start "" "C:\path\to\bes.exe" "D:\path to\target.exe" 90 -m
start "" "D:\path to\target.exe"
어디:
- ""를 시작하면 두 가지 모두 허용됩니다.베스그리고 실행할 대상 프로그램동시에.
- "C:\path\to\bes.exe"는 따옴표 안에 있는 BES 프로그램의 정확한 경로입니다.
- "D:\path to\target.exe"는 CPU를 조절하려는 프로그램의 정확한 경로입니다. 따옴표 안에,
- 90는 감소 비율입니다. 이 경우 CPU 제한을 100으로 줄이는 것을 의미합니다.90= 10%
- -m은 최소화된 BES 프로그램을 시작하는 것입니다(BES 지침에 따라: "--minimize 옵션(줄여서 -m)은 BES에게 최소화된 상태로 시작하도록 지시합니다(시스템 트레이로 전송됨)."
그런 다음 결과 .bat 파일을 두 번 클릭하면 BES를 사용하여 원하는 CPU 수준으로 자동 조절되는 동안 대상 프로그램이 실행됩니다.