Vlákno názorů k článku
SLES je nejoblíbenější systém pro superpočítače od anonym - Jsem zvedavy, jak nam LO vysvetli, proc windows...

  • Článek je starý, nové názory již nelze přidávat.
  • 16. 6. 2008 13:55

    anonymní
    Jsem zvedavy, jak nam LO vysvetli, proc windows v top 500 maji stokrat+ mene CPU nez linux.
  • 16. 6. 2008 14:24

    mm (neregistrovaný)
    No proc.
    Protoze MS kdyby chtel.... Ale on nechce. :-)
    Pak prijde prednaska o tom, jak je node v takovem vypocetnim clusteru nenarocny a jak by tam vlastne mohl bezet snad i MS-DOS :-)
    Proste MS je nejlepčí a nic bez nej nejde. Vsichni to delaji hure nez MS a nikdo nevi, jak se ma delat ten spravny byznys.
  • 16. 6. 2008 20:46

    bez přezdívky
    Vynechme první tři a poslední dvě věty a je to koneckonců pravda. Superpočítače, resp. výpočetní clustery jsou velmi specializované a máloúčelové systémy.

    I když jsou Windows velmi modulární, přesto jsou koncepcí cíleny na jiný typ využití. Korporátní servery, desktopy...

    Další věcí je licenční politika, kde MS zatím s cluster node nějak moc nepočítal. Teď sice má v nabídce Windows Compute Cluster Server 2003, ale zatím bych to nebral moc vážně. Počkejme na druhou, nebo spíše třetí verzi téhož, kdy se usadí jednak stavba systému a jednak ceny a způsob licencí.

    V malém současném podílu Windows na trhu clusterů je prostě zbytečné hledat nějakou neschopnost MS. Prostě MS dosud nejevil o tento trh zájem a trh si celkem logicky zvolil produkt, který lépe odpovídal potřebám - tj. Unix a jeho "levnější klony"*).

    Čímž ale nepřímo dávám za pravdu i první a poslední části - ano, MS dosud o clustery nestál a systém pro ně cíleně nepřipravoval a ano, MS umí dělat velmi dobře byznys (jestli to neumí i někdo jiný, to dost pochybuju) a pokud z nějaké oblasti jsou cítit prachy, tak je i MS velmi flexibilní a umí rychle nabídnout potřebné a hlavně dostatečně kvalitní (ne nutně nejlepší!) nástroje za cenu, kterou akceptuje významná část trhu.


    --------------
    *) radši dodávám - berte to jako nadsázku
  • 16. 6. 2008 23:19

    anonymní
    Ty uplne nejvetsi pocitace (a na druhou stranu i ty uplne nejmensi) jsou otazkou prestize. Je to treba jako letet na Mesic.
  • 16. 6. 2008 23:47

    anonymní
    Ano, jenze prestiz nejsou penize. A v tomhle oboru prestiz neznamena VUBEC nic. Kolik lidi asi tak zajima na cem bezi nejaky supervykony, jednostranne pouzitelny pocitac na vypocet pocasi, simulace a podobne veci? A kolik lidi slyselo o letu do vesmiru?:o)
    I kdyby neslo o prachy, tak dost chapu, proc jsou Windows (i Linux v podstate) pro tyhle ucely naprosto zbytecne ... jednak maji zbytecne velkou rezii na jednostranny system a jednak jsou proste zbytecne velke ... a tim nemyslim, ze jsou se svyma par gigama xkrat mensi nez bezna instalace linuxu:), ale tim myslim, ze asi neni zapotrebi mit v jadre ovladace na USB, power management, podporu directx a spousty ostatnich "kravin", ktere jsou v takovem superpocitaci uplne k nicemu .... to by bylo, asi jako rvat motor z Lamba do sekacky na travu:o) Sice by to bylo supermoderni, sekat by se s tim dalo vsechno, ale bylo by to zbytecne drahe, velke, tezke a puvodni ucel by lip splnil dvoutakt z koziho dechu:o)
  • 17. 6. 2008 0:00

    Rejpal (neregistrovaný)
    Kolik lidi asi tak zajima na cem bezi nejaky supervykony, jednostranne pouzitelny pocitac na vypocet pocasi, simulace a podobne veci?
    No asi to zajímá poměrně hodně lidí z těch, co na takový supervýkonný počítač mají a zrovna se po nějakém poohlížejí. :o) Každý software potřebuje track record, aby se dostal do povědomí, ehm, "decision makerů". Z tohohle důvodu je snaha o nějakou tu prestiž docela pochopitelná.
  • 17. 6. 2008 0:23

    bez přezdívky
    Jenže jakej z toho kouká reálnej kšeft? MS je prostě přímo ukázkovou destilací nejtypičtějších komerčních firem. Obrací se na takové oblasti trhu, kde to je pro ně finančně nejvýnosnější. A dosud to byly hlavně desktopy a korporátní servery (to je stejně takovej připitomělej newspeak - korporátní... ale asi je každému jasná podstata - mnohaúčelový server, i u kterého není předem známé přesné využití, tj. od domain controleru, přes fileserver až po mailserver s exchange, mnohdy vše najednou).

    Pro tento většinový a hlavně finančně dobře vytěžitelný segment trhu nabízí MS vše, co lze v mainstreamu nabídnout.

    Pokud se stanou superpočítače a clustery rozšířenější (a jak se zdá, tak zájem o ně se skutečně zvětšuje) a bude to finančně opravdu zajímavé, tak se tam prostě MS nacpe se svým řešením. Klidně stylem "Hotmail", tj. odkoupením cizího řešení a překlopením pod logo MS. Kolik z těch "decision makerů" dnes opravdu zná všechny podrobnosti o takovém Hotmailu? IIS se na serverech rychle šíří a vytlačil už o pořádný kus předchozího lídra - Apache.
  • 17. 6. 2008 10:36

    GT500 (neregistrovaný)
    Tu poslední větu nemyslíš vážně, že ne ? To je jako nám tvrdit, že Země je placatá.
  • 17. 6. 2008 12:16

    bez přezdívky
    Tu větu myslím vážně a je pravdivá.

    Koukněte se sám:

    http://news.netcraft.com/archives/web_server_survey.html


    Prostě IIS za poslední dva, tři roky ukousl hodně z podílu Apache. Je to přesně to, co jsem popisoval - "decision makers" vidí, že IIS je na velkých serverech, tak ho na svůj dají taky. Nikde netvrdím, že to je rozhodnutí správné, racionální, efektivní... Může být, ale většinou není. Vím, jak rozhodnutí probíhají a většinou to skutečně nejsou racionální kroky. A to ani v jednom směru.


    Možná jste si ale tu mou větu mylně vyložil tak, že tvrdím, že IIS má větší podíl než Apache. To pochopitelně pravda není a pokud by se výrazně nezměnil poměr cena/výkon, tak to ani pravda nebude (tedy pokud Apache nebude vytlačen jiným produktem se srovnatelnými funkcemi a cenou). Určitě bych našel nějakou specifickou oblast, kde bude mít IIS podíl větší (třeba podíl IIS na intranetových serverech s Windows ;) ), ale to je pochopitelně pořádně pitomý argument.
  • 17. 6. 2008 15:11

    VM (neregistrovaný)
    Spis to bude nasazovanim dotnet aplikaci, IIS je jim blizsi. Jinak davat IIS misto Apache povazuju za masochismus.
  • 18. 6. 2008 23:47

    JardaP (neregistrovaný)
    Ovsem let na Mesic s Windows bych neriskoval. Kdyby se to muselo restartovat 50 metru nad povrchem, protoze system lehnul a pristavaci modul pristava volnym padem a hlavou dolu, tak by se to take nemuselo stihnout.
  • 17. 6. 2008 8:05

    mm (neregistrovaný)
    Vyborne. Uz jsem se bal, ze se od vas dnes nikdo neozve. LO je momentalne pretizen nebo jste nejaka jeho reinkarnace ?
    ;-)
  • 17. 6. 2008 13:22

    yty (neregistrovaný)
    Cituji: "Prostě MS dosud nejevil o tento trh zájem ..." To je TOTALNI nesmysl. Ten trh mel a ma obrat v radu mnoha miliard USD rocne a MS mel eminentni zajem na nej proniknout (dominovat mu). Ted nehovorim jen o top 500 ale i o clusterech, co se pouzivaji v podnicich. Staci se podivat na clanky stare nekolik let, kde novinari vestili, ze MS ten trh behem nekolika let prevalcuje. Ze se tak zatim nestalo je proto, ze (i) zamestnanci velkych vypocetnich center byli u clusteru zvykli na Unix nebo Linux a Windows by jim prinesly jen problemy a (ii) firmy jako IBM nebo Oracle davaly u svych clusterovych "byznys" reseni prednost Linuxu, protoze jim to prinaselo vic flexibility a mene zavislosti na Microsoftu.
  • 18. 6. 2008 19:05

    Lael Ophir (neregistrovaný)
    Kterých mnoho miliard USD ročně máte konkrétně na mysli? Miliardy za HW, nebo "miliardy" za jedno CD se SuSE Linuxem, které potom majitel toho HW za miliardy rozinstaluje na nody? To první je opravdu zajímavý business, ale jen pro výrobce HW. To druhé není zajímavý business. No a pak je tu třetí business, a tím je management výpočetních clusterů. Mít totiž síť (ať už jakoukéliv technologie) s hromadou PCček s Linuxem je super, ale bez managementu clusteru jde jen o ta pospojovaná PCčka. Tam neleží takové peníze, jako v HW, ale přesto to může být zajímavé, protože se trh výpočetních cluterů postupně rozšiřuje. MS se poměrně nově snaží proniknout na trh HPC v bankách a pojišťovnách. Nakonec řada firem nabízí třeba "distribuovaný Excel", kde máte známý interface na desktopu (Excel), a za ním cluster, na kterém jedou výpočty.

    Pokud jde o HA clustery, tak již dnes jede velké procento Exchange serverů na HA clusteru. Typicky jde o active/active clustery.

    IBM a Oracle jsou firmy, které odjakživa tíhnou k unixům. Přesto ve firmách nějak nevidím výrazné zastoupení produktů IBM a Oracle na Linuxu, a nakonec ani Linuxu jako takového.
  • 18. 6. 2008 19:16

    Lael Ophir (neregistrovaný)
    Ještě musím dodat, že první verze Windows Compute Cluster vyšla před 2 lety. Předtím MS neměl žádný produkt pro trh HPC. Jestli a jak se Windows Compute Cluster prosadí, to uvidíme u třetí verze.
  • 18. 6. 2008 22:27

    anonymní
    No vidite, a debian cluster nevysel nikdy. To jenom hezky dokazuje jak je system od MS malo pruzny.
  • 18. 6. 2008 22:59

    Lael Ophir (neregistrovaný)
    To je samozřejmě blbost, sám to musíte vědět. Problém je v ceně licence Windows. Pokud máte cluster s tisícem nodů, tak byste dal USD 100 000 jen za licence Windows. Zcela zbytečně byste platil za všechno to GUI, GDI, podporu čipových karet, šifrování FS, podporu multimédií a hromadu dalších věcí. Na konci potřebujete na node správu paměti, procesů, networking, a tím to končí. Tohle dostanete na každém CD s Linuxem, a nemusíte za to platit USD 100.

    Nebo si opravdu myslíte, že důvod, proč se na výpočetních clusterech často jede Linux, je v nějaké extrémní kvalitě jeho správy paměti (viz příšernost jménem OOM Killer), nebo procesů? To asi těžko :)
  • 18. 6. 2008 23:18

    anonymní
    I na univerzitnich clusterech se Windows nepouzivaji, pritom ty by je od MS dostali zadarmo (MS dokonce umoznuje ziskat i pristup ke kodu), takze cenou to asi nebude.

    OOM killer neni prisernost ale nutnost (a celkem dobre navrzena, nez se spusti, jsou procesy upozorneny a mohou uvolnit cache). Co delaji windows, kdyz dojde veskera pamet? Upozorni na to procesy? A kdyz uz jste v te kritice spravy pameti, vite treba, ze windows si nechaji rozfragmetovat swapfile? A ze ho pak ani nedokazi defragmentovat?
  • 19. 6. 2008 15:16

    Lael Ophir (neregistrovaný)
    Situaci na univerzitách neznám, tedy ji těžko budu hodnotit.

    OOM Killer je špatný koncept. Linux má velkou spotřebu paměti. Například když provedete volání fork, tak forkovaný proces sdílí paměť s původním procesem v módu copy-on-write. Teoreticky změnit jakoukoliv část svého adresního prostoru, a tedy musíte mít dost paměti, abyste byl takový požadavek mohl utáhnout. No a fork se používá na unixech nechutně často, protože thready jsou horkou novinkou. Proto potřebujete paměti velikou spoustu. Linux to řeší tak, že když alokujete paměť, je alokace (skoro) vždy úspěšná, bez ohledu na reálnou dostupnost paměti. Když potom někdo chce alokovanou paměť použít, a paměť není, dojde na lámání chleba; OOM Killer vylosuje proces, a ten odstřelí. Fuj! Autoři aplikací pro Linux potom vůbec neřeší možné selhání alokace, protože alokace stejně vždy projde (podruhé fuj!).

    Jak podobný problém řeší Windows? Nepoužívá se tolik CoW, fork neexistuje (vyjma Services for UNIX), worker procesy se nepoužívají (vyjma pár portů z unixů), zato odjakživa existují thready (které používá prakticky každý). Spotřeba paměti je nižší, a není nutné o paměti lhát. Pokud někdo chce paměť, systém jí alokuje. Když paměť není, tak se neprovede losování a odstřelení procesu, ale prostě se procesu řekne, že paměť není, a alokace tedy selhala (alternativně lze dynamicky zvětšit swap). A protože se SW píše v C++ nebo .NETu, nikoliv v ANSI C, tak se typicky jedná o nějaké vytvoření objektu, dojde k výjimce, a SW si s tím poradí. Prokazatelně si s tím poradí MS SQL Server, MS Exchange, MS Office, a Adobe Photoshop (tam jsem hlášky o selhání alokace viděl).

    Windows mají swap file s pevnou počáteční velikostí. Ten je typicky nefragmentovaný (s výjimkou případu, kdy jste ho zakládal na těžce fragmentované jednotce). Pokud dojde paměť, jednou z možností je i zvětšení swapu. Pochopitelně to časte vede k fragmentaci swapu. Ale později dojde k jeho oříznutí na původní velikost, a bude opět nefragmentovaný. Samozřejmě není možné, aby se vám nefragmentovaný swap pevné velikosti nějak rozfragmentoval.
    Pokud už máte swap fragmentovaný, můžete použít utilitu pagedefrag: http://technet.microsoft.com/en-us/sysinternals/bb897426.aspx
  • 19. 6. 2008 15:52

    anonymní
    Máte dost zkreslené představy, OOM killer se dá konfigurovat, procesy se vybiraji deterministicky a na nedostatek pameti mohou vcas (s predstihem) reagovat.

    Kdyz jsem zacal programovat na unixech pred 10 lety, tak uz vlakna byla a nezaregistroval jsem, ze by o tom nekdo v te dobe mluvil jako o novince. Dale existuji i _hubene_ forky, prectete si alespon prosim, jakymi ruznymi zpusoby lze vytvorit nove vlakno vypoctu.

    CoW zvysuje vykon, jadro unixu je diky tomu schopno rychleji obslouzit vetsi mnozstvi procesu. Treba stovky shellu. Predelat alokaci tak aby byla jako ve win neni tezke, ale proc se vracet k mene vykonnemu spravci pameti.

    Sluzba implementovana do samostatnych procesu se hure napada. Pri chybe v kodu vam nikdo nevytuneluje ostatni procesy (pokud bezi pod jinym uzivatelem). Zaridit takove chovani i u vlaken je mnohem tezsi.

    Nedostatek pameti na win popisujete dost idilicky, ono i na zpracovani toho ze dosla pamet, je nejaka pamet potreba.
  • 19. 6. 2008 17:16

    Lael Ophir (neregistrovaný)
    Ano, OOM Killer můžete konfigurovat. Můžete například "imunizovat" procesy před odstřelením, nebo overcommit paměti dokonce zakázat. Problém je, že když overcommit úplně zakážete, tak systému paměť dojde velmi záhy :(. Na nedostatek paměti sice můžete a předstihem reagovat, ale na tom, že OOM Killer je v rozporu se specifikací jazyka C to nic nemění. Mimochodem jak byste s předstihem reagoval na ten nedostatek paměti, nejlépe tak, aby výsledek fungoval stejně na všech unixech (resp. abyste zůstal na POSIXu)?

    Pokud jsem si všiml, tak Linux měl až do jádra 2.6 příšernost zvanou LinuxThreads. Teprve od jádra 2.6 je threading v použitelném stavu. Samozřejmě Solaris má funkční threading již delší dobu. U AIXu měl threading dost tragický výkon. Nutno podotknout, že NT měly threading už v návrhu, a implementace (zvláště mutexů) je zjevně rychlejší, než například na Solarisu; a Solaris je zase podle všeho nejlepší ve světě unixů. Dnes už Oracle, Apache a řada dalších běžně používají threading, ale zbývá spousta dalších aplikací.

    Ehm... CoW zvyšuje výkon? Já vždy myslel, že se podílí jen na spotřebě paměti. Ve Windows samozřejmě shodné spuštěné procesy sdílí shodné stránky kódu.

    Služba implementovaná do samostatných procesů má velikou spotřebu paměti, a veliký overhead při předávání dat a synchronizaci. Naopak služba používající thready má menší spotřebu paměti, data předává v rámci procesu (tedy bez režie), a synchronizace je výrazně rychlejší. Proto dnes i "klasické" unixové aplikace typu Oracle, Apache a další používají threading. V případě použití worker procesů může chyba v kódu způsobit podobnou škodu, jako v případě použití threadů, protože workery typicky používají shared memory, nebo IPC. Navíc musíte mít nějaký dispatcher process, který je pak single point of failure. Worker procesy jsou prostě starší model, oproti threadům vyžadující více paměti, mají pomalejší kontext switche (protože thready v rámci procesu mají společnou memory map), pomalejší synchronizací a pomalé předávání dat.

    Ve Windows typicky na každý příchozí požadavek vytvoříte objekt, který popisuje request, a zařadíte ho do fronty. Z fronty volných worker threadů pak vyberete první, a ten request obslouží. Po ukončení obsluhy requestu se objekt uvolní, a thread se vrátí do fronty volných worker threadů. Pokud dojde k pádu aplikace, service manager celý servis znovu nahodí (nebo udělá cokoliv jiného, co je nakonfigurované). Samozřejmě pokud chcete vyšší spolehlivost, můžete použít mikrorebooty, tedy jednou za X dní spustit nový proces servisu, ten starý nechat dokončit současné požadavky, a pak ho ukončit. Oproti worker procesům je to výrazně pokročilá technika.

    Na to, abyste zapsal do logu, že není paměť, jí typicky moc nepotřebujete. Handle máte otevřený, a k vlastnímu vysypání hlášky paměť nepotřebujete. Mimo jiné máte možnost zmenšit či zahodit nějaký buffer nebo cache. Dále systém umí dynamicky zvětšit velikost swap file... Možností je řada. *Cokoliv* je lepší, než prostě odstřelit proces, pokud se pokusí přistoupit k paměti, kterou před tím úspěšně alokoval.

    Samozřejmě chápu, že zanícený linuxák vždy ví, že situace na Linuxu je nejlepší. Když Linux lže o paměti, a pak OOM Killer losuje a odstřeluje procesy, je to samozřejmě nejlepší možné řešení :). Jde o obdobu slepé skvrny. Tahle typicky zabraňuje vidět jakékoliv nedostatky či nevýhody návrhu Linuxu, kterých je pohříchu značná spousta. To potom nezbývá, než ukamenovat toho, kdo na podobné nedostatky upozorňuje, a jít zase spokojeně hýčkat Tuxe. To vše samozřejmě bez ohledu na technická fakta. Hlavní je víra, fakta jsou poddružná.
  • 19. 6. 2008 21:32

    anonymní
    OOM Killer je v rozporu se specifikací jazyka C Za 1. Optimisticka alokace jde vypnout jednim zapisem v /proc Za 2. Proces muzete na libovolne dlouho dobu stopnout (a jit si treba koupit RAMku), specifikace jazyka C nikde nerika, jak rychle ma proces bezet. Je to konfigurovatelne. To ze se procesy zabiji je jen rozhodnuti spravce systemu. Nevim jak mi muze system lhat o pameti, kdyz se muzu pripojit debuggerem (hledejte man kmdb) primo na produkcni kernel a lezt po jeho strukturach. Pokud si nekdo precte neco v ps a z toho si vyvozuje neco jineho, tak to je snad jeho problem, ne? Zazil jsem OOM killer za posledni 4 roky dvakrat, jednou to byl nasledek me chyby, podruhe chyba v ovladaci, takze tato situace je dost vyjimecna. Dobre reseni jak zaridit reakci na nedostatek pameti je signal SIGMEM. Jinak samozrejme, kdyz chcete, muzete udelat soubor a zacit do nej swapovat. Jinak ted jste me presvedcil, ze VUBEC nevite, jak to funguje: *Cokoliv* je lepší, než prostě odstřelit proces, pokud se pokusí přistoupit k paměti, kterou před tím úspěšně alokoval.. Funguje to totiz uplne jinak. Kdyz pamet klesne pod urcitou hranici, je spusten OOM killer a ten nejaky(zvoleny) proces zabije. Neni to tak, ze by proces zemrel pri pristupu do pameti. Opravdu jste pracoval nekdy na UNIXu? Jak programovat s vlakny mne vysvetlovat nemusite, thread pool si umim udelat. Nicmene jste me nepresvedcil, ze pomoci vlaken dokazu zajistit bezpecnost stejne dobre a snadno jako pomoci procesu. Navic rezije neni o mnoho vyssi. Napiste si program, ktery si vytvori rekneme 1000 procesu/vlaken na linux/windows, v kazdem vlakne secte kus pameti a skonci. Pak porvnejte casy behu. Opravdu jsou procesy tak narocne?
  • 19. 6. 2008 21:34

    anonymní
    Omlouvam se za ten slitek, kdyz se pouzije tag i tak to neprevadi nove radky na tag br.
  • 22. 6. 2008 21:22

    Lael Ophir (neregistrovaný)
    Ano, "lhaní o paměti" lze vypnout (tuším dvěma parametry). Bohužel pak systému poměrně lehko dojde paměť.

    Ano, aktivace OOM Killeru je dost výjimečná, stejně jako jakákoliv jiná forma nedostatku paměti. To nic nemění na tom, že jde o špatný koncept. Srandovní je i "imunizace", která dělí procesy na ty, které opravdu chcete běžet, a na ostatní, které může kdykoliv sejmout OOM Killer.

    Pokud jsem si správně všiml, tak Linux používá "late binding". Když proces alokuje paměť, požadavek je prohlášen za splněný, a to prakticky bez ohledu na to, jestli je paměť dostupná. A teprve když aplikace poprvé přistoupí ke dříve alokované paměti, proběhne ten "late binding". Obdobně použití CoW nevede k rezervaci paměti (která bude třeba v případě, že proběhne zápis do stránky), a paměť se "hledá", až když ke změně stránky opravdu došlo. Obojí vede k tomu, že (nějaký) proces umře ve chvíli, kdy někdo potřebuje paměť, kterou již dříve (ze svého hlediska úspěšně) alokoval, a "late binding" nyní volnou paměť nenajde.

    No vida, umíte si udělat thread pool. Umí to i řada autorů SW pro unixy (včetně Linuxu), a kupodivu se to zdá být preferovaný model.

    Vytvoření procesu je vždy dražší, než vytvoření threadu. Switch mezi procesy je vždy dražší, než switch mezi thready jednoho procesu. Synchronizace mezi procesy je vždy dražší, než mezi thready. Spotřeba paměti je vždy vyšší v případě procesů, než v případě threadů. Ano, procesy jsou náročnější (výjimou může být nevhodná implementace threadů, viz LinuxThreads). A jak jsem psal, ani worker procesy vám nezajistí, že chyba v jednom procesu nesloží zbytek služby (viz chyba jediného dispatchera, viz corrupted shared resources typu shared memory nebo file, viz locknutý resource a deadlock). Rozdíl je v tom, že ve Windows umí Service Manager každou službu znovu nahodit, pokud spadne; na unixech je daemon jen proces jako každý jiný, a jeho startování (včetně security kontextu), ukončování a akci při případném pádu procesu musíte řešit ve vlastní režii.

    Jinak příklad, který uvádíte, je nereálný. V praxi workery pracují se sdílenými daty, a hromadu času sežere synchronizace. Bohužel když jsem naposledy hledal použitelné benchmarky, našel jsem jen takové, které srovnávaly Solaris (který je technicky daleko lepší, než Linux) s Windows, a vyšly ve prospěch Windows.
  • 19. 6. 2008 22:06

    JardaP (neregistrovaný)
    Kdyz uz tu tak zasvecene hovorite o sprave pameti, mohl byste mi vysvetlit, proc na Windowsich strojich neustale vidim tak pulku instalovane RAM nevyuzitou, zatimco system swapuje, az disk drnci? A, BTW, proc ten disk na Windows drnci a na Linuxu ani moc ne?

    Linux, po urcite dobe provozu zaplacne veskerou pamet, az na par kilobytu. Pokud si tu pamet nevynuti aplikace, narve se tam buffer a cache. Windows ma furt pulku volnou, cache je vetsinou dost mala a i kdyz nekdy naroste, po case se zase zmensi. Proc? K cemu je dobre mit tolik pameti jen pro ozdobu? At date RAM kolik chcete, situace je vzdy vicemene takovato.

    P.S.: Nevim, jestli jsou rozdily v chovani mezi serverem a workstejsnem. Windows server jsem uz delsi dobu nevidel.
  • 22. 6. 2008 22:29

    Lael Ophir (neregistrovaný)
    Já myslím, že zrovna my dva jsme o tom spolu už mluvili. A pokud si vzpomínám, tak závěr diskuze byl, že nevíte, co je dirty page, a o memory managementu nevíte vůbec nic, takže nemělo smysl v diskuzi pokračovat.

    Ale když to zkusím jednoduše... Na prvním místě je třeba se zeptat, kde vidíte půlku RAM "nevyužitou". Každá stránka paměti může být v různých stavech, může mít různé užití, a vyjádřit jedním číslem "využití" paměti je dost ošemetné. Je tou "využitou" pamětí paměť, která obsahuje program zavedný v RAM, který je i na disku? Je využitou pamětí soubor (třeba video), který je do paměti namapovaný? Je využitou pamětí cache? Pokud vám jeden systém "využití" paměti počítá jiným způsobem, než druhý, je srovnání čísel o ničem.

    Teď teorie; podotýkám, že drasticky zjednodušená. RAM se dělí na stránky velikosti 4kB. Některé stránky jsou jen obsahem souborů, zavedeným do paměti. Příkladem je třeba spustitelný program, který máte jak v RAM, i na disku. Podobně i stránka s rozepsaným dokumentem může být v RAM, a zároveň ve swap file. V obou případech tomu říkejme clean page. Když někdo potřebuje kus paměti, můžete vybranému procesu sebrat nějakou clean page (třeba takovou, která se dlouho nepoužívala), a přidělit tomu, kdo paměť potřebuje. Protože ta sebraná stránka má kopii jinde (na disku), můžete pro ní prostě sáhnout na disk, když jí daná aplikace bude zase potřebovat.

    Jiným typem stránek jsou dirty pages. To jsou stránky paměti, které existují jen v RAM. Pokud byste takovou stránku uvolnil, nějaká aplikace přijde o data (to samozřejmě OS nedělá). S dirty pages se dělá to, že se jejich obsah zapíše do swap file, a tím se z nich udělají clean pages.

    Obecně je dobré mít co nejméně dirty pages. Clean pages totiž můžete kdykoliv uvolnit, a přidělit někomu, kdo je zrovna potřebuje.

    Windows XP a starší byly psány s tím, že paměti je málo. V době uvedení Windows XP bylo požadavkem jen 64MB RAM. Strategie memory manageru byla taková, že pokud je nějaká stránka dirty, je třeba jí co nejdříve uložit do swap file (udělat z ní clean). To je s malým množstvím paměti velmi dobrá strategie, protože vám dává možnost okamžitě reagovat, když někdo potřebuje více paměti, než kolik máte zrovna volné RAM (pokud totiž máte hromadu dirty pages, tak bude aplikace na alokaci paměti čekat, dokud nevyswapujete dost dirty pages, což může *velmi* dlouho trvat). Zároveň to vysvětluje, proč Windows hrabou po disku, i když je ještě dost volné RAM. Dělají to proto, aby bylo minimum dirty pages, a aby tedy kdokoliv bylo možné přidělit RAM tomu, kdo jí potřebuje. Ovšem pokud máte paměti daleko více, než potřebujete (to v roce 2002 nebylo aktuální), hrabete po disku zbytečně.

    Protože dnes má PC běžně 2GB RAM a více, je ve Windows Vista použit jiný algoritmus. Ten zápisy do swapu odkládá (pokud to to lze), a provádí je s nízkou prioritou I/O operací. Pokud má stroj více paměti, než kolik je jí běžně třeba, je tahle strategie výhodnější. Obecně nelze stanovit nějakou zaručeně nejvýhodnější strategii, podobně jako třeba u alokátoru místa na disku; jde vždy o odhad, heuristiku.

    Teď mi řekněte upřímně: pochopil jste, co jsem napsal?
  • 18. 6. 2008 21:17

    anonymní
    SLES se sice dá "rozinstalovat na uzly", ale bez zaplacených licencí by tam klidně místo něj mohli dát Debian. Kompletní clusterová řešení pro HPC@SUSE samozřejmě existují, bez nich by to tak nějak nemělo smysl.
  • 18. 6. 2008 19:13

    Lael Ophir (neregistrovaný)