Ce este cache-ul pe hard disk-uri

Înregistrarea în cache pe un dispozitiv de stocare se numește folosirea memoriei volatile de mare viteză pentru a acumula comenzi de scriere trimise către dispozitivele de stocare și a le memora în cache până când suporturile mai lente (fie discuri fizice, fie memorie flash ieftină) le pot gestiona. Majoritatea dispozitivelor care utilizează cache-ul de scriere necesită o sursă de alimentare neîntreruptă.

Pentru a gestiona stocarea în cache a scrierii pe disc, deschideți Panou de control - Manager dispozitive.

În capitol Dispozitive de disc faceți dublu clic pe unitatea dorită.

Accesați fila Politicieni

Îndepărtarea rapidă

Această valoare este de obicei cea mai bună alegere pentru dispozitivele care ar putea fi necesare pentru a fi eliminate frecvent din sistem, cum ar fi unitățile flash USB, SD, MMC, Compact Flash sau carduri de memorie similare și alte dispozitive de stocare externe conectabile.

Dacă este selectată opțiunea Îndepărtarea rapidă, apoi Windows controlează comenzile transmise dispozitivului folosind o metodă numită stocarea în cache... Cu trecerea în cache, dispozitivul tratează comenzile de scriere ca și cum cache-ul nu ar fi prezent. Cache-ul poate oferi un mic avantaj de performanță, dar accentul este pus pe maximizarea securității datelor prin interceptarea comenzilor trimise către dispozitivul de stocare principal. Principalul avantaj este capacitatea de a elimina rapid un dispozitiv de stocare fără riscul pierderii datelor. De exemplu, dacă scoateți din greșeală o unitate flash din portul său, probabilitatea de a pierde date scrise pe aceasta este semnificativ redusă.

Această opțiune este de obicei optimă pentru dispozitivele care trebuie să ofere cea mai rapidă performanță posibilă; pentru dispozitivele care sunt rareori eliminate din sistem. Dacă această opțiune este selectată și dispozitivul este deconectat de la sistem înainte ca toate datele să fie scrise în acesta (de exemplu, atunci când scoateți o unitate flash USB), datele se pot pierde.

Dacă este selectată opțiunea Performanța optima, apoi Windows folosește o tehnică numită cache în scriere. Această metodă permite dispozitivului de stocare să determine singur dacă memoria cache de mare viteză va economisi timp la executarea comenzilor de scriere. Dacă da, dispozitivul îi spune computerului că datele au fost salvate cu succes, chiar dacă este posibil ca datele să nu fie de fapt pe dispozitivul de stocare primar (cum ar fi disc sau memorie flash). Această metodă îmbunătățește dramatic performanța operațiunilor de scriere, care sunt adesea principalul blocaj pentru performanța generală a sistemului. Dar dacă, din orice motiv, sursa de alimentare a dispozitivului se pierde, atunci toate datele din cache (pe care computerul le consideră stocate în siguranță) se pot pierde.

Scrieți cache pe disc

De Implicit Windows folosește cache de scriere pe disc. Aceasta înseamnă că sistemul va instrui periodic dispozitivul de stocare să trimită toate datele din cache către dispozitivul de stocare principal. Selectarea acestui parametru dezactivează aceste comenzi periodice de transfer de date. Nu toate dispozitivele acceptă toate aceste funcții.

Dacă preocuparea principală este de mare viteză transferul de date, ar trebui să activați ambii parametri: în secțiune Politica de eliminare selectați elementul Performanța optima, și în secțiune Politica privind înregistrarea în cache selectați elementul Permiteți scrierea în cache pentru acest dispozitiv(dacă hardware-ul sistemului și dispozitivul de stocare acceptă aceste caracteristici).

Cum pot modifica setările de memorare în cache pentru un dispozitiv?

Majoritatea dispozitivelor de stocare orientate spre consumator, cum ar fi unitățile flash USB, cardurile SD sau MMC sau unități externe nu permite modificarea setărilor de cache pentru dispozitiv. Intern hard disk-uri cu interfețele SATA sau SAS furnizate cu Windows permit, de obicei, modificarea acestor parametri (în funcție de producătorul dispozitivului). Pentru a înțelege capacitățile de stocare în cache a unui anumit dispozitiv și pentru a determina ce opțiuni se potrivesc cel mai bine nevoilor dvs., consultați documentația producătorului.

Aflați mai multe despre prevenirea pierderii de date

Sistemele care au cache de scriere activat oriunde între aplicație și dispozitivul de stocare trebuie să fie stabile și să nu fie supuse supratensiunii. Dacă un dispozitiv atașat la sistem utilizează cache-ul de scriere, algoritmii de cache ai dispozitivului își asumă disponibilitatea continuă a puterii atât pentru cache, cât și pentru a muta datele în și din cache. Dacă se știe că sistemul sau sursa de alimentare are potențiale probleme cu furnizarea de energie, atunci aceste oportunități nu ar trebui utilizate.

De asemenea, ar trebui să eliminați cu atenție dispozitivele de stocare amovibile, cum ar fi unitățile flash USB, cardurile SD, MMC sau Compact Flash și unitățile externe. Când utilizați parametrul Eliminare sigură Windows va putea proteja datele utilizatorilor în majoritatea scenariilor. Cu toate acestea, este posibil ca anumite drivere sau aplicații să nu se potrivească cu modelul Windows, ceea ce poate duce la pierderea datelor atunci când astfel de dispozitive sunt eliminate. Dacă este posibil, deschideți aplicația Eliminare sigură înainte de a elimina orice dispozitiv de stocare extern din sistem.

Surse: Documentație de ajutor Windows.

AZPC - Computer personal de la A la Z. Portal de internet despre computere care rulează Windows.

