Intro
RTA는 Real-Time 분야 공부를 하며 자주 봤던 내용들이지만, 수렴성 증명 등은 꽤나 흥미로워서 글로 남기게 되었다. 가장 쉬운 schedulability analysis는 utilization를 계산하여 utilization bound보다 작은지 검사하는 것이지만, 최대한 보수적인 bound를 잡기 때문에 실제로는 schedulable하나 utilization 자체는 bound를 넘는 경우가 많다. 물론 time complexity 면에서는 utilization bound만 검사하는 것이 좋을 수 있으나, 정확한 schedulability anlaysis를 아는 것도 중요하다. 본 글에서 소개하는 두 방법은 주어진 task가 정확히 schedulable한지를 판단하는 방법들이다.
System Model
task set {τ1,…,τn}에 대해 각 task는 τi=(ei,pi,di)와 같이 나타낼 수 있다.
- ei : WCET (Worst Case Execution Time)
- pi : period.
- di : deadline
- processor demand Wi(t)=∑j=1iej⌈t/pj⌉
- Fixed-Priority scheduling을 사용한다. 즉, 한 task 내의 job들은 모두 같은 priority를 가진다. 편의를 위해 task set이 priority가 높은 순으로 배열되어있다고 가정한다. (τ1의 job들의 priority가 가장 높고 τn의 job들의 priority가 가장 낮다.)
- preemption을 허용한다.
RTA (Response Time Analysis)
정확한 response time을 구할 수 있는 방법이다.
ri(t+1)=ei+1≤j<i∑⌈pjri(t)⌉⋅ejri(0)=1≤j≤i∑ej
ri(0)부터 시작하여 ri(t+1)=ri(t)일 때까지 위 재귀식을 반복한다. 수렴했을 때의 ri(t) 값이 최종적인 τi의 response time ri이며 ri≤di 인 경우 해당 task는 schedulable하다.
직관적으로 생각하자면, response time은 자신의 실행 시간과 preemption을 당한 시간이다. 따라서 +의 오른쪽 항이 preemption을 당한 시간이다.
response time이 가장 길어지는 경우는 τi보다 priority가 높은 모든 task에 대해 최대한 많은 preemption을 당한 경우이다. 이는 모든 task가 같은 시점에 release되는 critical instant 조건이며, 이 경우 적어도 response time은 자신과 자신보다 priority가 높은 모든 task의 실행 시간의 합보다는 크다. 따라서 ri(0)이 위와 같다. (ei로 시작해도 되지만 재귀 횟수가 더 길어질 뿐이다.) 재귀를 반복하여 길어진 response time에 대해 높은 priority task들이 새로 release될 수 있고 이 경우 해당 task의 실행 시간만큼 다시 preemption이 되므로 그만큼을 다시 더해준다.
Example
e1=4,p1=d1=10
e2=6.1,p2=d2=14
e3=1,p3=d3=70
에 대해
r20=4+6.1=10.1
r21=6.1+⌈1010.1⌉⋅4=14.1>14
response time이 deadline보다 길어졌으므로 τ2는 schedulable하지 않다.
그러나,
r30=4+6.1+1=11.1
r31=1+⌈1011.1⌉⋅4+⌈1411.1⌉⋅6.1=15.1
r32=1+⌈1015.1⌉⋅4+⌈1415.1⌉⋅6.1=21.2
r33=1+⌈1021.2⌉⋅4+⌈1421.2⌉⋅6.1=25.2
r34=1+⌈1025.2⌉⋅4+⌈1425.2⌉⋅6.1=25.2<70
이므로 τ3는 schedulable하다.
이처럼 유의할 점은 task set 전체가 schedulable한지 판단하기 위해서는 priority가 가장 낮은 task 하나만 보면 안 되고 모든 task에 대해 검사해봐야 한다는 것이다.
RTA의 수렴성 증명
직관적으로는 response time을 구하는 재귀식이 수렴할 것처럼 보이지만, 정말 그럴까? task가 schedulable하지 않다고 하면 수렴하지 않을 것도 같다.
Thm) RTA의 재귀식은 task set의 utilization이 1 이하이면 수렴한다.
ri(t+1)=ei+∑1≤j<i⌈pjri(t)⌉⋅ej
pf)
단조 증가하고 상한이 존재하는 수열은 수렴한다는 것을 이용하여, 수렴성을 증명한다.
(i) 상한 존재
utilization이 1보다 작으므로
p1e1+⋯+pnen≤1⟺p2⋯pne1+⋯+p1⋯pn−1en≤p1⋯pn
를 만족한다. p1⋯pn의 시간을 생각했을 때 τ1은 최대 p2⋯pn번 release될 수 있고 τn−1은 최대 p1⋯pn−2pn만큼 release될 수 있다. processor가 work-conserving (pending job이 있는 경우 idle하지 않음)이라고 가정하면, 남은 p1⋯pn−1en 시간 동안 τn은 적어도 한 번 실행된다. 따라서 τn의 response time이 p1⋯pn 이하라고 보장할 수 있다.
(ii) 단조 증가
증명의 편의를 위해 ri(0)=ei라 하면
ri(1)=ei+∑1≤j<i⌈pjri(0)⌉⋅ej≥ri(0)+∑1≤j<i⌈pjri(0)⌉⋅ej≥ri(0)
이제 ri(k)≥ri(k−1) 이라 가정하면
ri(k+1)=ei+∑1≤j<i⌈pjri(k)⌉⋅ej≥ei+∑1≤j<i⌈pjri(k−1)⌉⋅ej=ri(k)
이므로 수학적 귀납법에 의해 임의의 k = 0, 1, 2, ...에 대해 ri(k)는 단조 증가한다.
(i), (ii)에 의해 재귀식은 수렴한다.
□
유의할 점은 수렴성을 증명한 것이지, 수렴한다고 schedulable하다는 것은 아니라는 것이다.
TDA (Time Demand Analysis)
방법론 자체는 이전의 글에서 소개한 내용이다. 근데 이름을 Time Demand Analysis라고 하지는 않았는데 그렇게 부른다고 한다.
TDA (Time Demand Analysis)
periodic task τ1,…,τn에 대해
Si={k⋅pj∣j=1,…,i ; k=1,…,⌊pjpi⌋}
1. RM 하에서 τi가 스케줄 가능할 필요충분조건은
Li=min{t∈Si}Wi(t)/t≤1
2. RM 하에서 task set 전체가 스케줄 가능할 필요충분조건은
L=max{1≤i≤n}Li(t)≤1
더 간단하게는 각 scheduling point에 대해 Wi(t)≤t인 t가 있으면 해당 task는 schedulable하다. 직관적으로는 demand보다 supply가 같거나 많아지는 시점이 있으면 schedulable하다는 의미다.
증명은 이전의 글에 있으니 참고하길 바란다.
Example
τ1:e1=40,p1=100
τ2:e2=40,p2=150
τ3:e3=100,p3=350
scheduling point Si={100,150,200,300,350} 이고
t=100:e1+e2+e3=40+40+100>100
t=150:2e1+e2+e3=2⋅40+40+100>150
t=200:2e1+2e2+e3=2⋅40+2⋅40+100>200
t=300:3e1+2e2+e3=3⋅40+2⋅40+100≤300
t=350:4e1+3e2+e3=4⋅40+3⋅40+100>350
t = 300일 때 supply가 demand 이상이므로 τ3은 schedulable하다.
RTA와 TDA는 동치인가?
ri(t+1)=ei+1≤j<i∑⌈pjri(t)⌉⋅ej
RTA의 재귀식에서 왼쪽이 supply, 오른쪽이 demand (본인의 demand와 higher priority task의 demand)라고 생각하면 그 의미는 같아보인다. 따라서 schedulability 면에서는 동치라고 생각할 수 있다.
차이점이 있다면 RTA는 response time을 정확하게 구할 수 있다는 장점이 있으나, time complexity가 TDA보다는 크다. (근데 scheduling point가 많아지면 TDA도 꽤나 클 것 같긴 하다.)
사진의 고양이가 설명해주는 것 같아서 흥미롭게 읽었습니다 ^^ 정말 똑똑해보이는 고양이내요