Optimizarea performantelor unui sistem de gestiune a fisierelor
Sistemele de gestiune a fisierelor se proiecteaza a.i. timpul de acces la discuri sa fie cat mai mic. Exista mai multe tehnici de imbunatatire a performantelor unui SGF:
1) Utilizarea bufferelor cache este cea mai cunoscuta tehnica. Bufferele cache sunt definite ca o colectie de blocuri care apartin din punct de vedere logic discului, dar se pastreaza in MI pentru imbunatatirea performantelor. La aparitia unei cereri de citire de pe disc, au loc operatiunile: se verifica daca blocul se afla in bufferele cache si in caz afirmativ cererea este satisfacuta folosindu-se, fara acces la disc; altfel, blocul este citit de pe disc intr-un buffer cache. Daca nu mai exista loc in bufferele cache pentru a memora noul bloc citit, se alege pentru a i se inlocui continutul unul dintre bufferele cache. Continutul buffer-ului ales pentru inlocuire se scrie pe disc. Algoritmii de inlocuire sunt aceiasi ca cei utilizati la gestiunea memoriei virtuale prin paginare la cerere. Cel mai performant algoritm de inlocuire (LRU) poate fi folosit si atunci cand pentru gestiunea blocurilor cache se utilizeaza o lista, pentru ca nu mai apar restrictiile de timp impuse de paginarea la cerere. In schimb apare problema integritatii sistemului de fisiere: daca blocurile critice sunt mentinute mult timp in bufferele cache, fara a fi rescrise pe disc, creste pericolul distrugerii consistentei fisierelor.
Algoritmul LRU clasic se modifica luand in considerare aspectele:
a) probabilitatea ca blocurile sa fie folosite iar;
b) cat de esential este blocul pentru integritatea sistemului de fisiere.
Pentru a lua in considerare aspectele prezentate mai sus, blocurile pot fi divizate astfel:
- blocuri ce contin intrari in catalogul de baza;
- blocuri de index;
- blocuri de directoare;
- blocuri de date completate total;
- blocuri de date completate partial.
Blocurile cu mari sanse de a fi utilizate imediat, cum sunt blocurile de date completate partial, se introduc la sfarsitul listei LRU, pentru a ramane cat mai mult timp in bufferele cache. Daca blocul este esential pentru integritatea sistemului de fisiere, el este scris pe disc imediat.
Ïn fig. 6.17 este ilustrat modul in care lucreaza cache-ul.
Exista situatii cand masurile prezentate anterior nu sunt suficiente. De aceea SGF trebuie sa forteze la anumite intervale de timp scrierea pe disc a blocurilor modificate; in UNIX exista un apel sistem de sincronizare (sync()), care forteaza scrierea imediata pe disc a blocurilor modificate. La initializarea sistemului, se lanseaza programul update care executa sync() la intervale de 30 de sec.
Ïn fig. 6.18 este reprezentat sistemul I/O utilizat de UNIX. Se observa prezenta bufferelor cache.
2) Citirile de blocuri in avans(Block Read Ahead) pot conduce la imbunatatirea performantelor sistemelor de fisiere. Ïn acest mod se incearca aducerea de blocuri in cache inainte ca acestea sa fie necesare, marind astfel rata de utilizare a cache-ului (hit rate). Atunci cand sistemul de gestiune a fisierelor (SGF) este solicitat sa efectueze o operatiune in care participa blocul k dintr-un fisier, dupa ce termina operatiunea respectiva, efectueaza o verificare pentru a vedea daca blocul k+1 este prezent in cache. Daca nu este, planifica o citire a acestui bloc, in speranta ca in viitorul apropiat se va solicita care il va utiliza. Aceasta strategie de citire in avans este utila doar la fisierele citite secvential. Daca un fisier este accesat in mod aleator, acest gen de citiri nu ajuta. Pot chiar afecta negativ performantele relative la viteza de lucru. Ïn aceste cazuri s-ar putea aduce in cache blocuri inutile si evacua blocuri potential utile. Pentru a se putea detecta necesitatea citirilor in avans, SGF-ul poate urmari patternurile de accesare pentru fiecare fisier deschis. De ex. un bit asociat fiecarui fisier poate memora modul de acces al acestuia: secvential sau aleatoriu. Initial se presupune ca modul de acces este secvential. Ori de cate ori se realizeaza o operatie de pozitionare in fisier (seek), acest bit este resetat, el fiind setat atunci cand se utilizeaza iar citiri secventiale in fisier.
3) Reducerea la minim a miscarii capului de R/W prin distribuirea blocurilor unui fisier, daca nu consecutiv, cel putin in acelasi cilindru, reprezinta alta tehnica de imbunatatire a performantelor unui SGF. Acest lucru este simplu daca se utilizeaza o harta de biti pentru a memora lista de blocuri libere si aceasta harta este memorata integral in MI. Astfel este usor de ales un bloc liber aflat cat mai aproape de cel precedent alocat. O imbunatatire mai consistenta se obtine daca blocul-disc contine un numar de sectoare plasate consecutiv pe disc egal cu o putere a lui 2. Numarul de pozitionari la citirile secventiale se reduce astfel cu un factor de 2.
4) Reducerea timpului de rotatie. SGF va cauta sa plaseze blocurile consecutive ale unui fisier in aceeasi pista, dar intr-o maniera intretesuta (interleaving). Solutia poate fi implementata insa numai la nivelul driverelor de disc, dispunerea fizica a sectoarelor pe disc cunoscandu-se numai la acest nivel.
5) Plasarea catalogului de baza la mijlocul discului, nu la inceputul sau, pentru sistemele de fisiere care utilizeaza inod-uri. La aceste sisteme, chiar daca numele de fisier citit este scurt, sunt necesare doua accese la disc: unul pentru inod, celalalt pentru bloc. Amplasarea obisnuita a inod-urilor este cea prezentata in fig. 6.19 (a), cu inod-urile amplasate langa adresa 0 a discului, a.i. distanta medie dintre i-nod si blocurile corespunzatoare lui este aprox. jumatate din numarul de cilindri, necesitand pozitionari lungi ale bratului discului. Plasand catalog de baza la mijlocul discului se reduce la jumatate timpul de deplasare al capului discului.
Sistemul de fisiere BSD FFS utilizat la Unix versiunea BSD 4.2 implementeaza o varianta a acestei tehnici, introducand conceptul de grup de cilindri. Un grup de cilindri este reprezentat de unul sau mai multi cilindri consecutivi a.i. accesul in cadrul unui grup sa fie facut cu o miscare minima a capului de R/W (fig. 6.19 (b)). In structura unui grup de cilindri (fig. 6.20) se regasesc:
- un superbloc, care are acelasi continut in toate grupurile a.i. poate fi refacut usor in cazul unei erori;
- blocul de cilindri, care contine parametri dinamici precum harta de biti a blocurilor libere si a fragmentelor si respectiv harta inodurilor libere;
- tabela de inoduri, avand structura catalogului de baza;
- blocuri de date.
Observatie Incepand cu versiunea UNIX BSD 4.2 s-au introdus blocuri de dimensiuni mai mari (4KO, 8 KO), in scopul citirii unui fisier mare cu cat mai putine accese la disc. Tot aceasta versiune a introdus si conceptul de fragment, in scopul micsorarii spatiului irosit in ultimul bloc, ramas necompletat. Astfel, toate blocurile unui fisier au aceeasi dimensiune (valoarea cea mare), cu exceptia ultimului, care poate fi un multiplu al unei valori mai mici, denumita fragment. Raportul (dimensiune bloc):(dimensiune fragment) este in general de 8:1.
Informatiile de sistem dintr-un grup de cilindri nu se plaseaza la inceputul cilindrului, pentru a se evita situatia in care acestea s-ar afla pe acelasi disc pentru toti cilindrii (distrugerea acestui disc ar implica pierderea tuturor informatiilor din sistem), ci se plaseaza cu deplasamente diferite aferente fiecarui grup de cilindri.
Strategia de alocare a blocurilor la fisiere urmareste alocarea blocurilor unui fisier in acelasi grup, si daca nu mai exista loc, intr-un grup cu o medie mare de blocuri libere. Astfel, blocurile unui fisier mic vor fi mentinute in cadrul aceluiasi bloc de cilindri si se va reduce numarul pozitionarilor lungi aferente fisierelor mari.
Inod-ul unui fisier se aloca pe cat posibil in acelasi grup cu inod-ul directorului parinte. Daca inod-ul aferent unui director nou nu se poate aloca in grup cu inod-ul directorului parinte, se alege grupul cu cel mai mare numar de cilindri liberi.
6) Restrictionarea utilizatorilor la un numar maxim de fisiere si blocuri (quotas) pentru a impiedica acapararea unei zone mari numai de catre unii utilizatori.
Mecanismul presupune utilizarea a doua tabele, mentinute in MI (fig. 6.21):
a) Tabela fisiere deschise, care contine cate o linie aferenta fiecarei deschideri, respectiv creari de fisier. In fiecare linie se memoreaza proprietarul fisierului corespunzator, atributele fisierului, adresele disc si un pointer catre inregistrarea corespunzatoare din tabela quota.
b) Tabela quota, contine extrase din fisierul quota, aflat pe disc. Aceasta tabela pastreaza extrasul quota corespunzator fiecarui utilizator care este proprietar al unor fisiere deschise, chiar daca deschiderea fisierului a fost efectuata de un utilizator diferit de proprietarul fisierului. Cand un utilizator si-a inchis toate fisierele, inregistrarea corespunzatoare lui din tabela quota se rescrie in fisierul quota.
La crearea unui intrari noi in tabela fisierelor deschise, se adauga si un pointer la intrarea corespondenta proprietarului fisierului. La fiecare adaugare a unui bloc la un fisier, se incrementeaza numarul total de blocuri utilizat de proprietatul fisierului si se verifica limitele de blocuri hard si soft . Limita soft poate fi depasita, dar la depasirea limitei hard se raporteaza eroare. Verificari similare au loc si relativ la numarul de fisiere.
Unui utilizator i se refuza intrarea in sistem (logarea) atunci cand contorul numarului permis de intrari in sesiune cu limitele in depasire a ajuns la zero, in urma mai multor decrementari. O noua logare se poate face doar dupa interventia administratorului sistemului. Se permite depasirea limitelor soft pe timpul unei sesiuni de lucru, cu conditia ca excesul sa fie indepartat inainte de intrarea intr-o noua sesiune, dar limitele hard nu pot fi depasite niciodata.
8) Utilizarea unor algoritmi de compactare a datelor inainte de a fi scrise pe disc se poate utiliza pentru a obtine o economie de spatiu. Metoda prezinta dezavantajul unui consum suplimentar de timp, aferent operatiunilor de comprimare/decomprimare.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |