Hirdetés

Új hozzászólás Aktív témák

  • tocsa

    senior tag

    válasz Adi #22 üzenetére

    Part 1.

    Kíváncsi lennék mások tapasztalataira is SMP-s rendszerek és a linux használatakor.

    Most Adi üzenetére reagálnék.
    Előző hozzászólásomban nem mondtam, hogy általában tetszett a kernel konfigurációd. Okosan voltak elhelyezve a megfelelő dolgok modulba. Nagyrészt az én szájam íze szerint csináltad.

    Az IRQ ütközésről. Sajnálatos, hogy BIOS MP v1.4-el nem bootolt be a kernel. És azt mondod, hogy IRQ rerouting az v1.1-esnél még nincs. De ettől függetlenül még lehetséges, hogy el lehetett volna osztani az IRQ-kat úgy hogy ne ütközzenek. Ez valószínűleg az ACPI miatt nem sikerült neked. Ugyanis ha az aktív, akkor még kártya cserével sem (sőt, ha a BIOS-ban direkt meg lehet adni a PIRQ-kat, akkor azzal sem) lehet lebeszélni az ACPI-t hogy egy adott eszközhöz egy adott IRQ-t rendeljen. Ez személyes tapasztalat.
    Egyébként valaki mondta itt, hogy BIOS frissítéssel már megy az MP v1.4.

    Most egyszerre szeretnék beszélni az SMP az APM és az ACPI ről. Előljáróban csak annyit, hogy az APM kizárólag Power Management funkciókkal foglalkozik, míg az ACPI minden Hardware Management kérdéssel: power managementen kívül erőforráslefoglalással (mint pl. IRQ elosztás), hardver monitoringgal, stb. Sajnos én az a típus vagyok, aki szereti befolyásolni, esetleg maga meghatározni a dolgok működését. Ezért az ACPI-től feláll a szőr a hátamon. Sajnos az ACPI-vel és az APM-mel is az a nagy gond, hogy nemcsak az operációs rendszer szoftverhibáinak van kitéve, hanem a BIOS szoftver hibáinak is, fokozott módon. Nem is beszélve a hardver implementációs bugokról.

    Lehet, hogy majd indítok egy külön topic-ot, amely a Win2000 operációs rendszer és az ACPI kapcsolatával foglalkozik. Te is használtál már Win2K-t és minden a 9-es IRQ-n van a hangkártya+hálókártya+VGA kártya+... ? Nem is tudod állítani az IRQ-kat, mint Win9x-ben? Én is így jártam. Ez azért van, mert a Win2K alapban ACPI HAL (hardware abstraction layer) kernelt rak fel. A topicban majd leírom, hogy pontosan miről is beszélek, és hogy hogyan lehet ''Standard PC HAL''-os kernellel felrakni a Win2K-t, hogy ne sharel-jen mindent kétpofára, és tudjad állítani a dolgokat.

    Na de mi a helyzet a linux kernellel SMP-ben? Nem kellett sokáig keresgélnem. Elővettem a kernel konfig help-et. Részleteket fogok ebből közölni. Tehát először is bekapcsoljuk az SMP-t:

    [I]Processor type and features
    [*] Symmetric multi-processing support
    CONFIG_SMP:

    ...
    People using multiprocessor machines who say Y here should also say Y to ''Enhanced Real Time Clock Support'', below. The ''Advanced Power Management'' code will be disabled if you say Y here.
    ...[/I]

    Aha. Nézelődjünk tovább. Mi a helyzet a PM-el? APM esetén már látjuk az előző üzenetből: ha befordítjuk a kernelbe, akkor sem fog aktiválódni SMP esetén ez a feature.

    [I]General setup
    [*] Power Management support
    CONFIG_PM:

    ''Power Management'' means that parts of your computer are shut off or put into a power conserving ''sleep'' mode if they are not being used. There are two competing standards for doing this: APM and ACPI. If you want to use either one, say Y here and then also to the requisite support below.
    ...
    Note that, even if you say N here, Linux on the x86 architecture will issue the hlt instruction if nothing is to be done, thereby sending the processor to sleep and saving power.
    ...[/I]

    Offtopic korrekció. Ha nem csinál semmit éppen a proci, akkor az ún. idle kernel threadet futtatja. Non-SMP kernel esetén ez valóban HLT utasításokból áll. Ez két okból fontos: mert egyrészt pihen a hardware, másrészt az APM BIOS innen érzékeli, hogy a rendszer nyugalomban van, lehet teljesítményt csökkenteni, laptopoknál ez nagyon fontos.
    SMP kernel esetén azonban egy HLT loopban processzor folyamatosan kernel módban futna és a spinlock-ot lefogva tartaná, ez deadlock-hoz vezetne. Ezt úgy oldották meg (legalábbis régebben), hogy SMP esetén aprocesszorok idle thread-je folyamatos reschedule-inget végez, és visszatér user módba. Ezért pl. laptopokon (uniprocesszoros rendszerekhez) kifejezetten nem érdemes SMP kernelt futtatni. A kernel ezen része lehet hogy fejlődött, majd megnézem.

Új hozzászólás Aktív témák