9 research outputs found

    Evaluation verschiedener Techniken zur Parallelisierung von Programmen anhand einer Beispielanwendung

    Get PDF
    Moderne Programme bewĂ€ltigen immer komplexere und leistungsfordernde Aufgaben. Mit diesem Anstieg geht jedoch ein höherer Bedarf an Hardware-Ressourcen einher, insbesondere an höheren ProzessorkapazitĂ€ten. Diesem Trend wurde mit einer konstanten Erhöhung der Taktraten von Prozessoren begegnet. Doch seit 2005 wurde dieser Trend aufgrund von physikalischen Grenzen gebremst. Stattdessen installieren Prozessorhersteller nun mehrere Prozessorkerne mit geringerer Taktrate auf einem Prozessor. Dies fĂŒhrt auch zu neuen Programmiertechniken, die Programme auf mehreren Prozessorkernen verteilen. Sie stellen einen sicheren Datenzugriff, deterministische AusfĂŒhrung und Leistungsverbesserungen sicher. UrsprĂŒnglich mussten Programmierer diese Techniken manuell programmieren, heute existieren Technologien, die eine solche Verwaltung automatisch durchfĂŒhren. In dieser Thesis werden verschiedene High-Level Programmiertechniken anhand einer Beispielanwendung hinsichtlich ihrer Leistung, Ressourcenverwaltung und Bedienbarkeit verglichen. Die Beispielanwendung soll eine tatsĂ€chlich einsetzbare Anwendung reprĂ€sentieren, die grundlegende Probleme, wie voneinander unabhĂ€ngige und abhĂ€ngige Berechnungsschritte aufweist, weshalb eine Physiksimulation gewĂ€hlt wurde. Die Parallelisierung wurde mit Goroutinen, Java Parallel Streams, Thread Pools und C++ async-Funktionen in ihrer jeweiligen Programmiersprache realisiert. Um die verschiedenen Parallelisierungstechniken zu vergleichen, wurden mehrere Merkmale der parallelen Implementierungen gemessen und mit einer sequentiellen Referenzimplementierung verglichen. Um die Leistung der Techniken zu messen, wurden die AusfĂŒhrungszeiten der verschieden Simulationen gemessen und analysiert. Die Ressourcenverwaltung wurde anhand der Prozessorauslastung der verschiedenen Implementierungen verglichen. Um die Bedienbarkeit der verschiedenen Parallelisierungstechniken gegenĂŒberzustellen, wurde die Anzahl der Quelltextzeilen ermittelt und in Relation gesetzt. Die Analyse dieser Daten zeigt die Unterschiede der Parallelisierungstechniken. WĂ€hrend die Implementierung unter Nutzung von Java Parallel Streams hohe Prozessorauslastung, und, verglichen mit den anderen Techniken, einen hohen Beschleunigungsfaktor sowie geringe KomplexitĂ€t aufweist, kann die Implementierung mit Hilfe von C++ async-Funktion nicht mehrere Prozessorkerne auslasten und damit nicht die Vorteile von Parallelisierung ausnutzen. Die hohe KomplexitĂ€t der Implementierung mit Goroutinen zahlt sich durch vergleichsweise geringe AusfĂŒhrungszeiten trotz niedriger Prozessorauslastung aus.Modern applications manage more complex and performance-demanding tasks than ever. But with more performance, applications also consume more hardware resources, especially CPU capacity. This demand was handled by constantly increasing the clock rate of CPUs. But since 2005, this trend was stopped due to physical limitations. Instead of increasing the performance of one CPU core, manufacturers put several cores with less clock frequency on one processor. This led to a new way of programming. Spreading a program across several CPU cores requires special programming techniques, ensuring safe data access and deterministic execution of programs, as well as performance gains. First, this techniques had to be handled manually by the programmer, but now, method exists, that manage the overhead of parallel programming. In this Thesis, an example applications is used to evaluate different high level parallel programming techniques according to their performance, their hardware management and their usability. The example application should represent a real world application with common problems like dependent and independent calculations. Therefore, a physic simulation was chosen. It was parallelized using Goroutines, Java Parallel Streams, Thread Pools and C++ async-functions in the respective programming language. To evaluate the different parallelization techniques, several characteristics of the implementations using them were measured and compared to a sequential reference implementation. To measure the performance, the execution times of the simulations were captured and interpreted. To measure the hardware management, the CPU utilization was analyzed. The complexity of the techniques was determined by comparing the number of lines of code of the implementations using the respective techniques. The analysis of these data showed differences between the parallelization techniques. While the implementation using Java Parallel Streams showed high CPU utilization and, in comparison to the other implementations, high speedup as well as low complexity, the implementation using C++ async-functions couldn't use the benefit of using multiple CPU cores at all. The high complexity of the implementation using Goroutines leads to relatively low execution times, despite its lower CPU utilization

    Objektorientierte Stromprogrammierung

    Get PDF
    Diese Arbeit stellt das Gesamtkonzept der objektorientierten Stromprogrammierung vor. Ziel ist es, die Implementierung und Optimierung paralleler Anwendungen fĂŒr Multikernrechner zu vereinfachen. Es werden Spracherweiterungen eingefĂŒhrt, welche von AusfĂŒhrungsfĂ€den und expliziter Synchronisierung abstrahieren. Darauf aufbauend ermöglicht ein eigenes Laufzeitsystem die Optimierung von Stromprogrammen im Produktivbetrieb, ohne dass ein Einwirken des Programmierers erforderlich ist

    Workflow- und Prozeßsynchronisation mit InteraktionsausdrĂŒcken und -graphen

    Get PDF
    Im Rahmen der Arbeit werden InteraktionsausdrĂŒcke und -graphen als deskriptiver Formalismus zur kompakten, ĂŒbersichtlichen und modularen Spezifikation sowie zur effizienten Implementierung von Synchronisationsbedingungen unterschiedlichster Art konzipiert, theoretisch untersucht, praktisch implementiert und prototypisch zur Synchronisation von Workflows angewandt

    Eine adaptive Architekturbeschreibung fĂŒr eingebettete Multicoresysteme

    Get PDF

    Analyse von IT-Anwendungen mittels Zeitvariation

    Get PDF
    Performanzprobleme treten in der Praxis von IT-Anwendungen hĂ€ufig auf, trotz steigender Hardwareleistung und verschiedenster AnsĂ€tze zur Entwicklung performanter Software im Softwarelebenszyklus. Modellbasierte Performanzanalysen ermöglichen auf Basis von Entwurfsartefakten eine PrĂ€vention von Performanzproblemen. Bei bestehenden oder teilweise implementierten IT-Anwendungen wird versucht, durch Hardwareskalierung oder Optimierung des Codes Performanzprobleme zu beheben. Beide AnsĂ€tze haben Nachteile: modellbasierte AnsĂ€tze werden durch die benötigte hohe Expertise nicht generell genutzt, die nachtrĂ€gliche Optimierung ist ein unsystematischer und unkoordinierter Prozess. Diese Dissertation schlĂ€gt einen neuen Ansatz zur Performanzanalyse fĂŒr eine nachfolgende Optimierung vor. Mittels eines Experiments werden Performanzwechselwirkungen in der IT-Anwendung identifiziert. Basis des Experiments, das Analyseinstrumentarium, ist eine zielgerichtete, zeitliche Variation von Start-, Endzeitpunkt oder Laufzeitdauer von AblĂ€ufen der IT-Anwendung. Diese Herangehensweise ist automatisierbar und kann strukturiert und ohne hohen Lernaufwand im Softwareentwicklungsprozess angewandt werden. Mittels der Turingmaschine wird bewiesen, dass durch die zeitliche Variation des Analyseinstrumentariums die Korrektheit von sequentiellen Berechnung beibehalten wird. Dies wird auf nebenlĂ€ufige Systeme mittels der parallelen Registermaschine erweitert und diskutiert. Mit diesem praxisnahen Maschinenmodell wird dargelegt, dass die entdeckten WirkzusammenhĂ€nge des Analyseinstrumentariums Optimierungskandidaten identifizieren. Eine spezielle Experimentierumgebung, in der die AblĂ€ufe eines Systems, bestehend aus Software und Hardware, programmierbar variiert werden können, wird mittels einer Virtualisierungslösung realisiert. Techniken zur Nutzung des Analyseinstrumentariums durch eine Instrumentierung werden angegeben. Eine Methode zur Ermittlung von Mindestanforderungen von IT-Anwendungen an die Hardware wird prĂ€sentiert und mittels der Experimentierumgebung anhand von zwei Szenarios und dem Android Betriebssystem exemplifiziert. Verschiedene Verfahren, um aus den Beobachtungen des Experiments die Optimierungskandidaten des Systems zu eruieren, werden vorgestellt, klassifiziert und evaluiert. Die Identifikation von Optimierungskandidaten und -potenzial wird an Illustrationsszenarios und mehreren großen IT-Anwendungen mittels dieser Methoden praktisch demonstriert. Als konsequente Erweiterung wird auf Basis des Analyseinstrumentariums eine Testmethode zum Validieren eines Systems gegenĂŒber nicht deterministisch reproduzierbaren Fehlern, die auf Grund mangelnder Synchronisationsmechanismen (z.B. Races) oder zeitlicher AblĂ€ufe entstehen (z.B. Heisenbugs, alterungsbedingte Fehler), angegeben.Performance problems are very common in IT-Application, even though hardware performance is consistently increasing and there are several different software performance engineering methodologies during the software life cycle. The early model based performance predictions are offering a prevention of performance problems based on software engineering artifacts. Existing or partially implemented IT-Applications are optimized with hardware scaling or code tuning. There are disadvantages with both approaches: the model based performance predictions are not generally used due to the needed high expertise, the ex post optimization is an unsystematic and unstructured process. This thesis proposes a novel approach to a performance analysis for a subsequent optimization of the IT-Application. Via an experiment in the IT-Application performance interdependencies are identified. The core of the analysis is a specific variation of start-, end time or runtime of events or processes in the IT-Application. This approach is automatic and can easily be used in a structured way in the software development process. With a Turingmachine the correctness of this experimental approach was proved. With these temporal variations the correctness of a sequential calculation is held. This is extended and discussed on concurrent systems with a parallel Registermachine. With this very practical machine model the effect of the experiment and the subsequent identification of optimization potential and candidates are demonstrated. A special experimental environment to vary temporal processes and events of the hardware and the software of a system was developed with a virtual machine. Techniques for this experimental approach via instrumenting are stated. A method to determine minimum hardware requirements with this experimental approach is presented and exemplified with two scenarios based on the Android Framework. Different techniques to determine candidates and potential for an optimization are presented, classified and evaluated. The process to analyze and identify optimization candidates and potential is demonstrated on scenarios for illustration purposes and real IT-Applications. As a consistent extension a test methodology enabling a test of non-deterministic reproducible errors is given. Such non-deterministic reproducible errors are faults in the system caused by insufficient synchronization mechanisms (for example Races or Heisenbugs) or aging-related faults

    Betriebssystem-integrierte experimentelle Leistungsbewertung verteilter Echtzeitsysteme

    Get PDF
    corecore