Poznáváme Mac OS X: jak je to s pamětí a virtuální pamětí

Activity MonitorMac OS X zachází s pamětí mnohem propracovaněji a obratněji, než na co byli jeho uživatelé dříve zvyklí – ovládací prvky pro správu paměti už totiž ani neexistují.

Kdysi dávno si každý program při svém spuštění nárokoval pevně dané množství RAM. Toto množství jste mohli sledovat a upravovovat v dialogovém okně Get Info (Informace) u každého programu. Když jste spustili nějaký program, vzal si okamžitě například 20 MB paměti (nebo jakékoli jiné množství, které podle programátorů potřeboval).

V systému Mac OS X se však paměť přiděluje dynamicky. Paměť je přidělována podle aktuální potřeby – za provozu. Když nějaký program spustíte, nemusí zpočátku používat příliš mnoho RAM. Když pak ale v tomto programu otevřete nějaký ohromný, složitý dokument, systém mu automaticky přidělí více paměti. Když pak tento dokument zase zavřete, systém Mac OS X z něj automaticky přebytečnou paměť přelije zpátky do kotlíku, aby byla k dispozici ostatním programům a funkcím.

Je pravda, že při klepnutí na příkaz About This Mac (Co je tento Mac) se už neotevře žádný malý graf znázorňující využití paměti RAM jednotlivými programy, jak tomu bylo v systému Mac OS 9. Už to není třeba.

Pokud ale přesto potřebujete vědět, kolik paměti v danou chvíli každý z vašich běžících programů používá, otevřete složku Applications -> Utilities (Aplikace -> Obslužné programy), otevřete Activity Monitor (Monitor aktivity). Zobrazí se  okno, ve kterém uvidíte, kolik procent paměti ten který běžící program používá.

A pak je tu ještě ta záležitost s virtuální pamětí, která vám pomáhá otevírat zároveň více programů, než na kolik stačí vaše RAM, kterou váš počítač používá. Tato funkce funguje tak, že jako dočasný přepad operační paměti použije v případě potřeby větší množství místa na vašem pevném disku. Jelikož skutečná paměť předává procsoru informace mnohokrát rychleji než pevný disk, je virtuální paměť pro svou loudavost vyhlášená.

V systému Mac OS X je virtuální paměť neustále zapnutá. V současnosti ale už váš počítač tolik nezpomaluje, a to hned z několika důvodů. Zaprvé, každý program používá na začátek jen tolik paměti RAM, kolik potřebuje, takže se s ní mnohem méně plýtvá. Zadruhé, virtuální paměť ukládá na váš pevný disk jen malé kousky vašich programů, čímž zpomalovací efekt minimalizuje. I kdybyste ale měli otevřených 50 programů, Mac OS X přidělí většinu vaší volné operační paměti tomu programu, který je v popředí, tak aby se program, se kterým právě pracujete, nezpomaloval. Nějaké zpomalení zaregistrujete jen při přepínání programů, nebo pokud pracujete s nějakým obrovským dokumentem, který zabírá veškerou vaši nainstalovanou RAM.

Ale pozor: virtuální paměť indikovaná v Activity Monitoru není totéž, jako velikost samotných swap souborů na pevném disku. Tomu se však podrobněji budeme věnovat později – jen pro zajímavost dodám, že zatímco v tomto okamžiku můj počítač indikuje v Activity Monitoru velikost virtuální paměti 64,48 GB, reálně zabírají swapovací soubory na disku 1 GB prostoru, ze kterého je obsazeno „jen“ 940 MB.

Proto také v Leopardu o upozorněních typu „out of memory“ (nedostatek paměti) nikdy neuslyšíte. Na co však upozorněni být můžete, je to, že vám na vašem pevném disku dochází místo, což samozřejmě může negativně ovlivňovat i fungování vaší virtuální paměti. V takovém případě buď uvolněte nějaké místo – nebo nainstalujte větší množství RAM.

