Ταχύτερα compile με ccache και distcc

Σχετικά έγγραφα
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ UNIX

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

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

CE121 Προγραµµατισµός ΙΙ. Χρόνος εκτέλεσης. Βάνα Ντουφεξή

make Προγραμματισμός II 1

Λειτουργικά Συστήματα (ΗΥ-345) Χειμερινό Εξάμηνο

ΛΟΓΙΣΜΙΚΟ (software)

Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήμη (Virtual Μemory)

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

ΘΕΜΑ PROJECT COMPILER FLAGS ΤΡΑΧΑΝΗΣ ΔΗΜΗΤΡΗΣ 6108 ΤΡΑΧΑΝΗΣ ΓΕΩΡΓΙΟΣ 5789

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

ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Queuing Systems Εισαγωγή

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών. Οδηγίες εργαστηρίου. Συστήματα Παράλληλης Επεξεργασίας 9 ο Εξάμηνο

... s12 s13 s14. Σχήμα1: ΙεραρχίαΔιεργασιώνμε l=3καιβάθος d=3. Οκάθεεργάτης(worker)δουλεύειμετο 1/27του αρχείου των ψήφων.

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

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

BOINC CS. BOINC Control System. Νικόλαος Πασσαλής 1/15

Εισαγωγή στην Πληροφορική

Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) Εργασία Εξαμήνου

ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Queuing Systems

Προγραμματισμός Ι. Πολλαπλά Αρχεία. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Επισκόπηση Λ.Σ. Εργαστηριακές Ασκήσεις

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λιβανός Γιώργος Εξάμηνο 2017Β

Προγραμματισμός συστημάτων UNIX/POSIX. Χρονομέτρηση

Απομακρυσμένη Πρόσβαση και Εντολές Ελέγχου και Υποστήριξης

Προγραμματισμός συστημάτων UNIX/POSIX. Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις

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

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

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

Κεφάλαιο 1ο Πολυπρογραμματισμός Πολυδιεργασία Κατηγορίες Λειτουργικών Συστημάτων

Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης III

To FreeBSD Project To Λειτουργικό Σύστημα Η Κοινότητα Η Ελληνική Ομάδα. Μανώλης Κιαγιάς Καθηγητής Πληροφορικής FreeBSD Project Committer

Complete real time simulation experience of Virtual Museum without the use of external devices. Γαργάλης Νίκος

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

Αστέριος Κατσιφοδήμος Γιώργος Νικολάου Κώστας Βρυώνη. ΕΠΛ 428 Προγραμματισμός Συστημάτων 16/04/07

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

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

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 4 η. Βασίλης Στεφανής

Χρονοδρομολογητής Κυκλικής Επαναφοράς

Πολυπύρηνοι επεξεργαστές Multicore processors

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

Εικονικοποίηση. Λειτουργικά Συστήματα Υπολογιστών 7ο Εξάμηνο,

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι


Εισαγωγή στο προγραμματιστικό περιβάλλον ANSI

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

Πληροφορική I. "Λογισμικό (Software)" B. Φερεντίνος

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #0

Εικονική Μνήμη (Virtual memory)

Περιγραφή του Apache Ant

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

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

Ένωση Ελλήνων Χρηστών και Φίλων ΕΛ/ΛΑΚ

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Ανάπτυξη και διανομή ενός έργου Ελεύθερου Λογισμικού

Εργαστήριο Λειτουργικών Συστημάτων - Αλγόριθμοι Χρονοπρογραμματισμού. Εργαστηριακή Άσκηση

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

To KINO ανανεώνεται, αλλάζει τη διάθεση. και δίνει ότι Χρειάζονται οι Παίκτες σου!

Διάλεξη 22η: Επιπλέον στοιχεία της C

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

Journal of the Graduate School of the Chinese Academy of Sciences. Application Dependent Software. Standard Application Components.

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

Προγραµµατισµός Ι Εισαγωγή Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι Νικόλαος Δ. Τσελίκας

Λειτουργικά Συστήματα 1.1 Τι είναι Λειτουργικό Σύστημα (Operating System)

Γ-1-1 ΤΕΧΝΙΚΗ ΠΡΟΔΙΑΓΡΑΦΗ ΕΞΥΠΗΡΕΤΗΤΩΝ ΤΥΠΟΥ 1

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

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

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΜΟΝΑΔΑ ΑΡΙΣΤΕΙΑΣ ΕΛ/ΛΑΚ

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα

Διαχείριση Κύριας Μνήμης

Εικονικοποίηση. Αρχιτεκτονική Υπολογιστών 5ο Εξάμηνο,

Βασίλειος Κοντογιάννης ΠΕ19

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

