Do spisu treści
tematu nadrzędnego
4.12.11 Zadanie laboratoryjne "Urzadzenia wymiany"
Spis treści:
Wprowadzenie
W systemie operacyjnym Linux 2.0.32
oraz w wersjach wcześniejszych istnieje pewna niedoskonałosć, która wydaje
się w praktyce nie mieć większego znaczenia, ale jako obiekt zainteresowania,
dla osób które by chciały coś "ulepszyć" wydaje się być dość ambitnym zadaniem.
Chodzi o maksymalny rozmiar miejsca dostępnego na urządzeniu wymiany, które
jest ograniczone przez sposób w jaki jest zarządzana pamiecią na tym urządzeniu.
Na poczatku pamięci urządzenia wymiany znajduje się tablica bitowa
swap_lockmap, która przy inicjowaniu urządzenia przez funkcje sys_swapon(..)
wczytywana jest jako ramka (zatem ma rozmiar 4KB ).Za pomoca swap_lockmap
ustalany jest rozmiar pamięci jaka jest dostępna na urządzeniu. Ograniczenie
wynika stąd, że za pomocą swap_lockmap moąemy reprezentować rozmiar pamięci
nie większy niz (4096 - 10) *8*4096 = 133890048 bajtów =127.6875 Mb. (pierwsza
cześć iloczynu to rozmiar pierwszej ramki na urządzeniu (lock_map) pomniejszony
o 10 bajtow przeznaczony na "flage" "SWAP_SPACE", która zostaje tam umieszczona
po prawidłowym zainicjowaniu urządzenia). Z praktycznegoo punktu widzenia
wydaje się, ze rozmiar prawie 128Mb pamięci przeznaczonej na urządzenie
wymiany jest bardzo duża, jednak może sie okazać w przyszloćci, że potrzeba
usunięcia takiego ograniczenia może okazać sie o ile nie konieczne to byc
może przydatne. Zadanie jakie chciałbym postawić to umożliwienie
w systemie Linux 2.0.32 usunięcia ograniczenia tak, aby rozmiar pamięci
na urządzeniu wymiany byl ograniczony czynnikami wynikajacymi z ograniczeń
np.: sprzętu a nie systemu.
Specyfikacja zadanie
Aby zmodyfikować system w celu osiagnęcia
zamierzonego celu przed przystąpieniem do rozwiązania zadania należy:
-
zapoznać się z opisem zarządzania pamięcia - wymiana stron pamieć
- dysk.
-
zapoznać sić z zawartościa plików zrodłowych: ../include/linux/swap.h,
../mm/swapfile.c.
-
zapoznać się z opisem w manual-u Linuxa funkcji swapon( ..) - słuzacej
do dodawania urządzeń wymiany.
Zadanie ma polegać na :
-
przygotowaniu wolnej partycji na dysku twardym, majacej służyć jako urządzenie
wymaiany.
-
przygotowanie programu, który by iniciował daną partcję (instalował struktury,dane
...).
-
przedefiniować funkcje z pliku ../mm/swapfile.c
w sposób umożliwiający jednoczesne korzystanie znowego sposobu obslugi
urzadzenia wymiany tj. zaproponowanego przez rozwiazujacego zadanie oraz
starego Linuxowego.
-
przetestowanie rozwiazania polegające na stworzeniu nowego "dużego" urządzenia
wymiany i właczeniu go do sytemu urzadzeń wymiany.
Wskazowki dotyczace implementacji
Kluczowym problemem w rozwiązaniu tego zadania
wydaje się być pogodzenie obu sposobów zarządzania pamiecią na urządzeniu
. Należy się skupić przede wszystkim na inicjowaniu partycji ,a wiec zainstalowaniu
na niej nowej struktury swap_lockmap tak , aby miała własności standartowej
a jednocześnie umożliwiała obsługe większych urządzen.
Testy i wnioski
Wiadomo, że zwiększenie pamięci na urzadzeniu wymiany powoduje zwiększenie
pamięci wirtualnej. Jedynym rozsądym testem wydaje się badanie zachowania
się systemu w przypadku
uruchamiania wiekszej ilości programów tak, aby zmusic system do zwiekszonej
ilości operacji wymiany pamieć - dysk. Jednak zaleta najważniejsza tego
zadania wydaje sie być strona merytoryczna polegająca na dokładnym zapoznaniu
się z mechanizmami obsługi urządzeń wymiany.
Bibliografia
-
Pliki źródłowe Linuxa:
-
../linux/mm/swapfile.c
-
../include/linux/swap.h
-
Projekt LabLinux
Autor: Mariusz Puchalski