Debian fórum

Tipy, triky, návody - pouze návody, nevkládat dotazy! => Správa, údržba a nastavení systému => Téma založeno: MartenP kdy 18. 11. 2009, 10:19:42

Název: Údržba a optimalizace systému
Přispěvatel: MartenP kdy 18. 11. 2009, 10:19:42
Tento návod si dává za cíl poukázat na možnou cestu uživatelovu, kterou by se mohl ubírat při optimalizaci svého systému pro lepší výkon, přehlednost a pocit vítězství nad bordelem.


Upozornění: Naprosto se vzdávám jakékoliv odpovědnosti za potíže vzniklé používáním tohoto návodu. Vše děláte na vlastní nebezpečí!

Dodatek k poznámce: Vše mám samozřejmě prozkoušené, ale to, že mi to funguje, není záruka všeobecné bezchybnosti. Na všechny nejasnosti se raději ptejte.


Vyladění bootu aneb Využíváme výhod dvoujádra


Teoretické zrychlení se pohybuje kolem 4s, což jsem si ověřil ve dvou systémech (Debian Sid a Xubuntu) na vlastní kůži.

Zrychlení spočívá ve využití vícejádrových procesorů ke spuštění paralelních startovacích skriptů, čímž je efektivněji využit výpočetní potenciál.

Úprava je velmi jednoduchá - editací souboru /etc/init.d/rc. Pro úpravu budete potřebovat práva roota.

sudo nano  /etc/init.d/rc

Řádek concurrency=none změňte na concurrency=shell, čímž je celá věc hotová. Pro vyzkoušení restartujte.

Tento tip funguje dobře pouze na vícejádrových procesorech a procesorech podporující Hyper-Threading, nedoporučuji ho zkoušet na obyčejných jednojádrech. Systém by nemusel nabootovat.



Plánujeme kontrolu souborových systémů


Čas od času je třeba provést kontrolu souborového systému nástrojem fsck. Ukažme si, jak takovou kontrolu naplánovat na příští bootování systému.

Při provádění údržby systému je žádoucí občas provést i kontrolu souborového systému. My si ukážeme, jak zařídíme, aby nástroj fsck provedl zkontrolování souborového systému při příštím bootování.

Stačí v kořenovém adresáři / vytvořit soubor s názvem forcefsck. To provedeme například příkazem

sudo touch /forcefsck

Při dalším bootování proběhne kontrola všech diskových oddílů a námi vytvořený soubor se automaticky smaže.


Preload aneb Startujeme aplikace rychleji

Utilitka preload pracuje jako na pozadí běžící daemon a zaznamenává naše statisticky nejpoužívanější aplikace. Pro tyto aplikace pak nechává v paměti RAM načtené potřebné knihovny, což přináší výrazně rychlejší start těchto aplikací.

Užití je až tragicky primitivní. Utilitku nainstalujeme klasicky příkazem

sudo aptitude install preload

Dále už utilitka pracuje plně automaticky a není potřeba dalších zásahů uživatele. Samotná aplikace pak zabere v paměti okolo 1MB a pro její fungování není potřeba žádných speciálních knihoven. Knihovny jsou načítány do paměti, jež je ovšem označená jako volná, a tak může být kdykoliv využita jiným hladovým procesem.


Dash aneb Provádíme skripty rychleji

DASH (Debian Almquist Shell) je nenáročný POSIX-kompatibilní shell odvozený od ash.

Program je možno snadno využívat jako /bin/sh (protože vykonává skripty rychleji než bash), nebo jako výchozí shell superuživatele. Závisí na menším počtu knihoven než bash a z tohoto důvodu je také méně náchylnější na problémy související s aktualizací systému nebo selhání disku.

Instalujeme příkazem

sudo aptitude install dash

Za výchozí shell nastavíme příkazem

sudo dpkg-reconfigure dash


Balík localepurge aneb Mažeme zbytečné locales

Utilitkou localepurge smažeme všechny nepoužívané lokalizace a zbytečné lokalizované manuály.

Nejdříve je dobré provést kontrolu locales, jež jsou nastaveny a používány v našem systému. Provedeme ji příkazem

