그다지 중요하지 않지만 CPU 리소스를 많이 소모하는 일반 프로세스가 있습니다. 매우 중요한 또 다른 프로세스가 있지만 대부분의 시간 동안 유휴 상태로 유지되지만 작업이 수행되면 많은 컴퓨팅 성능이 필요합니다.
nice -20 ./low_priority_process
and로 실행을 시도했지만 nice --20 ./high_priority_process
우선 순위가 높은 프로세스에 필요할 때 우선 순위가 낮은 프로세스가 여전히 많은 CPU를 소비합니다.
다른 프로세스가 CPU 성능을 사용할 때 실제로 생성되거나 자동으로 일시 중지되는 프로세스를 어떻게 실행할 수 있습니까?
답변1
구경하다cgroup, CPU 예약 등 필요한 것을 정확하게 제공해야 합니다. 나는 독서를 추천한다cgroup을 사용하여 애플리케이션 우선순위 제어.
즉, 중요하지만 종종 유휴 프로세스를 95% CPU가 할당된 그룹에 배치하고 기타 응용 프로그램을 5% CPU가 할당된 다른 그룹에 배치합니다. 필요한 전력이 필요할 때 (거의) 모든 작업을 얻을 수 있으며 이때 지속적으로 전력이 공급됩니다. - 배고픈 프로세스는 전력의 최대 5%까지만 얻을 수 있습니다. 컴퓨팅 급증이 사라지면 모든 CPU 성능이 나머지 프로세스에 할당됩니다. 이렇게 하면 한 가지 이점은 등의 프로세스에 대해 특수 cgroup(최소 성능 요구 사항 포함)을 생성하는 경우 sshd
모든 CPU를 얻으려고 시도하더라도 로그인할 수 있다는 것입니다. 일부 CPU 시간은 에 예약됩니다 sshd
.
답변2
프로세스 우선순위(nice 값)가 낮으면 우선순위가 높은 프로세스를 중단하지 않습니다. 우선순위가 높은 프로세스가 실행 중일 때 우선순위가 낮은 프로세스가 여전히 많은 CPU를 소비하는 이유는 우선순위가 높은 프로세스가 실행되고 있지 않기 때문입니다.저것바쁘다. 어쩌면 IO를 기다리고 있을지도 모릅니다. (여기서는 Linux에 대해 이야기하고 있다고 가정) 보다 chrt -p -i 0 $PID
낮은 우선순위로 프로세스를 실행하는 데 사용됩니다.nice 19 -p $PID
chrt -p -i 0 $PID
프로세스를 "실제" 유휴 스케줄러에 넣습니다.
답변3
미래의 사람들을 위해 여기에 완전한 nice
예가 있습니다.압력.
- 테스트 머신에는 2개의 CPU가 있습니다.
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 2
...
- 설치하다
stress
:apt-get install stress
- 압력을 가하기 위해 우선 순위가 낮은 호출로 2개의 CPU를 사용 중으로 유지합니다.
nice -20 stress --cpu 2
- 다음 명령을 사용하여 CPU 사용량을 확인하십시오
top
.
v
v
v
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15894 ubuntu 39 19 8240 96 0 R 99.7 0.0 0:06.43 stress
15895 ubuntu 39 19 8240 96 0 R 99.7 0.0 0:06.42 stress
이는 두 CPU가 모두 가득 차 있음을 나타냅니다.
- 우선순위가 높은 단일 CPU 스트레스 프로세스를 시작합니다.
nice --20 stress --cpu 1
- CPU 사용량을 다시 확인해보세요
top
v
v
v
v
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15928 ubuntu 20 0 8240 100 0 R 99.7 0.0 0:24.02 stress
15894 ubuntu 39 19 8240 96 0 R 51.2 0.0 1:12.46 stress
15895 ubuntu 39 19 8240 96 0 R 48.8 0.0 1:12.35 stress
이는 단일 코어 스트레스를 받는 프로세스가 전체 CPU를 가져오는 반면 우선 순위가 낮은 프로세스는 나머지 1개의 CPU를 공유함을 보여줍니다.
- 반면, 위의 모든
stress
호출을 종료하고 단 3개의 프로세스만 트리거하면stress --cpu 3
각 프로세스에 CPU의 66%가 제공됩니다.
답변4
프로세스를 하위 수준 프로세스로 실행하려면 이 예제를 시도해 보세요.
당신의 직업이 좋다면tar xvf 자산.zip
사용
멋진 tar xvf 자산.zip
그 이후에는 발행
감압 과정을 모니터링하기 위한 상단
보조 | grep "타르"
구체적인 것을 시도해보세요CPU 한도
wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
sudo cp src/cpulimit /usr/bin