System plików

Zadanie Domowe nr 5

Wstęp

Zadanie to dotyczy podręcznej pamięci buforowej i polega na zmianie sposobu odświeżania kolejki wolnych buforów (free_list) w systemie Linux. Należy przeprojektować funkcję refill_freelist() zajmującą się pozyskiwaniem nowych buforów do kolejki wolnych w przypadku, gdy kolejka ta jest pusta.

W systemie Linux w celu dostarczenia czystego bufora jądro próbuje pobrać go z kolejki wolnych buforów o odpowiednim rozmiarze. W przypadku, gdy kolejka ta jest pusta, a w systemie jest dużo wolnej pamięci, jądro dzieli wolne strony pamięci tworząc z nich nowe bufory. Gdy ta metoda zawiedzie, to dla każdej listy lru wyznacza się bufor - kandydata. Spośród kandydatów jako zwycięzcę elekcji bierze się bufor, który byl najdłużej nie używany i zwalnia się go, a następnie doczepia do listy wolnych buforów. Zadanie polega na zmianie tego algorytmu oraz przeprowadzenia serii testów wskazujących wpływ poczynionych zmian na efektywność systemu.


Zadanie

Należy wprowadzić możliwość uzyskiwania nowych wolnych buforów o danym rozmiarze z wolnych buforów o innych rozmiarach. W tym celu trzeba zastanowić się nad taką zmianą nagłówka bufora oraz budowy kolejki wolnych buforów, aby operacja ta odbywała się możliwie szybko. Proszę przy tym pamiętać, że na jednej stronie pamięci mogą się znajdować tylko bufory jednego rozmiaru. Konieczne będzie zatem zwolnienie całej strony przed podzieleniem jej na bufory o nowym rozmiarze. Aby móc szybko sprawdzać, czy wszystkie bufory znajdujące się na danej stronie pamięci znajdują się w kolejce wolnych buforów (a jest to wymóg konieczny do zwolnienia strony), trzeba odpowiednio przeprojektować listę wolnych buforów.

Opisywaną możliwość należy wprowadzić w odpowiednim miejscu algorytmu refill_freelist() (ze względu na szybkość przydziału nowych buforów). Po dokonaniu zmian i zrekompiowaniu jądra systemu należy przeprowadzić serię opracowanych przez siebie testów sprawdzających wpływ poczynionych zmian na szybkość operacji wejścia/wyjścia. Testy te powinny być opracowane tak, aby uwzględniały korzyści płynące z istnienia podręcznej pamięci buforowej.


Dodatkowe pytanie

Kiedy wprowadzona modyfikacja moze przyniesc korzyści w postaci zwiekszenia predkosci dzialania systemu, a kiedy efekt wrecz przeciwny?


autor: Marek Czajkowski