Podgląd pojedynczego posta
Stary 01.12.2003, 22:51   #50
Patrix
Pingwin specjalista.
 
Avatar użytkownika Patrix
 
Data rejestracji: 22.06.2002
Lokalizacja: Central Park
Posty: 15,089
Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>Patrix ma z czego być dumnym <1000 - 1499 pkt>
Cytat:
Napisany przez GraLo
Oj znowu się zaczeło, poczytaj HOWTO a się przekonasz że swap powinien mieć max. 128 jeśli jest nam potrzeba więcej możemy zrobić do 16 takich partycji wymiany. I nie tylko ty troche interesujesz sie linuxem niektorzy tez troche wiedza.
te 128 to razej jest juz mit, tak jak z tym - podwojna wielkosc ramu,
teraz kompy maja duzo wlasnego ramu i prawie ze swapu nie korzystaja, ale jesli ktos ma 32 mb ramu to te 128 na swapie moze czasem byc troszke malo
Masz racje duzo ludzi interesuje sie linuxem, i kazdy ma swoje racje, ktore zreszta nie sa bledne...


Linux swap space mini-HOWTO
http://www.xenotime.net/linux/swap-mini-howto.txt

Wersje: 2002-10-25,
2002-11-01,04,07,08,10,11,12,17
Randy Dunlap <rddunlap-at-osdl-org>
================================================== =========================

Copyright (c) 2002 by Randy Dunlap

Dokument ten może być rozpowszechniany wył&plusmn;cznie na zasadach licencji LDPL
(Linux Documentation Project License) dostępnej pod adresem
http://www.tldp.org/COPYRIGHT.html


1. Wprowadzenie

Linux używa przestrzeni wymiany jako dodatkowego obszaru dla stron pamięci
aplikacji, które nie s&plusmn; aktywnie używane przez aplikację, jednakże były
zmodyfikowane (zapisano do nich). Suma rozmiarów przestrzeni wymiany oraz
fizycznej pamięci RAM tworzy ogóln&plusmn; pojemno&para;ć pamięci wirtualnej systemu.
Gdy większo&para;ć prawdziwej pamięci systemu jest w użyciu i istnieje potrzeba
na większe jej zajęcie, czę&para;ć danych zostanie przeniesiona do przestrzeni
wymiany, aby w pamięci fizycznej zwolnić miejsce dla aplikacji lub użytku
przez j&plusmn;dro, np. dla buforów sterowników, plików lub pakietów sieciowych.
Okre&para;la się to mianem wyswapowywania (wymiany). Gdy
zachodzi potrzeba ponownego użycia danych z przestrzeni wymiany, s&plusmn; one
przenoszone z powrotem do pamięci fizycznej. Prędko&para;ć z jak&plusmn; dane s&plusmn;
wymieniane może być monitorowana przy użyciu komendy 'vmstat' (kolumna
,,si'' dla transferów do pamięci fizycznej, ,,so'' dla transferów z RAMu).

Wszystko to jest uaktywniane przez wysokie zapotrzebowanie na pamięć. Może
to oznaczać uruchamianie wielu/dużych programów, ale nawet operacje
wej&para;cia/wyj&para;cia (w sieci i na plikach) wymagaj&plusmn; alokowania pamięci i mog&plusmn;
powodować aktywne czyszczenie pamięci przez kernel, co może objawiać się
wyrzucaniem danych do przestrzeni wymiany.

Kod i dane j&plusmn;dre nie podlegaj&plusmn; wymianie, tym samym nigdy nie s&plusmn; przenoszone
do przestrzeni wymiany. Kod przestrzeni użytkownika nie musi być
przenoszony do przestrzeni wymiany, gdyż już znajduje się na dysku i gdy
zachodzi potrzeba może zostać ponownie odczytany ze swojego oryginalnego
Ľródła. Dane przestrzeni użytkownika mog&plusmn; zostać zapisane w przestrzeni
wymiany i samt&plusmn;d odczytane w razie potrzeby.