Εισαγωγικά & Βασικές Έννοιες

Εισαγωγή στο Flex. Μεταγλωττιστές, Χειμερινό εξάμηνο

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

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

ver Επεξεργαστές κειμένου, λογιστικών φύλλων, παρουσιάσεων Οδηγοί συσκευών (Device Drivers)

ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT

ΚΕΦΑΛΑΙΟ Web Services

Εικονική Μνήμη (virtual memory)

Περίληψη Φροντιστηρίου. Κατανεμημένα Συστήματα Ι. Το περιβάλλον DAP - Χαρακτηριστικά. Το περιβάλλον DAP Τι είναι.

Μάθημα 1 ο ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΤΩΝ ΛΕΙΤΟΥΡΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Τ.Ε.Ι. ΚΡΗΤΗΣ, Σ.Δ.Ο., Τμήμα Λογιστικής. Business Processes

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

εφαρμογών Συμπεριφορά απόδοσης εφαρμογών Benchmarks, Profiling GRNET ntell [at] grnet.gr Χρονοεπίδοση και αξιολόγηση απόδοσης εφαρμογών

ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Queuing Systems Παράμετροι Συστημάτων Αναμονής Τύπος Little

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Εργαστήριο Λειτουργικών Συστημάτων Ακ. Έτος Άσκηση 3

Users / Groups / Permissions. Πώς ξεκίνησε η ανάγκη για πολλαπλούς χρήστες σε ένα σύστημα;

Πώς να επιλέξετε το σωστό Υπολογιστή

Σύντομη εισαγωγή στο Unix

Transcript:

Ταχύτερα compile με ccache και distcc Βασίλης Στούμπος stoumpos@di.uoa.gr δαίμων, τεύχος 13 http://daemon.di.uoa.gr/daemon/issue13

Περίληψη Περιπτώσεις Χρήσης Compilation μεγάλων project Rebuild κατά το development Προσεγγίσεις Χρήση cache στον preprocessor Χρήση μηχανημάτων στο δίκτυο

Εγκατάσταση Πλατφόρμα Δοκιμές σε Debian GNU/Linux Εφαρμογή σε όλα τα UNIX-like λειτουργικά Ίσως Windows (mingw,...)./configure ; make ; make install... ccache http://ccache.samba.org/ distcc http://distcc.samba.org/

Σημείωση Πρέπει να υπάρχει ένα οργανωμένο build process Build Process Makefiles Autotools

Πολλαπλές Διεργασίες Πολλές διεργασίες για ένα compile Παράδειγματα: > make all [...] > make -j 3 all [...]

Hyper-threading Επεξεργαστής Pentium IV, 2.8GHz, hyperthreading Συνεχόμενες μεταγλωττίσεις: real user sys total clean 0.9 0.1 0.3 0.4 all 19.2 12.8 5.8 18.6 all -j 2 16.8 16.3 6.6 22.9 all -j 3 16.7 16.4 6.6 23.1 all -j 4 16.6 16.4 6.5 22.9 all -j 8 16.6 16.3 6.7 22.9 all -j 16 16.3 16.4 6.6 23.0 all -j 32 16.6 16.3 6.6 23.0

Hyper-threading Επεξεργαστής Pentium IV, 2.8GHz, hyperthreading Συνεχόμενες μεταγλωττίσεις: 25 22.5 20 17.5 Multi-Process Compile Times time [sec] 15 12.5 10 7.5 5 2.5 0 clean all all -j 2 all -j 3 all -j 4 all -j 8 all -j 16 all -j 32 processes real user sys total

Πολλαπλές Διεργασίες σε Δίκτυο Compile σε μηχανήματα στο δίκτυο Παράδειγμα χρήσης distcc: > export DISTCC_HOSTS='localhost @alastor @esperos' > export CC=distcc > make -j 8 all [...]

Ρυθμίσιες distcc Πρέπει να εκτελούνται οι κατάλληλοι δαίμονες: distccd --daemon Περιβάλλον remote authentication Λίστα μηχανήματων: localhost, τοπική εκτέλεση host, απλή tcp σύνδεση @host, σύνδεση ssh user@host, σύνδεση ssh Αρχεία /etc/distcc/hosts και ~/.distcc/hosts

Χρήση Δικτύου Δύο Pentium IV και ένας Pentium II. Συνεχόμενες μεταγλωττίσεις με distcc: real user sys total all 18.1 12.1 5.7 17.7 all -j 2 16.4 16.1 6.6 22.7 all -j 3 16.4 16.2 6.7 22.8 all -j 4 16.5 16.4 6.6 23.0 all -j 8 16.2 16.3 6.6 22.9 all -j 16 16.8 16.4 6.6 23.0 all -j 32 16.3 16.1 6.6 22.6