Permiteți-mi să vă reamintesc că utilitarul Seagate SeaTools Enterprise permite utilizatorului să gestioneze politica de cache și, în special, să schimbe cele mai recente unități SCSI Seagate între două diferite modele cache - Mod desktop și Mod server. Acest element din meniul SeaTools se numește Performance Mode (PM) și poate avea două valori - Activat (Mod desktop) și Dezactivat (Mod server). Diferențele dintre aceste două moduri sunt doar software - în cazul modului desktop, memoria cache Hard disk este împărțit într-un număr fix de segmente de dimensiuni constante (egale) și apoi sunt utilizate pentru a ascunde în cache accesele de citire și scriere. Mai mult, într-un element de meniu separat, utilizatorul poate chiar să atribuie singur numărul de segmente (să gestioneze segmentarea cache): de exemplu, în loc de 32 de segmente implicite, setați o valoare diferită (în acest caz, volumul fiecărui segment va fi să fie proporțional redus).

În cazul modului Server, segmentele tampon (cache de disc) pot fi (re) atribuite dinamic, modificându-le dimensiunea și numărul. Microprocesorul (și firmware-ul) discului în sine optimizează dinamic numărul (și capacitatea) segmentelor de memorie cache în funcție de comenzile care vin pe disc pentru execuție.

Apoi am putut afla că utilizarea noilor unități Seagate Cheetah în modul „Desktop” (cu sharding fix în mod implicit - 32 de segmente) în loc de „Server” implicit cu sharding dinamic poate crește ușor performanța unităților într-un număr de sarcini mai tipice pentru un computer desktop sau servere media. Mai mult, această creștere poate ajunge uneori la 30-100% (!) În funcție de tipul de activitate și de modelul discului, deși în medie este estimată la 30%, ceea ce, vezi, nu este nici rău. Printre astfel de sarcini se numără munca de rutină a unui computer desktop (testează WinBench, PCmark, H2bench), citirea și copierea fișierelor, defragmentarea. În același timp, în aplicațiile pur de server, performanța unităților nu scade aproape (dacă scade, nu scade semnificativ). Cu toate acestea, am putut observa un câștig vizibil din utilizarea modului desktop numai pe discul Cheetah 10K.7, în timp ce sora sa mai mare, Cheetah 15K.4, nu-i păsa în ce mod să funcționeze pe aplicațiile desktop.

Încercând să înțeleg în continuare modul în care partajarea memoriei cache a acestora hard disk-uri privind performanța în diferite aplicații și care moduri de segmentare (câte segmente de memorie) sunt mai benefice atunci când îndeplinesc anumite sarcini, am investigat efectul numărului de segmente de memorie cache asupra performanței Seagate drive Ghepard 15K.4 într-o gamă largă de valori - de la 4 la 128 de segmente (4, 8, 16, 32, 64 și 128). Rezultatele acestor studii sunt prezentate în atenția dumneavoastră în această parte a revizuirii. Permiteți-mi să subliniez că aceste rezultate sunt interesante nu numai pentru acest model de discuri (sau discuri SCSI de la Seagate în general) - segmentarea memoriei cache și alegerea numărului de segmente este una dintre direcțiile principale de optimizare a firmware-ului, inclusiv discurile desktop cu ATA interfață, care sunt acum echipate și cu un buffer predominant de 8 MB. Prin urmare, rezultatele de performanță ale unității descrise în acest articol în diferite sarcini, în funcție de fragmentarea memoriei cache, sunt relevante și pentru industria unităților desktop ATA. Și întrucât metodologia testului a fost descrisă în prima parte, să mergem direct la rezultate.

Cu toate acestea, înainte de a continua discutarea rezultatelor, să aruncăm o privire mai atentă asupra structurii și funcționării segmentelor de memorie cache ale unității Seagate Cheetah 15K.4 pentru a înțelege mai bine ce este în joc. Din cei opt megaocteți pentru memoria cache reală (adică pentru operațiuni de stocare în cache), 7077 KB sunt disponibili aici (restul este zona de serviciu). Această zonă este împărțită în segmente logice (Pagina de selectare mod 08h, octet 13), care sunt utilizate pentru citirea și scrierea datelor (pentru efectuarea funcțiilor de citire înainte de platouri și scriere diferită pe suprafața discului). Pentru a accesa datele de pe platourile magnetice, segmentele utilizează adresarea logică a blocurilor de unitate. Unitățile din această serie acceptă maximum 64 de segmente de cache, lungimea fiecărui segment fiind un număr întreg de sectoare de disc. Cantitatea de memorie cache disponibilă este distribuită în mod egal între segmente, adică dacă există, să zicem, 32 de segmente, atunci dimensiunea fiecărui segment este de aproximativ 220 KB. Cu segmentarea dinamică (în PM = modul oprit), numărul de segmente poate fi modificat automat de hard disk în funcție de fluxul de comandă de la gazdă.

Aplicațiile pentru server și desktop necesită diverse operații cache de pe discuri pentru performanțe optime, deci este dificil să oferiți o singură configurație pentru a efectua cel mai bine aceste sarcini. Potrivit Seagate, aplicațiile „desktop” necesită configurarea memoriei cache pentru a răspunde rapid la solicitările repetate un numar mare segmente de date mici, fără întârzieri pentru citirea în avans a segmentelor adiacente. În schimb, sarcinile de la server necesită ca memoria cache să fie configurată în așa fel încât să se asigure că sunt primite cantități mari de date secvențiale în cererile non-repetitive. În acest caz, este mai importantă capacitatea memoriei cache de a stoca mai multe date din segmente adiacente în timpul citirii înainte. Prin urmare, pentru modul Desktop, producătorul recomandă utilizarea a 32 de segmente (în versiunile timpurii ale Cheetah, au fost utilizate 16 segmente), iar pentru modul Server, numărul adaptiv de segmente începe de la doar trei pentru întregul cache, deși poate crește în timpul funcționării . În experimentele noastre privind efectul numărului de segmente asupra performanței în diferite aplicații, ne vom limita la intervalul de la 4 segmente la 64 de segmente și, ca o verificare, vom „rula” discul și cu 128 de segmente instalate în Programul SeaTools Enterprise (programul nu informează că numărul de segmente de pe acest disc este nevalid).

