Przykład
ilustrujący działanie pamięci podręcznej dla i-węzłów.
 
 

W systemie Linux istnieją  dwa rodzaje pamięci podręcznej  związane z i-węzłami.
Pierwszy (directory cache) służy do powiązania nazw w katalogach z numerami i-węzłów im odpowiadającymi , drugi (inode cache) utrzymuje w pamięci ostatnio używane i-węzły aby przyspieszyć przyszłe odwołania do nich .

Aby docenić znaczenie tego rodzaju pamięci podręczych wystarczy usunąć je z jądra (wymaga to drobnych modyfikacji wyżej wymienionych plików) i  zobaczyć, co się będzie działo.
W zasadzie nie potrzeba wykonywać żadnych specjalnych testów, żeby doświadczyć zauważalnego  opóźnienia operacji dostępu do plików i katalogów.  Wystarczy uważnie wsłuchiwać się w pracę dysku.
Jako wymowny przykład niech służy poniższa tabelka, w której zamieszczono czasy kompilacji jądra (2.0.32 z podstawowymi możliwościami) na normalnym i zmodyfikowanym systemie, na komputerze  P166 48MB RAM, dla dysków o różnych parametrach :
 
Dysk (tryb pracy)
system oryginalny
system po modyfikacji
PIO 4 /256kB cache
7 min. 12 sek.
19 min. 23 sek.
PIO 3 /120kB cache
7 min. 12 sek.
29 min. 12 sek.

Jak widać bardzo niewinna modyfikacja powoduje bardzo znaczne (3 - 4 krotne) spowolnienie dzialania, a przecież eksperyment ten nie korzystał  zbyt intensywnie z faktu przechowywania (lub nie)  i-węzłów w pamięci na przyszły użytek.
 


 
Zadanie
  1. Usunąć pamięć podręczną dla katalogów, modyfikując plik fs/dcache.c .

  2. UWAGA: Nie chodzi o usuwanie struktur danych itp. ,  a jedynie wprowadzenie zmian, które spowodują , że system nie będzie z nich korzystał (we właściwy sposób).
  3. Usunąć pamięć podręczną dla i-węzłów modyfikując plik fs/inode.c .

  4. Dokładniej: należy spowodować, by jądro nie utrzymywało informacji o i-węzłach, których nikt aktualnie nie używa.
    Wskazówka: Zapoznać się dokładnie z funkcjami : iput(), __iget(), get_empty_inode(), clear_inode().
    OSTRZEŻENIE: Dobrze się zastanów, zanim przejdziesz do punktu 3.
  5. Zrekompilować tak powstałe jądro i obserwować zmiany.

Bartłomiej Starosta