0 Punkte - Institut für Pervasive Computing

Transcription

0 Punkte - Institut für Pervasive Computing
Übung Embedded and Pervasive Systems
SS 2009, Übung 2
Institut für Pervasive Computing
Univ.-Prof. Dr. Alois Ferscha
Elektr. Abgabe: Bis Di, 31. März 2009, 12.00 Uhr
Dipl.-Ing. Dr. Andreas Riener
Zuname:
Tutor:
Vorname:
Übungsgruppe:
Matr. Nr.:
SKZ:
Punkte (max. 24)
0) Einführung in Octave (0 Punkte)
Machen sie sich mit dem numerischen System „Octave“ und dessen Funktionen vertraut. Sehr gute Tutorials
zum Durcharbeiten bieten der Lehrstuhl für Angewandte Mechanik, TU München bzw. das Department for
Engineering, University of Cambridge an. Sie finden beide direkt im Internet bei den jeweiligen Instituten unter
http://www.amm.mw.tum.de/fileadmin/Image_Archive/Lehre/Prakt_MKS/Tutorial.pdf
http://www-mdp.eng.cam.ac.uk/web/CD/engapps/octave/octavetut.pdf
Anmerkung:
Sämtliche Beispiele in diesem Übungsblatt gehen von einer konstanten Fehlerrate λ
und einer exponentialverteilten Zuverlässigkeit R(t) aus.
1) Scripts, Funktionen, Matrizen (3+4+5=12 Punkte)
a) Schreiben Sie ein Octave-Skript mit dem Namen rtDependability das aus den zwei Grössen Fehlerrate
lambda und mean time to repair mttr die restlichen Bestimmungsparameter mttf, mtbf, availability
errechnet. lambda und mttr müssen vor dem Aufruf des Skripts im Workspace definiert und befüllt
werden.
Hinweise:
ƒ Das Skript selbst soll keine Ausgaben liefern (dh. keine disp- oder fprintf-Befehle; Ausgaben aller
Zwischenschritte sind zu unterdrücken; Fehlerbehandlung durch Octave, dh. keine Abfragen notwendig).
ƒ Sie brauchen in ihrer Skript-Implementierung nicht auf ungültige Werte von lambda und mttr prüfen.
ƒ Bei Eingabe von help rtDependability soll ein sprechender Hilfetext mit Funktionsbeschreibung
des Skripts ausgegeben werden.
Testen Sie ihr Skript mindestens mit folgenden Settings, schliessen Sie die Ergebnisse für mttf, mtbf und
availability Ihrem Protokoll an:
(i)
lambda = 1.33e-6, mttr = 2
(ii)
lambda = 5e-20, mttr = 72
(iii)
lambda = 0, mttr = 0
(iv)
lambda = unendlich, mttr = 0
(v)
help rtDependability
b) Erweitern Sie das Skript zu einer Funktion mit Ein- und Ausgabeparametern laut folgender
Schnittstellenbeschreibung (3+1 Punkte):
[mtbf, mttf, availability] = rtDependabilityFkt (lambda, mttr)
Testen Sie auch diese Funktion mindestens mit den oben angegebenen Testfällen. Welche Unterschiede
fallen Ihnen beim Aufruf bzw. bei der Implementierung zwischen dem Skript und der Funktion auf?
c) Gesucht ist eine Octave-Funktion namens reliability(...) die die Zuverlässigkeit eines Systems aus
seriell und parallel angeordneten Komponenten nach einer gewissen Zeitspanne t, ausgehend von einer
Startzeit t0, bestimmt.
Die Funktion soll 3 Parameter entgegennehmen und verarbeiten:
1) mttf: Wird als Matrix mit den MTTF-Werten (mean time to failure) jeder Einzelkomponente übergeben.
Parallel geschaltete Komponenten sind jeweils in einer Spalte angegeben, die einzelnen Spalten
hingegen sind seriell angeordnet. Folgendes Beispiel soll den Aufbau der Matrix demonstrieren (parallel
geschaltete Komponenten können unterschiedliche MTTF’s aufweisen):
MTTFB1
MTTFD1
MTTFA
MTTFB2
MTTFC
MTTFE
MTTFD2
MTTFB3
Dieses System aus Komponenten wird durch die folgende Matrix repräsentiert:
⎛ MTTFA
⎜
mttf = ⎜ 0
⎜ 0
⎝
MTTFB1
MTTFC
MTTFD1
MTTFB2
MTTFB3
0
0
MTTFD2
0
MTTFE ⎞
⎟
⎟
⎟
⎠
2) time t: Dieser Parameter gibt an, nach welcher Zeit die Zuverlässigkeit des Systems bestimmt
werden soll.
3) Initialtime t0 : Startzeit von der bekannt ist daß das System noch funktioniert hat. Anmerkung:
Diese Zeit (t0) ist in der Praxis häufig 0.
Hinweise:
ƒ Die Funktion reliability(...) selbst soll keine Ausgaben liefern (dh. keine disp- oder fprintfBefehle; Ausgaben der Zwischenschritte unterdrücken; Fehlerbehandlung durch Octave, dh. keine
Abfragen notwendig).
ƒ Verwenden Sie für die Lösung der Funktion keine Kontrollkonstrukte (for, while, switch, etc.)
ƒ Für die Lösung dieser Aufgabe sind ausschließlich Standardrechen- bzw. Matrioxoperationen
erforderlich. Sehen sie sich dazu die Hilfe zu exp und prod an.
ƒ Die Meldung "warning: division by zero" kann durch den Octave-Befehl warning ("off",
"Octave:divide-by-zero"); deaktiviert bzw. mit "on" reaktiviert werden.
Überprüfen sie die Korrektheit ihrer Funktionsimplementierung zumindest mit den folgenden Aufrufen (ihre
Ausgabe sollte ident sein...):
octave-3.0.3.exe:30> mttf = [250 125 700 150 ; 0 0 100 225 ; 100 0 0 0 ;
0 200 200 0; 0 0 0 250 ]
mttf =
250
125
700
150
0
0
100
225
100
0
0
0
0
200
200
0
0
0
0
octave-3.0.3.exe:31>
rel = 0.56504
octave-3.0.3.exe:32>
rel = 0.97092
octave-3.0.3.exe:33>
rel = 0.97092
octave-3.0.3.exe:34>
rel = 0.56504
octave-3.0.3.exe:35>
rel = NaN
octave-3.0.3.exe:36>
rel = Inf
octave-3.0.3.exe:37>
...
250
rel = reliability(mttf, 100, 0)
rel = reliability(mttf, 20, 0)
rel = reliability(mttf, 100, 80)
rel = reliability(mttf, 0 , -100)
rel = reliability(mttf, 0 , 0)
rel = reliability(mttf, 0 , 100)
help reliability
2) Plots in Octave (4+8=12 Punkte)
In den folgenden beiden Aufgaben soll der Verlauf der Zuverlässigkeit (Reliability) eines Realtime-Systems über
die Zeit grafisch dargestellt werden.
a) Erstellen sie in Octave/GNUplot ein Diagramm das die Zuverlässigkeit R(t) des Echtzeitsystems aus
Beispiel 1c) über die Zeit darstellt (Zeit t in x-Achse [0...?], Zuverlässigkeit R(t) in y-Achse [0...1]).
Verwenden Sie zum Visualisieren die Funktion plot(...) und experimentieren Sie mit einigen Settings
für MTTF und t (t0 können Sie fix auf 0 setzen). Die abzugebende Lösung soll mit der MTTF-Belegung aus
1c) erstellt werden (mttf = [250 125 700 150 ; 0 0 100 225 ; 100 0 0 0 ; 0 200 200 0;
0 0 0 250 ]). Beschriften Sie ihr Diagramm vollständig (Titel, x-Achse, y-Achse, Kurven) und
formatieren/skalieren Sie es passend.
Hinweise:
ƒ Zur Darstellung des zeitlichen Verlaufes können Sie Schleifen verwenden.
ƒ Es könnte sich auch als günstig erweisen alle abzuarbeitenden Befehle in einem Script zu sammeln.
ƒ Ihr Protokoll sollte auf jeden Fall eine Liste der notwendigen Octave-Befehle (bzw. Scripts) sowie einen
Screenshot des Diagrammes enthalten.
b) Schreiben Sie eine Funktion reliabilityHDDSys(...) die die Zuverlässigkeit des unten
angegebenen RAID-Systemes mit den gegebenen technischen Daten berechnet und grafisch darstellt. Die
Struktur ist fix, die MTTF der Komponenten A bis D soll als Parameter gemeinsam mit dem gewünschten
Beobachtungszeitraum (t) an die Funktion übergeben werden. Für die Komponente E sind 3 Parameter
vorzusehen -- die Funktion soll die MTTF dreier unterschiedlicher Festplattentypen miteinander
vergleichen.
Die Funktion reliabilityHDDSys(...) soll zur Berechnung die Funktion reliability(...) aus
Aufgabe 1) verwenden, R1(t) bis R3(t) für die übergebenen Festplattentypen zurückliefern und ein
gemeinsames Diagramm inkl. Beschriftungen für R1(t), R2(t) und R3(t) für den Zeitraum t = 2 Jahre
zeichnen.
Funktionsschnittstelle und Parameter:
(Zeitparameter sind jeweils in Stunden anzugeben)
[rel1, rel2, rel3] = reliabilityHDDSys (io, power, scsi, cable, hdd1, hdd2, hdd3, time)
A
B
C
D
E
Zuleitung inkl. Ein/Ausschalter
MTTF: 400.000 Stunden
Stromversorgung (redundant)
MTTF: 150.000 Stunden
SCSI-Controller
MTTF: 500.000 Stunden
SCSI-Kabel
MTTF: 800.000 Stunden
SCSI-Festplatten, 5fach-gespiegelt zur Erhöhung der Datensicherheit
HDD1: Seagate Barracuda 7200.11, 1TB
MTTF: 750.000 Stunden (24x7)
HDD2: Maxtor MaxLine II, 5A320J0, 320GB, ATA-133
MTTF: 1.000.000 Stunden (24x7)
HDD3: Western Digital Raptor, 74 GB, 10000rpm, 4.6 ms, SATA MTTF: 1.200.000 Stunden (24x7)
Hinweise:
ƒ Die Funktion reliabilityHDDSys(...) selbst soll keine Ausgaben liefern (dh. keine disp- oder
fprintf-Befehle; Ausgaben der Zwischenschritte unterdrücken; Fehlerbehandlung durch Octave).
ƒ Bei Eingabe von help reliabilityHDDSys soll ein sprechender Hilfetext zur Funktion ausgegeben
werden.
ƒ Bei der Berechnung der Werte für den Plot brauchen Sie keinen Datenpunkt für jede Stunde berechnen;
es genügt beispielsweise einen Wert pro Tag oder Monat zu berechnen.
Beispielausgabe:
Geben Sie ein „Protokoll“ mit ihrer Lösung, dh. a) Sourcecodes (.m-Dateien,), b) Testfälle bzw.
Testausgaben und c) eine verbale Interpretation der Ergebnisse (wo gefordert) ab. Schliessen Sie
ihrem Protokoll die Octave Quelldateien (Dateiendung *.m) bei.

Documents pareils