Time Slice

리눅스

목록 보기
7/8
post-thumbnail

1) Time slice

TSi=WiW×LTS_i = \frac{W_i}{\sum W} \times L

2) sched_nr_latency

sched_nr_latency=sysctl_sched_latencysysctl_sched_min_granularitysched\_nr\_latency = \frac{\text{sysctl\_sched\_latency}}{\text{sysctl\_sched\_min\_granularity}}

3) vruntime 증가량

Δvr=Δt×W0W\Delta vr = \Delta t \times \frac{W_0}{W}

문제 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

문제

  1. 전체 weight 합을 구하시오.
  2. 각 태스크의 time slice를 ms 단위로 계산하시오.
    (소수 둘째 자리에서 반올림)

⭐ 문제 5. sched_nr_latency를 이용한 Scheduling Latency 결정

주어진 조건

  • sysctl_sched_latency = 8ms
  • sysctl_sched_min_granularity = 1ms

문제

  1. sched_nr_latency를 구하시오.
  2. nr_running = 6 일 때 실제 scheduling latency는 얼마인가?
  3. nr_running = 20 일 때 실제 scheduling latency는 얼마인가?

문제 6. sched_nr_latency를 이용한 Scheduling Latency 결정 2

주어진 조건

  • sysctl_sched_latency = 12ms
  • sysctl_sched_min_granularity = 2ms

문제

  1. sched_nr_latency를 구하시오.
  2. nr_running = 4 일 때 실제 scheduling latency(L)은 얼마인가?
  3. 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\sum W = 1024 + 820 + 335 + 1991 = 4170

Time slice 계산

TSi=Wi4170×24TS_i = \frac{W_i}{4170} \times 24

Task A

TSA=10244170×245.89msTS_A = \frac{1024}{4170} \times 24 \approx 5.89ms

Task B

TSB=8204170×244.72msTS_B = \frac{820}{4170} \times 24 \approx 4.72ms

Task C

TSC=3354170×241.93msTS_C = \frac{335}{4170} \times 24 \approx 1.93ms

Task D

TSD=19914170×2411.46msTS_D = \frac{1991}{4170} \times 24 \approx 11.46ms

문제 5 풀이

sched_nr_latency

sched_nr_latency=81=8sched\_nr\_latency = \frac{8}{1} = 8

nr_running = 6

68L=8ms6 \le 8 \Rightarrow L = 8ms

nr_running = 20

20>8L=20ms20 > 8 \Rightarrow L = 20ms

문제 6 풀이

전체 weight 합

W=1024+1024+3121=5169\sum W = 1024 + 1024 + 3121 = 5169

Time slice 계산

TSi=Wi5169×20TS_i = \frac{W_i}{5169} \times 20

Task X

TSX3.96msTS_X \approx 3.96ms

Task Y

TSY3.96msTS_Y \approx 3.96ms

Task Z

TSZ12.08msTS_Z \approx 12.08ms

문제 7 풀이

vruntime 증가량 공식

Δvr=6×1024W\Delta vr = 6 \times \frac{1024}{W}

Task P

ΔvrP=6.00ms\Delta vr_P = 6.00ms

Task Q

ΔvrQ7.49ms\Delta vr_Q \approx 7.49ms

Task R

ΔvrR18.34ms\Delta vr_R \approx 18.34ms

정리

  • CFS는 latency를 먼저 정한 뒤, weight 비율에 따라 time slice를 분배한다.
  • 태스크 수가 많아지면 latency는 min_granularity 보장을 위해 증가한다.
  • vruntime은 weight가 작을수록 더 빠르게 증가한다.

0개의 댓글