sudo dpkg-reconfigure locales

Poté nainstalujeme utilitku localepurge a při její instalaci zaškrtneme žádané locales, které jsme si zjistili předchozím příkazem (doporučuji všechny domovské jazyky a angličtiny).

sudo apt-get install localepurge

Čistku locales provedeme jednoduchým příkazem

sudo localepurge

Osobně tuto utilitku používám a po prvním spuštění mi uvolnila asi 150MB zbytečných lokalizačních souborů. Tato malá aplikace se nadále spouští automaticky při každé instalaci jakéhokoliv balíku, takže se systém opětovně nezanese zbytečnými soubory.


Debfoster aneb Pryč se zbytečnými balíky a knihovnami

Onehdá jsem narazil na opravdu extrémně užitečný balíček debfoster, jenž nám výrazně zjednoduší a zpříjemní údržbu celého systému a zavede pořádek v našich nainstalovaných balících.

Program vytvoří seznam "hlavních" (osamocených, bez dalších závislostí) balíků, jež ve svých závislostech obsahují veškeré nainstalované dílčí balíky. Uživatel z vygenerovaného seznamu (po důkladném prověření!) odstraní nepotřebné a zbytečné balíky a program pak vymaže tyto balíky i s jejich závislostmi.

Nainstalujeme balík debfoster (Synaptic, sudo aptitude install debfoster,...) a příkazem

sudo debfoster -q

vygenerujeme seznam osamocených balíků.

Ten pak editujeme příkazem

sudo nano /var/lib/debfoster/keepers

a vymažeme zbytečné a nepoužívané balíky (nikdy nemažeme grub a součásti jádra!).

Poté několikrát za sebou pustíme čistící příkaz (z důvodu nerekurzivní politiky mazání)

sudo debfoster -f

O dalších možnostech této aplikace se dozvíme v jejích manuálových stránkách.

Tento tip je pouze pro zodpovědné a zkušenější uživatele mající schopnost rozeznat důležitost a potřebnost balíků. Ze seznamu mažeme pouze balíky, o nichž jsme si jistí, že jsou zbytečné.

Tímto způsobem vytvoříme a udržíme naprosto čistý systém bez zbytečných a zbytkových balíků a knihoven. Je vysoce doporučeno (s lehkým varováním) tento tip vyzkoušet.


Utilitka lc aneb Uklízíme pečlivěji

Při svých toulkách po internetu jsem narazil na užitečnou utilitku od Davida Watzkeho, jež dovede udělat pořádek v symlincích.

Simlink Checker zkontroluje simlinky a spolehlivě smaže ty, které vedou na neplatné umístění.

Jak na to?

Stáhneme si tar.bz2 archiv z oficiálních stránek http://www.watzke.cz/cs/cc . Rozbalíme a z rozbalené složky spustíme terminál. Nainstalujeme klasickými příkazy

make
sudo make install


Pokud narazíte na problémy při překládání v gcc4.3 a vyšším, do souboru main.cc přidejte řádek
#include <cstdio> a zkuste přeložit znovu.

Pak už jen provedeme kontrolu simlinků příkazy

lc -rd /
sudo lc -rd /



Bleachbit aneb Vysavač na systémové smetí

Při mých toulkách na internetu jsem narazil na jeden velmi zajímavý softík. O co jde?

Bleachbit je čistící prográmek, jenž umí odstranit velkou část dočasného či nepoužívaného balastu v systému.

Rozhraní je naprosto triviální. Po maličké konfiguraci po prvním spuštění již pouze zaškrtáme objekty k čištění, stiskneme tlačítko Náhled pro zobrazení souborů označených k výmazu, poté již jen klikneme Smazat a dáme bordýlku pápá.

Ke konfiguraci si dovolím jednu poznámku k sekci Jazyky. Vhodné je zaškrtnout k ponechání kromě češtiny i angličtinu. Některé do češtiny nelokalizované aplikace by po odstranění angličtiny mohly postrádat použitelný alternativní překlad. Odstranění zbytečných překladů aplikací může uvolnit slušné místečko na disku.

