Zamień partycję vs plik dla wydajności?

62

Co jest lepsze dla wydajności? Partycja bliższa wewnętrznej części dysku będzie miała wolniejszy czas dostępu i musimy poczekać, aż dysk przełączy się między systemem operacyjnym a partycjami wymiany.

Z drugiej strony partycja wymiany omija cały system plików, umożliwiając bezpośrednie zapisywanie na dysku, co może być szybsze niż plik.

Jaka jest kompromis między wynikami?

Ile ma zmiana pliku wymiany o stałym rozmiarze?

Czy to możliwe, że zmiana na partycję wymiany będzie dłuższa, ale wydajność będzie lepsza, gdy będzie na partycji wymiany, niż gdyby był to plik wymiany?

Bill Gray
źródło
Z czystej ciekawości. Czy możesz podać szczegóły systemu, takie jak wersja jądra, pamięć RAM, partycja i schemat systemu plików?
Viky,
Na jakiego systemu operacyjnego szukasz?
Mathieu Chateau
4
Aby uzyskać informacje o systemie Linux, zobacz lkml.org/lkml/2005/7/7/326
Adam Monsen
Wszelkie aktualizacje odpowiedzi na pytania?
kokbira

Odpowiedzi:

29
  1. Na dyskach twardych przepustowość i wyszukiwanie jest często szybsze w kierunku początku dysku, ponieważ dane są przechowywane bliżej zewnętrznego obszaru dysku, który ma więcej sektorów na cylinder. Dlatego utworzenie wymiany na początku dysku może poprawić wydajność.

  2. W przypadku jądra Linux 2.6 nie ma różnicy w wydajności między partycją wymiany a niefragmentowanym plikiem wymiany. Kiedy swapon włącza partycję / plik wymiany, jądro 2.6 znajduje, na którym dysku blokuje plik wymiany, w którym jest przechowywany , więc kiedy przychodzi czas zamiany, nie musi on wcale zajmować się systemem plików.

Zatem jeśli plik wymiany nie jest pofragmentowany, to dokładnie tak, jakby w tej samej lokalizacji istniała partycja wymiany. Innymi słowy, uzyskasz identyczną wydajność, jeśli użyjesz partycji wymiany raw lub sformatujesz ją za pomocą systemu plików, a następnie utworzysz plik wymiany, który wypełniłby całą przestrzeń, ponieważ na obu dyskach znajduje się ciągły region używany do wymiany, których jądro używa bezpośrednio.

Jeśli więc utworzysz plik wymiany, gdy system plików jest świeży (zapewniając w ten sposób, że nie jest pofragmentowany i na początku woluminu), wydajność powinna być identyczna z posiadaniem partycji wymiany tuż przed woluminem. Ponadto, jeśli utworzysz plik wymiany powiedzmy na środku woluminu, z plikami po obu stronach, możesz uzyskać lepszą wydajność, ponieważ mniej jest zamiany zamiany.

W systemie Linux, jeśli plik wymiany jest tworzony niefragmentowany i nigdy nie jest rozszerzany, nie może zostać pofragmentowany, przynajmniej w przypadku normalnych systemów plików, takich jak ext3 / 4. Zawsze będzie używać tych samych bloków dysku, które są ciągłe.

Wnioskuję, że jedyną korzyścią z dedykowanej partycji wymiany jest gwarancja niefragmentacji, gdy trzeba ją rozszerzyć; jeśli twoja zamiana nigdy nie zostanie rozwinięta, plik utworzony w świeżym systemie plików nie wymaga dodatkowej partycji.

Shay
źródło
5
Jedyną rzeczą do dodania tutaj jest to, że jeśli komputer jest skonfigurowany do „zawieszenia na dysk”, tak naprawdę dzieje się tak, że rzeczy w pamięci są zapisywane do zamiany. Aby to zadziałało, zamiana musi odbywać się na własnej partycji, ponieważ nie może to nastąpić w aktywnym systemie plików. Dlatego jeśli masz serwer, prawdopodobnie nie korzystasz z tej funkcji i chętnie możesz użyć pliku wymiany. Jeśli masz laptopa, prawdopodobnie potrzebujesz partycji wymiany, aby móc „zawiesić plik” w celu hibernacji.
Nathan S. Watson-Haigh
@ NathanS.Watson-Haigh Co dzieje się z danymi, które są już w wymianie? Nie można go wyrzucić.
XTF
3
@ NathanS.Watson-Haigh Czy możesz połączyć źródło? Ubuntu 17.04 domyślnie używa pliku wymiany. Byłoby zaskakujące, gdyby nie mógł „zawiesić się na dysku”.
Matthias Weiler
22

