| |
Schon bei Systemen mit relativ wenigen zu verlagernden Komponenten
ergibt sich eine große Zahl von Verlagerungsalternativen. Bei a
Ausgrenzungsbereichen vor und a-1 Ausgrenzungsbereichen nach einer
Rekonfigurierung und v zu verlagernden Komponenten pro
Auslagerungsbereich erhalten wir bis zu (a-1)a*v
Alternativen, was schon für kleines a und v sehr große Werte
ergibt. Natürlich sind dabei viele Möglichkeiten unsinnig.
Der Rekonfigurator hat nun die Aufgabe, eine möglichst optimale
Funktionszuordnung zu finden. Um den Begriff „optimal“ zu
definieren, gibt es verschiedene Kriterien:
- Notwendig ist natürlich, dass alle Verlagerungsziele fehlerfrei
und ausreichend leistungsstark sind und alle benötigten Funktionen zur
Verfügung stellen.
- Entsprechend der Anforderungen an die Ausfallsicherheit eines
Systems müssen auch nach einer Rekonfigurierung weitere Fehler
toleriert werden.
- Soweit möglich sollten Komponenten, die fehlerfreien
Ausgrenzungsbereichen angehören, nicht verlagert werden, um den
Verlagerungsaufwand und die Verlagerungsdauer möglichst niedrig zu
halten.
- Um die Leistungsfähigkeit des Systems nicht unnötig zu verringern,
sollte darauf geachtet werden, die einzelnen Systemteile möglichst
gleichmäßig zu belasten.
- Miteinander kommunizierende Prozesse sollten möglichst nahe
beieinander platziert werden, um unnötigen Kommunikationsaufwand und
damit Belastung anderer Systemteile zu verhindern. Genauso sollten
Aufträge möglichst nahe am Entstehungsort bearbeitet werden.
Diese Kriterien müssen der Situation entsprechend bewertet und
gewichtet werden.
Das Problem, nun die optimale Verlagerungsentscheidung zu treffen, ist
NP-vollständig. Um trotzdem in akzeptabler Zeit eine vernünftige und
zumindest nahezu optimale Lösung zu finden, gibt es unvollständige
Suchverfahren, sogenannte Heuristiken. Dabei gibt es unter anderem
folgende Ansätze:
- Der Programmierer legt bereits zur Entwurfszeit das Verhalten im
Fehlerfall fest. Er definiert für jeden denkbaren Defekt die möglichen
Verlagerungsziele; für Fehler, mit denen er rechnet, kann er sogar die
komplette Verlagerungsentscheidung im Voraus treffen. Dies kann jedoch
sehr komplex werden, da ja nicht nur ein einzelner Fehler abgefangen
werden soll, sondern auch alle möglichen Folgefehler, insofern stößt
diese Methode hier an Grenzen. Alternativ kann auch der Bediener im
Fehlerfall selbst eingreifen oder die Vorschläge des Rekonfigurators
bewerten und dann selbst entscheiden, wie letztlich vorgegangen werden
soll.
- Um die Entscheidung weniger komplex zu gestalten, kann festgelegt
werden, dass jede Komponente bzw. jedes Subsystem für sich getrennt
ein Verlagerungsziel sucht; die große Gesamtentscheidung wird also in
viele kleine Entscheidungen zerlegt. Die Schwierigkeit dabei ist
natürlich, dass jedes Teil nur die eigene Sicht kennt und
Wechselwirkungen nicht beachtet. Als Kompromiss können auch
(Komponenten-)Gruppen definiert werden.
- Es können sogenannte „Hilfsbewertungsfunktionen“
eingeführt werden. Diese legen eine Suchreihenfolge fest, die relativ
schnell zu einer zumindest suboptimalen Entscheidung
führen. Hilfsbewertungsfunktionen können zum Beispiel festlegen, dass
für komplizierter zu verlagernde Komponenten zuerst ein
Verlagerungsziel gesucht wird, in der nicht unberechtigten Hoffnung,
dass die anderen dann auch noch untergebracht werden können.
|
| |
|
|