Rezultatele testelor fizice

Nu are rost să afișați grafice liniare de viteză de citire cu un număr diferit de segmente de memorie cache - acestea sunt aceleași. Dar, în funcție de viteza interfeței Ultra320 SCSI măsurată prin teste, puteți observa o imagine foarte curioasă: cu 64 de segmente, unele programe încep să determine incorect viteza interfeței, reducând-o cu mai mult de un ordin de mărime.

În ceea ce privește timpul mediu de acces măsurat, diferențele dintre diferitele numere de segmente de cache devin mai vizibile - pe măsură ce segmentarea scade, media măsurată în Ora Windows accesul la citire crește ușor și se observă citiri semnificativ mai bune în modul PM = oprit, deși este dificil de afirmat că numărul de segmente este foarte mic sau, dimpotrivă, foarte mare pe baza acestor date. Este posibil ca discul, în acest caz, să înceapă pur și simplu să ignore preluarea la citire pentru a exclude întârzieri suplimentare.

Puteți încerca să judecați eficiența algoritmilor de scriere lene a firmware-ului discului și stocarea în cache a datelor scrise în memoria tampon a unității prin modul în care timpul mediu de acces la scriere măsurat de sistemul de operare scade în raport cu citirea cu activarea memorării în cache a scrierii înapoi a unității (a fost întotdeauna activat în testele noastre). Pentru a face acest lucru, folosim de obicei rezultatele testului C "T H2benchW, dar de data aceasta vom suplimenta imaginea cu un test în programul IOmeter, modelele de citire și scriere pentru care au fost utilizate acces 100% aleatoriu în blocuri de 512 octeți cu o adâncime de unitate a cozii de solicitare. (Desigur, nu ar trebui să credeți că timpul mediu de acces la scriere din cele două diagrame de mai jos reflectă într-adevăr acest lucru fizic caracteristicile unităților! Acesta este doar un anumit parametru, măsurat programatic folosind un test, prin care se poate judeca eficiența scrierii în cache în memoria tampon de disc. Timpul mediu efectiv de acces la scriere declarat de producător pentru Cheetah 15K.4 este 4,0 + 2,0 = 6,0 ms). Apropo, anticipând întrebările, observ că în acest caz (adică atunci când scrierea leneșă este activată pe disc), unitatea raportează gazdei despre finalizarea cu succes a comenzii de scriere (starea BUNĂ) imediat ce sunt scrise în memoria cache și nu direct pe mediul magnetic ... Acesta este motivul pentru valoarea mai mică a timpului mediu de acces la scriere măsurat din exterior decât pentru parametrul analog la citire.

Conform rezultatelor acestor teste, există o dependență clară de eficiența memorării în cache a scrierii aleatorii a blocurilor de date mici de numărul de segmente de memorie cache - cu cât mai multe segmente, cu atât mai bine. Cu patru segmente, eficiența scade brusc, iar timpul mediu de acces la scriere crește aproape la valorile pentru citire. Și în „modul server” numărul de segmente în acest caz este aproape aproape de 32. Cazurile de 64 și „128” segmente sunt complet identice, ceea ce confirmă limitarea software-ului la nivelul a 64 de segmente de sus.

Interesant, testul IOmeter în cele mai simple modele pentru acces aleatoriu în blocuri de 512 octeți oferă exact aceleași valori la scriere ca testul C "T H2BenchW (cu o precizie de literalmente sutimi de milisecundă), în timp ce la citirea IOmeter a arătat un rezultat ușor supraestimat în toată gama de segmentare - posibil 0,1-0,19 ms diferență cu alte teste pentru timpul de acces aleatoriu în timp ce citești din cauza unor motive "interne" pentru IOmeter (sau dimensiunea blocului este de 512 octeți în loc de 0 octeți, așa cum este necesar în mod ideal pentru astfel de măsurători). Cu toate acestea, rezultatele citite ale IOmeterului coincid practic cu cele ale testului de disc al programului AIDA32.

Performanță în aplicații

Să trecem la standardele de performanță ale stocării în aplicații. Și în primul rând, să încercăm să aflăm cât de bine sunt optimizate discurile pentru multithreading. Pentru a face acest lucru, folosesc în mod tradițional teste în programul NBench 2.4, unde sunt scrise și citite de pe disc fișiere de 100 MB de mai multe fire simultane.

Această diagramă ne permite să judecăm eficiența algoritmilor pentru scrierea leneșă cu mai multe fire de disc în condiții reale (și nu sintetice, așa cum era în diagramă cu timp mediu de acces) atunci când sistemul de operare lucrează cu fișiere. Conducerea ambelor discuri Maxtor SCSI atunci când scrieți în mai multe fluxuri simultane este fără îndoială, dar în Chita observăm deja un anumit optim în regiunea cuprinsă între 8 și 16 segmente, în timp ce la valori mai mari și mai mici, viteza discului pentru aceste sarcini scade . Pentru modul Server, numărul de segmente este evident 32 (cu o precizie bună :)), iar segmentele „128” sunt de fapt 64.