W rzeczywistości nie robi to dużej różnicy, dopóki nie używasz rzadkich plików .

Utworzenie „normalnego” pliku za pomocą dd przydzieli ten plik (jeśli w ogóle jest to możliwe) w jednym uruchomieniu, podczas gdy utworzenie pliku rzadkiego powie ci, że masz plik 10 GB, ale nie zajmuje on tyle miejsca. Nie jestem do końca pewien, czy mkswap i tak nie przydzieli miejsca, ale zazwyczaj plik wymiany rośnie z czasem, a zatem nie przydziela ciągłego sektora (jak część dysku), ale raczej przydziela bloki w razie potrzeby, co prowadzi do fragmentacja w czasie (oczywiście w zależności od użycia dysku)

Wewnętrznie jądro Linuksa uzyska dostęp do bazowych bloków pliku wymiany mniej więcej bezpośrednio - nie mogę teraz znaleźć linku, co dzieje się pod maską, musisz mi zaufać, chyba że ktoś znajdzie coś bardziej oficjalnego. Wszystko, co mogę teraz wymyślić, to:

wszystko to dotyczy tylko linii jądra Linux 2.6.

Jeśli chcesz uzyskać optymalną wydajność (a co to jest naprawdę? ... zamiana jest powolna, kropka. Zwiększ pamięć RAM, aby nie zamieniać się w celu uzyskania najlepszej wydajności), powinieneś użyć partycji.

Serverhorror
źródło
18
Nowoczesne wersje swapon wprost odmawiają pracy z rzadkimi plikami sformatowanymi jako swap, powołując się na to, że plik ma dziury.
Tim Post
3

To interesujące pytanie i dużo o tym czytałem. Ogólnie partycja wymiany jest lepsza niż plik ze względu na podstawowy system plików. Ale jeśli zawsze potrzebujesz zwiększyć rozmiar wymiany, plik jest lepszą opcją. Do czasu jądra 2.4 uważano, że partycja wymiany jest szybsza niż plik, ale teraz dzięki ulepszeniom jądra 2.6 wydajność jest prawie taka sama.

Coś znalazłem również w Internecie.

http://www.go2linux.org/swap-file-vs-swap-partition

i

http://www.sunmanagers.org/pipermail/summaries/2005-November/006913.html

Viky
źródło
Żadne z tych linków nie wyjaśnia jednak powodów ich decyzji.
Bill Gray
Powodem jest to, że plik będzie miał przeciążenie systemu plików. Jeśli utworzysz plik, może on zostać uszkodzony. i w zależności od pliku, który jest buforowany podczas wymiany, odczyty mogą być powolne w porównaniu z całą partycją, która sama jest systemem plików wymiany.
Viky,
Próbowałem dalej kopać i znalazłem względny artykuł na wiki. Aby ci pomóc, istnieje kilka parametrów strojenia wymiany, które możesz sprawdzić. Sprawdź także wyjaśnienie w trakcie wdrażania dla systemu Linux. Może pomóc. en.wikipedia.org/wiki/Paging
Viky
Śledziłem jeden z cytatów na wyżej wspomnianym linku wiki i znalazłem interesujący wątek na ten sam temat. Może chcesz to sprawdzić. lkml.org/lkml/2005/6/28/427
Viky
Wspomniałem o przeciążeniu systemu plików w moim pytaniu, ale nie jest to tak blok wydajności jak posiadanie partycji w pobliżu dysku wewnętrznego. To opóźnienie byłoby większe niż narzut systemu plików.
Bill Gray
2

Myślę, że na obecnym etapie, chyba że używasz laptopa z konfiguracją, która zapisuje dane do wymiany, gdy zawiesza się / śpi, zamiana powinna naprawdę być uważana za „ostateczność”. Najlepszym rozwiązaniem jest umieszczenie wystarczającej ilości pamięci RAM w pudełku, aby nigdy nie przechodziła na dysk.

Biorąc to pod uwagę, partycja jest prawdopodobnie lepszym sposobem pod względem wydajności, chociaż plik jest bardziej elastyczny. Tylko upewnij się, że jest na wrzecionie 7200+ RPM.

