1) Time slice
TSi=∑WWi×L
2) sched_nr_latency
sched_nr_latency=sysctl_sched_min_granularitysysctl_sched_latency
3) vruntime 증가량
Δvr=Δt×WW0
문제 4. Latency 고정, Weight 기반 Time Slice 계산
단일 CPU 환경에서 runnable 태스크 4개가 존재한다.
Scheduling latency는 L = 24ms로 고정이다.
주어진 조건
- Task A: W = 1024
- Task B: W = 820
- Task C: W = 335
- Task D: W = 1991
문제
- 전체 weight 합을 구하시오.
- 각 태스크의 time slice를 ms 단위로 계산하시오.
(소수 둘째 자리에서 반올림)
⭐ 문제 5. sched_nr_latency를 이용한 Scheduling Latency 결정
주어진 조건
- sysctl_sched_latency = 8ms
- sysctl_sched_min_granularity = 1ms
문제
- sched_nr_latency를 구하시오.
- nr_running = 6 일 때 실제 scheduling latency는 얼마인가?
- nr_running = 20 일 때 실제 scheduling latency는 얼마인가?
문제 6. sched_nr_latency를 이용한 Scheduling Latency 결정 2
주어진 조건
- sysctl_sched_latency = 12ms
- sysctl_sched_min_granularity = 2ms
문제
- sched_nr_latency를 구하시오.
- nr_running = 4 일 때 실제 scheduling latency(L)은 얼마인가?
- nr_running = 10 일 때 실제 scheduling latency(L)은 얼마인가?
문제 7. vruntime 증가량 계산
기준 weight는 1024이다.
각 태스크가 실제 실행 시간 6ms를 얻었을 때,
각 태스크의 vruntime 증가량을 구하시오.
주어진 조건
- Task P: W = 1024
- Task Q: W = 820
- Task R: W = 335
(소수 둘째 자리에서 반올림)
문제 4 풀이
전체 weight 합
∑W=1024+820+335+1991=4170
Time slice 계산
TSi=4170Wi×24
Task A
TSA=41701024×24≈5.89ms
Task B
TSB=4170820×24≈4.72ms
Task C
TSC=4170335×24≈1.93ms
Task D
TSD=41701991×24≈11.46ms
문제 5 풀이
sched_nr_latency
sched_nr_latency=18=8
nr_running = 6
6≤8⇒L=8ms
nr_running = 20
20>8⇒L=20ms
문제 6 풀이
전체 weight 합
∑W=1024+1024+3121=5169
Time slice 계산
TSi=5169Wi×20
Task X
TSX≈3.96ms
Task Y
TSY≈3.96ms
Task Z
TSZ≈12.08ms
문제 7 풀이
vruntime 증가량 공식
Δvr=6×W1024
Task P
ΔvrP=6.00ms
Task Q
ΔvrQ≈7.49ms
Task R
ΔvrR≈18.34ms
정리
- CFS는 latency를 먼저 정한 뒤, weight 비율에 따라 time slice를 분배한다.
- 태스크 수가 많아지면 latency는 min_granularity 보장을 위해 증가한다.
- vruntime은 weight가 작을수록 더 빠르게 증가한다.