Pentru citirile cu mai multe fire, unitățile Seagate se îmbunătățesc în mod clar față de unitățile Maxtor. În ceea ce privește influența segmentării, atunci, la fel ca în înregistrare, observăm un anumit optim mai aproape de 8 segmente (în timpul înregistrării, era mai aproape de 16 segmente), iar cu segmentarea foarte mare (64), viteza discului scade semnificativ (ca în înregistrare) ... Este îmbucurător faptul că modul Server „monitorizează bazarul” gazdei de aici și schimbă fragmentarea de la 32 când scrieți la ~ 8 când citiți.

Acum să vedem cum se comportă discurile în testele „vechi”, dar încă populare, ale discului WinMark 99 din pachetul WinBench 99. Permiteți-mi să vă reamintesc că efectuăm aceste teste nu numai pentru „început”, ci și pentru „mijloc” ( în termeni de volum) medii fizice pentru cele două sisteme de fișiere, iar diagramele arată rezultatele medii. Desigur, aceste teste nu sunt „de profil” pentru unitățile SCSI și le prezentăm aici rezultatele, mai degrabă aducem un omagiu testului în sine și celor obișnuiți să judece viteza discului prin testele WinBench 99. Ca o „consolare”, observăm că aceste teste ne vor arăta cu un anumit grad de certitudine care este performanța acestor unități de întreprindere atunci când efectuăm sarcini mai tipice unui computer desktop.

Evident, există un segment optim de aici și, cu un număr mic de segmente, discul arată inexpresiv și cu 32 de segmente - cel mai bun mod(poate de aceea dezvoltatorii Seagate au „schimbat” setarea implicită a modului desktop de la 16 la 32 de segmente). Cu toate acestea, pentru modul Server în sarcinile de birou (Business), segmentarea nu este destul de optimă, în timp ce pentru performanța profesională (High-End), segmentarea este mai mult decât optimizată, depășind în mod vizibil chiar și segmentarea „constantă” optimă. Aparent, în timpul execuției testului, acesta se modifică în funcție de fluxul de comenzi și datorită acestui fapt, se obține un câștig în performanța generală.

Din păcate, o astfel de optimizare „în timpul testului” nu este observată pentru testele complexe „de urmărire” mai recente pentru evaluarea performanței „desktop” a discurilor din pachetele PCMakr04 și C „T H2BenchW.

Pe ambele (sau mai bine zis, pe 10 piste de activitate) diferite, inteligența modului server este semnificativ inferioară segmentării constante optime, care pentru PCmark04 este de aproximativ 8 segmente, și pentru H2benchW - 16 segmente.

Pentru ambele teste, 4 segmente de cache se dovedesc a fi foarte nedorite și 64 și este dificil de spus unde gravitează mai mult modul Server în acest caz.

Spre deosebire de acestea, desigur, toate aceleași teste sintetice (deși foarte asemănătoare cu realitatea) - un test complet „real” al vitezei discurilor cu un fișier temporar Programe Adobe Photoshop. Aici situația este mult mai sumbră - cu cât mai multe segmente, cu atât mai bine! Și modul Server aproape l-a „prins”, folosind 32 de segmente pentru activitatea sa (deși 64 ar fi chiar puțin mai bune).

Puncte de referință Intel Iometer

Să trecem la sarcini care sunt mai tipice pentru profilurile utilizării unităților SCSI - funcționarea diferitelor servere (DataBase, File Server, Web Server) și a unei stații de lucru (stație de lucru) în conformitate cu modelele corespunzătoare din Intel IOmeter versiunea 2003.5.10.

Maxtor este cel mai bun la simularea unui server de baze de date, în timp ce modul Server este cel mai profitabil pentru Seagate, deși, de fapt, acesta din urmă este foarte aproape de 32 de segmente persistente (aproximativ 220 KB fiecare). Segmentarea mai mică sau mai mare este mai gravă în acest caz. Cu toate acestea, acest model este prea simplu în ceea ce privește tipul de cereri - să vedem ce se întâmplă pentru modele mai complexe.

Când imităm server de fișiere segmentarea adaptivă este din nou în frunte, deși decalajul în urmă cu 16 segmente constante este neglijabil (32 de segmente sunt puțin mai grave aici, deși sunt și ele destul de suficiente). Cu o segmentare mică, există o deteriorare pe o coadă mare de comenzi, iar cu prea mare (64) orice coadă este în general contraindicată - aparent, în acest caz, dimensiunea sectoarelor cache se dovedește a fi prea mică (mai mică de 111 KB, adică doar 220 de blocuri pe suport media) pentru a memora în cache în mod eficient Cantități de date cu dimensiuni rezonabile.

În cele din urmă, pentru un server Web, vedem o imagine și mai amuzantă - cu o coadă de comandă NON-ONE, modul server este echivalent orice nivel de segmentare, cu excepția 64, deși la un singur nivel este puțin mai bun decât toate.

Ca rezultat al medierii geometrice a încărcărilor serverului prezentate mai sus prin modele și cozi de solicitare (fără greutăți), constatăm că partajarea adaptivă este cea mai bună pentru astfel de sarcini, deși 32 de segmente constante rămân ușor și 16 segmente, de asemenea, arată bine. În general, alegerea Seagate este destul de înțeleasă.

În ceea ce privește modelul „ stație de lucru", Că aici modul Server este în mod clar cel mai bun.

Iar optimul pentru segmentarea permanentă este la nivelul a 16 segmente.

Acum - modelele noastre pentru IOmeter, care sunt mai apropiate ca scop de PC-urile desktop, deși sunt cu siguranță indicative pentru dispozitivele de stocare a întreprinderii, deoarece în sistemele „profund profesionale”, hard diskurile citesc și scriu fișiere mari și mici și uneori copiază fișiere partea cea mai mare a timp. Și întrucât natura apelurilor din aceste modele în aceste modele în testul IOmeter (la adrese aleatorii în întregul volum al discului) este mai tipică pentru sistemele de clasă server, importanța acestor modele pentru discurile studiate este mai mare.

