Vykon linuxu


Obsah:


uvod

Tak pro zmenu jsem se rozhodl napsat o necem uplne jinym. Je hrozny jak vetsina lidi co ma linux ma vykon dost podvyziveny. Oproti standardni konfiguraci co vyleze ze slakwaru je mozno beh systemu i nekolikrat urychlit. Je tu nekolik zakladnich veci co je treba udelat(nerikam ze musite delat vsechno):

setup

Tak zacneme pekne od zacatku. Linux bios _vubec_ nevyuziva a tak toho v setupu moc nezmuzete. Naprosto nema smysl menit prepinace k disketam hard disku a ostatnim ovladacum. Presto jde udelat nekolik veci:
  1. Maximalizovat volnou pamet. Snad vsechny moderni biosy podporuji shadowing romky. Funguje to tak ze daji bios z pomale romky do mnohem rychlejsi ram. To by tak nevadilo-pouziva se k tomu ram ktera je pod rom oblasti-tedy oblast od 640Kb do 1 MB je naprosto pro linux nepouzitelna-je hardwarove schovana. Ale nektere biosy umoznuji to, ze kdyz nepouzivate shadowing vemou tu pamet a hodi ji nakonec. Je to sice jenom 360Kb ale i ty se hodi(hlavne na 4MB strojich) Protoze linux nepouziva bios muzite z klidem vypnout vsechen shadowing z advanced setupu a zapnout remapovani pokud to v nem najdete (nektere biosy to delaji automaticky) Ma to ale jednu nevyhodu. Dost to zpomali msdos a to jak pristupy na disk tak grafiku. Proto je to dobre delat jen na pocitacich kde bezi jenom linux-sitove servery apod.
  2. Vyzhavit pamet na maximum. Vetsina biosu umoznuje nastavit wait staty pro ram a cache. Je to jedna z mala veci co linux nemeni. Vetsina stroju ma default hodnoty ktere jsou mnohem horsi. Je to proto ze to nastavovali vyrobci a delali to tak, aby to chodilo i z nejrychlejsim moznym procesorem a nejpomalejsi moznou pameti. Proto je dobre najit minimalni hodnotu waitstatu. Polozku ram/cache waitstates najdete nekde v chipset setupu a vetsinou bere cisla tak asi od 0 do 4 nebo trojcisli treba 2-2-2. Nejlepsi je 0 nebo 1-1-1. Je ale nebezpecny dat rovnou tu nejmensi hodnotu protoze se muze stat ze se pocitac zhrouti driv nez vlezete do setupu(to se stava jen na starsich strojich..novejsi to uz maji osetrene) aby jste to mohli vratit. Proto po jedne snizujte a pokazde zkuste nabootovat linux a pouzijte nejnizsi hodnotu co slape. To je treba udelat nejprve pro cache a pak pro pamet. Je mozne ze ty hodnoty co najdete nebudou uplne idealni a obcas se pocitac zhrouti. Potom zkuste waitstaty zase trochu zvysit. Pri moc nizkych waitstatech linux vypisuje crc error pri rozpakovani jadra. Nebo nejaky ty faulty za behu-hlasky stylu kernel panic a vypis registru a zasobniku. Asi nejlepsi zpusob jak otestovat jestli jsou waitstaty v poradku je zkompilovat jadro. Pokud to neuvari c kompiler, pobezi uz vsechno. Podle me vzkusenosti pri kompilaci jadra stoupne teplota meho procesoru z beznych nejakych 20-30 stupnu-preste je vlazny na opravdu hodne-tak ze se o nej zpalite. Je to tim ze gnuc je moc dobre optimalizovane. Touhle volbou se jak linux tak dos da zrychlit az dvakrat. Proste je to znat. Dalsi moznost jak otestovat pamet je balik memtest-86. Ten se vyskytuje na sunsite a je to kratky programek, ktery se pokompilaci ulozi do bootsektoru diskety a po nabootovani z ni vam celou pamet pekne projede a to hodne peclive.. najde i chyby o kterych ostatni programy nemaji ani tuseni. Dobry test pameti je take v programu amidiag. Jeste u memtest-86 pred testovanim vypnete shadowing romu :) jinak pise chyby i kdyz tam zadne nejsou..
  3. Rychlost zbernice. Hodne setupu umoznuje ruzne zvysit rychlost zbernice a to hlavne u ISA ktera bezi na 7 megahercich. To se vyplati hlavne kdyz mate treba tridenta tedy isovou videokartu. Tyhle volby jsou samozdrejme na kazdem pocitaci jine zalezi na mainboardu ale jsou v advancet chipset setupu nebo necem podobnym a vetsinou melou neco o cekacich cyklech ise a pci. Taky je jich tam casto vic. Hodne vesa pocitacu ma taky hidden refresh ktery je dobry zaponout. Samozdrejme ze rychlosti muzete prehnat. Projevi se to tim ze v grafickych programech(hlavne xwoknech) se budou na obrazovce delat ruzne bodiky nebo programy co chodily chodit prestanou. Ale to dvojnasobny zrychleni grafiky nebo pristupu na ide radic za to stoji ne?
  4. Prectete si manual k advanced chipset setupu,treba tam jeste neco najdete. Samozdrejme ze tohle vsechno je your own risk a ja za to nerucim. Ale nikdy to nic spatnyho neudelalo...a delal jsem to uz mockrat.

    Upgarde a rekompilace jadra

    Ne nebojte se..neni to nic tak hroznyho. A jde tim pocitac zrychlit mockrat. Pokud to opravdu nechcete delat muzete preskocit na Dostelovani driveru. To hlavne na novych masinach z enhanced ide. Upgarde jadra se rychlostne celkem vyplati. Treba kompilace jadra se od 1.0.9 na 1.2.13 zrychlila o 30% a od 1.2.13 do 1.3.54 o dalsich 15. To celkem dost. Navic nove jadra maji lepsi drivery a umi lepe vyuzit hardware hlavne u novych masin. Rekompilaci zase muzete zmensit pametove naroky a hlavne pridat drivery na nestandardni hardware jako je zvukova karta nebo cdrom. Nejprve musite splasit zdrojaky. Musite se rozhodnou jestli pouzijete zarucene stabilni 1.2.13 nebo experimentalni 1.3.x Ale 1.3 serie jsou uz celkem stabilizovane a protoze jsou vyrazne rychlejsi ja osobne volim je. Je tu dalsi risk ze kdyz stahnete uplne nejnovejsi jadro je mozne ze zrovna to bude mit nejakou vyznacnou chybu. Ja momentalne pouzivam 1.3.54 a muzu ho doporucit. Jedina chyba o ktere vim je ze nefunguje samplovani v cthughe ale to nefunguje uz nekdy od 1.3.20. Zatarovane zdrojaky maji asi tri mega a roztarovane asi 12. Na kompilaci budete potrebovat asi tak dalsi 4MB takze si pripravte 16 mega pokud jadro na disku jeste nemate. Potom je treba downloadnout zdrojaky. Jsou na vsech mirrorech sunsite tedy na ftp.vse.cz,ftp.muni.cz,ftp.cvut.cz atd.. v adresari z mirrorem(byva casto /pub/linux) a podadresari kernel/v1.? tam jsou fajliky pojmenovane kernel-1.3.x.gz vybere si jaky chcete a ztahnete. Na kompilaci samozdrejme potrebujete c kompiler-tedy serie D v slakwaru Potom je treba prikazem:
    /usr/src# tar xzvf 
    
    Ten rozbali jadro do /usr/src/linux.

    Konfigurace jadra

    Pred kompilaci je treba jadro nakonfigurovat. To se udela tak ze vlezete do /usr/src/linux a napisete make config. Jadro se zacne vyptavat a vy odpovidate yes nebo no. V zasade se pta na:(otazkam kterym nerozumite nechte default hodnotu tim ze zmackenete enter)

    (Tyto hlasky jsou ve starych jadrech prehazene)

    Kernel math emulatinon
    emulace koprocesoru tedy je nutne zapnout na 386 bez kopru. Jinak je dobre vypnout
    Networking support
    kdyz nepouzivate sit tak ne.
    Limit memory to low 16MB
    Tahle volba je naprosto zbytecna a nic nedela takze N
    PCI bios support
    Na masinach z PCI odpovedet Y
    System V IPC
    Y-toto je opravdu treba zapnout. Pouziva to celkem dost porgramu a neni to dlouhe.
    Kernel support for ELF binaries
    podpora pro elfy-kdyz mate novy slakware 2.3 a vysi odpovedet y jinak pravdepodobne elfy nemate a tak N kdzy odpovite Y jeste se bude psat jestli se kompiluje na elfim kompileru zase na slakwarech 2.3 a vysich odpovedet Y
    Ted se pta na procesory-stare jadra jestli mate 486-y pro 486 a vysi nova jadra napisou procesor type: a tam napisete 386,486 nebo Pentium

    Pak se pta na driver pro flopac-samozdrejme ano Driver na ide-tam ano kdyz mate ide radic potom se zepta jestli stary driver-old reiable ide driver tam ne a na dalsi otazku-jestli novy driver ano. Pak se pta na cdrom,sitovy,scsi drivery-tam snad budete vedet

    Novejsi jadra se ptaji na quote support-to je program na omezovani disku jednotilvym uzivatelum-doma muzete dat N

    Potom na filesystemy-tam je treba zapnout ext2-to je hlavni filesystem linuxu a msdos-pokud mate dos partition nebo lezete na dosacky diskety. Kdyz mate cdrom je treba zapnout iso9660 podporu. Pokud mate linux na dosacky partition-v adresari linux/ nezapinate ext2 ale umsdos. Ostatni filesystemy jsou vetsinou zbytecny.

    Nakonec se pta na driver na tiskarnu.
    busmouse-pokud ji nemate na vsechno N
    tusim ze dobugovani to taky N
    uplne na konec je zvukovej driver. Kdyz mate zvukovku Y. Potom se zacne vyptavat na jednotlive karty-date y na vasi karte nebo s ni kompatibilni potom se zepta jestli /dev/dsp a midi support-vsechno na y a pripadne na nejaky optiony kolem karty. Nakonec na dma,irq apod a velikost bufferu- tu nechte na default. Potom by mel napsat ze je vse hotovo.

    Konfigurace IDE driveru

    Je celkem dobre nastavit jeste parametry ide driveru. To se dela v /usr/src/linux/drivers/block/ide.h tam jsou ruzne prepinace dobre okomentovane a tak je nastavte jak uznate za vhodne. Kdyz vite jaky ide kontroler mate nebo ze zadny nemate je dobre vypnout podporu ostatnich-radky stylu: #define SUPPORT_RZ1000

    Kompilace

    Kompilace se odpali pomoci make zImage nebo kdyz pouzivate lilo a jadro mate v /vmlinuz pomoci make zlilo. Pak mate asi dvacet minut na to udelat zalozni kopii stareho jadra a pripravit si nejakou moznost ho nabootovat, kdyby se neco pokazilo. U lila si muzete pridelat volbu old tim ze na konec pridate neco jako:
    image = /vmlinuz.old
      read-only
      root = /dev/sdb1
      label = old
    
    To read only jenom kdyz mate linux na ext-2 takze vetsinou. To root nastavte stejne jako u ostatnich voleb(/dev/sdb1 je moje partition z linuxem) Potom kdyz lilo date misto linux old nabootuje se predchozi jadro. Pokud se vas lilo na nic nepta a rovnou bootuje musite drzet pri bootovani alt. Ono se vas potom zepta. Take je dobre udelat kopii /vmlinuz do /vmlinuz.slak abyste neprisli o original slakwarske jadro kdyby jeste bylo treba. A do lila pridat jeste jednou na konec to same jenom misto tech dvou old dat dve slak. Potom uz jeno pockate az se make zlilo dokonci. Pokud vsechno proslo bez problemu rebootujete a uvidite. Kdyz bootujete jadro jinak musite si poradit sami-nove jadro najdete v /usr/src/linux/arch/i386/boot/compresed/zImage

    Kdyz po rebootu nefunguje

    neco jste zvorali v konfiguraci. Chce to znova a poradne nebo zase vsechno vratit zpatky.

    Problemy z 1.2.x na 1.3.x upgardem Pokud jste zmenili jadro 1.2.x na 1.3.x je nutne jeste zmenit termcap protoze se jmeno terminalu zmenilo z console na linux to udelate tak: prihlasite se jako root

    export TERM=console
    
    vyeditujete /etc/termcap a najdete radek tery je vetsinou jeden z prvnich a vypada takto:
    console|con80x25|dumb a zmenite ho na:
    linux|console|con80x25|dumb
    
    A potom /etc/profile a zmenite ho tak aby samo prepinalo linux na console radek:
    if [ "$TERM" = "" -o "$TERM" = "unknown" -o \
    
    na:
    if [ "$TERM" = "" -o "$TERM" = "unknown" -o "$TERM" = "linux" -o \
    
    A vesele zrebootujete

    Dostelovani driveru

    (je treba mit ciste rebootovany pocitac a aby nic nebezelo na nasledujici veci)

    Dulezite vec je vystelovani ide driveru tim se da zrychlit pristup da disk z 2MB/sec na neuveritelnych 6MB i kdyz to vubec necekate. Je k tomu potreba program hdparm. Ve vetsine slakwarech je zastaraly. Jeho posledni verzi najdete na sunsite mirrorech v system/Misc posledni verze je tusim 2.4

    Pri vystelovavni postupujte takto: otestujte si rychlost:

    time hdparm -t (disk-treba /dev/hda) vystup vypada asi takto:
     Timing buffer-cache reads:   32 MB in  3.12 seconds =10.26 MB/sec
     Timing buffered disk reads:  16 MB in  9.44 seconds = 1.69 MB/sec
     Estimating raw driver speed: 16 MB in  7.88 seconds = 2.03 MB/sec
    0.01user 10.63system 0:18.14elapsed 58%CPU (0avgtext+0avgdata 0maxresident)k
    0inputs+0outputs (316major+278minor)pagefaults 0swaps
    
    Z toho je dulezity tech 2.03 MB/Sec-to je prenosovka disku a 10.63system to je cas co na to system potreboval. Obe tyto cisla je treba zminimalizovat

    Pred jakymkoli hejbanim z parametry vykilte proces klogd abyste videli jestli jadro nepada a kdyz by psalo nejake errory rebootujte,pomoci hdparmu nastavte ty volby co jste uz nasli a zkousejte dal a uz nepouzijte tu volbu co to zbourala.

    Nastaveni mult count: Tim se da disk urychlit o 6-100% dela se to tak ze date

    hdparm -m(cislo) (disk)
    
    a potom znova otestujete
    Za cislo dosazuje cisla 0,1,2,4,8...az max mult count co vam vypsal linux pri startu a take se to da zjistit pomoci hdparm -i Je treba vyzkouset vsechny a najit nejoptimalnejsi. To si zapiste jako prvni prepinac. Vetsinou to byva bud 0 nebo 16 ale neni to pravidlem. U enhanced ide disku delejte testy vickrat pokud vyjdou opravdu zmatene hodnoty.

    Nastaveni umask:
    Kdyz se pristupuje na disk jsou interupty vypnute. Tu zpusobuje ze se treba ztraci data z modemu nebo lupe v hrani muziky. Je mozne nekdy tohlo vypnout. Zkuste

    hdparm -u1 (disk)
    
    Pokud pocitac dal pobezi bez bombeni a test se nejak vyrazne nezpomali mate dalsi switch.

    Nastaveni 32 bit pristupu:
    To je tady neco uplne jineho nez u woken a tak to funguje jen na pocitacich z 32 bit zbernici-vesa,eisa,pci a enhanced ide disky. Zkuste

    hdparm -c1 (disk)
    
    pokud to bude bombit rebootujte dejte tam uz nalezene prepinace a zkuste:
    hdparm -c3 (disk)
    
    To chodi skoro vsude. Pokud neco z toho bude fungovat mate dalsi switch. Otestujte jestli se zrychlilo-melo by se a zapiste si ho.

    Write caching:
    To na enhanced ide obcas hodne pomuze. zkuste

    hdparm -W1 (disk)
    
    a kdyz to bude fungovat tak jako obycejne

    Kdyz uz vite vsechny hodnoty vyeditujte /etc/rc.d/rc.local a pridejte tam radku hdparm -q -q .... tedy treba:

    hdparm -q -m16 -q -u1 -q -c1 -q -W1 /dev/hda
    
    Kdyz mate vic disku je treba vsechno opakovat na ostatni disky. Taky je dobre precist si /usr/src/linux/drivers/block/README.ide jestli tam neni neco o vasem hardware.

    Floppy driver

    Nejvetsi urychleni se da udelat tim ze predate floppy=daring jadru rpi bootovani. Na vetsine hardwarech to funguje. U lila se to dela tak ze pridate rakdu append="floppy=daring" na zacatek /etc/lilo.conf Dalsi urychleni se daji delat tak ze si nainstalujete nove fdutils-jsou nekde na sunsite a prectete si fajlik FINETUNE. Taky umoznuje veci jako dvoumegovy diskety a tak..

    Lp driver

    Tady je na to programek tunelp. Ten ma hodne prepinacu-muzete si prostudovat manual. Nejdulezitejsi je nastaveni irq. To se dela:
    tunelp -i7 /dev/lp1
    
    To na vetsine pocitacu ulehci procesoru a zrychli tisk Ale jsou i vyjimky(treba ten muj) a tak to musite otestovat pomoci:
    time cat  /dev/lp1
    
    Pro lp2 byva irq vetsinou 5.
    Samozdrejme ze i tento radek musite pridat do /etc/rc.d/rc.local

    A to je asi vsechno


    Tento soubor je soucasti rozsahle sbirky skolicek na http://www.ucw.cz/~hubicka/skolicky

    Take si muzete prohlidnout jeji puvodni textovou podobu

    Nebo mi mailnout na hubicka@ucw.cz

    Copyright (C) Jan Hubicka 1996