» »

Linux in njegovo operiranje z več jedri

Linux in njegovo operiranje z več jedri

alexa-lol ::

hej :) mene zanima nekaj glede linuxovega operiranja z več jedri. Če se ne motim (popravite me če se) ima na Windowsih 1 program na voljo eno jedro..
primer ABC.exe -> jedro 1 BCD.exe-> jedro 2 oz. 1/2 ABC -> J1 in druga polovica ABC ->J2

Zanima me, kako se s tem spopada Linux. A ima isto narejeno?.. namreč meni bi se zdelo bolj smiselno, da bi se vse operacije delile na jedra in ne samo operacije enega programa na eno jedro, operacije drugega programa pa na drugo jedro.

Upam, da nisem mimo ustrelil :)

jype ::

alexa-lol> Upam, da nisem mimo ustrelil

Si. Tudi v Windows lahko en program brez težav hkrati uporablja več jeder.

Windows načeloma delajo predvsem z modelom SMP, Linux pa v celoti obvlada tudi NUMA model (tudi Windows ga, a se ne obnese pri računalnikih z več kot 64 procesorji, kjer pa NUMA praviloma šele začne zares blesteti).

Programje, ki želi uporabljati več procesorjev hkrati, mora biti večnitno - operacijski sistem ne more razbiti programja, ki teče v eni sami niti, na več koščkov, ki bi se izvajali vzporedno (čeprav morda v prihodnosti bo - sam sem se že ukvarjal z mnogoprocesorskimi računalniki že več kot 10 let nazaj in takrat je bila ena od temeljnih idej tudi avtomatizirana paralelizacija in optimizacija programov, ki se v takem procesorskem polju izvajajo - tudi takrat se je večinoma študiralo NUMA modele, saj SMP model ni preveč primeren za računalnike z več kot štirimi procesorji.

alexa-lol> namreč meni bi se zdelo bolj smiselno, da bi se vse operacije delile na jedra in ne samo operacije enega programa na eno jedro

To se sliši prima, je pa daleč od tega, da bi bilo trivialno. Vsak proces dela s svojim naslovnim prostorom (pomnilnikom, če hočeš) in mora imeti do njega dostop. Če vzporedno tečeta dva dela istega procesa, se poraja kup vprašanj - od sinhronizacije dostopa do pomnilnika do povsem temeljnih lastnosti časovnega zaporedja izvajanja - če en del procesa potrebuje rezultat, ki ga vrne drug del procesa, mora na ta rezultat čakati.

Linux v tem blesti predvsem zaradi akademskih uporabnikov, ki svoje potrebe enostavno zapolnijo s tem da v Linux jedro dodajo funkcionalnost, ki jo potrebujejo (Microsoft takega razvojnega modela žal še ne omogoča, ni pa izključeno, da se bo to v prihodnosti spremenilo). Tak razvojni model tudi botruje dejstvu, da veliko večino superračunalnikov danes poganja Linux.

srus ::

Linux med posameznimi jedri premetava Linux procese. Tvoja naloga je, da aplikacijo napišeš tako, da ti bo lahko tekla paralelno na večih jedrih in se procesi ne bodo "čakali" med seboj, ali blokirali drug drugega pri klicih Linux kernela. Trendi gredo počasi v smer 4 - 8 jedrnih procesorjev, kjer bo na plošči le en procesor in bodo razne sedaj običajne SMP variante odpadle.

Moderni prevajalniki naj bi nudili podporo generaciji kode, ki teče paralelno na večih jedrih. Ravno tako Linux kernel transparentno opravlja naloge schedulinga procesov aplikacije po večih jedrih. V praksi pa se še vedno pokaže, je za polni izkoristek HW še vedno potrebno opraviti precej ročnega dela - npr. nastavitve CPU affinity, izbira pravilnega Linux schedulerja, njegova pravilna konfiguracija. Na splošno ni pravila, vedno je optimalna rešitev odvisna od tipa tvoje aplikacije. Kar precej smo se ukvarjali z optimalnim izkoristkom multi core procesorjev na multi procesorskih ploščah in kot osnovno orodje za analizo poleg LTT-ng toplo priporočam Intel Vtune aplikacijo.

hej :) mene zanima nekaj glede linuxovega operiranja z več jedri. Če se ne motim (popravite me če se) ima na Windowsih 1 program na voljo eno jedro..
primer ABC.exe -> jedro 1 BCD.exe-> jedro 2 oz. 1/2 ABC -> J1 in druga polovica ABC ->J2

Zanima me, kako se s tem spopada Linux. A ima isto narejeno?.. namreč meni bi se zdelo bolj smiselno, da bi se vse operacije delile na jedra in ne samo operacije enega programa na eno jedro, operacije drugega programa pa na drugo jedro.

Upam, da nisem mimo ustrelil :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Dvojedrniki v mobilnih telefonih

Oddelek: Novice / Apple iPhone/iPad/iPod
243806 (2483) Utk
»

AMD napovedal 16-jedrnike (strani: 1 2 )

Oddelek: Novice / Procesorji
798219 (5459) Bistri007
»

IBM splovil najhitrejši procesor na svetu

Oddelek: Novice / Procesorji
235029 (3639) BigWhale
»

Izkoriščenost aplikacij na dvojedrnih procesorjih??? click me

Oddelek: Programska oprema
91032 (1032) Tear_DR0P
»

AMD trdi, da bo jedro K8L tudi do 40 odstotkov hitrejše od Intelovega štirijedrnika

Oddelek: Novice / Procesorji
464635 (2673) Matevžk

Več podobnih tem