PR(Priority) : 값의 범위 = [-100, 39]
PR값은 실제로 process가 OS에 의해 동작하게 될 priority를 의미한다. 이 값은 사용자가 바로 지정 할수는 없다.
PR값의 범위는 [-100, -2]까지는 realtime process를 의미하고, [0, 39]는 상대적으로 우선순위가 낮은 normal process를 의미한다.
PR이 -100에 가까울수록 우선순위가 높아지고, 39에 가까울수록 우선순위가 낮아진다.
NI(Nicevalue or Niceness) : 값의 범위 = [-20, 19]
NI값은 유저가 지정하는 값으로, normal process의 PR을 지정하는 데 사용된다. 이때 아래와 같은 공식으로 PR값이 결정된다.
PR = NI + 20 (Normal Process에서만)
NI 값 설정하기 : Normal Process의 우선순위 설정
기본적으로 사용자가 실행한 프로그램은 NI가 0으로 설정된다. 그러나 아래와 같은 방식으로 NI값을 조정하여 실행할 수 있다.
nice -n <nice_value> ./myProgram
또한 실행 뒤에도, 다음과 같은 두가지 방법으로 NI값을 재설정할 수 있다.
Renice
renice -n <nice_value> -p <process_id>
Top
PR 값 설정하기: Realtime Process의 우선순위 설정
Ubuntu의 5가지 scheduling policies
6. SHCED_DEADLINE a real-time policy
Realtime process로 설정하기
PR과 NI값 확인하기
Python에서 자기 자신의 pid확인하기
CPU 각 core별 utilization 확인하기
Real time process monitoring 및 kill하기
SCHED_DEADLINE
상세 알고리즘설명: https://www.kernel.org/doc/Documentation/scheduler/sched-deadline.txt
PPT: https://elinux.org/images/f/fe/Using_SCHED_DEADLINE.pdf
sudo chrt -d -T <runtime nano sec> -D <deadline nano sec> -P <period nano sec> 0 <command>
10 ms = 10000000
sudo chrt -d -T 10000000 -D 10000000 -P 10000000 0 ./run_python.sh
sudo chrt -d -T 10000000 -D 20000000 -P 30000000 0 /opt/conda/bin/python dnc/training_process.py
sudo chrt -d -T 10000000 -D 15000000 -P 20000000 -p 0 <pid>
sudo chrt -d -T 100000000 -D 100000000 -P 100000000 -p 0 6557
* RUNTIME <= DEADLINE <= PERIOD
Omitting runtime will cause runtime to be set to the deadline value
Omitting deadline will cause deadline to be set to the period value
Omitting period will cause period to be set to the deadline value
* 전반적 실행방법: https://access.redhat.com/solutions/3742421
* chrt: https://man7.org/linux/man-pages/man1/chrt.1.html
* shced: https://man7.org/linux/man-pages/man7/sched.7.html
vim run_python.sh
/opt/conda/bin/python dnc/training_process.py
chmod 777 run_python.sh
sudo chrt --rr 1 ./run_python.sh
sched 명령어
chrt 명령어 USER가 실행하기
'Development > Free Topic' 카테고리의 다른 글
Real Time C Programming (0) | 2021.01.28 |
---|---|
AWS Jupyter setting (0) | 2020.09.06 |
Ubuntu 처음 시작하기, 여러가지 설정 (0) | 2020.06.24 |
라즈베리파이 OS 포멧/초기화/업데이트 (0) | 2020.06.21 |
Raspberry Pi Realtime Audio Processing (0) | 2020.06.14 |
댓글