Επιτάχυνση του Linux με χρήση cgroup

8 posts / 0 new
Τελευταία καταχώριση
Εικόνα: dsyrmalis
dsyrmalis
Απουσιάζω!
BabyTuxModerationGnu
Μέλος από: 1 Ιαν 1970
Πόντοι: 3750
Επιτάχυνση του Linux με χρήση cgroup

O Lennart Poettering developer της Red Hat (και δημιουργός του pulse audio;)  ισχυρίζεται πως μπορούμε να δούμε βελτίωση στην ταχύτητα και την αποκρισιμότητα του υπολογιστή μας με τον εξής τρόπο.

Κάνουμε edit το αρχείο rc.local  με την εντολή

sudo nano/etc/rc.local

και προσθέτουμε τις εξής γραμμές πάνω απο το σημείο που γράφει "exit 0":
mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

Σώζουμε τα παραπάνω και κάνουμε το /etc/rc.local εκτελέσιμο:

sudo chmod +x /etc/rc.local

Στη συνέχεια τροποποιούμε το (κρυφό) αρχείο .bashrc στο  home directory με nano ~/.bashrc) και στο τέλος του αρχείου προσθέτουμε τα εξής:

if [ "$PS1" ] ; then
mkdir -m 0700 /dev/cgroup/cpu/user/$$
echo $$ > /dev/cgroup/cpu/user/$$/tasks
echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release
fi

Για να είμαστε σίγουροι πως τα cgroups σβήνονται κάθε φορά που η τελευταία εργασία τελειώνει κάνουμε τα εξής:

sudo nano /usr/local/sbin/cgroup_clean

Και κάνουμε copy-paste το εξής:

#!/bin/sh
rmdir /dev/cgroup/cpu/$*

Σώζουμε το αρχείο και το κάνουμε εκτελέσιμο:

sudo chmod +x /usr/local/sbin/cgroup_clean

Επανεκκινούμε τον υπολογιστή μας.

Δεν ξέρω τώρα αν θα δούμε στην κυριολεξία διαφορά σε επιδόσεις αφού δεν έτρεξα κάποιο μετροπρόγραμμα. Το σύστημα πάντως δείχνει πιο αποκρίσιμο και τα μενού εμφανίζονται ταχύτερα.

*Τα παραπάνω ισχύουν για Ubuntu. 

Επιπλεόν πληροφορίες εδώ και συζήτηση για το θέμα εδώ.

Εικόνα: thanos
thanos
Απουσιάζω!
BabyTuxModerationGnu
Μέλος από: 1 Ιαν 1970
Πόντοι: 2970

Έχω μπερδευτεί με αυτό το patch(άκι).. Yell

Στην αρχή έλεγαν πως δεν βλέπεις μεγάλη διαφορά επειδή όταν τρέχεις εφαρμογές μέσα από το γραφικό περιβάλλον,όλα είναι "κάτω" από το ίδιο tty. Οπότε τα επηρεάζει όλα σαν group και έχεις τα αντίθετα αποτελέσματα από το κανονικό.

Υπάρχει κάποια διαφορά με αυτή τη version ; Διάβασα ότι κάποιο από τα δύο θα μπει και σε επόμενη έκδοση του kernel,2.6.38 αν δεν κάνω λάθος.

Εικόνα: dsyrmalis
dsyrmalis
Απουσιάζω!
BabyTuxModerationGnu
Μέλος από: 1 Ιαν 1970
Πόντοι: 3750

Θάνο, αν κατάλαβα καλά αναφέρεσαι στο patch που έχει εμφανιστεί ήδη στον kernel 2.6.37. Περίπου 230 γραμμές κώδικα. Εδώ έχουμε κάτι άλλο που επιτυγχάνει ανάλογα αποτέλεσματα χωρίς να πατσάρεις τον πυρήνα.
Εσύ μαλλον αναφέρεσαι σε αυτό;
http://marc.info/?l=linux-kernel&m=128978361700898&w=2

Εικόνα: gnu_labis
gnu_labis
Απουσιάζω!
BabyTuxModerationGnu
Μέλος από: 29 Ιαν 2008
Πόντοι: 4955

Μα το patch του πυρήνα θα βγει (πιθανότατα) στο 2.6.38, όχι στο 2.6.37. Ο .37 κυκλοφορεί ήδη κ δεν το έχει (εκτός κ αν το βάλεις μόνος σου φυσικά κ κάνεις recompile το πυρήνα).

