MiCaDo Projektbericht - artecLab - Universität Bremen
MiCaDo Projektbericht - artecLab - Universität Bremen
MiCaDo Projektbericht - artecLab - Universität Bremen
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
ab 6 : Die beobachteten Paketverluste waren stets auf einen Überlauf des vom Betriebssystem bereitgestellten<br />
Socket-Puffers zurückzuführen 7 , weil die Cave-Anwendung die ankommenden Pakete nicht<br />
so schnell bearbeiten konnte, wie sie am UDP-Socket eintrafen. Dies lag darin begründet, dass anwendungsseitig<br />
das Rendern der Grafik sowie das Abholen und Bearbeiten der Netzwerkpakete<br />
abwechselnd von einem einzigen Thread vorgenommen wurde, der neue Pakte nur dann abholte,<br />
wenn er gerade nichts anderes zu tun hatte.<br />
Das Workaround bestand daher aus der Einführung eines dedizierten Receiver-Threads, welcher<br />
nichts anderes tut, als Pakete vom UDP-Socket abzuholen und in einer verketteten Liste zwischenzuspeichern,<br />
aus welcher der Hauptthread der Cave-Anwendung sie nacheinander abholt – also in<br />
der Schaffung eines sekundären Paketpufferpools innerhalb der Engine. Unsere Implementierung<br />
versucht hierbei den durch das Memory Management entstehenden Overhead möglichst klein zu<br />
halten, indem sie die Allokation und Freigabe von Heapspeicher auf ein Minimum reduziert. Das<br />
Workaround behebt zwar nicht die Auswirkungen eines Paketverlustes, da es nur die Wahrscheinlichkeit<br />
eines solchen reduziert, dennoch kann sich das Ergebnis sehen lassen: Während des gesamten<br />
Projekttages blieb der Cave nicht ein einziges Mal aufgrund eines Paketverlustes stehen. Eine<br />
Weiterentwicklung der Madness bietet sich jedoch nach wie vor in einer Realisierung der sauberen<br />
Lösung an – der paketverlusttoleranten Reimplementierung des Netzwerkcodes.<br />
6 u.a. aufgrund berechtigter Bedenken, kurz vor einer wichtigen Deadline, bzw. dem Projekttag, möglicherweise mehr<br />
Fehler einzubauen, als am Ende zu beheben.<br />
7 Ist dieser Puffer voll, gehen alle weiteren eintreffenden Pakete verloren.<br />
111