엔지니어 은성의 성장록

[RHCSA] RHEL7 - nice, renice 프로세스 우선순위 실습 본문

RHCSA

[RHCSA] RHEL7 - nice, renice 프로세스 우선순위 실습

엔지니어 은성 2021. 11. 11. 11:15

▶ ps로 nice 수준 표시 

# ps axo pid,comm,nice --sort==-nice 

▶ 다른 nice 수준으로 프로세스 시작

- 프로세스 시작할 때 일반적으로 상위 프로세스 nice 상속 

(명령줄에서 프로세스 시작 -> 시작한 쉘 프로세스와  동일한 nice, 대부분 0의 nice 수준으로 새 프로세스 실행)

 

다른 nice 수준의 프로세스 시작하려면 사용자와 시스템 관리자 모두 nice도구를 사용하여 명령 실행

 

※ 옵션 X (10)

nice <command> : nice 수준 10의 command 실행

※ 옵션 O

nice -n <NICELEVEL> 

 

예시

# nice -n 15 dogecoinminer & 

★ 권한이 없는 사용자는 양의 nice 수준만 설정할 수 있음 (0~19) 

★ 루트만이 음의 nice 수준을 설정할 수 있음 (-20 ~ -1)

▶ 기존 프로세스의 nice 수준 변경 (renice)

# renice -n <nicelevel> <PID> 

예시 origami@home 프로세스 nice 수준을 -7로 변경하기

# renice -n -7 $(pgrep origami@home) 

 

★ 일반 사용자는 renice를 사용하여 nice 수준을 높일 수만 있고,

루트 사용자만 renice를 사용하여 nice 수준을 낮출 수 있음!

★ top 명령어 r -> 새 nice 수준으로 변경하고자 하는 PID 입력

 

▶실습  <nice, renice>

1. 특수파일 /proc/cpuinfo를 사용하여 시스템 코어 수 확인 후

각 코어에 대해 sha1sum /dev/zero & 명령에 대한 두 개의 인스턴스 시작 

 

1. /proc/cpuinfo를 사용하여 코어 수 확인하기 

# NCORES=$(grep -c  '^processor' /proc/cpuinfo)

2. 수동으로 시스템의 모든 코어에 대한 sha1sum /dev/zero & 명령 실행

# for I in $ ( seq $((NCORES*2)) )
> do
>  sha1sum /dev/zero &
> done

3. 예상한 백그라운드 작업이 모두 실행되는지 확인

# jobs

4. ps 및 pgrep 명령어 사용 sha1sum 프로세스의 cpu 사용량 검사 

# ps u $(pgrep sha1sum)

(모든 sha1sum의 프로세스 PCU 사용량은 거의 동일)

 

5. kiall 명령을 사용하여 sha1sum 프로세스 종료

# killall sha1sum

6. 각 코어에 대해 두 개의 sha1sum /dev/zero & 명령 시작 그중 하나에 정확히 10 nice 수준 지정

#for I in $( seq $((NCORES*2-1)) )
> do
>  sha1sum /dev/zero &
> done
#nice -n 10 sha1sum /dev/zero &

7. ps명령을 사용하여 sha1sum 명령의 CPU 사용량 검사 ps

# ps -opid,pcpu,nice,comm $(pgrep sha1sum)

nice 수준 10은 다른 인스턴스에 비해 훨씬 더 적은 CPU 사용 확인

 

8. renice 명령을 사용하여 nice 수준 10 -> 5로 설정

# renice -n 5 <PID>

top에서 nice 수준 변경

1. r을 눌러 PID 입력 -> Enter -> nice 수준 입력 후 -> Enter -> NI 변경 확인 top 종료 (q)

 모든 sha1sum 프로세스 종료 

# killall sha1sum
Comments