Χρήση Δικτύου Δύο Pentium IV και ένας Pentium II. Συνεχόμενες μεταγλωττίσεις με distcc: 25 22.5 20 17.5 distcc Compile Times time [sec] 15 12.5 10 7.5 5 2.5 0 all all -j 2 all -j 3 all -j 4 all -j 8 all -j 16 all -j 32 make options real user sys total

Preprocessor Cache Compile με λιγότερες εκτελέσεις του preprocessor Παράδειγμα χρήσης ccache: > make all CC=ccache [...] > ccache -s cache hit 336 cache miss 83 called for link 45 files in cache 166 cache size 1.6 Mbytes max cache size 976.6 Mbytes

Ρυθμίσεις ccache Στατιστικά Εμφάνιση: ccache -s Καθαρισμός: ccache -z Cache Καθαρισμός: ccache -c Άδειασμα: ccache -C Μεταβλητές CCACHE_DIR: κατάλογος cahce mount σαν tmpfs ~ 10-20% βελτίωση CCACHE_LOGFILE: αρχείο μετρήσεων Άλλα... ccache -h

Παράδειγμα ccache (1/2) > ccache -c Cleaned cache > ccache -C Cleared cache > ccache -z Statistics cleared > ccache -s cache hit 0 cache miss 0 files in cache 0 cache size 0 Kbytes max cache size 976.6 Mbytes > make all CC='ccache gcc' [...]

Παράδειγμα ccache (2/2) > ccache -s cache hit 0 cache miss 83 called for link 9 files in cache 166 cache size 1.6 Mbytes max cache size 976.6 Mbytes > make clean [...] > make CC='ccache gcc' [...] > ccache -s cache hit 83 cache miss 83 called for link 18 files in cache 166 cache size 1.6 Mbytes max cache size 976.6 Mbytes

Χρήση preprocessor cache Συνεχόμενες μεταγλωττίσεις με ccache: real user sys total all (1st) 19.3 12.8 6.1 18.9 all (2nd) 14.3 8.5 5.5 14.0 all (2nd) 14.3 8.5 5.5 14.0 all -j 3 13.5 10.5 6.5 17.0

Χρήση preprocessor cache Συνεχόμενες μεταγλωττίσεις με ccache: 20 18 16 14 ccache Compile Times time [sec] 12 10 8 6 4 2 0 all (1st) all (2nd) all (2nd) all -j 3 make options real user sys total

Συνδυασμός distcc και ccache Compile παράλληλα στο δίκτυο Κλήση preprocessor μόνο όταν είναι απαραίτητο Απαιτείται κοινή cache > export DISTCC_HOSTS='localhost @alastor @esperos' > export CCACHE_DIR=/Data/Cache/CCache > export CCACHE_LOGFILE=/Data/Cache/CCache.log > export CCACHE_PREFIX=distcc > export CC='ccache gcc' > make all -j8 [...]

Χρήση preprocessor cache και κόμβων δικτύου Συνεχόμενες μεταγλωττίσεις με distcc και ccache: real user sys total all 18.1 12.1 5.7 17.7 all -j 2 16.4 16.1 6.6 22.7 all -j 3 16.4 16.2 6.7 22.8 all -j 4 16.5 16.4 6.6 23.0 all -j 8 16.2 16.3 6.6 22.9 all -j 16 16.8 16.4 6.6 23.0 all -j 32 16.3 16.1 6.6 22.6

Χρήση preprocessor cache και κόμβων δικτύου Συνεχόμενες μεταγλωττίσεις με distcc και ccache: 25 22.5 20 17.5 distcc & ccache Compile Times time [sec] 15 12.5 10 7.5 5 2.5 0 alll all -j 2 all -j 3 all -j 4 all -j 8 all -j 16 all -j 32 make options real user sys total

Συμπεράσματα Μικρά, προσωπικά projects Πολύ χρήσιμο το ccache Διαφορά ~ 30-40% σε hyper-threading cpu Δεν δοκίμασα tmpfs για την cache Πολλοί προγραμματιστές Χρειάζεται ειδική ρύθμιση Κέρδος σε μεγάλα projects Πολύ μεγάλα projects Π.χ. kernel compile Δεν δοκίμασα κάτι Πολύ χρήσιμο το distcc Με ειδική ρύθμιση, το ccache βελτιώνει ακόμα περισσότερο το χρόνο

Ευχαριστώ Έπρεπε να είχα χρησιμοποιήσει latex/beamer, το openoffice έχει πολύ δρόμο να καλύψει...