Citirea fișierelor mari este din nou mai bună pentru modul Server, cu excepția unei scufundări de neînțeles la QD = 4. Cu toate acestea, un număr mic de segmente mari este clar preferabil pentru discul de pe aceste operații (ceea ce, în principiu, este previzibil și este în acord excelent cu rezultatele pentru citirea fișierelor cu mai multe fire, a se vedea mai sus).

Sporadic înregistrare fișierele mari, pe de altă parte, sunt încă prea dure pentru inteligența modului server, iar aici segmentarea constantă la nivelul de 8-16 segmente este mai avantajoasă, ca și în cazul înregistrării de fișiere cu mai multe fire, vezi mai sus. Separat, observăm că în aceste operații, segmentarea mare a cache-ului este extrem de dăunătoare - la nivelul a 64 de segmente. Cu toate acestea, se dovedește a fi util pentru citirea operațiunilor cu fișiere mici cu o coadă mare de solicitări:

Cred că acesta este modul în care Server Mode folosește pentru a selecta modul adaptiv - graficele lor sunt foarte similare.

În același timp, atunci când scrieți fișiere mici la adrese aleatorii, 64 de segmente eșuează din nou, iar modul server este inferior segmentării constante, cu un nivel de 8-16 segmente pe cache, deși se pot vedea eforturile modului server de a utiliza setări optime ( numai cu 32-64 de segmente în coadă au ieșit 64 de ghinion;)).

Copierea fișierelor mari este un eșec clar al modului server! Aici, partajarea cu nivelul 16 este în mod clar mai avantajoasă (acesta este optimul, deoarece 8 și 32 sunt mai slabe la coada 4).

În ceea ce privește copierea fișierelor mici, 8-16-32 de segmente sunt practic egale aici, depășind 64 de segmente (destul de ciudat), iar modul Server este puțin „ciudat”.

Pe baza rezultatelor mediei geometrice a datelor pentru citirea aleatorie, scrierea și copierea fișierelor mari și mici, constatăm că cel mai bun rezultat în medie este dat de segmentarea constantă cu un nivel de doar 4 segmente pe cache (adică dimensiunile segmentelor de mai mult de 1,5 MB!), În timp ce 8 și 16 segmente sunt aproximativ egale și aproape nu au rămas în urmă cu 4 segmente, dar 64 de segmente sunt clar contraindicate. În medie, modul Adaptive Server a cedat doar ușor până la segmentarea constantă - cu greu o pierdere de un procent poate fi considerată vizibilă.

Rămâne de remarcat faptul că atunci când simulăm defragmentarea, observăm o egalitate aproximativă a tuturor nivelurilor de segmentare permanentă și un ușor avantaj al modului Server (cu același 1%).

Și în tiparul de citire-scriere în flux în blocuri mari și mici, este puțin mai profitabil să se utilizeze un număr mic de segmente, deși din nou diferențele în ceea ce privește viteza configurațiilor de memorie cache aici, destul de ciudat, sunt homeopate.

concluzii

După ce am efectuat în a doua parte a revizuirii noastre un studiu mai detaliat al influenței partajării memoriei cache asupra performanței unității Seagate Cheetah 15K.4 în diferite sarcini, aș dori să menționez că dezvoltatorii nu au numit modurile de cache așa cum le-au numit dintr-un motiv: în modul Server, adaptarea sharding-ului este adesea efectuată în memoria cache pentru sarcina care este efectuată, iar acest lucru duce uneori la rezultate foarte bune - mai ales atunci când se efectuează sarcini „grele”, inclusiv modele de server în Intel IOmeter, și testul High-End Disk WinMark 99 și citirea aleatorie a blocurilor mici pe întregul disc ... În același timp, adesea alegerea nivelului de distribuire a memoriei cache în modul Server se dovedește a fi suboptimă (și necesită lucrări suplimentare) pentru a îmbunătăți criteriile de analiză a fluxului de comandă gazdă), iar apoi Desktop Mode iese cu sharding fix la nivelul de 8, 16 sau 32 de segmente pe cache. Mai mult, în funcție de tipul de sarcină, uneori este mai profitabil să folosiți 16 și 32, iar alteori - 8 sau doar 4 segmente de memorie! Acestea din urmă includ citiri și scrieri cu mai multe fire (atât aleatorii, cât și secvențiale), urmărirea testelor precum PCMark04 și sarcini de streaming cu citire și scriere simultane. Deși „sinteticele” pentru accesul la scriere aleatoriu arată clar că eficiența scrierilor leneșe (la adrese arbitrare) scade semnificativ odată cu scăderea numărului de segmente. Adică, există o luptă între două tendințe - și de aceea, în medie, este mai eficient să utilizați 16 sau 32 de segmente pe 8 MB tampon. Dacă dimensiunea bufferului este dublată, se poate prezice că este mai profitabil să mențineți numărul de segmente la nivelul 16-32, dar prin creșterea proporțională a capacității fiecărui segment, performanța medie a unității poate crește semnificativ. Aparent, chiar și ineficient acum în majoritatea sarcinilor, segmentarea unui cache cu 64 de segmente la dublarea dimensiunii bufferului se poate dovedi foarte utilă, în timp ce utilizarea a 4 sau chiar 8 segmente în acest caz va deveni ineficientă. Totuși, aceste concluzii depind în mare măsură de blocurile pe care sistemul de operare și aplicațiile preferă să le funcționeze cu unitatea și de fișierele utilizate în acest caz. Este foarte posibil ca atunci când mediul se schimbă, partajarea optimă a memoriei cache să se schimbe într-o direcție sau alta. Ei bine, dorim succes Seagate în optimizarea „inteligenței” modului de server, care, într-o anumită măsură, poate netezi această „dependență de sistem” și „dependență de sarcină”, învățând cum să selectăm cea mai optimă segmentare în funcție de fluxul de comandă gazdă din cel mai bun mod.

