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

  1. Pliki źródłowe Linuxa:
  2. Projekt LabLinux

Autor: Andrzej Kuczyński