Care scriere este corect? O privire la metodele de cache I / O

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 25 Iunie 2024
Anonim
Synology 2021 — System Management with DSM 7.0
Video: Synology 2021 — System Management with DSM 7.0

Conţinut


Sursa: Kgtoh / Dreamstime.com

La pachet:

Viteza aplicațiilor depinde în mare măsură de viteza I / O din cache. Aici comparăm diferite metode de E / S cache.

Performanța aplicației este înrădăcinată în viteză - în completarea cererilor de citire și scriere solicitate de aplicațiile dvs. de la infrastructura dvs. Depozitarea este responsabilă pentru viteza de returnare a solicitărilor de I / O (intrare / ieșire), iar metoda aleasă pentru a comite scrierea și livrarea lecturilor are un impact profund asupra performanței aplicației. O metodă obișnuită în industria de astăzi este utilizarea SSD-urilor pentru a pune în cache stocarea tradițională a discurilor de filare, matricele hibride sau matricile cu bliț complet. Cele mai multe soluții de memorie în cache au citit accelerat pentru aplicații, însă adevărata întrebare rămâne: „Ce scriere este corect?”

Să ne uităm de ce optimizarea scrierii afectează atât de drastic performanța aplicației. I / O de scriere implică faptul că este vorba de date noi care nu sunt scrise pe stocarea de bază. În stocarea SAN tradițională, de exemplu, scrierea este scrisă direct pe stocarea de bază și apoi returnată în aplicație. Cu aplicațiile care scriu în mod constant date noi, în principal aplicații mari de baze de date (SQL, etc.), discurile de filare tradiționale nu se pot menține. Caching-ul pe SSD-uri a devenit o soluție care a permis scrierea la nivel local și scrierea în cache în funcție de frecvența cererii aplicației; cu toate acestea, există mai multe metode pentru relația dintre scrierea-cache și stocarea de bază care provoacă o diferență uriașă de performanță.


Acestea sunt cele 3 forme de scriere I / O:

  1. Write-Around (în jurul memoriei cache)
  2. Write-Through (prin cache)
  3. Write-Back (din cache)

Toate cele trei forme au beneficii diferite, care se bazează în principal pe tipul de date scrise: secvențiale vs. aleatorii. I / O secvențială este cea mai optimizată de discul de bază (fișiere sau fluxuri video, de exemplu), în timp ce E / S aleatoare sunt optimizate de cache. Majoritatea aparatelor de cache nu au inteligența dinamică pentru a schimba forma tehnologiei de scriere în funcție de tipul de date. Să înțelegem diferența dintre cele trei forme de scriere I / O.

Scrie-around

Scrierea în jurul, cunoscută și sub denumirea de modul de memorie în cache numai în citire, este benefică doar pentru a elibera spațiu pentru citirile din cache. I / O de intrare nu atinge niciodată memoria cache. E / S-urile sunt scrise direct în stocare permanentă, fără a memora în cache date.


Care ar putea fi beneficiul cache-ului dacă nu este utilizat? Acesta ajută la reducerea cache-ului inundat cu I / O de scriere care nu va fi re-citită ulterior, dar are dezavantajul că o cerere de citire pentru datele scrise recent va crea o „ratare a memoriei în cache” și trebuie citită din stocarea mai lentă în vrac și experimentați o latență mai mare. Dacă aplicația dvs. este tranzacțională, așa cum sunt cele mai multe aplicații critice pentru misiune, viteza aplicației va încetini și cozile I / O vor crește. În esență, valoarea acestui mod ar fi pentru cazuri rare de utilizare, deoarece consumă timp, lent și nu este performantă.

Scrie prin

Această metodă este folosită în mod curent în soluțiile de stocare hibridă în cache și hibrid. Modul de scriere este cunoscut sub denumirea de mod de citire în cache, ceea ce înseamnă că toate datele sunt scrise în cache și stocarea de bază în același timp. Scrierea este considerată DOAR completă odată ce a fost scrisă în stocarea dvs. Pare destul de sigur de fapt ... dar există un dezavantaj al vitezei.

Iată problema: fiecare operație de scriere se face de două ori, în cache și apoi în stocare permanentă. Înainte ca aplicațiile să poată continua, stocarea permanentă trebuie să returneze angajamentul I / O în cache, apoi înapoi la aplicații. Această metodă este implementată în mod obișnuit pentru rezistența la eșec și pentru a evita implementarea unei strategii de failover sau HA cu cache, deoarece datele trăiesc în ambele locații. Totuși, Writ-Through are o latență, deoarece angajamentul de I / O este determinat de viteza de stocare permanentă, care nu este potrivită pentru viteza procesorului și a rețelei. Sunteți la fel de rapid ca și cea mai lentă componentă, iar Writ-Through poate împiedica critic viteza aplicației.

Fără bug-uri, fără stres - Ghidul dvs. pas cu pas pentru crearea de programe care schimbă viața fără a vă distruge viața

Nu îți poți îmbunătăți abilitățile de programare atunci când nimeni nu îi pasă de calitatea software-ului.

Write-back

Write-Back îmbunătățește rezultatele sistemului în ceea ce privește viteza - deoarece sistemul nu trebuie să aștepte scrierea pentru a merge la stocarea de bază.

Când datele vor fi scrise, Writ-Back va introduce datele în cache, un „totul făcut” și va păstra datele pentru scrierea pe discul de stocare ulterior.

Acest lucru rezolvă o mulțime de probleme de latență, deoarece sistemul nu trebuie să aștepte aceste scrieri profunde.

Cu suportul adecvat, Writ-Back poate fi cea mai bună metodă pentru cache-ul în mai multe etape. Ajută atunci când memoria cache are cantități mari de memorie (adică memorie măsurată în terabyți, nu în gigabyte) pentru a gestiona volume mari de activitate. Sistemele sofisticate vor avea, de asemenea, nevoie de mai mult de o unitate de stare solidă, care poate adăuga costuri. Este extrem de important să avem în vedere scenarii precum întreruperea curentului electric sau alte situații în care datele critice pot fi pierdute. Dar, cu „protecția cache” potrivită, Writ-Back poate accelera într-adevăr o arhitectură cu puține părți în jos. De exemplu, sistemele Writ-Back pot folosi modele RAID sau redundante pentru a păstra datele în siguranță.

Și sisteme mai elaborate vor ajuta cache-ul și SAN-ul sau discul de stocare subiacent să funcționeze unul cu celălalt pe baza „după cum este necesar”, delegând scrie fie stocarea profundă, fie memoria cache, în funcție de volumul de lucru al discului.

Filozofia de proiectare a scrierii înapoi este una care reflectă rezolvarea problemelor pe care sistemele avansate de manipulare a datelor le aduc la noi sarcini. Prin crearea unei arhitecturi mai complexe și folosirea unui cache într-un mod complex, Write-Back distruge problemele de latență și, deși poate necesita mai mult aer, permite o creștere mai bună a sistemului și mai puține dureri de creștere.