Cel mai faimos Alyosha Runet împărtășește informații șocante.
http://www.exler.ru/blog/item/12406/?25

Îmi amintesc că, în anii nouăzeci, am folosit așa-numitele controlere cache pe diferite computere pentru care performanța era importantă atunci când lucrați cu un hard disk: acestea erau carduri echipate cu sloturi pentru o regulă memorie cu acces aleator, în care a fost introdusă o anumită cantitate din această memorie, iar cu ajutorul cardului a fost folosită pentru a cache date de pe hard disk. Așa ceva a accelerat foarte mult lucrul cu hard diskul, mai ales atunci când se utilizează pachete grafice precum Corel Draw.

Mai ales atunci când se utilizează pachete grafice precum Corel Draw. Exact.
(scârțâit de șabloane care izbucnesc, capul plictisitor al capului pe masă)

În primul rând, să definim care este memoria cache a discului hardware.
În general, aceasta este o mică piesă operativă, „cusută” în electronica hard diskului.

Memoria cache acționează ca un buffer pentru stocarea datelor intermediare care au fost deja citite de pe hard disk dar nu au fost încă trimise pentru prelucrare ulterioară și pentru stocarea datelor pe care sistemul le accesează destul de des... Necesitatea stocării de tip pass-through este cauzată de diferența dintre viteza de citire a datelor de pe hard disk și viteza de transfer a sistemului.

Dacă un fișier este utilizat frecvent de sistem, atunci acesta va fi plasat în memoria cache a discului pentru a 1) nu trage discul inutil și 2) pentru a accelera accesul la acest fișier. Uciderea a două păsări cu o singură piatră.

În general, nu este un fișier plasat în cache, ci orice conținut al blocurilor de hard disk care este citit frecvent. De exemplu, datele de service Sistemul de fișiere... Sau MBR. Sau 12 kilobyte din mijlocul unui fișier de bază de date gigabyte. Discul nu face distincția între conținutul său, nu îi pasă.
Situația cu dosarul este dată pentru claritate.

Problema este că în anii 90, discurile erau produse fie fără cache, fie erau prea mici pentru a stoca datele necesare. Și această problemă a fost într-adevăr rezolvată prin utilizarea controlerelor cache.

Apoi, discurile au devenit considerabil mai rapide, sistemul de operare a început să facă cache în mod decent, ei bine, controlerele individuale de memorie cache s-au stins încet, mai ales că nu erau ieftine, plus că trebuia totuși să le cumpărați memorie.

În ceea ce privește viteza relativă, hard disk-urile nu erau departe de viteză în anii 90: ele sunt încă cea mai lentă parte a unui computer. Dar progresele tehnologice au făcut posibilă introducerea suficientă memorie cache pe discuri. Suficient pentru a elimina nevoia de controlere cache separate.

În plus, în sistemul de operare Unix, memoria RAM „extra” (neutilizată) acționează ca o memorie cache suplimentară. Așa-zisul, cache de disc software... Uneori este denumit „cache tampon”, dar acest lucru este oarecum diferit.

De asemenea, Windows îl are, dar toate beneficiile sale sunt complet compensate de utilizarea inadecvată a fișierului de paginare.
Starea normală a sistemului este aceea că conținutul memoriei RAM este pe disc (pagefile.sys), iar conținutul discului se află în memoria RAM (cache pe disc). Schizofrenie.

Nu cu mult timp în urmă, aceste controlere cache au început să se întoarcă, dar deja sub forma unor unități SSD. În primul rând, au apărut așa-numitele unități hibride - hard diskuri obișnuite, în care a fost încorporat și un SSD mic separat (16-32 GB), care a fost utilizat exclusiv pentru cache.

Autorul nu înțelege că nimic nu a plecat nicăieri, astfel încât acum se poate întoarce cu artificii și fanfară.
Și acele unități hibride sunt o manevră de marketing (dintr-un anumit motiv, un SSD de 16 gig a fost introdus într-un șurub obișnuit și chiar cu funcționalitate redusă).
Și ce este mai logic, mai ușor și mai corect să utilizați două șuruburi: un SSD rapid pentru sistem și un șurub obișnuit pentru date. Pentru o memorie cache de 16 concerte este o prostie încântătoare (cu o singură avertisment: pe acest moment ).

Și acum au început să producă SSD-uri separate, care sunt, de asemenea, utilizate special pentru cache.

Citire - SSD-uri obișnuite cu inscripționare roșie „Numai cache”.

Mai rău decât un lamer este doar un lamer cu un public larg. ©

Astăzi, stocarea comună a informațiilor este magnetică HDD... Are o anumită cantitate de memorie dedicată stocării datelor de bază. De asemenea, are o memorie tampon, al cărei scop este stocarea datelor intermediare. Profesioniștii numesc bufferul hard diskului termenul „memorie cache” sau pur și simplu „cache”. Să ne dăm seama de ce este nevoie de memoria tampon HDD, ce afectează și cât de mare este.

Bufferul hard diskului ajută sistem de operare stochează temporar date care au fost citite din memoria principală a hard diskului, dar care nu au fost transferate pentru procesare. Necesitatea unei stocări de tranzit se datorează faptului că viteza de citire a informațiilor de pe HDD și debit Sistemul de operare variază considerabil. Prin urmare, computerul trebuie să stocheze temporar date în „cache” și să le folosească numai pentru scopul propus.

