1. Model de les Actualitzacions
d'openSUSE
Daniel Massaguer Jordi Massaguer
2. Problema
El cost de mantenir software appliances i distribucions
Linux depèn de de les actualitzacions dels diferents
components.
Quan serà la següent actualització ?
?
3. Dificultats
Les actualitzacions depenen de factors no observables i que
canvien al llarg del temps com ara:
- Dedicació dels autors:
- Temps complert
- Temps parcial
- Temps lliure
- Experiència (software + area)
- Metodologies i eines (e.g., junit, Metodologies àgils)
- Nombre de programadors
- Motivació
La relació entre actualitzacions i altres factors observables
es desconeguda:
- Quan va ser la última actualització
- Actualització d'altres components
- Maduresa del projecte
- Tipus d'actualització (e.g., de seguretat)
- Lineas de Codi
4. Dos Models
1.- Model de cues
x : variable aleatòria = 'temps entre actualitzacions d'un component'
Model Parametric: Process Poisson
x es comporta com una distribucio estadistica (exponencial):
x ~ exp(λ=1/x)
Model no parametric
x no es comporta com una distribucio estadistica, pero podem mesurar
propietats basiques d'x (mitjana, desviacio standard).
x~?
5. Dos Models
1.- Model de cues
x : variable aleatòria = 'temps entre actualitzacions d'un component'
Model Parametric: Process Poisson
x es comporta com una distribucio estadistica (exponencial):
x ~ exp(λ=1/x)
Model no parametric
x no es comporta com una distribucio estadistica, pero podem mesurar
propietats basiques d'x (mitjana, desviacio standard).
x~?
2.- Time Series (series temporals)
y = f(t)
y = 'numero d'actualitzacions durant un interval de temps (e.g., 1a
quinzena de Gener)'
*un exemple tipic de series temporals es el preu de les accions d'una companyia al llarg del temps
6. Dos Models
1.- Model de cues
x : variable aleatòria = 'temps entre actualitzacions d'un component'
Model Parametric: Process Poisson
x es comporta com una distribucio estadistica (exponencial):
x ~ exp(λ=1/x)
Model no parametric
x no es comporta com una distribucio estadistica, pero podem mesurar
propietats basiques d'x (mitjana, desviacio standard).
x~?
2.- Time Series (series temporals)
y = f(t)
y = 'numero d'actualitzacions durant un interval de temps (e.g., 1a
quinzena de Gener)'
Quin model es mes appropriat?
Quin model es mes appropriat?
→ Estudi preliminar amb 1 any d'actualitzacions per 11.0 --i586
→ Estudi preliminar amb 1 any d'actualitzacions per 11.0 i586
7. Process Poisson xi ~ exp(λ=1/x)
x = 'temps entre actualitzacions d'un component'*
x ~ exp(λ=1/x)** → No és un procés Poisson
Time between updates
i586 - openSUSE 11.0
250
200
150
Frequency
100
50
0
0 28 56 84 112 140 168 196 224 252 280 308 336 364 392
time [days] (bins of 28 days)
*assumim que el “temps entre updates” de tots els components es comporten de forma similar. Només
tenim en compte aquells components amb més d'una actualització (6.56%).
**segons els tests d'Anderson-Darling, Kolmogoronov-Smirnov, i Chi-squared.
***segons els mateixos tests, x no es comporta com una distribucio normal o altres distribucions conegudes.
8. Model No Parametric xi ~?
x = 'temps entre actualitzacions d'un component'*
x = 73,5 dies
stdev(x) = 53,19 dies
Time between updates
i586 - openSUSE 11.0
250
200
150
Frequency
100
50
0
0 28 56 84 112 140 168 196 224 252 280 308 336 364 392
time [days] (bins of 28 days)
*assumim que el “temps entre updates” de tots els components es comporten de forma similar. Només
tenim en compte aquells components amb més d'una actualització (6.56%).
9. Model No Parametric x ~?
x = 'temps entre actualitzacions d'un component'*
x = 73,5 dies
stdev(x) = 53,19 dies
75% : [21,4 dies , 4,6 mesos] → massa variabilitat!
Time between updates
i586 - openSUSE 11.0
250
200
150
Frequency
100
50
0
0 28 56 84 112 140 168 196 224 252 280 308 336 364 392
time [days] (bins of 28 days)
*assumim que el “temps entre updates” de tots els components es comporten de forma similar. Només
tenim en compte aquells components amb més d'una actualització (6.56%).
10. Time Series
Updates per quarter Frequency of updates per quarter
i586 - openSUSE 11.0 i586 security updates - openSUSE 11.0
0.4
0.35
0.3
(Normalized) frequency
0.2 0.3
0.1 0.25
0 0.2
Winter (Jan-Mar) 0.15
Summer (July-Sep)
0.1
Academic quarter
0.05
0
Fall (Oct-Dec) Spring(Apr-June)
Summer (July-Sep) Winter (Jan-Mar)
Frequency of updates per quarter
i586 recommended updates - openSUSE 11.0
Actualitzacions de
0.6 Seguretat : tot l'anya slight
0.5 increase in Winter and decrease
0.4 in Spring.
0.3
0.2
Actualitzacions
Recomenades: La majoria al
0.1
principi
0
Fall (Oct-Dec) Spring(Apr-June)
Summer (July-Sep) Winter (Jan-Mar)
11. Time Series
Nu m ber of up dat es per 1/2 a m ont h
i586 secur it y u pd at es - open SUSE 1 1.0
120
100
h
max
80
60
40 h
min
20
0
May 15, 08
Jun 15, 08
Jul 15, 08
Aug 15, 08
Sep 15, 08
Oct 15, 08
Nov 15, 08
Dec 15, 08
Jan 31, 09
Feb 28, 09
Mar 31, 09
Apr 30, 09
May 31, 09
Jan 7, 09
Actualitzacions de Seguretat:
h (t) = max(y) = 109
max
h (t) = min (y) = 14
min
h (t) = A(t)*sin(B(t)*t + C(t)) + D(t)
sin
Es poden aproximar amb una
funcio sinusoidal !!!
12. 20
40
60
80
0
May 15, 08
h
May 31, 08
h
Jun 15, 08
min
Jun 30, 08
max
Jul 15, 08
Jul 31, 08
Aug 15, 08
Aug 31, 08
Sep 15, 08
Time Series
Sep 30, 08
Oct 15, 08
Oct 31, 08
Nov 15, 08
Nov 30, 08
Dec 15, 08
Dec 21, 08
Jan 7, 09
Jan 15, 09
Jan 31, 09
Feb 15, 09
Feb 28, 09
Mar 15, 09
Mar 31, 09
Nu m ber of up dat es per 1/2 a m ont h
Apr 15, 09
i586 secur it y u pd at es - open SUSE 1 1.0
Apr 30, 09
May 15, 09
h
h
h
May 31, 09
sin
min
Jun 20, 09
max
(t) = min (y) = 0
(t) = max(y) = 74
funcio sinusoidal !!!
Actualitzacions Recomenades :
(t) = A(t)*sin(B(t)*t + C(t)) + D(t)
Es poden aproximar amb una
13. Dos Models
Model de cues
x : variable aleatòria = 'temps entre actualitzacions d'un component'
Model Parametric: Process Poisson
x es comporta com una distribucio estadistica (exponencial):
x ~ exp(λ=1/x)
Model no parametric
x no es comporta com una distribucio estadistica, pero podem mesurar
propietats basiques d'x (mitjana, desviacio standard).
Time Series (series temporals)
y = f(t)
y = 'numero d'actualitzacions durant un interval de temps (e.g., 1a
quinzena de Gener)'
14. Time Series: 11.0, 11.1, 11.2 (Jan 25, 2010)
11.0 i i11.1 , ,rec. i iseg i586, es poden modelar amb funcions sinusoidals*
11.0 11.1 rec. seg i586, es poden modelar amb funcions sinusoidals*
h(t) = A(t)*sin(B(t)*t + C(t)) + D(t)
h(t) = A(t)*sin(B(t)*t + C(t)) + D(t)
*(amb diferents valors per A(t), B(t), C(t), i D(t))
15. Time Series: 11.0, 11.1, 11.2 (Jan 25, 2010)
11.0 i i11.1 , ,rec. i iseg i586, es poden modelar amb funcions sinusoidals*
11.0 11.1 rec. seg i586, es poden modelar amb funcions sinusoidals*
h(t) = A(t)*sin(B(t)*t + C(t)) + D(t)
h(t) = A(t)*sin(B(t)*t + C(t)) + D(t)
*(amb diferents valors per A(t), B(t), C(t), i D(t))
16. Time Series: 11.0, 11.1, 11.2 (Jan 25, 2010)
11.0 i i11.1 , ,rec. i iseg i586, es poden modelar amb funcions sinusoidals*
11.0 11.1 rec. seg i586, es poden modelar amb funcions sinusoidals*
h(t) = A(t)*sin(B(t)*t + C(t)) + D(t)
h(t) = A(t)*sin(B(t)*t + C(t)) + D(t)
*(amb diferents valors per A(t), B(t), C(t), i D(t))
17. Time Series: 11.0, 11.1, 11.2 (Jan 25, 2010)
11.0 i i11.1 , ,rec. i iseg i586, es poden modelar amb funcions sinusoidals*
11.0 11.1 rec. seg i586, es poden modelar amb funcions sinusoidals*
h(t) = A(t)*sin(B(t)*t + C(t)) + D(t)
h(t) = A(t)*sin(B(t)*t + C(t)) + D(t)
*(amb diferents valors per A(t), B(t), C(t), i D(t))
18. Time Series: 11.0, 11.1, 11.2 (Jan 25, 2010)
La Majoria de les actualitzacions recomenades
es publiquen abans que surti la seguent
distribucio (>70%)
19. Conclusions i feina futura
• Un model basat en time series es apropriat.
• La majoria d'actualitzacions recomenades es publiquen abans
que surti la seguent distribucio.
• El numero d'actualitzacions de seguretat es mante
aproximadament constant al llarg de la vida d'una actualitzacio.
• Feina futura:
• Proposar i estudiar model predictiu de les actualitzacions de
diferents software appliances
• http://updateforecast.appspot.com
→ estadistiques, time series, i prediccions actualitzades
automaticament.
• Estudiar models que tinguin en compte actualitzacions
compartides i relacions entre diferents distros.
• Estudiar relacio entre bugs publicats a Bugzilla i
actualitzacions.