Bleachbit disponuje dvěma nezávislými módy - uživatelským a administrátorským. Rozdíl je v tom, jaká část systému a s jakými právy je pročišťována.

Nutno podotknout, že i přes mé počáteční obavy funguje Bleachbit spolehlivě, ale i přesto je alespoň elementární opatrnost na místě. Při prvním čištění mi oba módy společně uvolnili na 120MB. Systém je bleskově rychlý, křišťálově čistý a neotřesitelně stabilní.

Doporučuji stáhnout balík z oficiálních stránek http://bleachbit.sourceforge.net/ . Balík v repositářích má totiž nesmyslně moc závislostí a instaluje velkou spoustu zbytečností.


Finální úklid aneb Prelinkujeme a defragmentujeme

Protože jsem od přírody čistotný tvor, udržuji pořádek i na disku. Notebook používám jako pracovní nástroj a vyžaduji od něj absolutní stabilitu a spolehlivost. Na disku mám totiž pro mě cenná data. Neustále mi v hlavě duní zvon varující mě před nepořádkem v systému. Je to i jeden z důvodů mého odchodu od Windows. Ale to už je na jiné povídání.


Prelink

Balík prelink modifikuje knihovny funkcí a binární soubory ELF tak, aby se rychleji nahrávaly. Výsledkem je méně relokací při startu programu. Tím přispívá k jeho rychlejšímu startu. Pomalé nahrávání knihoven je jednou z nejčastějších příčin pomalého startu aplikací. Tento balík naleznete v repositáři Ubuntu. (citace z wiki.ubuntu.cz)

Instalujeme příkazem
sudo aptitude install prelink

Používáme příkazem
sudo prelink -avmR


pyFragTools

Toto je balík pro defragmentaci souborového systému. Dle oficiálních informací souborový systém EXTx má míru fragmentace souborů značně omezenou. Mé zkušenosti ale potvrzují, že pravidelná defragmentace tohoto souborového systému napomáhá znatelně rychlejšímu startu aplikací.

Archiv si můžete stáhnout na http://ubuntuforums.org/showthread.php?t=169551 .

Překládáme příkazem
sudo make install
spuštěného z adresáře z rozbaleného archivu.

Používáme příkazem
sudo defrag -n počet_cyklů lokace_k_defragmetaci

Tato aplikace je nejlepší ze všech defragmentačních utilit pro GNU/Linux. Jak už to tak bývá, je zde jedno ALE. Ve verzi Pythonu 2.5 vše funguje bez problému, Python 2.6 ale přináší jeden problém špatné interpretace v kódu programu, a tak program nefunguje. Na zmiňovaných stránkách je vodítko na opravu a pár uživatelů si toto vodítko chválí, mně se ale neosvědčilo a program nefungoval. V tomto případě doporučuji některou z alternat.


fiDefrag

Tento program také není špatný, ale nedosahoval jsem s ním takových výsledků jako s pyfragtools.

Nejnovější verzi jsem stahoval přes bzr.

sudo aptitude install bzr
bzr branch lp:fidefrag


Z nově vzniklého adresáře na /home spustíme příkaz tvaru
sudo python fiDefrag.py -h | -a <dir> | -d <dir> [-p <passes>]
a defragmentujeme.

Konečný stav je ovšem horší než s aplikací pyfragtools. Defragmentace trvá poměrně dlouho a i tak nejsou defragmentovány úplně všechny soubory.


Shake

Z hlubin internetových vod se vynořila aplikace s názvem Shake.

Jednoduché domovské stránky http://vleu.net/shake/ jsou přehledně zpracovány a jsou zde popsány základní charakteristiky programu a jednoduchý návod na použití. Aplikace funguje spolehlivě a dobře.

Shake pracuje tak, že soubor ucelí, co se týče umístění na disku, a pak všechny soubory nalepí hned za sebe. Hlavičky tedy nemusí při čtení rejdit po celém disku a zkrátí se tak přístupová doba k souboru a výkon celého systému vzroste. Celá operace trvá několik minutek v závislosti na stavu souborového systému. Ve srovnání s PyFragTools je doba operování o poznání kratší a výsledek o poznání horší.