Memoria tampon a hard disk-ului nu este un sector separat, așa cum cred utilizatorii de computere incompetenți. Este un cip de memorie special situat pe placa HDD internă. Astfel de microcircuite pot funcționa mult mai repede decât unitatea în sine. Ca urmare, acestea determină o creștere (cu câteva procente) a performanței computerului, care este observată în timpul funcționării.

Trebuie remarcat faptul că dimensiunea „memoriei cache” depinde de modelul de disc specific. Anterior, era vorba de aproximativ 8 megaocteți, iar această cifră era considerată satisfăcătoare. Cu toate acestea, odată cu avansarea tehnologiei, producătorii au reușit să producă cipuri cu mai multă memorie. Prin urmare, majoritatea hard diskurilor moderne au un buffer, a cărui dimensiune variază de la 32 la 128 megabytes. Desigur, cel mai mare „cache” este instalat la modelele scumpe.

Modul în care bufferul de hard disk afectează performanța

Acum vă vom spune de ce dimensiunea bufferului hard diskului afectează performanța computerului. Teoretic, cu cât vor exista mai multe informații în „memoria cache”, cu atât sistemul de operare va accesa mai rar pe hard disk. Acest lucru este valabil mai ales pentru un scenariu de lucru atunci când un potențial utilizator procesează un număr mare de fișiere mici. Pur și simplu se mută în memoria tampon a hard diskului și își așteaptă rândul.

Cu toate acestea, dacă un PC este utilizat pentru a procesa fișiere mari, atunci „cache” își pierde relevanța. La urma urmei, informațiile nu se pot încadra pe microcircuite, al căror volum este mic. Ca urmare, utilizatorul nu va observa o creștere a performanței computerului, deoarece tamponul va fi greu utilizat. Acest lucru se întâmplă în cazurile în care programele de editare a fișierelor video etc. vor fi lansate în sistemul de operare.

Astfel, atunci când achiziționați un hard disk nou, este recomandat să acordați atenție dimensiunii „cache-ului” numai dacă intenționați să vă ocupați în mod constant de procesarea fișierelor mici. Atunci se va dovedi cu adevărat o creștere a productivității dvs. calculator personal... Și dacă PC-ul va fi folosit pentru sarcini zilnice obișnuite sau pentru procesarea fișierelor mari, atunci nu puteți acorda nicio importanță clipboardului.

O formă foarte importantă, specifică de tamponare este stocarea în cache ... Acest termen se referă la utilizarea memoriei relativ mici, dar rapide, pentru a reduce numărul de apeluri la o memorie mai lentă și mare.

Ideea din spatele cache-ului se bazează pe așa-numitul ipoteza localității legăturii ... Această ipoteză este următoarea. Dacă la un moment dat a existat un acces la o anumită bucată de date, atunci în viitorul apropiat este posibil cu o mare probabilitate să vă așteptați la o repetare a apelurilor către aceleași date sau către bucăți de date învecinate. Desigur, localitatea legăturilor nu poate fi considerată o lege, dar practica arată că această ipoteză este justificată pentru marea majoritate a programelor.

Mai multe niveluri de cache pot fi utilizate în sistemele de calcul moderne. V acest curs cache-ul hardware al procesorului nu este luat în considerare, ceea ce permite reducerea numărului de accesări la memoria principală datorită utilizării registrelor de mare viteză. Memorarea în cache a dispozitivelor cu acces aleatoriu (unități de disc) este mai direct legată de funcționarea sistemului de operare. În acest caz, ipoteza despre localitatea legăturilor poate fi reformulată mai specific: dacă programul citește sau scrie date dintr-un anumit bloc al discului, atunci este foarte probabil ca în viitorul apropiat să existe mai multe operații de citire sau scriere. de date din același bloc.

Rolul memoriei de mare viteză (cache) aici este o serie de buffere situate în memoria sistemului. Fiecare buffer constă dintr-un antet și un bloc de date corespunzător dimensiunii unui bloc (sector) al discului. Antetul bufferului conține adresa blocului de disc, a cărui copie este în prezent conținută în buffer și mai multe stegulețe care caracterizează starea bufferului.

Când sistemul primește o cerere de citire sau scriere a unui anumit bloc de date de pe disc, acesta verifică mai întâi dacă o copie a acelui bloc se află în prezent într-unul dintre bufferele cache. Acest lucru necesită căutarea prin anteturile tamponului. Dacă blocul se găsește în cache, atunci discul nu va fi accesat. În schimb, datele sunt citite din buffer sau scrise în buffer, respectiv. În cazul scrierii datelor, trebuie menționat, de asemenea, în antetul bufferului, folosind un semnal special care a devenit bufferul " murdar ", Adică conținutul său nu se potrivește cu datele de pe disc.

Dacă blocul de disc necesar nu este găsit în cache, atunci trebuie să fie alocat un buffer pentru acesta. Problema este că numărul total de buffere cache este limitat. Pentru a da unul dintre ele pentru blocul necesar, unul dintre blocurile care au fost stocate acolo trebuie să fie „deplasat” din cache. În acest caz, dacă blocul prevenit este „murdar”, atunci acesta trebuie „curățat”, adică scris pe disc. Când este blocat un bloc „curat”, nu trebuie efectuate operații pe disc.

Ce bloc din cache ar trebui să alegeți pentru evacuare pentru a reduce numărul total de accesări pe disc? Aceasta este o problemă extrem de importantă și, dacă este rezolvată incorect, atunci întreaga funcționare a sistemului poate încetini din cauza acceselor constante pe disc.

Există o soluție teoretic optimă pentru această problemă, care este următoarea. Numărul de accesări pe disc va fi minim dacă de fiecare dată când selectați pentru evacuare blocul de date care nu va fi accesat cel mai mult timp în viitor. Din păcate, este imposibil să se utilizeze această regulă în practică, deoarece secvența acceselor la blocurile de disc este imprevizibilă. Acest rezultat teoretic este util doar ca ideal de neatins cu care să comparăm rezultatele aplicării unor algoritmi de selecție mai realiști.

