[RHCSA] RHEL7 - nice, renice 프로세스 우선순위 실습
▶ 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