Θάνο, είναι 2 διαφορετικοί τρόποι για το ίδιο αποτέλεσμα: η kernelspace μέθοδος του πυρήνα (που ήταν η πρώτη που προτάθηκε, οι περίφημες "200 γραμμές κώδικα") κ η userspace μέθοδος (αυτή που περιγράφει εδώ ο φίλος dsyrmalis), η οποία ουδεμία σχέση έχει με τον πυρήνα (όχι ακριβώς, έχει γιατί τον χρησιμοποιεί, αλλά σίγουρα δεν είναι patch για τον πυρήνα, ούτε μπορεί να ενσωματωθεί κάπως).

Κ οι δύο πάντως ομαδοποιούν διεργασίες ανά tty (ακόμα κ τερματικά που ανοίγεις σε γραφικό περιβάλλον). Πρέπει όμως -αν δεν κάνω λάθος- να τρέξεις κάτι από το τερματικό για να δεις τη διαφορά (πχ, δεν πάω να κάνω κλικ στο εικονίδιο του kmail, αλλά ανοίγω ένα τερματικό κ το τρέχω σαν "kmail").

Οπότε ναι, είναι λίγο αμφιλεγόμενης χρηστικότητας για τους περισσότερους χρήστες. Κ αν το παρατηρήσεις, όλα τα βίντεο που κυκλοφορούν, εστιάζουν στο ότι ανοίγεις ένα τερματικό, δίνεις ένα "make -j 40" για compile σε κάτι μεγάλο (πχ kernel compile), ενώ ανοίγουν άλλα τερματικά κ τρέχουν άλλα πράγματα ταυτόχρονα (πχ HD video playback). Αν από την άλλη ένας χρήστης ανοίγει τον υπολογιστή του, κάνει κλικ στο media player για να ακούσει τη μουσική του κ σερφάρει στο ίντερνετ, δεν πρόκειται να καταλάβει διαφορά (νομίζω).

__________________

-- gnu_labis

Το Linux ΔΕΝ είναι Windows!!!

__________________

-- gnu_labis

Το Linux ΔΕΝ είναι Windows!!!

Εικόνα: dsyrmalis
dsyrmalis
Απουσιάζω!
BabyTuxModerationGnu
Μέλος από: 1 Ιαν 1970
Πόντοι: 3750

Gnu_labis το patch ίσως να ενσωματωθεί επίσημα όπως λες στον 2.6.38. Πάντως ήδη υπάρχει στον 2.6.37 στην M5 του OpenSuse εδώ και ένα μήνα.
 
"Kernel 2.6.37rc5-12 is the basis of M5, including the famous “200 line” per tty task groups patch to improve desktop interactivity, and featuring the almost-complete removal of the so-called ‘Big Kernel Lock’, which should improve scalability."

Πηγή

Εικόνα: thanos
thanos
Απουσιάζω!
BabyTuxModerationGnu
Μέλος από: 1 Ιαν 1970
Πόντοι: 2970

@dsyrmalis
Ναι αυτό έλεγα..και που αναφέρει πιο κάτω ο gnu_labis το περίφημο patch με τις 200 γραμμές!!

@gnu_labis
Και εγώ παντού αυτό διαβάζω..Πως αν δεν "μπλέξεις" τις εφαρμογές με το τερματικό δεν βλέπεις αισθητή διαφορά..Ένιγουει θα το δοκιμάσω και το παραπάνω έτσι από περιέργεια. :D

Εικόνα: dsyrmalis
dsyrmalis
Απουσιάζω!
BabyTuxModerationGnu
Μέλος από: 1 Ιαν 1970
Πόντοι: 3750

O GNU/Labis έδωσε κάποιες χρήσιμες λεπτομέρειες και το ανέλυσε μια χαρά Θάνο. Αυτό που δεν ξέρω είναι τι θα συμβεί  αν κάνει κάποιος και τα δύο ταυτόχρονα. Ή να εφαρμόσει κάποιο άλλο patch πχ BFS σε συνδυασμό με το cgroup.

Εικόνα: mitsaras77
mitsaras77
Απουσιάζω!
BabyTux
Μέλος από: 1 Ιαν 1970
Πόντοι: 1630

Πάντως, σε μονοπύρηνο σύστημα ( pentium northwood) το πατσάκι του kernel δεν αξίζει. Κάνει το σύστημα να κολλάει αρκετά συχνά. Το καλό είναι ότι επανέρχεται μόνο του και δεν χρειάζεται hard reset, αλλά είναι πολύ εκνευριστικό.