30 komentářů: „Poznáváme Mac OS X: jak je to s pamětí a virtuální pamětí

  • avatar
    16. 12. 2009 (01:25)
    Trvalý odkaz

    Já bych to nezevšeobecňoval na OS X. Tohle se týká určitě Leoparda a SnowLeoparda. Co si ale hraju s Tigerem tak ten je schopnej ze 640MB RAM použít pro OS a programy třeba 150 MB, zbytek nechat volnej a swapovat při blbym psaní v textpadu :(

  • avatar
    16. 12. 2009 (02:25)
    Trvalý odkaz

    Já bych to nezevšeobecňoval na OS X. Tohle se týká určitě Leoparda a SnowLeoparda. Co si ale hraju s Tigerem tak ten je schopnej ze 640MB RAM použít pro OS a programy třeba 150 MB, zbytek nechat volnej a swapovat při blbym psaní v textpadu :(

  • avatar
    16. 12. 2009 (10:01)
    Trvalý odkaz

    „Proto také v Leopardu o upozorněních typu „out of memory“ (nedostatek paměti) nikdy neuslyšíte.“
    Tak toto bych netvrdil – zrovna vcera pri exportu velkeho PDF z InDesignu mi tahle hlaska vyskocila (pri spustenych hodne aplikacich – zcela jiste se to muselo tykat RAM, protoze mam asi 400 GB volnyho mista na disku a balil jsem to na plochu).

    • avatar
      16. 12. 2009 (10:44)
      Trvalý odkaz

      Radek: v tomto konkrétním případu je to záležitost InDesignu (a Adobe obecně), protože se stále jedná o Carbon aplikaci, které nedokáže využít všechny možnosti systému tak, jak by to dokázala nativní Cocoa verze.

  • avatar
    16. 12. 2009 (11:01)
    Trvalý odkaz

    „Proto také v Leopardu o upozorněních typu „out of memory“ (nedostatek paměti) nikdy neuslyšíte.“
    Tak toto bych netvrdil – zrovna vcera pri exportu velkeho PDF z InDesignu mi tahle hlaska vyskocila (pri spustenych hodne aplikacich – zcela jiste se to muselo tykat RAM, protoze mam asi 400 GB volnyho mista na disku a balil jsem to na plochu).

    • avatar
      16. 12. 2009 (11:44)
      Trvalý odkaz

      Radek: v tomto konkrétním případu je to záležitost InDesignu (a Adobe obecně), protože se stále jedná o Carbon aplikaci, které nedokáže využít všechny možnosti systému tak, jak by to dokázala nativní Cocoa verze.

    • avatar
      16. 12. 2009 (10:43)
      Trvalý odkaz

      Nadutec: ten článek je celý nějaký divný. Například zatímco v názvu autor píše o Mac OS X, v textu pak hovoří pouze o Mac OS, což je starý Classic a ne X, významem však jako by hovořil o Mac OS X. Mac OS a Mac OS X jsou technologicke diametralne odlišné věci. Autor také nehovoří o verzi testovaného systému – právě v popisovaném se liší 10.5 od 10.6. Nechci zpochybňovat autorovy závěry, ale jeho zaměňování terminologie a chybějící základní parametry nepůsobí jako důvěryhodný zdroj informací….
      Navíc při jeho čtení nemám pocit, že by se dělo něco výrazně špatného – způsob přidělování paměti se mi zdá logický: nejdříve se snaží vyčerpat volnou pamět, teprve poté začne vyprazdňovat nepoužívané a podobně. Opravdu nevidím důvod, proč by to měl provádět „preventivně“ nebo jinak. Jaké by z toho plynuly výhody?

    • avatar
      16. 12. 2009 (11:43)
      Trvalý odkaz

      Nadutec: ten článek je celý nějaký divný. Například zatímco v názvu autor píše o Mac OS X, v textu pak hovoří pouze o Mac OS, což je starý Classic a ne X, významem však jako by hovořil o Mac OS X. Mac OS a Mac OS X jsou technologicke diametralne odlišné věci. Autor také nehovoří o verzi testovaného systému – právě v popisovaném se liší 10.5 od 10.6. Nechci zpochybňovat autorovy závěry, ale jeho zaměňování terminologie a chybějící základní parametry nepůsobí jako důvěryhodný zdroj informací….
      Navíc při jeho čtení nemám pocit, že by se dělo něco výrazně špatného – způsob přidělování paměti se mi zdá logický: nejdříve se snaží vyčerpat volnou pamět, teprve poté začne vyprazdňovat nepoužívané a podobně. Opravdu nevidím důvod, proč by to měl provádět „preventivně“ nebo jinak. Jaké by z toho plynuly výhody?

  • avatar
    16. 12. 2009 (13:33)
    Trvalý odkaz

    Me clanek divny neprijde. Obsahuje spoustu konkretnich informaci a zpusob jak k nim autor prisel.
    Staci si proklikat odkazy a zjistite, ze prednaska od vmware je z roku 2007 a dokument od apple je z roku 2006. Priklady rozebirat nebudu to si muze kazdej zkusit sam…
    Rozhodne stoji za precteni ostatne tak jako zbytek clanku od stejneho autora.

  • avatar
    16. 12. 2009 (14:33)
    Trvalý odkaz

    Me clanek divny neprijde. Obsahuje spoustu konkretnich informaci a zpusob jak k nim autor prisel.
    Staci si proklikat odkazy a zjistite, ze prednaska od vmware je z roku 2007 a dokument od apple je z roku 2006. Priklady rozebirat nebudu to si muze kazdej zkusit sam…
    Rozhodne stoji za precteni ostatne tak jako zbytek clanku od stejneho autora.

  • avatar
    16. 12. 2009 (13:46)
    Trvalý odkaz

    Jeste si neodpustim … pustte si to video od vmware, preskocte si ten marketing a poslouchejte…

    • avatar
      16. 12. 2009 (16:01)
      Trvalý odkaz

      Nadutec: to je právě to, je to přednáška z roku 2007. A jistě pro vás nebude problém dohledat, o kolik se – změnilo jádro a vše okolo od těch dob. Snow Leopard má jádro přepsáno v podstatě celé a co platilo v Leopardu už ve SL není pravda. Proto si myslím, že sledovat videa tři roky staré je zbytečné (a to i přesto, že jsem jej viděl).
      To je, jako bychom se dívali na guide o Windows ME a dělali z toho závěry o správě paměti ve Win 7…
      A proč tedy autor článku nezná základní pojmy a bez uzardění je zaměňuje? Ukazuje to jen jna jediné: je zřejmě velmi erudovaný v oblasti Linuxu, v Mac OS X se však již takhle jistě neorientuje. A jeho pohled linuxovou optikou může vést k ne zcela relevantním závěrům..

  • avatar
    16. 12. 2009 (14:46)
    Trvalý odkaz

    Jeste si neodpustim … pustte si to video od vmware, preskocte si ten marketing a poslouchejte…

    • avatar
      16. 12. 2009 (17:01)
      Trvalý odkaz

      Nadutec: to je právě to, je to přednáška z roku 2007. A jistě pro vás nebude problém dohledat, o kolik se – změnilo jádro a vše okolo od těch dob. Snow Leopard má jádro přepsáno v podstatě celé a co platilo v Leopardu už ve SL není pravda. Proto si myslím, že sledovat videa tři roky staré je zbytečné (a to i přesto, že jsem jej viděl).
      To je, jako bychom se dívali na guide o Windows ME a dělali z toho závěry o správě paměti ve Win 7…
      A proč tedy autor článku nezná základní pojmy a bez uzardění je zaměňuje? Ukazuje to jen jna jediné: je zřejmě velmi erudovaný v oblasti Linuxu, v Mac OS X se však již takhle jistě neorientuje. A jeho pohled linuxovou optikou může vést k ne zcela relevantním závěrům..

  • avatar
    16. 12. 2009 (20:32)
    Trvalý odkaz

    Prosil bych nějaký odkaz na podporu tvrzení o přepsání celého jádra ve Snow Leopardu, docela mně to zajímá.

  • avatar
    16. 12. 2009 (21:32)
    Trvalý odkaz

    Prosil bych nějaký odkaz na podporu tvrzení o přepsání celého jádra ve Snow Leopardu, docela mně to zajímá.

  • avatar
    16. 12. 2009 (20:56)
    Trvalý odkaz

    Dle mého názoru (který je podložen denním používáním SL, znalostí javy a jejího GC a částečnou znalostí fungování Cocoa) má SL sice dobrou správu paměti, ale špatny garbage collector zabudovaný v Cocoe. Až po okraj naplněná paměť mně sice štve, ale uznávám, že to funguje. Cocoové GC mi naopak přijde, že nefunguje. Proč například Safari po několik dnech používání nakyne do obrovských rozměrů. Stejně jako se ptám, proč zabírají iTunes 9 200MB paměti a načítají obaly v CoverFlow pomalu, když iTunes 8 zabírali sotva polovinu paměti a obaly měli načtené prakticky hned?
    Co mně taky zaráží, je rozdíl mezi programy napsanými pomocí GC a programy, které využívají autorelease pool. Ty s autorelease pollem paměť pořádaně vrací, ty s GC ji vrátí až při vypnutí. nebo je moje pozorování špatné a já se mýlím?

  • avatar
    16. 12. 2009 (21:56)
    Trvalý odkaz

    Dle mého názoru (který je podložen denním používáním SL, znalostí javy a jejího GC a částečnou znalostí fungování Cocoa) má SL sice dobrou správu paměti, ale špatny garbage collector zabudovaný v Cocoe. Až po okraj naplněná paměť mně sice štve, ale uznávám, že to funguje. Cocoové GC mi naopak přijde, že nefunguje. Proč například Safari po několik dnech používání nakyne do obrovských rozměrů. Stejně jako se ptám, proč zabírají iTunes 9 200MB paměti a načítají obaly v CoverFlow pomalu, když iTunes 8 zabírali sotva polovinu paměti a obaly měli načtené prakticky hned?
    Co mně taky zaráží, je rozdíl mezi programy napsanými pomocí GC a programy, které využívají autorelease pool. Ty s autorelease pollem paměť pořádaně vrací, ty s GC ji vrátí až při vypnutí. nebo je moje pozorování špatné a já se mýlím?

  • avatar
    16. 12. 2009 (21:45)
    Trvalý odkaz

    MartensPh:
    Myslim, ze apple prepsal vsechny systemove app, odstranil podporu ppc a prilepil GCD. Darvin prepsan nebyl…

  • avatar
    16. 12. 2009 (22:45)
    Trvalý odkaz

    MartensPh:
    Myslim, ze apple prepsal vsechny systemove app, odstranil podporu ppc a prilepil GCD. Darvin prepsan nebyl…

  • avatar
    16. 12. 2009 (23:09)
    Trvalý odkaz

    Nadutec : Četl jsem i ten Mihův blog, celkem pořádně, programování OS mne zajímá a mám podobný názor jako ty (vy, jak libo). Celou dobu se v článku se evidentně píše o OS X a Leopardovi. V SL mám podobnou zkušenost jako v Leopardovi co se týče paměti. Takže si také myslím, že jádro se moc neměnilo, možná doladilo. Ale pokud existuje nějaký zdroj o změnách v jádře, sem s ním.

  • avatar
    17. 12. 2009 (00:09)
    Trvalý odkaz

    Nadutec : Četl jsem i ten Mihův blog, celkem pořádně, programování OS mne zajímá a mám podobný názor jako ty (vy, jak libo). Celou dobu se v článku se evidentně píše o OS X a Leopardovi. V SL mám podobnou zkušenost jako v Leopardovi co se týče paměti. Takže si také myslím, že jádro se moc neměnilo, možná doladilo. Ale pokud existuje nějaký zdroj o změnách v jádře, sem s ním.

  • avatar
    17. 12. 2009 (07:11)
    Trvalý odkaz

    Měl bych dotaz – pokud si otevřu ve Photoshopu víc fotek, řekněme 20, s úhrnnou velikostí cirka 500 MB, Mac se zpomalí dost podstatně. Je pak jedno, jestli na nich dokončím job a shodím je, nepomůže nic než restart. Velikost RAM je přitom 2 GB; iMac 2,8 GB Core Duo. Díky za odp.

  • avatar
    17. 12. 2009 (08:11)
    Trvalý odkaz

    Měl bych dotaz – pokud si otevřu ve Photoshopu víc fotek, řekněme 20, s úhrnnou velikostí cirka 500 MB, Mac se zpomalí dost podstatně. Je pak jedno, jestli na nich dokončím job a shodím je, nepomůže nic než restart. Velikost RAM je přitom 2 GB; iMac 2,8 GB Core Duo. Díky za odp.

  • avatar
    18. 12. 2009 (23:33)
    Trvalý odkaz

    Radek: To se určitě stát může, aplikace si může alokovat místo v RAM a označit ho jako „neodswapovatelné“. Když to tak udělá víc aplikací nebo je požadavek na souvislý blok paměti větší než největší dostupný, tak systému nezbývá, než zahlásit nedostatek fyzické RAM.
    Nadutec: Dobře, žes sem hodil ten link. Lepší informace o správě paměti v MacOS (X) jsem nikde nečetl a pro znalé jsou určitě přínosnější.
    Vláďa: O autorovi nepochybuj, vyzná se. Četl jsem to už dávno, ale špatné mi tam přišly minimálně dvě věci: 1) Jádro MacOS X kešuje všechny čtení a zápisy, které jdou z/na disk. (Typicky při malých změnách v mnoha velkých souborech je MacOS schopný odswapovat snad i kurzor myši ;) 2) Při nedostatku paměti odstraňuje/odswapovává algoritmem FIFO (tzn. že z fyzické RAM vyhodí vždy blok, který je tam nejdéle). Běžně se používá rozumnější LRU (tzn. že vyhodí blok, který byl nejdéle nepoužit) nebo jeho modifikace. Ale zajímalo by mě, jaký důvod k tomu v Apple mají – kdyby ho totiž neměli, tak přece není jednodušší cesty, než správu paměti přepsat…

  • avatar
    19. 12. 2009 (00:33)
    Trvalý odkaz

    Radek: To se určitě stát může, aplikace si může alokovat místo v RAM a označit ho jako „neodswapovatelné“. Když to tak udělá víc aplikací nebo je požadavek na souvislý blok paměti větší než největší dostupný, tak systému nezbývá, než zahlásit nedostatek fyzické RAM.
    Nadutec: Dobře, žes sem hodil ten link. Lepší informace o správě paměti v MacOS (X) jsem nikde nečetl a pro znalé jsou určitě přínosnější.
    Vláďa: O autorovi nepochybuj, vyzná se. Četl jsem to už dávno, ale špatné mi tam přišly minimálně dvě věci: 1) Jádro MacOS X kešuje všechny čtení a zápisy, které jdou z/na disk. (Typicky při malých změnách v mnoha velkých souborech je MacOS schopný odswapovat snad i kurzor myši ;) 2) Při nedostatku paměti odstraňuje/odswapovává algoritmem FIFO (tzn. že z fyzické RAM vyhodí vždy blok, který je tam nejdéle). Běžně se používá rozumnější LRU (tzn. že vyhodí blok, který byl nejdéle nepoužit) nebo jeho modifikace. Ale zajímalo by mě, jaký důvod k tomu v Apple mají – kdyby ho totiž neměli, tak přece není jednodušší cesty, než správu paměti přepsat…

  • avatar
    22. 12. 2009 (05:05)
    Trvalý odkaz

    na muj vkus prilis malo informaci.
    Chybi mi popis zobrazovanych informaci v Activity Monitoru.
    Konkretne rozpis vyuzite pameti na Free, Wired, Active, Used.
    Jejich podrobny popis a systemovou politiku v prirazovani pameti do jednotlivych skupin.

  • avatar
    22. 12. 2009 (06:05)
    Trvalý odkaz

    na muj vkus prilis malo informaci.
    Chybi mi popis zobrazovanych informaci v Activity Monitoru.
    Konkretne rozpis vyuzite pameti na Free, Wired, Active, Used.
    Jejich podrobny popis a systemovou politiku v prirazovani pameti do jednotlivych skupin.

Komentáře nejsou povoleny.