Forum » Operacijski sistemi » 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
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.
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Dvojedrniki v mobilnih telefonihOddelek: Novice / Apple iPhone/iPad/iPod | 3934 (2611) | Utk |
» | AMD napovedal 16-jedrnike (strani: 1 2 )Oddelek: Novice / Procesorji | 8557 (5797) | Bistri007 |
» | IBM splovil najhitrejši procesor na svetuOddelek: Novice / Procesorji | 5190 (3800) | BigWhale |
» | Izkoriščenost aplikacij na dvojedrnih procesorjih??? click meOddelek: Programska oprema | 1087 (1087) | Tear_DR0P |
» | AMD trdi, da bo jedro K8L tudi do 40 odstotkov hitrejše od Intelovega štirijedrnikaOddelek: Novice / Procesorji | 4774 (2812) | Matevžk |