Do spisu treści tematu nadrzędnego
Zadanie laboratoryjne "Inteligentny wybór urządzenia
wymiany"
Spis treści:
Wprowadzenie
W systemach komputerowych dzisiejszych czasów ilość pamięci RAM jest
znacznie mniejsza, niż zapotrzebowanie programów uruchamianych na
komputerach. W celu umożliwienia uruchamiania i wykonywania takich programów
stosuje się tzw. pamięć wirtualną. Pamięć wirtualna nie jest ograniczona
ilością pamięci RAM komputera. Oczywistym jest, że gdzieś tu musi istnieć
jakieś oszustwo - dane lub kod procesów muszą się gdzieś podziać. W
systemie Linux, tak jak i w wielu innych systemach używa się dysku, aby
przechowywać te dane/kod. Pomaga tutaj wspomagane sprzętowo stronicowanie na
żądanie. Pamięć procesu podzielona jest na bloki nazywane stronami, które
system operacyjny niekoniecznie musi trzymać w pamięci. Niektóre z
nieużywanych stron zapisywane są na dysk, aby nie używały pamięci RAM
komputera i dopiero przy odwołaniu do nich generowany jest błąd braku
strony, którego obsługa polega między innymi na wczytaniu strony z
urządzenia do pamięci. Oczywistym jest, że chcemy zminimalizować czas
potrzebny na wczytanie strony. W systemie Linux istnieje możliwość używania
wielu urządzeń wymiany, które mogą różnić się szybkością działania. Gdy
chcemy wymieść jakąś stronę na dysk, to algorytm wyboru urządzenia w systemie
Linux w wersji jądra 2.0.32 przegląda urządzenia wymiany od najszybszego do
najwolniejszego i jeżeli na którymś z nich jest jeszcze wolny blok, to go
przydziela.
Postawienie zadania
Tematem zadania jest uzależnienie wyboru urządzenia od priorytetu wymiatanego
procesu - oczywistym jest bowiem, że procesy o wyższym priorytecie powinny
mieć pierwszeństwo w dostępie do szybszych urządzeń wymiany. Możliwe jest
zastosowanie tutaj wielu algorytmów. Oczywiście, ze względu na elastyczność
systemu, nie ma sensu przydzielanie konkretnych urządzeń jakiemuś zakresowi
priorytetów procesów, ponieważ nie ma sensu, aby szybkie urządzenie wymiany
nie było używane tylko dlatego, że w systemie nie ma wielu procesów o
wysokim priorytecie. Uzależnienie od priorytetów należy rozumieć jako
ułatwienie procesom o wysokim priorytecie zabierania bloków na szybkich
urządzeniach wymiany, gdy zaczyna ich brakować. Należy ustalić jakąś
granicę (np. 80%), po przekroczeniu której proces o małym priorytecie
może dostać blok na szybkim urządzeniu wymiany tylko wtedy, gdy brakuje
wolnych bloków na wolniejszych urządzeniach wymiany.
Testy, obserwacje i wnioski
W celu przetestowania wyżej zaproponowanego usprawnienia należy zainstalować
w systemie co najmniej dwa urządzenia wymiany, różniące się znacznie
szybkością. Ma to miejsce gdy jedno z urządzeń wymiany operuje bezpośrednio
na partycji dysku, a drugie na pliku. Priorytety urządzeń nie są
automatycznie wyliczane przez system, zatem należy je podać przy podłączaniu
urządzenia do systemu. Po obciążeniu systemu procesami o różnych
priorytetach powinno się dać zauważyć wzrost szybkości działania procesów o
wyższych priorytetach, kosztem szybkości działania procesów o niższym
priorytecie. Jeśli natomiast obciązymy system tylko procesami o niskim
priorytecie, to po wykonaniu komendy free można będzie zauważyć
niepełne wykorzystanie szybszego urządzenia wymiany.
Bibliografia
- Pliki źródłowe Linuxa:
- linux/mm/vmscan.c
- linux/mm/swapfile.c
- linux/include/swap.h
- Projekt LabLinux
Autor: Andrzej Kuczyński