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

dsyrmalis | Κυρ, 01/16/2011 - 14:32 | 2' | 7

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. 


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

Φόρουμ
Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

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

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

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

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

Μα το 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 το 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."

Πηγή

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

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

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

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