Da skratim priču, prije nekoliko dana jedan od programera kernela je postavio zakrpu (od 200 linija koda) koji je omogućio značajno poboljšanje (skoro 10 puta) performansi sistema, posebno kada se radi o multitaskingu tokom izvršavanja teškog zadatka (kao što je kompajliranje kernela). Linus je čestitao ovom programeru na njegovom velikom doprinosu. Međutim, Red Hat programer, Lennar Poettering se nije složio sa implementacijom ovog poboljšanja direktno iz kernela; Za njega je bilo bolje napraviti promjene u korisničkom prostoru (~/.bashrc). Linus se naljutio i izgrdio ovog programera, rekavši mu da rezultati govore sami za sebe. Lennar je, umjesto da odgovori oštrim riječima, sjeo i smislio alternativa (koja ne zahteva krpljenje kernela) i koja zauzima samo 4 reda. Ukratko, Linus je zatvoren… |
Napomena: ova metoda zahtijeva podršku za grupe zadataka u Linux kernelu (cgroups), to jest, samo korisnici s Kernelom višim od 2.6.36 mogu ga primijeniti.
Kako primijeniti zakrpu u Fedori
1.- Uredite datoteku ~/.bashrc.
gedit ~ / .bashrc
2.- Zalijepite sljedeći kod na kraj datoteke:
if [ "$PS1" ] ; onda
mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$
echo $$ > /sys/fs/cgroup/cpu/user/$$/tasks
fi
3.- Pokrenite sljedeće naredbe:
mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user
Kako primijeniti zakrpu u Ubuntu
U Ubuntu-u stvari su malo komplikovanije...
1.- Uredite datoteku rc.local s ovom naredbom:
sudo gedit /etc/rc.local
i zalijepite prije mjesta gdje piše "izlaz 0", sljedeće:
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
2.- Sačuvajte fajl i dajte mu dozvole za izvršavanje:
sudo chmod +x /etc/rc.local
3.- Uredite datoteku ~ / .bashrc:
gedit ~ / .bashrc
4.- Zalijepite sljedeći kod na kraj datoteke:
if [ "$PS1" ] ;
zatim mkdir -m 0700 /dev/cgroup/cpu/user/$$
echo $$ > /dev/cgroup/cpu/user/$$/tasks
echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release
fi
5.- Izmijenite datoteku cgroup_clean:
sudo gedit /usr/local/sbin/cgroup_clean
6.- Zalijepite sljedeći kod na kraj datoteke:
#! / bin / sh
if [ "$*" != "/user" ]; onda
rmdir /dev/cgroup/cpu/$*
fi
7.- Sačuvajte fajl i dajte mu dozvole za izvršavanje:
sudo chmod +x /usr/local/sbin/cgroup_clean
8.- Ponovo pokrenite sistem.
Napomena: ako vidite folder /dev/cgroup/, primijetit ćete značajno poboljšanje u upravljanju više zadataka.
Našao sam upute za Arch, ovdje su: http://pastebin.com/raw.php?i=sHRYRuAN
Sa svoje strane sam stavio zakrpu, generalno ne primjećujem mnogo poboljšanja, ali primjećujem veliku promjenu kada skrolujem po web stranicama, zaista rade glatko po prvi put!!! =)
Odlično! Hvala vam puno na dijeljenju!
Jesam li vam rekao da tražimo ljude koji koriste Arch za blog? Ako ste zainteresovani, pišite nam na hajde uselinux@gmail.com
Veliki zagrljaj! Paul.
Hvala na pozivu, onda nastavljamo putem e-maila 😉
Igrom slučaja nema instrukcija za Archlinux, zar ne? 🙂
Nisam ih našao. Ali nešto mi govori da je vjerovatno sličniji Fedori. S druge strane, treba imati u vidu da s obzirom da svako gradi Arch kako želi, možda će to uticati na proceduru koja će slediti...
Ovdje sam pronašao kako ih primijeniti u Archlinuxu, prilično je sličan onom u Fedori: http://pastebin.com/raw.php?i=sHRYRuAN
bash: /dev/cgroup/cpu/user/$/tasks: nema takve datoteke ili direktorija
Slijedio sam ove upute i stalno mi govori ovu grešku kada otvaram AMD64 terminal x ako ima neke veze s tim
Već sam ga našao, molim Pabla da to ispravi http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html
Ono što morate da uradite u Ubuntu-u – umesto onoga što stavite – jeste:
sudo gedit /usr/local/sbin/cgroup_clean
i stavi ovo:
#! / bin / sh
if [ «$*» != «/user» ]; onda
rmdir /dev/cgroup/cpu/$*
fi
Spremni! Ispravljeno! Hvala ti!
Istina je! Hvala što ste me podsjetili!
Upravo sam dodao to pojašnjenje na početak posta.
Zagrljaj! Paul.
Konkretno, koje koristi ću imati kao korisnik i kakva poboljšanja performansi će se vidjeti u mom sistemu.
Sve ide mnogo brže. Međutim, razlike se zaista "vide" kada radite težak zadatak i želite da radite druge u isto vrijeme. Na primjer, pokrećete instalaciju nekoliko programa ili kompajlirate kernel ili uređujete težak video, a u isto vrijeme želite surfati internetom ili gledati film, itd.
Javite mi ako shvatite kako implementirati zakrpu u Arch. Pokušao bih pokrenuti onu koja radi u Fedori.
Zagrljaj! Paul.
Pretpostavljam da to zavisi od toga kako koristite računar. Ako jedva koristite internet i lagani uređivač teksta... nećete "osjetiti" razliku. S druge strane, ako ste poput mene i obavljate teške zadatke (kao što je pretvaranje video zapisa, kompajliranje kernela, itd.) dok pretražujete internet ili gledate filmove, primijetit ćete razliku.
Nakon što su svi koraci završeni, kada otvorim terminal uvijek dobijem sljedeće:
mkdir: ne može kreirati direktorij “/dev/cgroup/cpu/user/1844”: datoteka ili direktorij ne postoji
bash: /dev/cgroup/cpu/user/1844/tasks: nema takve datoteke ili direktorija
bash: /dev/cgroup/cpu/user/1844/notify_on_release: nema takve datoteke ili direktorija
domingopv @ pc1: ~ $
Sve radi dobro čak i terminal, jesam li nešto pogriješio?
Mmmm... Iskreno ne znam šta bi to moglo biti. Međutim, imam utisak da je vrlo vjerovatno da neke od koraka niste uradili ispravno, posebno korake 5 i više. Pokušajte da ih ponovite ili se uvjerite da ste ih uradili kako treba. To je sve čega mogu da se setim za sada.
Veliki zagrljaj! Paul.
Ponovo sam instalirao maverick i ponovo instalirao zakrpu i sada dobijam sljedeće.
mkdir: ne može kreirati direktorij “/dev/cgroup/cpu/user/1678”: datoteka ili direktorij ne postoji
bash: /dev/cgroup/cpu/user/1678/tasks: nema takve datoteke ili direktorija
bash: /dev/cgroup/cpu/user/1678/notify_on_release: nema takve datoteke ili direktorija
domingopv @ pc1: ~ $
Ups...iskreno ne znam šta bi to moglo biti. Meni je savršeno funkcioniralo.
Nešto mi govori da čišćenje cgroup nije urađeno kako treba. Zato sam insistirao da vidite korak 5 dalje.
Živjeli! Paul.
O moj bože, impresivno, mogu gledati 1080p flash video na pasivnoj Nvidia 8400, mislim, loše loše, SAVRŠENO, CPU-ovi svi rade, divno uffff, kakvo poboljšanje, mnogo je bolje, imam Ubuntu 10.04 😀 to je super , videi mi idu hahaha 😀
Šta rc.local? Ima ih nekoliko, koji je? Pozdrav.
Jednostavno sam napisao komande navedene u tački 4. Ne morate to kopirati u datoteku, već izvršiti te komande.
Živjeli! Paul.
Loše je objašnjeno.
Ono što treba da uradite je da uredite datoteku rc.local sa:
sudo gedit /etc/rc.local
morate zalijepiti unutra (prije izlaza 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
To je problem. Ti koraci su slabo objašnjeni.
Upravu si! Jasno kaže, "uredite rc.local fajl." Ono što je nedostajalo je komanda da se ovo uradi (što neki možda ne znaju). Odmah ću ga dodati.
Hvala na obavještenju! Pozdrav! Pablo.
Kakva bi bila procedura u PCLinuxOs-u?
Istina je da ne znam…
Ako saznate, ne zaboravite podijeliti podatke sa ostalima!
Puno vam hvala!
Živjeli! Paul.
Da li mi se tako čini ili niste naveli odakle vam to? Možete li mi reći izvor?
hvala
Ne postoji jedinstven izvor. Tražio sam kako to učiniti iz različitih izvora i iz svog ličnog iskustva. Uopšteno govoreći, mogu vam reći da su izvori milioni blogova koji su reprodukovali tu vest. Potražite "200 line linux kernel patch" i vidjet ćete o čemu govorim. Ne sećam se tačno, ali Ubuntu deo je možda preuzet sa WebUpd8; nije tako sa Fedorom.
Ne tako davno sam korisnik Ubuntu 64 bit i kada sam vidio ovaj savjet počeo sam istraživati i trenutni kernel koji imam je 2.6.32-27 prema postu ova zakrpa se može primijeniti samo na kernele koji su viši od ili jednako 2.6.36 Moje pitanje je da li ova promjena funkcionira samo za 32-bitne distro ili u mojoj trenutnoj distribuciji može li se kernel ažurirati na 2.6.36?
Hvala na svim informacijama na web stranici, odličan materijal.
Ova promjena radi za 32 i 64 bit, podjednako.
Živjeli! Paul.
na pitanje, a ne bi li ovo napravilo zbrku s nekim kasnijim ažuriranjem?
Ako nije dobro, šta bi bilo najgore što bi se moglo dogoditi?
(vidite da samo prelazak sa Ubuntu 10.04 na 10.10 sve ruši)
Prva stvar koju treba razjasniti (da bi se izbjegla neodgovorna upotreba metode) je da zahtijeva podršku za grupe zadataka u Linux kernelu (cgroups), odnosno da samo korisnici s Kernelom većim od 2.6.36 mogu primijeniti ovu metodu. poboljšanje.