Welk schrift is goed? Een blik op I / O-cachemethoden

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 25 Juni- 2024
Anonim
The Great Gildersleeve: Gildy’s New Car / Leroy Has the Flu / Gildy Needs a Hobby
Video: The Great Gildersleeve: Gildy’s New Car / Leroy Has the Flu / Gildy Needs a Hobby

Inhoud


Bron: Kgtoh / Dreamstime.com

Afhaal:

De snelheid van een applicatie is grotendeels afhankelijk van de I / O-snelheid van de cache. Hier vergelijken we verschillende cache I / O-methoden.

Applicatieprestaties zijn geworteld in snelheid - snelheid bij het voltooien van de lees- en schrijfverzoeken die uw applicaties van uw infrastructuur eisen. Opslag is verantwoordelijk voor de snelheid van het retourneren van I / O-aanvragen (invoer / uitvoer) en de gekozen methode om het schrijven te plegen en het lezen te leveren, heeft een grote invloed op de prestaties van de toepassing. Een veel voorkomende methode in de hedendaagse industrie is het gebruik van SSD's voor caching op traditionele spinning-schijfopslag, hybride arrays of all-flash arrays. De meeste caching-oplossingen hebben het lezen van applicaties versneld, maar de echte vraag blijft: "Welke schrijfbewerking is juist?"

Laten we eens kijken waarom schrijfoptimalisatie uw applicatieprestaties zo ingrijpend beïnvloedt. Write I / O houdt in dat het nieuwe gegevens zijn die niet op uw onderliggende opslag zijn geschreven. In traditionele SAN-opslag worden schrijfbewerkingen bijvoorbeeld rechtstreeks op de onderliggende opslag geschreven en vervolgens teruggestuurd naar de toepassing. Met toepassingen die voortdurend nieuwe gegevens schrijven, vooral grote database-toepassingen (SQL, enz.), Kunnen traditionele draaiende schijven het niet bijhouden. Caching op SSD's werd een oplossing waarmee schrijven lokaal en in de cache kon worden geschreven op basis van de frequentie van de aanvraag; Er zijn echter verschillende methoden voor de relatie tussen de schrijfcache en de onderliggende opslag die een enorm verschil in prestaties veroorzaken.


Dit zijn de 3 vormen van I / O-schrijven:

  1. Write-Around (rond de cache)
  2. Doorschrijven (via de cache)
  3. Terugschrijven (vanuit de cache)

Alle drie vormen hebben verschillende voordelen die voornamelijk zijn gebaseerd op het type gegevens dat wordt geschreven: sequentieel versus willekeurig. Sequentiële I / O is het meest geoptimaliseerd door de onderliggende schijf (bijvoorbeeld bestanden of videostreams), terwijl willekeurige I / O's worden geoptimaliseerd door de cache. De meeste caching-apparaten hebben niet de dynamische intelligentie om de vorm van schrijftechnologie te wijzigen op basis van het type gegevens. Laten we het verschil begrijpen tussen de drie vormen van I / O-schrijven.

Write-Around

Write-around, ook bekend als alleen-lezen cachemodus, is puur nuttig om ruimte vrij te maken om lezingen in de cache op te slaan. Inkomende I / O raakt nooit de cache. I / O's worden rechtstreeks naar permanente opslag geschreven zonder gegevens te cachen.


Wat is mogelijk het voordeel van de cache als deze niet wordt gebruikt? Het helpt de cache te verminderen die wordt overspoeld met schrijf-I / O die niet later opnieuw zal worden gelezen, maar heeft het nadeel dat een leesverzoek voor recent geschreven gegevens een "cache-misser" zal veroorzaken en moet worden gelezen uit langzamere bulkopslag en ervaar hogere latentie. Als uw applicatie transactionele is, zoals de meeste missiekritieke applicaties, dan zal de applicatiesnelheid vertragen en zullen I / O-wachtrijen toenemen. In wezen zou de waarde van deze modus voor zeldzame gevallen zijn, omdat deze tijdrovend, langzaam en niet performant is.

Schrijven door middel van

Deze methode wordt tegenwoordig vaak gebruikt in caching- en hybride opslagoplossingen. Doorschrijven staat bekend als een leescachemodus, wat betekent dat alle gegevens tegelijkertijd naar de cache en de onderliggende opslag worden geschreven. Het schrijven wordt ALLEEN als voltooid beschouwd nadat het naar uw opslag is geschreven. Klinkt eigenlijk best veilig ... maar er is een snelheidsprobleem.

Dit is het probleem: elke schrijfbewerking wordt twee keer gedaan, in de cache en vervolgens in permanente opslag. Voordat toepassingen kunnen doorgaan, moet de permanente opslag de I / O-toewijzing terugsturen naar de cache en vervolgens terug naar de toepassingen. Deze methode wordt meestal geïmplementeerd voor faalbestendigheid en om te voorkomen dat een failover- of HA-strategie met cache wordt geïmplementeerd, omdat gegevens op beide locaties aanwezig zijn. Write-Through kent echter latentie, omdat de I / O-toewijzing wordt bepaald door de snelheid van de permanente opslag, wat niet overeenkomt met de snelheden van CPU en netwerken. U bent slechts zo snel als uw langzaamste component en Write-Through kan applicatiesnelheid kritiek belemmeren.

Geen bugs, geen stress - Uw stapsgewijze handleiding voor het creëren van levensveranderende software zonder uw leven te vernietigen

U kunt uw programmeervaardigheden niet verbeteren als niemand om softwarekwaliteit geeft.

Terugschrijven

Terugschrijven verbetert de systeemresultaten op het gebied van snelheid - omdat het systeem niet hoeft te wachten tot schrijven naar onderliggende opslag gaat.

Wanneer gegevens binnenkomen om te worden geschreven, zal Write-Back de gegevens in de cache plaatsen, een "helemaal klaar", en de gegevens bewaren voor later schrijven naar de opslagschijf.

Dit lost veel van de latentieproblemen op, omdat het systeem niet hoeft te wachten op die diepe schrijvers.

Met de juiste ondersteuning kan Write-Back de beste methode zijn voor caching in meerdere fasen. Het helpt wanneer de cache grote hoeveelheden geheugen heeft (d.w.z. geheugen gemeten in terabytes, niet gigabytes) om grote hoeveelheden activiteit te verwerken. Geavanceerde systemen zullen ook meer dan één solid-state schijf nodig hebben, wat kosten kan toevoegen. Het is van cruciaal belang om rekening te houden met scenario's zoals stroomuitval of andere situaties waarin kritieke gegevens verloren kunnen gaan. Maar met de juiste 'cachebescherming' kan Write-Back een architectuur met weinig nadelen echt versnellen. Write-Back-systemen kunnen bijvoorbeeld gebruik maken van RAID of redundante ontwerpen om gegevens veilig te houden.

Nog ingewikkelder systemen zullen de cache en het SAN of de onderliggende opslagschijf helpen om met elkaar te werken als "als dat nodig is", waarbij de delegatie schrijft naar de diepe opslag of de cache, afhankelijk van de werklast van de schijf.

De ontwerpfilosofie van Write-Back is er een die de probleemoplossing weerspiegelt die de geavanceerde systemen voor gegevensverwerking van tegenwoordig voor grote taken met zich meebrengen. Door een complexere architectuur te maken en een cache op een complexe manier te gebruiken, vernietigt Write-Back latentieproblemen, en hoewel het mogelijk meer overhead vereist, zorgt het voor een betere systeemgroei en minder groeipijnen.