Existuje repositář pro Ubuntu, který ovšem stejně dobře funguje i pro Debian.

deb http://ppa.launchpad.net/un-brice/ppa/ubuntu intrepid main
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xe6e72ba35a344e8a8159196b59a333d4e2235dbb


Prográmek používejte v případě, že se vám neosvědčila první či druhá možnost.

Pro správné fungování je vyžadován mountovací parametr user_xattr v /etc/fstab pro všechny cílové jednotky.


Závěr

Všechny připomínky, dotazy, hlášení chyb či žádosti se budu snažit vyslyšet. Taktéž budu velice vděčen za vaše osobní zkušenosti s touto problematikou.

Doufám, že tento návod způsobí masivní pokrok v oblasti hygieny operačního systému, neboť to je základ k úspěšné a pohodlné práci na počítači.

Děkuji, že jste strávili váš čas čtením tohoto mého chorobného výlevu!
Název: Re: Údržba a optimalizace systému
Přispěvatel: Yontalcar kdy 18. 11. 2009, 12:16:04
ad lc
zbytečné, stačí GNU find
find -P ~ -xtype l
find -P ~ -xtype l -delete
Název: Re: Údržba a optimalizace systému
Přispěvatel: MartenP kdy 18. 11. 2009, 16:22:28
Docela se bojím to pustit na /. U lc mám aspoň vyzkoušené, že nesmaže nic, co by nemělo. Věřím Davidovi, že ten jeho prográmek programoval z dobrého důvodu :)

EDIT: Funguje to spolehlivě. Díky!
Název: Re: Údržba a optimalizace systému
Přispěvatel: Visterius kdy 18. 11. 2009, 16:51:17
Díky moc, fakt pěkný návod - obzvlášť "concurrency=shell" je užitečné.
Název: Re: Údržba a optimalizace systému
Přispěvatel: Yontalcar kdy 18. 11. 2009, 19:35:29
Citace od: Márten kdy 18. 11. 2009, 16:22:28
Docela se bojím to pustit na /. U lc mám aspoň vyzkoušené, že nesmaže nic, co by nemělo. Věřím Davidovi, že ten jeho prográmek programoval z dobrého důvodu :)
Tady máš ten dobrý důvod:
Citace od: http://www.watzke.cz/cs/ccUčím se C/C++, a tak píšu různý jednoduchý prográmky.
Tak schválně zkus porovnat výstupy obou programů, tj. lc bez -d a find bez -delete

ad concurrency:
Citace od: /etc/init.d/rc# Valid options are 'none', 'startpar' and 'makefile'.
btw. jelikož /etc/init.d/rc includuje /etc/default/rcS, přijde mi přehlednější napsat to tam
Název: Re: Údržba a optimalizace systému
Přispěvatel: Erich Stark kdy 18. 11. 2009, 22:25:08
Vyzera to na vyborny navod, este dnes vyskusam minimalne tu vecicku s X2 procesorom :)
Název: Re: Údržba a optimalizace systému
Přispěvatel: MartenP kdy 19. 11. 2009, 09:21:54
Citace od: Yontalcar kdy 18. 11. 2009, 19:35:29
Citace od: Márten kdy 18. 11. 2009, 16:22:28
Docela se bojím to pustit na /. U lc mám aspoň vyzkoušené, že nesmaže nic, co by nemělo. Věřím Davidovi, že ten jeho prográmek programoval z dobrého důvodu :)
Tady máš ten dobrý důvod:
Citace od: http://www.watzke.cz/cs/ccUčím se C/C++, a tak píšu různý jednoduchý prográmky.
Tak schválně zkus porovnat výstupy obou programů, tj. lc bez -d a find bez -delete

ad concurrency:
Citace od: /etc/init.d/rc# Valid options are 'none', 'startpar' and 'makefile'.
btw. jelikož /etc/init.d/rc includuje /etc/default/rcS, přijde mi přehlednější napsat to tam

Věřím ti :) Když už mám lc, budu používat lc a někdy do budoucna se na lc už asi vyprdnu.

