Krótko mówiąc, kilka dni temu jeden z twórców jądra przesłał łatkę (200 linijek kodu), co pozwoliło znacznie poprawić (prawie 10-krotnie) wydajność systemu, zwłaszcza gdy mamy do czynienia z wielozadaniowością podczas wykonywania ciężkiego zadania (takiego jak kompilacja jądra). Linus pogratulował temu deweloperowi wielkiego wkładu. Jednak programista Red Hat, Lennar Poettering nie zgodził się na zaimplementowanie tego ulepszenia bezpośrednio z jądra; lepiej dla niego było wprowadzić zmiany w przestrzeni użytkownika (~ / .bashrc). Linus rozgniewał się i zganił tego dewelopera, mówiąc mu, że wyniki mówią same za siebie. Lennar, zamiast odpowiedzieć szorstkimi słowami, usiadł i opracował alternatywa (która nie wymaga łatania jądra) i zajmuje tylko 4 linie. Ostatecznie zamknęli Linusa ... |
Uwaga: ta metoda wymaga obsługi grup zadań w jądrze Linuksa (cgroups), to znaczy tylko użytkownicy z jądrem wyższym niż 2.6.36 mogą ją zastosować.
Jak zastosować poprawkę w Fedorze
1.- Edytuj plik ~ / .bashrc.
gedit ~ / .bashrc
2.- Wklej następujący kod na końcu pliku:
if ["$ PS1"]; następnie
mkdir -m 0700 / sys / fs / cgroup / cpu / user / $$
echo $$> / sys / fs / cgroup / cpu / user / $$ / jobs
fi
3.- Uruchom następujące polecenia:
mount -t cgroup cgroup / sys / fs / cgroup / cpu -o cpu
mkdir -m 0777 / sys / fs / cgroup / cpu / user
Jak zastosować łatkę w Ubuntu
W Ubuntu sprawy są trochę bardziej skomplikowane ...
1.- Edytuj plik rc.lokalny tym poleceniem:
sudo gedit /etc/rc.local
i wklej przed napisem „exit 0”, co następuje:
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.- Zapisz plik i nadaj mu uprawnienia do wykonywania:
sudo chmod + x /etc/rc.local
3.- Edytuj plik ~ / .bashrc:
gedit ~ / .bashrc
4.- Wklej następujący kod na końcu pliku:
if ["$ PS1"];
następnie mkdir -m 0700 / dev / cgroup / cpu / user / $$
echo $$> / dev / cgroup / cpu / user / $$ / jobs
echo "1"> / dev / cgroup / cpu / user / $$ / notify_on_release
fi
5.- Zmodyfikuj plik cgroup_clean:
sudo gedit / usr / local / sbin / cgroup_clean
6.- Wklej następujący kod na końcu pliku:
#! / Bin / sh
if ["$ *"! = "/ użytkownik"]; następnie
rmdir / dev / cgroup / cpu / $ *
fi
7.- Zapisz plik i nadaj mu uprawnienia do wykonywania:
sudo chmod + x / usr / local / sbin / cgroup_clean
8.- Uruchom ponownie system.
Uwaga: jeśli zobaczysz folder / dev / cgroup /, zauważysz znaczną poprawę zarządzania wielozadaniowością.
Znalazłem instrukcje do Arch, są tutaj: http://pastebin.com/raw.php?i=sHRYRuAN
Ze swojej strony nałożyłem łatkę, dużo poprawy w ogóle nie zauważam, ale jeśli zauważysz dużą zmianę podczas przewijania stron internetowych, to po raz pierwszy są one naprawdę płynne !!! =)
Świetny! Dziękuję bardzo za udostępnienie!
Czy mówiłem Ci, że szukamy osób, które używają Arch do blogowania? Jeśli jesteś zainteresowany, napisz użyjmy linux@gmail.com
Wielki uścisk! Paweł.
Dzięki za zaproszenie, dalej będziemy kontynuować pocztą 😉
Jest przypadkiem, że nie będzie żadnych instrukcji dla Archlinux, prawda? 🙂
Nie znalazłem ich. Ale coś mi mówi, że z pewnością bardziej przypomina Fedorę. Z drugiej strony należy pamiętać, że skoro wszyscy montują Archa tak, jak chcą, być może ma to wpływ na procedurę, której należy przestrzegać ...
Tutaj znalazłem, jak je zastosować w Archlinux, jest dość podobny do fedory: http://pastebin.com/raw.php?i=sHRYRuAN
bash: / dev / cgroup / cpu / user / $ / jobs: plik lub katalog nie istnieje
Postępowałem zgodnie z tymi instrukcjami i wyświetla mi ten błąd podczas otwierania terminala AMD64 x, jeśli ma coś do zrobienia
Już to znalazłem, proszę Pablo, popraw to http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html
Co robić w Ubuntu - zamiast tego, co umieściłeś - to:
sudo gedit / usr / local / sbin / cgroup_clean
i umieść to:
#! / Bin / sh
if ["$ *"! = "/ użytkownik"]; następnie
rmdir / dev / cgroup / cpu / $ *
fi
Gotowy! Poprawione! Dziękuję Ci!
To prawda! Dzięki za przypomnienie!
Właśnie dodałem to wyjaśnienie na początku wpisu.
Uścisk! Paweł.
W szczególności, jakie korzyści uzyskam jako użytkownik i jakie ulepszenia wydajności będą widoczne w moim systemie.
Wszystko idzie znacznie szybciej. Jednak różnice są naprawdę „widoczne”, gdy wykonujesz ciężkie zadanie i chcesz wykonywać inne zadania w tym samym czasie. Na przykład, uruchamiasz instalację kilku programów lub kompilujesz jądro lub edytujesz ciężki film i jednocześnie chcesz surfować po Internecie lub oglądać film itp.
Daj mi znać, jeśli odkryjesz, jak zaimplementować łatkę w Arch. Spróbuję uruchomić tę, która działa w Fedorze.
Przytulić! Paweł.
Wydaje mi się, że zależy to od sposobu, w jaki używasz swojego komputera. Jeśli ledwo korzystasz z Internetu i jakiegoś lekkiego edytora tekstu ... nie poczujesz różnicy. Z drugiej strony, jeśli jesteś podobny do mnie i wykonujesz ciężkie zadania (takie jak konwersja wideo, kompilacja jądra itp.) Podczas przeglądania Internetu lub oglądania filmów, możesz zauważyć różnicę.
Po wykonaniu wszystkich czynności, kiedy otwieram terminal, zawsze otrzymuję:
mkdir: nie można utworzyć katalogu „/ dev / cgroup / cpu / user / 1844”: plik lub katalog nie istnieje
bash: / dev / cgroup / cpu / user / 1844 / jobs: Plik lub katalog nie istnieje
bash: / dev / cgroup / cpu / user / 1844 / notify_on_release: Plik lub katalog nie istnieje
domingopv @ pc1: ~ $
Wszystko działa dobrze, nawet terminal, zrobiłeś coś nie tak?
Hmm ... Naprawdę nie wiem, co to może być. Jednak mam wrażenie, że jest bardzo prawdopodobne, że nie wykonałeś dobrze niektórych kroków, zwłaszcza od piątej. Spróbuj je powtórzyć lub upewnij się, że masz rację. To wszystko, o czym na razie myślę.
Wielki uścisk! Paweł.
Ponownie zainstaluj Maverick i ponownie zainstaluj poprawkę, a teraz otrzymuję następujące.
mkdir: nie można utworzyć katalogu „/ dev / cgroup / cpu / user / 1678”: plik lub katalog nie istnieje
bash: / dev / cgroup / cpu / user / 1678 / jobs: Plik lub katalog nie istnieje
bash: / dev / cgroup / cpu / user / 1678 / notify_on_release: Plik lub katalog nie istnieje
domingopv @ pc1: ~ $
Uyy .. Naprawdę nie wiem, co to może być. U mnie zadziałało idealnie.
Coś mi mówi, że czyszczenie cgroup nie działa dobrze. Dlatego nalegałem, abyś zobaczył od kroku 5.
Twoje zdrowie! Paweł.
Mamo moja, imponujące, widzę filmy flash 1080p na pasywnej nvidii 8400, to znaczy źle źle, PERFEKCYJNIE, procesor cały działa, cudowne uffff, to się poprawia, jest znacznie lepiej, mam Ubuntu 10.04 😀 dobrze, filmy są dla mnie dobre hahaha 😀
Co rc.local? Jest ich kilka, co to jest? Pozdrowienia.
Właśnie napisałem polecenia, które są wymienione w punkcie 4. Nie musisz ich kopiować do pliku, ale uruchamiaj te polecenia.
Twoje zdrowie! Paweł.
Jest to słabo wyjaśnione.
Musisz edytować plik rc.local za pomocą:
sudo gedit /etc/rc.local
Musisz wkleić do środka (przed wyjściem 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 jest problem. Te kroki są słabo wyjaśnione.
Masz rację! Wyraźnie mówi, „edytuj plik rc.local”. Brakowało do dodania polecenia zrobienia czegoś takiego (o czym niektórzy mogą nie wiedzieć). Dodam to teraz.
Dzięki za powiadomienie! Twoje zdrowie! Paweł.
Jaka byłaby procedura w PCLinuxOs?
Prawda jest taka, że nie wiem…
Jeśli się dowiesz, nie zapomnij podzielić się danymi z resztą!
Dziękuję bardzo!
Twoje zdrowie! Paweł.
Wydaje mi się, czy nie umieściłeś żadnego odniesienia, skąd go masz? Czy możesz mi podać źródło?
dzięki
Nie ma jednego źródła. Szukałem, jak to zrobić, z różnych źródeł iz własnego doświadczenia. Ogólnie rzecz biorąc, mogę powiedzieć, że źródłem są miliony blogów, które powielały te wiadomości. Wyszukaj „patch 200 linux kernel lines”, a zobaczysz, o czym mówię. Nie pamiętam dokładnie, ale część Ubuntu mogła zostać pobrana z WebUpd8; nie tak dla Fedory.
Niedawno jestem użytkownikiem Ubuntu 64 bit i kiedy widzę tę wskazówkę, zaczynam to badać, a obecne jądro, które mam, to 2.6.32-27 zgodnie z postem, ta łatka może być zastosowana tylko do jąder, które są wyższe lub równe do 2.6.36 Moje pytanie brzmi, czy ta zmiana działa tylko dla dystrybucji 32-bitowych, czy w mojej obecnej dystrybucji można zaktualizować jądro do wersji 2.6.36?
Dzięki za wszystkie informacje w sieci, świetny materiał.
Ta zmiana działa tak samo dla 32 i 64 bitów.
Twoje zdrowie! Paweł.
na pytanie, a to nie zepsułoby późniejszej aktualizacji?
Gdyby nie poszło dobrze, co byłoby najgorszego, co mogłoby się wydarzyć?
(Widzisz, że przejście z Ubuntu 10.04 na 10.10 powoduje awarię wszystkiego)
Pierwszą rzeczą, którą należy wyjaśnić (aby uniknąć nieodpowiedzialnego użycia metody) jest to, że wymaga ona obsługi grup zadań w jądrze Linuksa (cgroups), czyli tylko użytkownicy z Kernelem wyższym niż 2.6.36 mogą stosować tę metodę poprawa.