Per fer la història curta, fa uns dies un dels desenvolupadors del nucli va pujar un patch (de 200 línies de codi) que permetia millorar considerablement (gairebé una 10 vegades) el rendiment del sistema, especialment en bregar amb el multitasking durant l'execució d'una tasca pesada (com compilar el kernel). Linus va felicitar aquest desenvolupador per la seva gran aportació. No obstant això, un desenvolupador de Red Hat, Lennar Poettering no estava d'acord a implementar aquesta millora directe des del nucli; per a ell era millor fer els canvis a l'espai d'usuari (~/.bashrc). Linus es va enutjar i va increpar aquest desenvolupador, dient-li que els resultats parlaven per si mateixos. Lennar, en comptes de respondre amb paraules dures, es va asseure i idear una alternativa (que no necessita pegat el kernel) i que ocupa gairebé 4 línies. En definitiva, van tancar el bec a Linus… |
Nota: aquest mètode requereix suport a grups de tasques al Kernel Linux (cgroups), és a dir, només els usuaris amb Kernel superior a 2.6.36 podrien aplicar-lo.
Com aplicar el pegat a Fedora
1.- Edita el fitxer ~/.bashrc.
gedit ~ / .bashrc
2.- Enganxeu el codi següent al final del fitxer:
if [ "$PS1" ] ; then
mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$
fet $$ > /sys/fs/cgroup/cpu/user/$$/tasks
fi
3.- Executeu les ordres següents:
mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user
Com aplicar el pegat a Ubuntu
A Ubuntu la cosa és una mica més complicada…
1.- Edita l'arxiu rc.local amb aquesta comanda:
sudo gedit /etc/rc.local
i enganxeu abans d'on diu «exit 0», el següent:
mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
fet "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent
2.- Deseu el fitxer i atorgueu permisos d'execució:
sudo chmod +x /etc/rc.local
3.- Edita l'arxiu ~ / .bashrc:
gedit ~ / .bashrc
4.- Enganxeu el codi següent al final del fitxer:
if [ "$PS1" ] ;
then mkdir -m 0700 /dev/cgroup/cpu/user/$$
fet $$ > /dev/cgroup/cpu/user/$$/tasks
fet "1" > /dev/cgroup/cpu/user/$$/notify_on_release
fi
5.- Modifiqueu el fitxer cgroup_clean:
sudo gedit /usr/local/sbin/cgroup_clean
6.- Enganxeu el codi següent al final del fitxer:
#! / Bin / sh
if [ "$*" != "/user" ]; then
rmdir /dev/cgroup/cpu/$*
fi
7.- Deseu el fitxer i atorgueu permisos d'execució:
sudo chmod +x /usr/local/sbin/cgroup_clean
8.- Reinicieu el sistema.
Nota: si veus la carpeta /dev/cgroup/ notaràs una millora considerable en la gestió de la multitasca.
Vaig trobar les instrucions per a Arch, són aquí: http://pastebin.com/raw.php?i=sHRYRuAN
Per part meva, vaig aplicar el pegat, molta millora no noto en general, però si es nota un gran canvi en fer scroll a les pagines web, realment per primera vegada van fluides!!! =)
Boníssim! Moltes gràcies x compartir!
Et vaig dir que estem buscant gent que utilitzi Arch per escriure al bloc? Si us interessa, escriviu-nos a usemoslinux@gmail.com
Un gran abraçada! Pau.
Gràcies per la invitació, després seguim per mail llavors 😉
De casualitat no hi haurà instruccions per a Archlinux, no? 🙂
No les vaig trobar. Però alguna cosa em diu que segur és més semblant a Fedora. D'altra banda, caldria tenir en compte que com cadascú va armant Arch com vol, potser això influeixi en el procediment a seguir…
Aquí vaig trobar com aplicar-les a Archlinux, és força similar al de fedora: http://pastebin.com/raw.php?i=sHRYRuAN
bash: /dev/cgroup/cpu/user/$/tasks: No existeix el fitxer o directori
Vaig seguir aquestes instruccions i em segueix dient aquest error en obrir el terminal AMD64 x si hi té alguna cosa a veure
Ja ho he trobat, si us plau pau corregiu-lo http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html
El que cal fer a ubuntu – en comptes del que poses – és:
sudo gedit /usr/local/sbin/cgroup_clean
i posar això:
#! / Bin / sh
if [ «$*» != «/user» ]; then
rmdir /dev/cgroup/cpu/$*
fi
A punt! Corregit! Gràcies!
És cert! Gràcies x recordeu-m'ho!
Acabo d'afegir aquest aclariment al començament del post.
Una abraçada! Pau.
Concretament, quins beneficis obtindré com a usuari, i quines millores en rendiment es veuran en el meu sistema.
Tot va molt més de pressa. No obstant això, les diferències es «veuen» realment quan estàs realitzant una tasca pesada i voleu fer-ne al mateix temps altres. Per exemple, estàs corrent la instal·lació de diversos programes o estàs compilant el kernel o editant un vídeo pesat i alhora voleu navegar per internet o veure una pel·li, etc.
Aviseu-me si descobriu com implementar el pegat a Arch. Jo intentaria corrent el que funciona a Fedora.
Abraçada! Pau.
Suposo que això depèn de l'ús que us donis al teu compu. Si amb prou feines fas servir internet i algun editor de text lleuger… no «sentiràs» la diferència. En canvi, si ets com jo i fas tasques pesades (com convertir vídeos, compilar el nucli, etc.) mentre navegas a internet o mires pel·lis, sí que es nota la diferència.
Realitzats tots els passos ,en obrir el terminal em surt sempre el següent:
mkdir: no es pot crear el directori "/dev/cgroup/cpu/user/1844": No existeix el fitxer o directori
bash: /dev/cgroup/cpu/user/1844/tasks: No existeix el fitxer o directori
bash: /dev/cgroup/cpu/user/1844/notify_on_release: No existeix el fitxer o directori
domingopv @ PC1: ~ $
Tot funciona bé fins i tot el terminal, realitzeu alguna cosa malament?
Mmmm..la veritat no sé què pot ser. No obstant, em fa la impressió que és molt probable que no hagis fet bé algun dels passos, del 5 en endavant especialment. Prova repetint-los o assegurant-te que els hagis fet bé. Això és tot el que se m'ocorre per ara.
Un gran abraçada! Pau.
Reinstal·leu maverick i reinstal·leu el pegat i ara em surt el següent.
mkdir: no es pot crear el directori "/dev/cgroup/cpu/user/1678": No existeix el fitxer o directori
bash: /dev/cgroup/cpu/user/1678/tasks: No existeix el fitxer o directori
bash: /dev/cgroup/cpu/user/1678/notify_on_release: No existeix el fitxer o directori
domingopv @ PC1: ~ $
Uyy..la veritat que no sé què pot ser. A mi em va funcionar perfecte.
Alguna cosa em diu que la neteja de cgroup no es fa bé. Per això t'he insistit que veiessis del pas 5 en endavant.
Salutacions! Pau.
Mare meva, impressionant, puc veure vídeos flash 1080p en una nvidia 8400 passiva, osea, mala dolenta, PERFECTAMENT, les cpus totes funcionant, meravellós uffff, que millora, va molt millor, tinc Ubuntu 10.04 😀 que bé, els videos 😀
Què rc.local? Hi ha diversos, quin és? Salutacions.
Simplement he escrit les ordres que es llisten al punt 4. No has de copiar això dins d'un fitxer sinó executar aquestes ordres.
Salutacions! Pau.
Està mal explicat.
El que cal fer és editar el fitxer rc.local amb:
sudo gedit /etc/rc.local
cal enganxar dins (abans de l'èxit 0):
mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
fet «/usr/local/sbin/cgroup_clean» > /dev/cgroup/cpu/release_agent
Aquest és el problema. Aquests passos estan mal explicats.
Teniu raó! Diu clarament, «editar el fitxer rc.local». El que va faltar afegir és l'ordre per fer aquesta cosa (que potser alguns no ho coneguin). Ja mateix ho afegeixo.
Gràcies x l'avís! Salutacions! Pau.
Quin seria el procediment a PCLinuxOs?
La veritat que no sé…
Si esbrinaràs, no t'oblidis de compartir la data amb la resta!
Moltes gràcies!
Salutacions! Pau.
M'ho sembla a mi o no has posat cap referència d'on ho has tret? Em podries dir la font?
Gràcias
No hi ha una única font. Vaig anar buscant com fer-ho de diferents fonts i de la meva pròpia experiència personal. En termes generals, et puc dir que les fonts són els milions de blocs que van reproduir aquesta notícia. Busca «pegat 200 línies kernel linux» i veuràs de què parlo. No ho recordo exactament, però és possible que la part d'Ubuntu l'hagi obtinguda de WebUpd8; no així la de Fedora.
Jo sóc usuari de no fa gaire, de ubuntu 64 bit i en veure aquest tip em poso a investigar i el kernel actual que tinc és 2.6.32-27 segons el post aquest només es pot aplicar aquest pegat a kernels que siguin superior o igual al 2.6.36 La meva pregunta és si aquest canvi només serveix per a distros de 32 bits o al meu actual distro es pot actualitzar el kernel a 2.6.36 ¿?
Gràcies per tota la info de la web, excel·lent material.
Aquest canvi serveix per a 32 i 64 bits, per igual.
Salutacions! Pau.
a una pregunta, i això no faria embolics amb alguna actualització posterior?
en cas que no anés bé, què seria el pitjor que podria passar?
(ja veus que després el sol anar d'un ubuntu 10.04/10.10 a un XNUMX/XNUMX crashea tot)
El primer que caldria aclarir (per evitar l'ús irresponsable del mètode) és que aquest requereix de suport a grups de tasques al Kernel Linux (cgroups), és a dir, només usuaris amb Kernel superior a 2.6.36 podrien aplicar aquest mètode de millora.