매우 낮은 우선순위로 Linux 프로세스를 실행하시나요?

매우 낮은 우선순위로 Linux 프로세스를 실행하시나요?

그다지 중요하지 않지만 CPU 리소스를 많이 소모하는 일반 프로세스가 있습니다. 매우 중요한 또 다른 프로세스가 있지만 대부분의 시간 동안 유휴 상태로 유지되지만 작업이 수행되면 많은 컴퓨팅 성능이 필요합니다.

nice -20 ./low_priority_processand로 실행을 시도했지만 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프로세스를 "실제" 유휴 스케줄러에 넣습니다.

http://linux.die.net/man/1/chrt

답변3

미래의 사람들을 위해 여기에 완전한 nice예가 있습니다.압력.

  1. 테스트 머신에는 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
...
  1. 설치하다 stress:apt-get install stress
  2. 압력을 가하기 위해 우선 순위가 낮은 호출로 2개의 CPU를 사용 중으로 유지합니다.nice -20 stress --cpu 2
  3. 다음 명령을 사용하여 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가 모두 가득 차 있음을 나타냅니다.

  1. 우선순위가 높은 단일 CPU 스트레스 프로세스를 시작합니다.nice --20 stress --cpu 1
  2. 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를 공유함을 보여줍니다.

  1. 반면, 위의 모든 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

cpulimit -l 50 파이썬 0 9999999999 > /dev/null &

관련 정보