Jinak mám Lennyho a já tam mám
Valid options are 'none', 'shell' and 'startpar'
Název: Re: Údržba a optimalizace systému
Přispěvatel: Erich Stark kdy 19. 11. 2009, 14:04:31
Marten a preco tam mas toho viac?

sudo nano  /etc/init.d/rc
Valid options are 'none', 'shell' and 'startpar'


naco je tam dobre startpar a makefile?
Název: Re: Údržba a optimalizace systému
Přispěvatel: MartenP kdy 19. 11. 2009, 15:20:01
Abych pravdu řekl, nevím, jaký je v tom rozdíl, ale v naprosté většině případů doporučují 'shell'. Pokud je to možné, dávej 'shell', pokud není, pak dle mého názoru nebude mít konkurenční boot nějaký výkonnostní přínos.
Název: Re: Údržba a optimalizace systému
Přispěvatel: Erich Stark kdy 19. 11. 2009, 20:33:01
Citace od: Márten kdy 19. 11. 2009, 15:20:01
Abych pravdu řekl, nevím, jaký je v tom rozdíl, ale v naprosté většině případů doporučují 'shell'. Pokud je to možné, dávej 'shell', pokud není, pak dle mého názoru nebude mít konkurenční boot nějaký výkonnostní přínos.

A ako sa daju dat obidva naraz?

'shell' and 'startpar'
Název: Re: Údržba a optimalizace systému
Přispěvatel: Yontalcar kdy 19. 11. 2009, 23:50:10
mimochodem, co se týče rychlosti bootování, zapoměl jsi na instalaci dashe a jeho nastavení jako výchozího systémového shellu
# aptitude install dash #nebo apt-get, jak chcete
# dpkg-reconfigure dash #nevím, jestli je nutný, nebo se výchozí shell nastavuje už při instalaci
Název: Re: Údržba a optimalizace systému
Přispěvatel: MartenP kdy 20. 11. 2009, 10:03:46
Citace od: Erino72 kdy 19. 11. 2009, 20:33:01A ako sa daju dat obidva naraz?

A na co bys chtěl dávat oba dva najednou? Pokud můžeš, dej tam 'shell'. Možná jsi to pochopil tak, že věta "Valid options are 'none', 'shell' and 'startpar'" znamená, že tam mám všechny tři. To ne. To je napsané v tom skriptu, aby uživatel věděl, co všechno tam může napsat. Já tam mám jen a pouze 'shell'.

Prohlédni si ten text nad concurrency=shell, určitě to tam budeš mít také.
Název: Re: Údržba a optimalizace systému
Přispěvatel: MartenP kdy 20. 11. 2009, 10:06:50
Citace od: Yontalcar kdy 19. 11. 2009, 23:50:10mimochodem, co se týče rychlosti bootování, zapoměl jsi na instalaci dashe a jeho nastavení jako výchozího systémového shellu

To jsem ani nezkoušel. Ve Squeezovi už je dash defaultně, ale v Lennym mi ani nenapadlo, že by to mohlo pomoci. Jaké je zlepšení při bootování? Pokud je nezanedbatelné, přidal bych to do návodu.
Název: Re: Údržba a optimalizace systému
Přispěvatel: MartenP kdy 23. 11. 2009, 14:07:40
Citace od: Yontalcar kdy 19. 11. 2009, 23:50:10
mimochodem, co se týče rychlosti bootování, zapoměl jsi na instalaci dashe a jeho nastavení jako výchozího systémového shellu
# aptitude install dash #nebo apt-get, jak chcete
# dpkg-reconfigure dash #nevím, jestli je nutný, nebo se výchozí shell nastavuje už při instalaci


Tak jsem to vyzkoušel na vlastní kůži a rozdíl v rychlosti bootování je neznatelný... Možná mám lepší pocit, že mám papírově rychlejšího skriptového interpretera.
Název: Re: Údržba a optimalizace systému
Přispěvatel: MartenP kdy 29. 12. 2009, 17:03:36
Návod doplněn o tip s Dashem a mírně opraven. Děkuji Yontalcarovi.
Název: Re: Údržba a optimalizace systému
Přispěvatel: yerry kdy 31. 12. 2009, 15:47:47
Možno sa bude hodiť, je to na vlastné riziko, mám to odskúšané a funguje to veľmi dobre