Istnieje alternatywa dla statycznie alokowanej przestrzeni wymiany, jest
ni&plusmn; ,,swapd'' - ,,dynamic swapping manager for Linux''.
( URL::http://ftp.linux.hr/pub/swapd/ ). Jedna osoba twierdzi, że używa
wył&plusmn;cznie swapd na kilku systemach linuksowych, bez użycia statycznej
przestrzeni wymiany. Twierdzi, że pracuje to stabilnie, prawie nie
zużywaj&plusmn;c przy tym zasobów. Dostosowanie swapd odbywa się przez edycję
pliku ,,swapd.conf''. Przykładowa zawarto&para;ć tego pliku:

memlimit 131072
pause 10000
swapsize 65536
timeout 8640


2. Jakiej wielko&para;ci przestrzeni wymiany użyć?

Trudno powiedzieć. Je&para;li Twój system (i programy) zużywa dużo pamięci
(więcej niż wielko&para;ć fizycznej pamięci w Twoim systemie), to potrzebujesz
dużej przestrzeni wymiany.

Oczywi&para;cie możesz zdecydować, że twój system nie powinien obsługiwać
(używać) przestrzeni wymiany, albo ze względu na wydajno&para;ć, albo na to, że
nie posiadasz żadnego [szybkiego] no&para;nika dostępnego dla tejże przestrzeni,
albo ze względu na to, że Twój system posiada tak dużo RAMu, że nigdy nie
zostanie on zapełniony, więc nie będzie potrzebował wymieniać danych.

Typowo, całkowity rozmiar przestrzeni wymiany równy jest wielko&para;ci pamięci
RAM Twojego systemu. Wczesne wersje Linuksa 2.4 (aż do 2.4.9) lubiły gdy
przestrzeń wymiany miała rozmiar 2x większy od rozmiaru pamięci fizycznej,
ale to już nie ma znaczenia.

Jedn&plusmn; wad&plusmn; stosowania zbyt dużej przestrzeni wymiany jest to, że błędne
programy mog&plusmn; pracować przez dłuższy czas i zużyć RAM i przestrzeń wymiany.
Prawdopodobnie powoduje to spowolnienie systemu z powodu bardzo
intensywnego swapowania i może prowadzić do zabijania nieodpowiednich
procesów przez OOM killer, gdy wyczerpie się pamięć (patrz poniżej, sekcja
,,OOM killer''). Można temu zapobiec nie definiuj&plusmn;c wielkiej przestrzeni
wymiany, je&para;li nie jeste&para; pewien, że jest ona wymagana. Innymi słowy,
przestrzeń wymiany może być przyczyn&plusmn; spowolnienia systemu, więc
przydzielaj j&plusmn; m&plusmn;drze.

Zużycie przestrzeni wymiany może być monitorowane przy użyciu komendy
'free' lub poprzez czytanie plików /proc/swaps oraz /proc/meminfo

Programy instalacyjne większo&para;ci dystrybucji linuksa rozs&plusmn;dnie przydzielaj&plusmn;
przestrzeń wymiany dla małych i &para;rednich systemów.


3. Ograniczenia przestrzeni wymiany

Linux 2.4.10 (i póĽniejsze), oraz 2.5 obsługuje do 32 plików lub
urz&plusmn;dzeń wymiany. Przed j&plusmn;drem 2.4.10 limit ten wynosił 8. Na systemach o
architekturze x86 każdy z tych obszarów wymiany ma limit wielko&para;ci do 2
GiB.


4. OOM (Out-of-Memory) killer

Je&para;li podsystem pamięci wirtualnej linuksa nie może znaleĽć pamięci do
przydzielenia, umieszcza stronice danych użytkownika w kolejce do wymiany.
Je&para;li nie może zarówno znaleĽć pamięci, jak i wymienić aktualnie używanej
pamięci, Out-of-memory killer może zacz&plusmn;ć zabijać aktualnie pracuj&plusmn;ce w
przestrzeni użytkownika procesy.
Uzasadnienie zabijania z powodu braku pamięci opisane jest w dokumentacji
podsystemu zarz&plusmn;dzania pamięci&plusmn; [2].


5. Ustawianie przestrzeni wymiany

Zarz&plusmn;dzanie przestrzeni&plusmn; wymiany w Linuksie jest bardzo łatwe i elastyczne.
Linuksowe przestrzenie wymiany mog&plusmn; być wł&plusmn;czane i wył&plusmn;czane bez
restartowania systemu, a nawet gdy s&plusmn; używane.

Przestrzeni wymiany może zostać przydzielona oddzielna partycja (być może
bezpieczniejsze) lub pliki w normalnym systemie plików. Również Woluminy
Logiczne (LVM) mog&plusmn; zostać użyte jako urz&plusmn;dzenia wymiany.

Istniej&plusmn; dwa rodzaje (formaty) przestrzeni wymiany obsługiwane przez j&plusmn;dro
2.1 (rozwojowe) i póĽniejsze (do 2.4).
Linux 2.0 wymaga wymaga przestrzeni wymiany w wersji 0 (zero). 2.1.117 i
póĽniejsze obsługuj&plusmn; zarówno wersję 0 i 1. Linux 2.5 obsługuje wył&plusmn;cznie
wersję 1. Program 'mkswap' potrafi stworzyć przestrzeń wymiany w obu
formatach. Szczegóły w 'man mkswap'.

Aby użyć pliku dla przestrzeni wymiany, wybierz jej rozmiar (max. 2GiB na
x86) i wpisz (jak to opisano w 'man mkswap'):
dd bs=1024 count=1M if=/dev/zero of=/&para;cieżka/plik_wymiany.n
To zapisze jednogigabajtowy plik (1 MiB * 1024 bajty)
"/&para;cieżka/plik_wymiany.n".
Możesz wykonać to kilka razy, aby użyć więcej plików wymiany na systemach z
duż&plusmn; ilo&para;ci&plusmn; pamięci. Pliki wymiany nie mog&plusmn; być rzadkie (sparse); musz&plusmn;
być w pełni zaalokowane przed użyciem.

Oczywi&para;cie możesz również umie&para;cić przestrzeń wymiany na jej własnej
partycji/partycjach. To zwykle wymaga odrobinę więcej planowania
rozdzielania przestrzeni dyskowej.

Przestrzeń wymiany umieszczona na osobnej partycji definiowana jest w pliku
/etc/fstab ('man 5 fstab'). Przestrzeniom wymiany można przydzielać rózne
priorytety ('man 2 swapon'), które wpływaj&plusmn; na ich użycie. Przestrzeń
wymiany z wyższym priorytetem zostanie zapełniona pierwsza, przestrzenie o
równych priorytetach będ&plusmn; przeplatane. Priorytet może zostać ustalony
podczas aktywacji przestrzeni wymiany przy użyciu komendy 'swapon' lub
przez wpis w pliku '/etc/fstab'. Na przykład:

# przestrzeń wymiany na partycjach
/dev/hda2 none swap pri=5,defaults 0 0
/dev/hdb1 none swap pri=5,defaults 0 0
# przestrzeń wymiany w plikach
/work/swapfile.1 none swap pri=5,defaults 0 0
/work/swapfile.2 none swap pri=5,defaults 0 0

Po przydzieleniu miejsca przestrzeni wymiany musi ona zostać sfromatowana
(zainicjalizowana) przez umieszczenie na niej odpowiedniego nagłówka.
Wystarczy wykonać to raz.

mkswap /dev/hda2
mkswap /dev/hdb1
mkswap /work/swapfile.1
mkswap /work/swapfile.2

Przestrzeń wymiany aktywowana jest podczas startu systemu przez
uruchomienie 'swapon' ('man swapon'). Dotyczy to również przestrzeni
wymiany w systemie plików, je&para;li tylko system plików został już
zamontowany.

Je&para;li dodajesz przestrzeń wymiany po starcie systemu, możesz użyć komendy
'swapon', aby j&plusmn; aktywować. Na przykład:

swapon /dev/hdf1
swapon /work/swapfile.3

Użycie kilku partycji i/lub plików wymiany na różnych dyskach daje efekt
przeplatania zapisu między dyski, podobnie jak w RAID-0.

Generalnie dobrym pomysłem jest posiadanie kilku przestrzeni wymiany (o tym
samym priorytecie) gdy masz kilka urz&plusmn;dzeń na niezależnych kanałach.
Pozwala to kernelowi na równoległe swapowanie. Dobrym pomysłem może być
również trzymanie przestrzeni wymiany na mniej używanych
urz&plusmn;dzeniach/kanałach, aby intensywne, nie zwi&plusmn;zane z wymian&plusmn;,
wej&para;cie/wyj&para;cie nie było blokowane przez I/O wymiany.

W Linuksie 2.4 i wcze&para;niejszych pliki wymiany s&plusmn; mniej odporne od urz&plusmn;dzeń
(partycji) z powodu konieczno&para;ci czytania metadanych z systemu plików, co
czyni je podatnymi na zakleszczenie z powodu braku pamięci przy alokowaniu
stronic i buforów używanych przy wymianie.
To zmieniło się w Linuksie 2.5. Używanie plików wymiany nie ma żadnych wad
w porównaniu do urz&plusmn;dzeń (partycji). J&plusmn;dro nie musi zajmować pamięci aby
przerzucić bufor na dysk.

Jest to interesuj&plusmn;ce ponieważ pliki wymiany s&plusmn; dużo łatwiejsze w
administracji (dodawaniu, usuwaniu, zmianie rozmiaru) i łatwiejsze do
przeplatania. Możliwe jesst teraz zupełne wyeliminowanie urz&plusmn;dzeń
(partycji) wymiany bez utraty wydajno&para;ci.

Je&para;li masz dwa dyski, to bardzo rozs&plusmn;dnym rozwi&plusmn;zaniem jest utworzenie
pliku wymiany na obu i zrobienie między nimi przeplotu z równym
priorytetem. To da najlepsz&plusmn; wydajno&para;ć I/O, jednakże może spowodować
dodatkowe szukanie między przestrzeni&plusmn; wymiany a zwykłymi plikami.

Wydzielenie całego dysku na swap oczywi&para;cie ograniczy problem szukania.

Ale je&para;li Twój program jest zależny od wydajno&para;ci przestrzeni wymiany,
potrzebujesz większej ilo&para;ci pamięci RAM. Swap powinien być traktowany
raczej jako prosta i niedroga drugoplanowa optymalizacja, umożliwienie
udostępnienia nieużywanych stronic innym procesom, niż lekarstwo dla
niedoposażonej maszyny.


6. Wył&plusmn;czanie przestrzeni wymiany

Przestrzeń wymiany jest zwykle deaktywowana przy zamykaniu systemu poprzez
użycie komendy 'swapoff' ('man swapoff').

swapoff /work/swapfile.1
swapoff /work/swapfile.2
swapoff /dev/hdb1
swapoff /dev/hda2

Lub przez użycie 'swapoff -a', co wył&plusmn;cza wszystkie partycje wymiany
zdefiniowane w pliku /etc/fstab (Nie odnosi się to do plików wymiany,
wył&plusmn;cznie do partycji).


7. Inne przypadki użycia

Przestrzeń wymiany używana jest przez tymczasowy system plików 'tmpfs' jako
zapasowa przestrzeń gdy zużycie buforów dyskowych musi zostać zredukowane.
Tmpfs pozwala również na ustalenie limitu wielko&para;ci. Zobacz dokumentację w
drzewie Ľródeł kernela w pliku 'linux/Documentation/filesystems/tmpfs.txt'.

tmpfs używany jest również do wspierania ,,shmfs''.
shmfs jest systemem plików używanym do realizacji współdzielonej pamięci
POSIX.
glibc 2.2 i poĽniejsze oczekuj&plusmn;, aby tmpfs był zamontowany jako /dev/shm
przy wołaniu shm_open() i shm_unlink() dla współdzielonej pamięci POSIX.

Zarówno w przypadku tmpfs i shmfs prawdopodobnie chcesz ograniczyć ich
maksymaln&plusmn; wielko&para;ć. Użyj w tym celu opcji montowania 'size=xxxM'.
Na przykład, w /etc/fstab:

tmpfs /tmp tmpfs size=750M,mode=2777 0 0
shmfs /dev/shm tmpfs defaults 0 0

Urz&plusmn;dzenia (partycje) wymiany mog&plusmn; również zostać użyte przy software'owym
u&paraieniu (swsup) w Linuksie 2.5 oraz jako przestrzeń do zapisu zrzutu przy
awarii j&plusmn;dra w wersjach, które t&plusmn; funkcjonalno&para;ć obsługuj&plusmn;.

Używanie pliku/ów wymiany pozwala również dzielić przestrzeń wymiany z
innymi systemami operacyjnymi, jak to opisano w Linux Swap Space
Mini-HOWTO [3] i na li&para;cie dyskusyjnej linux-kernel [4].


Podziękowania:

Dziękuję wszystkim, którzy skomentowali wczesne wersje tego mini HOWTO,
wł&plusmn;czaj&plusmn;c (ale nie ograniczaj&plusmn;c do): Andries Brouwer, Bernd Eckenfels, Mark
Hahn, Troels Walsted Hansen, Dave Jones, Pavel Machek, Andrew Morton, Vince
Mulhollon, Wladimir Mutel, Ha Shao, Shane Shrybman oraz Ed Tomlison.
Niektóre z ich komentarzy zostały tutaj użyte lub zacytowane.


Tłumaczenia:

Oryginalna, angielska wersja tego mini-HOWTO dostępna jest pod adresem:
,,http://www.xenotime.net/linux/swap-mini-howto.txt''

Tłumaczenie węgierskie wykonane przez Gabor Micsko:
,,http://www.hup.hu/modules.php?name=News&file=article&sid=1976''

Polskie, wykonane przez Jacka Politowskiego:
,,http://jacek.rallypl.eu.org/tlumaczenia/swap-mini-howto.txt''


Odno&para;niki:
1. Joe Knapka, ,,Outline of the Linux Memory Management System''.
URL::http://home.earthlink.net/~jknapka/l...vmoutline.html
2. Rik van Riel: ,,Linux-MM docs: the OOM killer''
URL::http://linux-mm.org/docs/oom-killer.shtml
3. Swap-Space, Linux Swap Space Mini-HOWTO. Zaktualizowane: Lipiec 2002.
How to share your Linux swap partitions with Windows.
URL::http://www.tldp.org/HOWTO/mini/Swap-Space.html
4. URL::http://marc.theaimsgroup.com/?l=linu...3636324081&w=2


================================================== =========================
Od tłumacza:

Tłumaczenie: Jacek Politowski <jp-at-jp-pl-eu-org>
Data: 3.11.2002 Ostatnia aktualizacja: 11.02.2003

Zapewne nie jest to wersja finalna - co najmniej z kilku fragmentów nie
jestem zadowolony i postaram się jako&para; je ,,wygładzić''.
__________________
amiga500site
Patrix jest offline   Odpowiedz cytując ten post