xion.log » Partycja na plik wymiany

Partycja na plik wymiany

2010-10-28 18:25

Instalując ostatnio Linuksa zauważyłem, iż standardową praktyką tego systemu jest wydzielanie zupełnie osobnej partycji na plik stronnicowania (pagefile), zwany też potocznie plikiem wymiany. Mówiąc zresztą ściślej, Linux nie tworzy tam żadnych plików i zamiast tego korzysta z partycji bezpośrednio jako źródła miejsca dla pamięci wirtualnej.

Skąd taki pomysł, skoro Windows domyślnie radzi sobie całkiem dobrze, trzymając swoje dane stronnicowania w zwykłym pliku?… No cóż, to jest jedna z tych rzeczy, które Linux akurat robi lepiej. Umieszczenie pliku wymiany na innej partycji niż systemowa ma bowiem uzasadnienie wydajnościowe. W najlepszym wypadku ona sama powinna zresztą znajdować się na zupełnie osobnym dysku, dzięki czemu możliwe byłoby równolegle korzystanie z pliku wymiany i “normalnych” danych. Oczywiście nie zawsze jest to możliwe, zwłaszcza w komputerach przenośnych, siłą rzeczy dysponujących tylko jednym fizycznym dyskiem.

Co dokładnie daje umieszczenie pliku wymiany na jego własnej partycji? Myślę, że nietrudno się tego domyślić: chodzi o brak fragmentacji. Ponieważ brak jest kontaktu z jednostkami alokacji innych rodzajów danych, możliwe jest zachowanie integralności pliku wymiany, który w dodatku położony będzie zawsze blisko początku swojej partycji. To zaś przyspiesza do niego dostęp.
Znaczenie ma również położenie samej partycji na dysku. W idealnym przypadku powinna być ona na samym początku dysku, ale niestety jest to właściwie nie do osiągnięcia, jako że tam zwykle znajduje się już system operacyjny. Jeżeli nie chcemy go reinstalować, to dobrym rozwiązaniem jest umieszczenie partycji swap pośrodku dysku, między częścią systemową a partycją z danymi. Minimalizujemy wtedy drogę głowicy do pliku wymiany, jeśli już znajduje się ona nad którąś ze wspomnianych dwóch części. Wadą tego rozwiązania jest kłopotliwe powiększanie którejś z nich, jeśli kiedyś okaże się, że potrzebujemy więcej miejsca na system kosztem danych lub odwrotnie. Nie ma bowiem wtedy innej opcji jak usunięcie partycji wymiany i stworzenie jej na nowo.

Tags: , ,
Author: Xion, posted under Computer Science & IT »