Extrémne rýchle odstránenie nepotrebných konfigurákov po odinštalovaných a neexistujúcich programoch bez hľadania a klikania:

sudo dpkg --purge $(dpkg --list | grep ^rc | awk '{ print $2; }')
Název: Re: Údržba a optimalizace systému
Přispěvatel: Yontalcar kdy 01. 01. 2010, 15:44:37
Citace od: yerry kdy 31. 12. 2009, 15:47:47
Možno sa bude hodiť, je to na vlastné riziko, mám to odskúšané a funguje to veľmi dobre

Extrémne rýchle odstránenie nepotrebných konfigurákov po odinštalovaných a neexistujúcich programoch bez hľadania a klikania:

sudo dpkg --purge $(dpkg --list | grep ^rc | awk '{ print $2; }')
nebo
# aptitude purge ~c
v grafickém módu aptitude lze zapnout filtrování (klávesa L) podle řetězce "~c"
Název: Re: Údržba a optimalizace systému
Přispěvatel: Rovano kdy 07. 06. 2010, 21:56:25
K dnešnímu dni mám v Squeeze /etc/init.d/rc pouze # Specify method used to enable concurrent init.d scripts.
# Valid options are 'none', 'startpar' and 'makefile'.

Proč neuvádí shell?
Název: Re: Údržba a optimalizace systému
Přispěvatel: Yontalcar kdy 08. 06. 2010, 16:52:26
Citace od: Rovano kdy 07. 06. 2010, 21:56:25
K dnešnímu dni mám v Squeeze /etc/init.d/rc pouze # Specify method used to enable concurrent init.d scripts.
# Valid options are 'none', 'startpar' and 'makefile'.

Proč neuvádí shell?
Citace od: sysvinit changelogsysvinit (2.86.ds1-62) unstable; urgency=low

...

  * Drop shell style concurrent booting, and make CONCURRENCY=shell
    behave like CONCURRENTY=startpar, as startpar concurrency now work
    properly.

-- Petter Reinholdtsen <pere@debian.org>  Tue, 23 Jun 2009 18:18:53 +0200
anyway...
Citace od: sysvinit changelogsysvinit (2.88dsf-5) unstable; urgency=low

  [ Petter Reinholdtsen ]
  * Make sure now obsolete startpar and shell concurrency setting
    work as aliases for makefile style concurrency (Closes: #581704).

-- Petter Reinholdtsen <pere@debian.org>  Sat, 15 May 2010 20:31:19 +0200
Název: Re: Údržba a optimalizace systému
Přispěvatel: Rovano kdy 10. 06. 2010, 12:13:45
Díky. Sice nevím jestli to chápu správně to druhé... že makefile kombinuje shell a startpar? Nebo že startpar je nedoporučené a nejrychlejší?
Název: Re: Údržba a optimalizace systému
Přispěvatel: Yontalcar kdy 10. 06. 2010, 21:44:17
shell a startpar fungují, jako by tam bylo napsaný makefile
shell a startpar aktivují makefile
Název: Re: Údržba a optimalizace systému
Přispěvatel: Rovano kdy 11. 06. 2010, 11:25:32
Aha.Díky!
Název: Re: Údržba a optimalizace systému
Přispěvatel: D.A.Tiger kdy 18. 10. 2010, 18:34:56
Super navod. Fakt dik moc za nej.

Jen doplnim, ze jsem ten postup doplnil rekompilaci a reinstalaci nekterych balicku (vcetne xserver-xorg) pomoci apt-build (i na to je zde navod). Balicky jsem vybiral podle toho jak mi ten ktery softvare vyziral systemove zdroje (sledoval jsem to pomoci utilitky htop) a ty ktere pouzivam nejcasteji. Potom jsem jeste poradne probral sluzby, cron a anacron jsem vyhodil ze systemu a nahradil je fcronem ( ktery dela praci za oba).   

Zabralo to cele sice nejaky ten cas, ale vyplatilo se to vic jak drina s Zen kernelem Takze jeste jednou diky moc :)