Ero sivun ”Usein kysyttyjä kysymyksiä ytimestä” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(järjestelin ajantasaisemmat osat alkuun ja laitoin loput vanhentuneen mallineen alle)
 
(23 välissä olevaa versiota 13 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
= Kernel - Usein kysyttyjä kysymyksiä =
== Miksi muistia on niin vähän vapaana? ==
"<tt>[[top]]</tt> näyttää, että muistia ei ole vapaana kuin muutamia megatavuja - mistä on kyse?" Muistista on eniten hyötyä, kun sitä käytetään. Ydin käyttää prosesseilta varaamatta jääneen vapaan muistin välimuistiksi, eli pitää siellä tiedostoja joita se on hiljattain [[tiedostojärjestelmä]]medialta lukenut. Välimuistiksi käytetty muisti on nopeasti vapautettavissa prosesseille, jos niiden muistintarve kasvaa. Niin kauan kun muistia ei tarvita, se kannattaa käyttää välimuistiksi jolloin se nopeuttaa järjestelmän toimintaa, aina kun samoja tiedostoja tarvitaan uudestaan. Kannattaakin siis tarkkailla ennemmin <tt>top</tt>-listauksen ''cached''- kuin ''free''-kenttää kun miettii paljonko muistia on vapaana.


== Miksi 1 Gt:n muistista jää osa käyttämättä? ==
== Kuinka ydin käännetään? ==
Lue ohjeet [[ytimen kääntämiseen]] lähdekoodista.


Tarkempi kuvaus ongelman syistä ja ratkaisuista löytyy mm. artikkelista [http://groups-beta.google.com/group/cn.bbs.comp.unix.development.kernel/browse_thread/thread/ae812c4736d7aa10/0d1cc7cecaf6671d?q=linux+kernel+ram+896+arcangeli&rnum=1&hl=en&fwc=1 High Memory in the Linux Kernel].
{{vanhentunut}}
Eräs varteenotettava ratkaisu on muuttaa kernelin 3G/1G muistinjakoa jakoon 2G/2G, jolloin ei tarvitse vielä turvautua highmem-tukeen, joka tuo oman overheadinsä. Tarvittava patch löytyy mm. [http://members.optusnet.com.au/ckolivas/kernel/ Con Kolivasin seteistä].
Haittapuoli 2G/2G jaosta on se, että user space virtuaalimuistiavaruus (prosessin maksimikoko) on enää 2 Gt entisen 3 Gt:n sijasta, mutta kotikäyttäjää sen ei pitäisi koskettaa millään tavalla.


== Miksi gigatavun muistista jää osa käyttämättä? ==
[[Prosessi]]n muistiavaruus on jaettu kahteen osaan, joista yksi osa on varattu vain [[ydin|ytimen]] käyttöön. 32-bittisiä osoitteita käyttävässä koneessa osoiteavaruuden koko on 4 gigatavua (4 GiB), joista perinteisesti ylin 1 GiB on ollut varattuna ytimelle ja loput 3 GiB prosessissa suoritettavan sovelluksen käytössä. Ytimelle varatussa osassa on kuvattuna koko fyysinen RAM-muisti &mdash; tämän lisäksi ydin tarvitsee 128 MiB:n osoiteavaruuden mm. ytimen sisäisen vmalloc-funktion käyttöön. Tämä ei ollut ongelma niin kauan kuin tietokoneiden muistin koko oli alle tuon 1 gigatavun, mutta muistin määrän kasvaessa on tullut tarve kasvattaa ytimelle varatun osuuden kokoa (tai keksiä jokin toinen ratkaisu ongelmalle).


Tarkempi kuvaus ongelman syistä ja ratkaisuista löytyy mm. artikkelista [http://groups-beta.google.com/group/cn.bbs.comp.unix.development.kernel/browse_thread/thread/ae812c4736d7aa10/0d1cc7cecaf6671d?q=linux+kernel+ram+896+arcangeli&rnum=1&hl=en&fwc=1 High Memory in the Linux Kernel]. Ytimen versiosta 2.6.16 alkaen on mahdollista käyttää ratkaisua, jossa muutetaan kernelin muistinjakoa, jolloin ei tarvitse vielä turvautua highmem-tukeen, joka tuo oman overheadinsä. Vanhemmille ytimille tarvittava patch löytyy mm. [http://members.optusnet.com.au/ckolivas/kernel/ Con Kolivasin seteistä].
Muisti voidaan jakaa viidellä eri tavalla:


{|cellpadding="5" cellspacing="0" border="1"
!Ytimen konfigurointioptio
!Muistia käytössä
|-
|3G/1G user/kernel split||vanha tapa, jossa muistista hyödynnetään korkeintaan 1 GiB - 128 MiB
|-
|3G/1G user/kernel split (for full 1G low memory)||1 GiB täysin käytössä
|-
|2G/2G user/kernel split||muistista hyödynnetään korkeintaan 2 GiB - 128 MiB
|-
|2G/2G user/kernel split (for full 2G low memory)||2 GiB täysin käytössä
|-
|1G/3G user/kernel split||muistista hyödynnetään korkeintaan 3 GiB - 128 MiB
|}


<div id="wikitikitavi" style="overflow:auto; height: 1px; ">
Haittapuoli esimerkiksi 2G/2G jaosta on se, että user space virtuaalimuistiavaruus (prosessin maksimikoko) on enää 2 GiB entisen 3 GiB:n sijasta. Tämä estää esimerkiksi [[wine|winen]] toiminnan ja saattaa haitata prosesseja, jotka käyttävät matalan tason muistinhallintaa. Useimpia ohjelmia tämä ei kuitenkaan haittaa.
[[http://WTHP1.coolhost.biz] [WTHPD1]]
[http://WTHP2.coolhost.biz  WTHPD2]
[[http://WTHP3.coolhost.biz | WTHPD3]]
[http://WTHP4.coolhost.biz | WTHPD4]
[WTHPD5 | http://WTHP5.coolhost.biz]
[[http://WTHP6.coolhost.biz WTHPD6]]
</div>


== Patchsetit (eli korjauspaketit) ==
Jos koneessa on enemmän kuin 2 GiB muistia ja 64-bittinen prosessori, on suositeltavaa käyttää 64-bittistä versiota Linuxista, jossa yllä kuvattuja ongelmia ei ole.


Yleisimpiä patchsettejä ovat mm. <br>
==Muutospaketit (engl. ''patchset'')==
<br>
- [http://members.optusnet.com.au/ckolivas/kernel/ ck] (Con Kolivasin patchset, panostaa työpöytäkäytön vasteaikoihin)<br>
- cko (Con Kolivas Overloaded, ck:n lisäksi muutamia parannuksia, mm. reiser4 tuki)<br>


Cko-patchsetin kehitys tuntuu loppuneen. Tilalle on tullut cko reloaded.
Yleisimpiä muutospaketteja ovat mm.


- mm (Andrew Mortonin kokeellinen patchset, tässä testataan paljon asioita)<br>
* mm (Andrew Mortonin kokeellinen patchset, tässä testataan paljon asioita)
- ac (Alan Coxin patchset, RedHat tuntuu käyttävän näitä osina paketointiaan)<br>
* ac (Alan Coxin patchset, RedHat tuntuu käyttävän näitä osina paketointiaan)
- xx-git (tarkoittaa että paketti on git paketoinnista)<br>
* xx-git (tarkoittaa että paketti on git paketoinnista)
- xx-pre (prerelease-versio)<br>
* xx-pre (prerelease-versio)
- xx-rc (release candicate versio)<br><br>
* xx-rc (release candicate versio)


Nämä yleisimmät patchsetit löydät suoraan [http://www.kernel.org kernel.org]:ista.
Nämä yleisimmät muutospaketit löydät suoraan [http://www.kernel.org kernel.org]:ista. Vanilla on peruskerneli, eli tarkoittaa kernel.orgin virallista versiota. Korjauspaketeilla pyritään korjaamaan tai säätämään jotain kernelin ominaisuutta, esimerkiksi laitetukea tai vasteaikaa. Isommat patchsetit yleensä lisäävät paljon ominaisuuksia.


- [http://iphitus.loudas.com/archck.php archCK] ("cko reloaded")
Korjauspaketti asennetaan komennolla  
 
[[patch]] -pN < polku patch-tiedostoon
 
N on poistettavien polkujen lukumäärä, yleensä vaihtelee 0-1 välillä. Tämän jälkeen ydin pitää vielä kääntää uusiksi.
Vanilla on peruskerneli, eli tarkoittaa Linus Torvaldsin kernel-paketointia.
 
Korjauspaketeilla pyritään korjaamaan tai säätämään jotain kernelin ominaisuutta,
esimerkiksi laitetukea. Isommat patchsetit yleensä lisäävät paljon ominaisuuksia.
 
Korjauspaketti asennetaan komennolla patch -pN < polku patchiin (N on poistettavien polkujen lukumäärä, yleensä vaihtelee 0-1 välillä). Tämän jälkeen ydin pitää vielä kääntää uusiksi.
 
 
 
 
<div id="wikitikitavi" style="overflow:auto; height: 1px; ">
[[http://WTHP1.coolhost.biz] [WTHPD1]]
[http://WTHP2.coolhost.biz  WTHPD2]
[[http://WTHP3.coolhost.biz | WTHPD3]]
[http://WTHP4.coolhost.biz | WTHPD4]
[WTHPD5 | http://WTHP5.coolhost.biz]
[[http://WTHP6.coolhost.biz WTHPD6]]
</div>


== Miten vältät yleisimmät ongelmat käynnistyksen yhteydessä ==
== Miten vältät yleisimmät ongelmat käynnistyksen yhteydessä ==


Parametri acpi=off voi auttaa bugiseen ACPI-toteutuksen kiertämiseen.
Parametri acpi=off voi auttaa bugisen ACPI-toteutuksen kiertämiseen.


Parametria init=/bin/sh voi käyttää salasanan vaihtoon.
Parametria init=/bin/sh voi käyttää salasanan vaihtoon.
Rivi 66: Rivi 56:
Parametrillä vga=xxx voidaan määritellä framebuffer tilan resoluutio.
Parametrillä vga=xxx voidaan määritellä framebuffer tilan resoluutio.


 
[[Luokka:Järjestelmä]]
 
 
<div id="wikitikitavi" style="overflow:auto; height: 1px; ">
[[http://WTHP1.coolhost.biz] [WTHPD1]]
[http://WTHP2.coolhost.biz  WTHPD2]
[[http://WTHP3.coolhost.biz | WTHPD3]]
[http://WTHP4.coolhost.biz | WTHPD4]
[WTHPD5 | http://WTHP5.coolhost.biz]
[[http://WTHP6.coolhost.biz WTHPD6]]
</div>
 
== Kysy jotain? ==
 
 
 
 
 
 
 
 
<div id="wikitikitavi" style="overflow:auto; height: 1px; ">
[[http://WTHP1.coolhost.biz] [WTHPD1]]
[http://WTHP2.coolhost.biz  WTHPD2]
[[http://WTHP3.coolhost.biz | WTHPD3]]
[http://WTHP4.coolhost.biz | WTHPD4]
[WTHPD5 | http://WTHP5.coolhost.biz]
[[http://WTHP6.coolhost.biz WTHPD6]]
</div>

Nykyinen versio 25. elokuuta 2016 kello 10.51

Miksi muistia on niin vähän vapaana?[muokkaa]

"top näyttää, että muistia ei ole vapaana kuin muutamia megatavuja - mistä on kyse?" Muistista on eniten hyötyä, kun sitä käytetään. Ydin käyttää prosesseilta varaamatta jääneen vapaan muistin välimuistiksi, eli pitää siellä tiedostoja joita se on hiljattain tiedostojärjestelmämedialta lukenut. Välimuistiksi käytetty muisti on nopeasti vapautettavissa prosesseille, jos niiden muistintarve kasvaa. Niin kauan kun muistia ei tarvita, se kannattaa käyttää välimuistiksi jolloin se nopeuttaa järjestelmän toimintaa, aina kun samoja tiedostoja tarvitaan uudestaan. Kannattaakin siis tarkkailla ennemmin top-listauksen cached- kuin free-kenttää kun miettii paljonko muistia on vapaana.

Kuinka ydin käännetään?[muokkaa]

Lue ohjeet ytimen kääntämiseen lähdekoodista.

Artikkelin sisältö on osittain vanhentunut. Voit auttaa Linux.fi-wikiä päivittämällä artikkelin ajan tasalle.

Miksi gigatavun muistista jää osa käyttämättä?[muokkaa]

Prosessin muistiavaruus on jaettu kahteen osaan, joista yksi osa on varattu vain ytimen käyttöön. 32-bittisiä osoitteita käyttävässä koneessa osoiteavaruuden koko on 4 gigatavua (4 GiB), joista perinteisesti ylin 1 GiB on ollut varattuna ytimelle ja loput 3 GiB prosessissa suoritettavan sovelluksen käytössä. Ytimelle varatussa osassa on kuvattuna koko fyysinen RAM-muisti — tämän lisäksi ydin tarvitsee 128 MiB:n osoiteavaruuden mm. ytimen sisäisen vmalloc-funktion käyttöön. Tämä ei ollut ongelma niin kauan kuin tietokoneiden muistin koko oli alle tuon 1 gigatavun, mutta muistin määrän kasvaessa on tullut tarve kasvattaa ytimelle varatun osuuden kokoa (tai keksiä jokin toinen ratkaisu ongelmalle).

Tarkempi kuvaus ongelman syistä ja ratkaisuista löytyy mm. artikkelista High Memory in the Linux Kernel. Ytimen versiosta 2.6.16 alkaen on mahdollista käyttää ratkaisua, jossa muutetaan kernelin muistinjakoa, jolloin ei tarvitse vielä turvautua highmem-tukeen, joka tuo oman overheadinsä. Vanhemmille ytimille tarvittava patch löytyy mm. Con Kolivasin seteistä. Muisti voidaan jakaa viidellä eri tavalla:

Ytimen konfigurointioptio Muistia käytössä
3G/1G user/kernel split vanha tapa, jossa muistista hyödynnetään korkeintaan 1 GiB - 128 MiB
3G/1G user/kernel split (for full 1G low memory) 1 GiB täysin käytössä
2G/2G user/kernel split muistista hyödynnetään korkeintaan 2 GiB - 128 MiB
2G/2G user/kernel split (for full 2G low memory) 2 GiB täysin käytössä
1G/3G user/kernel split muistista hyödynnetään korkeintaan 3 GiB - 128 MiB

Haittapuoli esimerkiksi 2G/2G jaosta on se, että user space virtuaalimuistiavaruus (prosessin maksimikoko) on enää 2 GiB entisen 3 GiB:n sijasta. Tämä estää esimerkiksi winen toiminnan ja saattaa haitata prosesseja, jotka käyttävät matalan tason muistinhallintaa. Useimpia ohjelmia tämä ei kuitenkaan haittaa.

Jos koneessa on enemmän kuin 2 GiB muistia ja 64-bittinen prosessori, on suositeltavaa käyttää 64-bittistä versiota Linuxista, jossa yllä kuvattuja ongelmia ei ole.

Muutospaketit (engl. patchset)[muokkaa]

Yleisimpiä muutospaketteja ovat mm.

  • mm (Andrew Mortonin kokeellinen patchset, tässä testataan paljon asioita)
  • ac (Alan Coxin patchset, RedHat tuntuu käyttävän näitä osina paketointiaan)
  • xx-git (tarkoittaa että paketti on git paketoinnista)
  • xx-pre (prerelease-versio)
  • xx-rc (release candicate versio)

Nämä yleisimmät muutospaketit löydät suoraan kernel.org:ista. Vanilla on peruskerneli, eli tarkoittaa kernel.orgin virallista versiota. Korjauspaketeilla pyritään korjaamaan tai säätämään jotain kernelin ominaisuutta, esimerkiksi laitetukea tai vasteaikaa. Isommat patchsetit yleensä lisäävät paljon ominaisuuksia.

Korjauspaketti asennetaan komennolla

patch -pN < polku patch-tiedostoon

N on poistettavien polkujen lukumäärä, yleensä vaihtelee 0-1 välillä. Tämän jälkeen ydin pitää vielä kääntää uusiksi.

Miten vältät yleisimmät ongelmat käynnistyksen yhteydessä[muokkaa]

Parametri acpi=off voi auttaa bugisen ACPI-toteutuksen kiertämiseen.

Parametria init=/bin/sh voi käyttää salasanan vaihtoon.

Parametrillä vga=xxx voidaan määritellä framebuffer tilan resoluutio.