16 comments for post “Partycja na plik wymiany”.
  1. Tomasz Dąbrowski:
    October 28th, 2010 o 19:52

    Ile razy w ciągu ostatnich 3 lat zdarzyło ci się wykorzystać cały fizyczny RAM? :)

  2. Xion:
    October 28th, 2010 o 20:52

    Po tym jak przy wyłączonym pliku wymiany na 4GB RAMu wywalił mi się SC2 z powodu braku pamięci, z większą uwagą podchodzę do pamięci wirtualnej :)

  3. Tomasz Dąbrowski:
    October 28th, 2010 o 23:04

    Toć SC2 jest 32-bitowy. Jakim cudem? :)

  4. Xion:
    October 29th, 2010 o 0:11

    Najwyraźniej system uznał, że poniżej 1GB dla siebie zejść nie może i już nie starczyło :)

  5. Gordon Shumway:
    October 29th, 2010 o 8:22

    Dawno temu natrafiłem na artykuł (niestety teraz nie jestem już w stanie stwierdzić gdzie) opisujący sposób uniknięcia defragmentacji pliku wymiany. Należy mianowicie ustawić jego rozmiar ręcznie, podając identyczne wartości min i max. W tym momencie system przydzieli stały fragment pamięci, który nie będzie ulegał zmianie. Problem może powstać, jeśli nie mamy już ciągłego fragmentu wolnej przestrzeni o zadanej wielkości, ale wtedy powinien wystarczyć zwykły defragmentator (żeby uporządkować dysk) i PageDefrag, żeby uporządkować (zbić w 1 całość) plik wymiany. Wtedy uzyskujemy efekt podobny do opisanego w artykule, bez problemu wynikającego z ewentualnego późniejszego powiększania partycji systemowej…

  6. Tomasz Dąbrowski:
    October 29th, 2010 o 11:25

    Xion: a system 32 czy 64 bit?

    W każdym razie ja nigdy się nie spotkałem z sytuacją kiedy kończy się pamięć fizyczna (nie licząc jakiegoś while(new foo); ;) ). Większość gier zajmuje góra koło 700-800 MB — nie żebym uważał że to dobrze, bo przez to ciągle taka gra doczytuje sobie w kółko te same dane (nawet jeżeli np. ciągle grasz na tej samej mapie).

    Poza tym myślę że jest jakaś wartość graniczna (dla gier to będzie pewnie właśnie te 1.5 GB) do której pamięć zajmuje “normalna” aplikacja. Jeżeli jakaś aplikacja potrafi zająć więcej to najprawdopodobniej potrafi się dostosować do warunków maszyny, zajmując ile to jest możliwe.

  7. Liosan:
    October 29th, 2010 o 12:27

    Ja się spotkałem z taką sytuacją – mając uruchomionego jednocześnie VirtualBoksa (1.5GB) i SC II (?? pewnie coś koło 1 GB) na kompie mającym 1 GB, w pewnym momenci oba stwierdziły, że nie ma pamięci, i działać nie będą :) Co ciekawe, oba wyświetliły bardzo przyjazne komunikaty o błędach.

  8. Xion:
    October 29th, 2010 o 15:02

    @Dabroz: 64-bit.

    @Liosan: No właśnie chyba w tym sęk, że to same programy wyświetliły te komunikaty, a nie Windows. Chodzi mi o to, że najprawdopodobniej na własną rękę sprawdzały one ilość dostępnej pamięci *fizycznej* i pokręciły nosem na jej brak. Gdyby nie to, pewnie system by sobie poradził.

  9. lukaszw:
    October 30th, 2010 o 22:10

    No ok, ale 10GB? O_o

  10. Xion:
    October 30th, 2010 o 23:33

    150% RAM-u. To tak żebym nie musiał zwiększać, gdy zainstaluje Windows 9 :)

  11. Gynvael Coldwind:
    November 2nd, 2010 o 17:19

    Toć SC2 jest 32-bitowy. Jakim cudem? :)
    Nieeee no, 32-bitowe aplikacje też mogą* na Windowsie zjeść więcej niż 4gb ramu, używając AWE (http://msdn.microsoft.com/en-us/library/aa366527%28VS.85%29.aspx) które działa bardzo podobnie do XMS/EMS za starych dobrych DOSowych czasów ;)

    * Windowsy serverowe w edycjach data-center i podobnych only ;p

  12. Yuras:
    November 2nd, 2010 o 20:08

    Też stosuję ten myk od jakiegoś czasu:) od siebie mogę dodać, że oprócz tego, że plik swapu umieszczamy na osobnej partycji, to warto jeszcze ustalić mu stały i niezmienny rozmiar. Unikniemy zbędnej fragmentacji:)

  13. Xion:
    November 3rd, 2010 o 0:25

    @Gyynvael: LOL! Dobrze, że przy okazji nie kazali używać near i far pointers :)

  14. Gynvael Coldwind:
    November 3rd, 2010 o 14:52

    @Xion
    ;DDD

  15. Sebas86:
    November 7th, 2010 o 18:41

    Ustawianie swap-u na 150-200% rozmiaru pamięci fizycznej jest już od dawna nie zalecane, głównie ze względu na powolność dysków mechanicznych, które skutecznie zamrożą system jeśli dojdzie do “szamotania”. Zazwyczaj się stosuje 50-100% lub brak przy ilości pamięci powyżej 2GiB (żeby system nie ubił nam jakiejś nieszczęsnej aplikacji działającej w tle jeśli mamy odpalonych ich zbyt dużo). Jeśli aplikacja potrzebuje więcej pamięci fizycznej to zapewne inteligentnie buforuje to co trzeba (jest przecież jeszcze mechanizm mapowania pamięci ;)), a jak nie to niestety swap nas nie uratuje w żaden sposób. :)

    > Ile razy w ciągu ostatnich 3 lat zdarzyło ci się wykorzystać cały fizyczny RAM? :)
    W zeszłym tygodniu co najmniej 3 razy, efekt nie był zbyt przyjemny i w sumie pamięć wirtualna nic tu nie pomogła. ;)

  16. Nikowski:
    November 27th, 2010 o 22:21

    Ja przyjmuje zasadę, że przydzielam SWAP 110% RAMu, jeśli będę używał hibernacji, lub robię plikowy o rozmiarze około 512MB. SWAP sprawia, że OOo działa nieco szybciej, ale to może tylko złudzenie. SWAP też przydaje się gdy ktoś obrabia grafikę. W erze 4GB RAM SWAP nie jest już potrzeby, poza zadaniami “specjalistycznymi”, jak wcześniej wspomniana hibernacja.

    Na windowsie też można wyznaczyć partycje, którą będziemy używali tylko na potrzeby pamięci wymiany, tylko pytanie po co, skoro użytkownicy okien nie są tak bardzo napaleni na słówko “wydajność” :)

Comments are disabled.
 


© 2018 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.