Matt Simmons
źródło
1
Dlaczego partycja byłaby lepsza pod względem wydajności, skoro czasy dostępu mogą być bardziej czynnikiem opóźniającym?
Bill Gray
5
Ponieważ użycie pliku może wymagać więcej ruchów głową, ponieważ podczas wyszukiwania strony do odczytu / zapisu dane mogą znajdować się w dowolnym miejscu w systemie plików, więc struktury fs mogą wymagać przeszukiwania, podczas gdy przy partycji wymiany każda strona będzie w znanym miejscu w przegroda. To sprawia, że ​​czas dostępu (w odniesieniu do przepływności masowej) jest czynnikiem różnicującym.
David Spillett
2
„Nie konfiguruj wymiany, chyba że musisz hibernować” jest kontrowersyjnym poglądem. Czasami, gdy w systemie brakuje realnej wymiany pamięci, system może się zregenerować. Brak wymiany może uniemożliwić uruchamianie programów, które dokonują dużych alokacji pamięci, ale w rzeczywistości nie dotykają większości (np. Niektórych narzędzi do debugowania). Czasami zajęty, ale bezczynny obszar pamięci jest lepiej wykorzystywany jako pamięć podręczna dysku, a to może zrobić to tylko wtedy, gdy dostępna jest zamiana. Zobacz unix.stackexchange.com/questions/2658/... do dyskusji.
Anon
1
Co powiedział @Anon. Chrome jest notorycznym hogiem pamięci i nawet przy <100 kartach mój laptop 16 GB przestaje reagować na kilka minut, gdy wykorzystanie pamięci wynosi około 90% i nie ma pliku wymiany. Zaskakujące jest to, że Ubuntu nie ma wbudowanego mechanizmu ostrzegającego użytkownika, że ​​systemowi brakuje pamięci .
Dan Dascalescu
2

W naszej pracy myślimy, że ponieważ plik wymiany może zostać podzielony na fragmenty, a fragmentacja spowalnia dostęp do wymiany, partycja jest lepszym rozwiązaniem. Oczywiście zdefiniowanie pliku wymiany o statycznym rozmiarze robi to samo, ale wydaje się to subiektywniejsze.

Czy to podejście jest jedyną prawdziwą drogą? Prawdopodobnie nie, ponieważ praktyka została ustanowiona blisko 10 lat temu. Jedyną poważną zmianą w technologii napędów w kolejnych latach jest złożoność kontrolerów RAID, których używamy (nie jesteśmy jeszcze wystarczająco bogaci dla dysków SSD). Zwiększenie rozmiarów dysków oznacza, że ​​tworzona przez nas partycja wymiany jest bliżej początku napędu niż w czasach, gdy dyski 18 GB były w sprzedaży w standardzie, więc prędkości wymiany są nawet szybsze niż w dawnych czasach.

Oczywiście w naszych systemach Windows opartych na ESX pozycja pliku wymiany jest całkowicie, całkowicie dyskusyjna. Jest tak wiele warstw wirtualizacji między plikiem wymiany a talerzami dysków fizycznych, że to po prostu nie ma znaczenia. Ale trzymamy go na osobnej partycji, ponieważ to tylko standard.

sysadmin1138
źródło
4
Plik wymiany nie ulega fragmentacji, ponieważ jądro używa bezpośredniego podejścia mmap i nigdy nie powiększy ani nie zmniejszy pliku. +1 za komentarz dotyczący wirtualizacji: często nie ma to znaczenia.
parasietje
0

Użycie pliku wymiany może wymagać nieco dodatkowej pamięci do tłumaczenia pliku na pamięć. Mówimy o mniej niż 1 MB pamięci na 1GB zamiany. Pamięć podręczna systemu plików NIE buforuje zamienionych danych, tylko dane organizacyjne, które powinny być większością dodatkowych wymagań pamięci.

Poza tym wątpię, abyś stracił jakąkolwiek rozsądną wydajność, z wyjątkiem może raz na 1000 razy jednego dodatkowego poszukiwania głowy.

Zabawny fakt, że użycie zswap w połączeniu z dynamicznie rozwijającym się plikiem wymiany powoduje imponujące przyspieszenie operacji wymiany przy bardzo niewielkich kosztach, gdy nie jest używane.

Crass Spektakel
źródło
1
Czy możesz podać jakieś uzasadnienie swoich roszczeń? To wydaje się raczej anegdotyczne.
austriacki