Η στροφή σε πολυπύρηνα συστήματα, τα οποία παρέχουν αφθονία υπολογιστικών πό-
ρων, έχουν οδηγήσει τους προγραμματιστές στην υιοθέτηση μοντέλων παράλληλου
προγραμματισμού έτσι, ώστε να μπορέσουν αναπτύξουν αποδοτικές εφαρμογές. Ο πα-
ράλληλος προγραμματισμός υπόσχεται επίδοση που κλιμακώνει με την αύξηση του
πλήθους των υπολογιστικών πόρων. Παρ’ όλα αυτά, περιορισμοί που έχουν να κάνουν,
κυρίως, με την ιεραρχία μνήμης δεν επιτρέπουν στις παράλληλες εφαρμογές να επιτύ-
χουν την αναμενόμενη επίδοση. Σαν αποτέλεσμα οι εφαρμογές αυτές δεν είναι ικανές
να αξιοποιήσουν τους διαθέσιμους πόρους. Για να μη μείνουν ανεκμετάλλευτοι αυτοί οι
πόροι, υπάρχει η ανάγκη για ταυτόχρονη εκτέλεση για παραπάνω απο μία παράλληλες
εφαρμογές. Σ’ αυτή την περίπτωση όμως, ο ανταγωνισμός για πόρους απο διαφορετικές
εφαρμογές οδηγεί σε απρόβλεπτη συμπεριφορά και επιπλέον μείωση τις επίδοσής τους.
Υπάρχει, λοιπόν, η ανάγκη για αποδοτική δρομολόγηση των εφαρμογών και διανομή
των πόρων του συστήματος μνήμης. Στη διπλωματική αυτή, μελετάμε τους λόγους για
τους οποίους οι υπάρχοντες schedulers των λειτουργικών συστημάτων δε βοηθάνε στην
εκτέλεση παράλληλων εφαρμογών στα τρέχοντα υπολογιστικά συστήματα. Εξετάζουμε
τους περιορισμούς του συστήματος μνήμης που οδηγεί σε κακή επίδοση των παράλλη-
λων εφαρμογών. Στη συνέχεια μελετάμε κάποιες απ’ τις μεθόδους που έχουν προταθεί
στη βιβλιογραφία για αντιμετώπιση των προβλημάτων των state-of-the-art schedulers
σχετικά με τη δρομολόγηση παράλληλων εφαρμογών, καθώς και υλοποιούμε δικές μας
τεχνικές δρομολόγησης. Τέλος, εξετάζουμε το θέμα της τοποθέτησης των νημάτων των
πολυνηματικών εφαρμογών στους πυρήνες ενός πολυπύρηνου συστήματος. Συνοψίζο-
ντας, τονίζουμε την αδυναμία των παράλληλων εφαρμογών να κλιμακώσουν ικανο-
ποιητικά στα σημερινά πολυεπεξεργαστικά συστήματα και ως συνέπεια τη σημασία
ανάπτυξης τεχνικών δρομολόγησης παράλληλων εφαρμογών που λαμβάνουν υπ’ όψιν
τους την οργάνωση τους συστήματος μνήμης της υπολογιστικής πλατφόρμας και εφαρ-
μόζουν τεχνικές που περιορίζουν τις επιπτώσεις του ανταγωνισμού των παράλληλων
εφαρμογών για μοιραζόμενους πόρους του συστήματος μνήμης. Επισημαίνουμε τη ση-
μασία της τοποθέτησης των νημάτων μια πολυνηματικής εφαρμογής στους επεξεργα-
στές ενός πολυπύρηνου συστήματος και εξετάζουμε το πως διαφορετικές αποφάσεις,
μπορούν να προσδώσουν διαφορετικά χαρακτηριστικά εκτέλεσης.
The proliferation of Chip Multiprocessors (CMPs) has caused a noticeable stir in the current
programming paradigm. Developers turn to parallel programming in order to take
advantage of the multiple processing units found in todays computing systems. Multithreaded
applications distribute the computational load in many threads that use shared
memory to communicate. e shift, however, from Symmetric Multiprocessors (SMPs)
to CMPs has brought up challenges concerning contention in resources that are shared
among cores of the CMP which do not allow applications to achieve the expected performance.
Computing systems, from their side have been developed to adapt to the new platforms.
With the advent of SMPs task schedulers have been extended to load balance the
system workload to the multiple identical cpus in order to exploit parallelism. Schedulers
are now obliged to use space-sharing in order to achieve maximum utilization of the system
resources, since applications are incapable to exploit them on their own. e hierarchical
organization of the CMPs, however, with cores sharing resources such as cache
memory, memory bus, DRAM controllers etc, require much more elaborate scheduler
implementations.
In this thesis, we explore the factors that lead to poor performance in cases where
multiple multithreaded applications are executed on a CMP. Knowing that memory constraints
are the primary reason for which multithreaded applications fail to scale with
many cpus, we can expect that this phenomenon will be more intense when those applications
will contend for resources of the memory subsystem. First, we investigate what
effect has the limited memory bandwidth in the execution of multithreaded applications
and most importantly when they are co-scheduled with other applications and extract
information that could be used from a scheduler in order to make more efficient decisions.
Second we study how decisions on thread affinity of multithreaded applications
can affect their execution profile. e hierarchical organization of CMPs has made thread
affinity an important aspect. Whereas in SMPs placement of threads is not important,
since the only resource they share is the memory bus, in CMPs where cores share multiple
resources, affinity of threads determine the amount of resources applications contend
for. Finally we compare some scheduler implementations found in previous work, as well
as, a scheduler that we implemented and the Linux scheduler.