Dintre algoritmii utilizați în practică, cel mai bun este cel LRU (Cel mai puțin folosit recent, tradus slab „neutilizat de mult timp”). Constă în următoarele: blocul care nu a fost accesat pentru cel mai mult timp ar trebui să fie ales pentru deplasare. Aici, se utilizează principiul localității linkurilor: deoarece nu au existat apeluri de mult timp, atunci, probabil, nu vor mai fi în viitorul apropiat.

Cum este implementată în practică selecția de blocuri bazată pe regula LRU? Soluția evidentă este de a înregistra ora curentă în antetul său de fiecare dată când bufferul este accesat și, atunci când alegeți să preemptați, este prea greoaie și lentă pentru a căuta cea mai veche înregistrare. Există o oportunitate mult mai bună.

Toate bufferele cache sunt legate într-o listă liniară. Antetul fiecărui buffer stochează o referință la următorul buffer în ordinea listei (de fapt, indexul acestui buffer este stocat în matricea buffer). De fiecare dată când un bloc de date este accesat pentru citire sau scriere, tamponul corespunzător este, de asemenea, mutat la sfârșitul listei. Aceasta nu înseamnă mutarea datelor stocate în buffer, ci doar câteva linkuri din anteturi.

Ca urmare a deplasării constante a blocurilor folosite la sfârșitul listei tampon, această listă este sortată în ordine crescătoare a ultimului timp de acces. La începutul listei se află tamponul ale cărui date nu au fost accesate pentru cel mai mult timp. El este ceea ce avem nevoie ca candidat la represiune.

În fig. 2-3 arată o serie de buffere legate într-o listă.

Acum despre tampoanele murdare. În ce cazuri ar trebui „curățate”, adică scrierea unui bloc de date din memoria tampon cache pe disc? Există trei astfel de cazuri.

· Selectarea unui bloc pentru evacuare din cache.

· Închiderea fișierului căruia îi aparțin blocurile murdare. Se acceptă în general că, atunci când un fișier este închis, acesta trebuie salvat pe disc.

· Operațiunea de compensare forțată a tuturor bufferelor sau numai a bufferelor legate de un anumit fișier. O operațiune similară poate fi efectuată pentru a îmbunătăți fiabilitatea stocării datelor, ca asigurare împotriva eventualelor defecțiuni. În sistemul de operare UNIX, de exemplu, spălarea tuturor bufferelor se efectuează în mod tradițional la fiecare 30 de secunde.

Ar trebui să se recunoască faptul că stocarea în cache a operațiilor de scriere pe disc, spre deosebire de stocarea în cache a citirilor, prezintă întotdeauna un anumit risc de pierdere a datelor. În caz de defectare accidentală a sistemului, întrerupere a curentului electric etc. se poate dovedi că Informații importante care ar fi trebuit scris pe disc s-a blocat în tampoanele cache murdare și, prin urmare, s-a pierdut. Acesta este un preț inevitabil de plătit pentru o creștere semnificativă a performanței sistemului. Programele care necesită o fiabilitate ridicată a lucrului cu date (de exemplu, programe bancare) de obicei scriu date direct pe disc. În acest caz, cache-ul fie nu este deloc utilizat, fie o copie a datelor este scrisă în memoria tampon cache, care poate fi utilă pentru operațiile de citire ulterioare.

Blocajul de stocare în cache a discului constă în blocarea de date necesară în cache. Așa cum s-a descris mai sus, sistemul analizează anteturile tampon pentru aceasta. Dacă cache-ul este format din câteva sute de buffere, timpul de căutare va fi vizibil. Unul dintre posibilele trucuri de accelerare a căutării UNIX este prezentat în Fig. 2-4.

Pe UNIX, fiecare buffer cache poate apărea simultan în două liste liniare. Una dintre acestea, numită „lista blocurilor gratuite”, este lista familiară LRU utilizată pentru a determina blocul de evacuat. Gratuit nu înseamnă gol; în acest caz, acest cuvânt înseamnă un bloc care nu este ocupat în prezent de o operație de citire / scriere efectuată de un anumit proces. O altă listă se numește „lanț hash” și este utilizată pentru a accelera căutarea blocului dorit.

Când scrieți pe datele tampon corespunzătoare unui anumit bloc al discului, numărul lanțului hash, în care va fi plasat acest buffer, este determinat ca restul împărțirii numărului blocului cu N - numărul lanțurilor hash. Pentru claritate, figura a adoptat valoarea N = 10. Astfel, blocurile cu numerele 120, 40, 90 cad în lanțul 0, blocurile 91, 1, 71 - în lanțul 1 etc. Când sistemul caută în cache un bloc cu un anumit număr, în primul rând, după numărul blocului, determină în care dintre lanțurile de hash trebuie să se afle acest bloc. Dacă blocul nu se află în acest lanț, atunci nu este deloc în cache. În acest fel, este posibil să scurtați căutarea cu un factor de N în cel mai bun caz (dacă toate lanțurile au aceeași lungime).

Mutarea unui buffer de la un lanț hash la altul, cum ar fi mutarea acestuia la sfârșitul listei gratuite, nu necesită rescrierea întregului bloc de date în memorie și se efectuează prin schimbarea referințelor din antetele blocului.

O altă caracteristică a memorării în cache a discului UNIX este că atunci când se găsesc tampoane murdare la începutul listei gratuite, sistemul începe să le spele, dar nu așteaptă finalizarea acestor procese, ci selectează primul bloc curat din listă pentru evacuare. Când completarea este completată, blocurile sunt returnate în partea de sus a listei gratuite, rămânând primii candidați pentru preempțiune.