Άσκηση 1 η. Επιτήρηση χρήσης πόρων εφαρμογών με Linux Cgroups

Σχετικά έγγραφα
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. UNIX Μέρος 1

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Εγκατάσταση του PiNet για διαχείριση εργαστηρίου με Raspberry Pi. Συγγραφέας: Τριχόπουλος Γιώργος Δεκέμβριος 2016

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Αβδέλαρου Κωνσταντίνα

$./jms console -w <jms in> -r <jms out> -o <operations file> namedpipe. (standard input).

Προγραμματισμός Ι. Εργαστήριο 1 ο Περιβάλλον Εργασίας. Νικόλαος Δ. Τσελίκας Κυριακή Θ. Σεκλού

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

Λειτουργικά Συστήματα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Σύντομος Οδηγός Github Μηνάς Δασυγένης (

Πανεπιστήμιο Ιωαννίνων

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΤΕΙΘ ΣΤΕΦ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΑ ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ (UNIX) ΕΡΓΑΣΤΗΡΙΟ. 3o ΕΡΓΑΣΤΗΡΙΟ

ΟΤΑ Επιχειρησιακή Νοηµοσύνη

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Εθνική Πύλη

Μερικές άλλες χρήσιμες εντολές

Πως δημιουργούμε ένα νέο αρχείο κειμένου; Με τρεις τρόπους:

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

ARTius με PostgreSQL

Πληροφορική 2. Δομές δεδομένων και αρχείων

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Όλοι οι χρήστες του Turnitin πρέπει να δημιουργήσουν ένα προφίλ χρήστη.

Εθνική Πύλη ermis.gov.gr

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΜΣ ΕΠΙΣΤΗΜΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ Η/Υ

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Epsilon Net PYLON Platform

Μερικές άλλες χρήσιμες εντολές

[11] Υπολογιστικά συστήματα: Στρώματα. Περιεχόμενα. Εισαγωγή. επικοινωνία εφαρμογές λειτουργικό σύστημα προγράμματα υλικό

Εθνική Πύλη ermis.gov.gr

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Δημιουργία Active Directory DNS στα Windows Server Τεχνικός Δικτύων & Τηλεπικοινωνιών - Διαχείριση Δικτύων ΙΙ

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Εργαστήριο Εγκατάσταση Ubuntu με VirtualBox Εγκατάσταση Ubuntu με Unetbootin Απομακρυσμένη πρόσβαση με Putty/WinSCP

ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΛΟΓΙΣΜΙΚΩΝ ΣΥΣΤΗΜΑΤΟΣ 2015

CYGWIN Οδηγίες Χρήσης (Συγγραφέας: Γιώργος ούκας)

X-Order Client: ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΕΝΕΡΓΟΠΟΙΗΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ σε ΔΧΣ Τερματικό

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 1 17/01/2012

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ ΛΟΓΙΣΜΙΚΟΥ E-LEARNING - 2 -

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

Σεμινάριο Git & GitLab. Γιώργος Τσιάτσιος Δημήτρης Κάσσος

Διαδικαστικά. Εισαγωγή στο Λειτουργικό Σύστημα UNIX. Διαδικαστικά. Τι είναι το Λειτουργικό Σύστημα

Οδηγός Χρήσης προσωπικού χώρου και επιπλέον χώρου αποθήκευσης δεδομένων στο Τμήμα Πληροφορικής

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Διαδικασιακός Προγραμματισμός

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

Σύντομη εισαγωγή στο λειτουργικό σύστημα Linux

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Εισαγωγή στο Unix

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

Ενημερωτικός οδηγός για τον εξυπηρετητή Ada

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Βασική εγκατάσταση Asterisk σε Linux

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ»

ORFEAS ORFEAS. Hellenic American Union

Κατανεμημένα Συστήματα

Εγχειρίδιο του πίνακα χαρακτήρων

ΑΣΚΗΣΗ 2 -ΑΚΥΡΩΣΗ ΣΗΜΑΣΙΑΣ ΕΙΔΙΚΩΝ ΧΑΡΑΚΤΗΡΩΝ

Το κείμενο που ακολουθεί αποτελεί επεξεργασία του πρωτότυπου κειμένου του Α. Κάστωρ για την επίλυση των παραδειγμάτων κρίσιμης αλυσίδας που

ΕΓΚΑΤΑΣΤΑΣΗ ΕΦΑΡΜΟΓΩΝ ΓΙΑ ΠΡΟΣΩΠΙΚΟ ΥΠΟΛΟΓΙΣΤΗ (MS WINDOWS, LINUX, MACOS)

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

Εγχειρίδιο Εγκατάστασης Χρήσης Gemalto

ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ ΠΑΡΑΡΤΗΜΑ ΧΙ

for for for for( . */

ΤΕΙ ΗΠΕΙΡΟΥ Τμήμα Τηλεπληροφορικής & Διοίκησης

Προγραµµατισµός 2 The shell

Λειτουργικά Συστήματα (Λ/Σ)

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 5: Εξωτερικές διακοπές του 8051

Οδηγός σύνδεσης στο δίκτυο του ΤΕΠΑΚ μέσα από την υπηρεσία απομακρυσμένης πρόσβασης VPN Τεχνολογικό Πανεπιστήμιο Κύπρου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

X-Order Client: ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΕΝΕΡΓΟΠΟΙΗΣΗ ΤΗΣ ΕΦΑΡΜΟΓΗΣ σε ΔΧΣ Τερματικό

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Μανώλης Κιαγιάς, MSc. Aiolos Project. Αρχικές Ρυθμίσεις SSH και εγκατάσταση OpenMPI

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στο Λ.Σ. UNIX

ιαχείριση Πληροφοριών στο ιαδίκτυο

1st exercise of work2 - REMARKS

Οδηγίες Χρήσης online συστήματος κρατήσεων. Δήμος Στροβόλου

ΟΤΑ Επιχειρησιακή Νοηµοσύνη

ΕΡΓΑΣΤΗΡΙΟ #1. Το Λειτουργικό Σύστηµα Unix

Λειτουργικά Συστήματα

ΕΝΕΡΓΟΠΟΙΗΣΗ ΛΟΓΑΡΙΑΣΜΟΥ MICROSOFT OFFFICE365 (Βήματα 1-7)

Οδηγός Εγκατάστασης

Εισαγωγή στο Λειτουργικό Σύστημα UNIX

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Αίτηση Εισαγωγής Μεταπτυχιακού & Διδακτορικού Φοιτητή

Κατανεμημένα Συστήματα Ι

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1

Οδηγίες Χρήσης της MySQL

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

3ο Εργαστήριο Βασικές εντολές διαχείρισης αρχείων σε LINUX

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Άσκηση 1 η Επιτήρηση χρήσης πόρων εφαρμογών με Linux Cgroups Εισαγωγή Ένα κέντρο δεδομένων (data center) προσφέρει υπηρεσίες φιλοξενίας εφαρμογών στην αγορά. Από τη μία, το κέντρο δεδομένων επιθυμεί να εκμεταλλεύεται ολόκληρη την υποδομή του χωρίς αδρανείς πόρους. Από την άλλη, οι πελάτες του απαιτούν οι πόροι που έχουν παραγγείλει να είναι διαθέσιμοι με αξιοπιστία. Εάν υπερφορτωθεί με εφαρμογές το κέντρο δεδομένων τότε δεν θα μπορεί να ανταποκριθεί στις απαιτήσεις όλων των εφαρμογών. Για την άσκηση αυτή υποθέτουμε ότι η απαίτηση μιας εφαρμογής μετριέται σε χιλιοστά της υ- πολογιστικής ισχύος του ενός επεξεργαστή. Ένας κόμβος με 16 επεξεργαστές μπορεί να καλύψει σύνολο 16000 χιλιοστών και άρα μπορεί να εξυπηρετήσει, για παράδειγμα, 8 εφαρμογές που απαιτούν εγγύηση 2000 χιλιοστών η κάθε μία. Εάν όμως οι 8 εφαρμογές αυτές είναι ανελαστικές και δεν καταναλώνουν συνεχώς το σύνολο των 2000 χιλιοστών που έχει εξασφαλιστεί για αυτές, τότε ο κόμβος μένει αδρανής. Για να το αποφύγουμε αυτό θα μπορούσαμε να βάλουμε μόνο 7 ανελαστικές εφαρμογές των 2000 χιλιοστών και 10 εφαρμογές των 200 χιλιοστών αλλά ελαστικές. Οι 10 ελαστικές εφαρμογές θα εκμεταλλευτούν τους επεξεργαστές μόνο όταν οι 7 δεν τους χρησιμοποιούν. Παράδειγμα ανελαστικής εφαρμογής είναι μια βάση δεδομένων της οποίας το φορτίο διακυμαίνεται και κοστίζει πολύ στους χρήστες της η όποια καθυστέρηση στις απαντήσεις της. Παράδειγμα ελαστικής εφαρμογής είναι η επεξεργασία μεγάλου όγκου γονιδιακού υλικού η οποία μπορεί να απαιτεί χιλιάδες ώρες επεξεργασίας αλλά δεν επηρεάζεται από τις αυξομειώσεις της επεξεργαστικής ισχύος που λαμβάνει, αρκεί σε βάθος χρόνου να λάβει όσο χρειάζεται.

Για να μπορεί το κέντρο δεδομένων να επιβάλλει την προτεραιότητα κάποιων εφαρμογών στα χιλιοστά υπολογιστικής ισχύος που τους αναλογούν, χρειάζεται ένα κατάλληλο εργαλείο. Το σύστημα cgroup του Linux είναι ένα τέτοιο εργαλείο που μπορεί να επιβάλλει ποσοτικούς περιορισμούς και διαμοιρασμό υπολογιστικών πόρων. Σκοπός της άσκησης είναι η δημιουργία προγραμμάτων που με τη χρήση του συστήματος cgroup μπορεί να εξασφαλίσει την υπολογιστική ισχύ, ρυθμισμένη σε χιλιοστά του ενός επεξεργαστή, όπως παραπάνω. Ο Δαίμων cgmond Ως βοήθημα δίδεται ο cgmond, πρόγραμμα (δαίμων με την έννοια του unix) που αναλαμβάνει να εκκινεί και να παρακολουθεί εφαρμογές, καθώς και να επιβάλλει τα ελάχιστα εξασφαλισμένα χιλιοστά επεξεργαστικής ισχύος όπως δίνονται στην εκκίνηση της εφαρμογής. Για το λόγο αυτό συνδιαλέγεται με δύο ιεραρχίες cgroup, την ιεραρχία cpu που είναι υπεύθυνη για τον ορισμό ο- ρίων στη χρήση της κεντρικής μονάδας επεξεργασίας, και την custom ιεραρχία monitor υπεύθυνη να ενημερώνει το σύστημα για το πέρας της εκτέλεσης των διεργασιών ενός cgroup. Ο cgmond δεν ερμηνεύει τις τιμές για τα ελάχιστα εξασφαλισμένα χιλιοστά κάθε εφαρμογής, ούτε εφαρμόζει ρυθμίσεις cgroup. Αντί αυτού καλεί δύο εξωτερικά εκτελέσιμα προγράμματα, cgmon-policy και cgmon-limit, αντίστοιχα. Κάθε φορά που δημιουργείται ή τερματίζεται μια εφαρμογή, ο cgmond εκτελεί το cgmon-policy δίνοντάς του όλες τις εφαρμογές με τις ρυθμίσεις για τα χιλιοστά τους. Το cgmon-policy παράγει τις ρυθμίσεις για το σύστημα cgroup που πρέπει να εφαρμοστούν. Στη συνέχεια, το cgmon-limit καλείται για να εφαρμόσει τις ρυθμίσεις που παρήγαγε το cgmon-policy. Σε περίπτωση που ζητηθεί η εκκίνηση μιας εφαρμογής με χιλιοστά περισσότερα από όσα μπορεί να εγγυηθεί το σύστημα τότε προειδοποιεί και απαιτεί επιβεβαίωση. Ζητούμενα της Άσκησης Ζητείται η συγγραφή κατάλληλων προγραμμάτων cgmon-policy και gmon-limit και η ανεύρεση κατάλληλων εφαρμογών ώστε να ικανοποιηθούν και να επιδειχθούν τα παρακάτω: 1. Να συμφωνούν με τις προδιαγραφές που δίδονται στις αντίστοιχες ενότητες ώστε να μπορούν να χρησιμοποιηθούν από τον cgmond. 2. Θα πρέπει μετά την εφαρμογή από το cgmon-limit των ρυθμίσεων cgroup που παράγει το

cgmon-policy να εξασφαλίζονται τα ελάχιστα χιλιοστά χρήσης κάθε εφαρμογής όπως έ- χουν δηλωθεί κατά την εκκίνησή της. 3. Το cgmon-policy θα πρέπει να βαθμοδοτεί κατάλληλα την είσοδό του ώστε ο cgmond να αποτρέπει την εκκίνηση εφαρμογής εάν πρόκειται να κινδυνεύσουν τα εγγυημένα χιλιοστά οποιασδήποτε εφαρμογής. 4. Εάν υπάρχουν ελαστικές και ανελαστικές εφαρμογές υπό επιτήρηση να εξασφαλίζεται ότι όλοι οι επεξεργαστές του κόμβου χρησιμοποιούνται και κανείς δεν μένει αδρανής. Εκτελέσιμο cgmon-policy Συνοπτικά, το εκτελέσιμο cgmon-policy καλείται να μετατρέψει το μέτρο των ελάχιστων εξασφαλισμένων χιλιοστών χρήσης ενός επεξεργαστή, μέγεθος με το οποίο συναλλάσσεται ο χρήστης, σε cpu.shares, μέγεθος με το οποίο ρυθμίζεται το σύστημα cgroup για το διαμοιρασμό επεξεργαστικής ισχύος σε εφαρμογές. Το πρόγραμμα λαμβάνει είσοδο της μορφής: policy:<application name>:cpu:<value>... Όπου κάθε γραμμή αντιστοιχεί με την εφαρμογή με το όνομα application name. Η τιμή value είναι ένας θετικός ακέραιος που αντιστοιχεί στα χιλιοστά του ενός επεξεργαστή τα οποία θέλουμε να εξασφαλίσουμε για την εφαρμογή. Κάθε γραμμή τερματίζεται με έναν χαρακτήρα '\n' (ascii 0xa). Τα policy και cpu είναι σταθερές και εμφανίζονται ως έχουν. Στην έξοδό του το πρόγραμμα παράγει αντίστοιχες γραμμές: score:<float> set_limit:<application name>:cpu.shares:<value>... Τα score, set_limit, cpu.shares είναι σταθερές και εμφανίζονται ως έχει. Στην πρώτη γραμμή της εξόδου, η τιμή float είναι μια δεκαδική τιμή με υποδιαστολή, η οποία εάν είναι θετική υποδηλώνει ότι τα ελάχιστα όρια χρήσης είναι εξασφαλισμένα για όλες τις ε- φαρμογές, ενώ αν είναι αρνητική τότε τα όρια δεν μπορούν να τηρηθούν.

Οι επόμενες γραμμές αφορούν κάθε μία την αντίστοιχη εφαρμογή με όνομα application name. Η τιμή value είναι θετικός δεκαδικός ακέραιος και αντιστοιχεί στη ρύθμιση cpu.shares του αντίστοιχου cgroup της εφαρμογής. Εκτελέσιμο cgmon-limit Συνοπτικά, το εκτελέσιμο cgmon-limit αναλαμβάνει να εφαρμόσει τις ρυθμίσεις που παρήγαγε το cgmon-policy, καθώς και να συντηρεί την απεικόνιση των εφαρμογών σε ιεραρχίες cgroup κατ' εντολή του cgmond. Το εκτελέσιμο δέχεται στην είσοδο γραμμές ενός εκ των ακόλουθων τύπων: Δημιουργία cgroup για μια νέα εφαρμογή: create:<monitor>:cpu:<application name> Κατάργηση του cgroup μιας εφαρμογής που έχει τερματίσει remove:<monitor>:cpu:<application name> Εγγραφή μιας διεργασίας στο cgroup μιας εφαρμογής: add:<monitor>:cpu:<application name>:<process id> Ρύθμιση της τιμής cpu.shares για το cgroup μιας εφαρμογής: set_limit:<monitor>:cpu:<application name>:cpu.shares:<value> Το αναγνωριστικό monitor αντιστοιχεί στο cgroup του cgmond η οποία περιέχει όλα τα cgroups των εφαρμογών. Με αυτόν τον τρόπο απομονώνεται ο χώρος ονομάτων των εφαρμογών από το υπόλοιπο σύστημα για την αποφυγή συγκρούσεων (π.χ. κάποιος προσπαθεί να ονομάσει μια ε- φαρμογή με όνομα cgroup που υπάρχει ήδη στο σύστημα). Υποσύστημα cgroup/cpu Το υποσύστημα cpu ξεκινά αναθέτοντας όλη την υπολογιστική ισχύ του συνόλου των επεξεργαστών στην κορυφή της ιεραρχίας. Κάθε cpu cgroup έχει μία ρύθμιση cpu.shares. Σε κάθε επίπεδο αθροίζονται όλες οι τιμές των cpu.shares των cgroups που ανήκουν στο επίπεδο αυτό. Η συνολική υπολογιστική ισχύς διαθέσιμη στο επίπεδο αυτό χωρίζεται σε ισάριθμα και ισοδύναμα τμήματα. Κάθε cgroup λαμβάνει τόσα τμήματα όσα και η τιμή cpu.shares που έχει.

Πρόσβαση σε βοηθητική εικονική μηχανή Για τις ανάγκες της άσκησης σας προσφέρεται μια εικονική μηχανή. Για να τη χρησιμοποιήσετε ακολουθήστε τα βήματα: 1. Επισκεφθείτε το https://okeanos.grnet.gr και χρησιμοποιείστε τον ακαδημαϊκό σας λογαριασμό για να εισέλθετε. Θα σας ζητηθεί να επιλέξετε το ίδρυμά σας πριν δώσετε τον κωδικό σας. 2. Επισκεφθείτε το dashboard στην πάνω δεξιά γωνία. 3. Πατήστε στο tab projects. 4. Επιλέξτε join στο oslab2017.cslab.ntua.gr. 5. Περιμένετε την έγκριση από το προσωπικό του εργαστηρίου (θα επιβεβαιώσουν τα στοιχεία σας). Θα λάβετε ειδοποίηση στο email σας μόλις ολοκληρωθεί η εγγραφή σας. 6. Πατήστε Cyclades στην μπάρα που βρίσκεται στην κορυφή της σελίδας. 7. Επιλέξτε να δημιουργήσετε μια νέα εικονική μηχανή. 8. Επιλέξτε εικόνα (image) Debian base. Καλό είναι να δημιουργήσετε στο αντίστοιχο βήμα και ένα κλειδί ssh. Διαφορετικά σημειώστε το password μετά τη δημιουργία. 9. Συνδεθείτε ως χρήστης root με ssh. 10. Εκτελέστε τα επόμενα βήματα (Παράρτημα Α) χειρωνακτικά ή εκτελώντας τα ως script. Μέσα σε αυτά προσέξτε τη διεύθυνση που θα βρείτε τον κώδικα του cgmond. Ο κωδικός που απαιτείται είναι: qk5saprtst. 11. Ολοκληρώνοντας το προηγούμενο βήμα θα πρέπει να έχετε στο τρέχον directory ένα subdirectory με όνομα cgmon και μέσα σε αυτό, εκτός των άλλων, θα υπάρχουν δύο scripts, το prepare.sh και το cgmon_demo.sh. Η εκτέλεση του πρώτου δημιουργεί μια νέα ιεραρχία cgroup για την παρακολούθηση των cgroups που δημιουργούνται από τον μηχανισμό, ενώ το δεύτερο είναι ένα παράδειγμα χρήσης του δαίμονα cgmond. 12. Σημειώνεται ότι ο μηχανισμός παράγει log files στο path $(WD)/monitor/ τα οποία και θα είναι διαφωτιστικά καθόλη τη διάρκεια των εργασιών σας.

Παράρτημα Α Script προετοιμασίας και εγκατάστασης του δαίμονα cgmond: #/bin/bash YES= if [ "$1" = "-y" ]; then shift YES=1 fi STEP () { if [ -z "$YES" ]; then read -p 'Do it? (Y/n) ' c [ -z "$c" ] [ "$c" = "Y" ] [ "$c" = "y" ] else true fi set -v cd ${HOME STEP Install git, vim, and other tools && { apt-get install git vim python python-setuptools bash-completion stress bc htop STEP Enable greek UTF-8 locale && { sed -i -e 's/^# *\(el_gr.utf-8\)$/\1/g' /etc/locale.gen locale-gen STEP Enable greek UTF-8 typing in shell && { touch ~/.bashrc sed -i -e '/^export LC_CTYPE=/d' ~/.bashrc echo 'export LC_CTYPE=el_GR.UTF-8' '>>' ~/.bashrc # Now you have to re-login to enable it STEP Get cgmon source and start working && { mv -f cgmon cgmon-$(date -Isec) git clone git+ssh://cslab@snf-698511.vm.okeanos.grnet.gr/git/cgmon cd cgmon python setup.py install cgmon complete > /etc/bash_completion.d/cgmon cd ${HOME STEP Initialize cgmon hierarchy && { cd cgmon./prepare.sh cd ${HOME