Alin ang Sumulat ay Tama? Isang pagtingin sa Mga pamamaraan ng I / O Caching

May -Akda: Laura McKinney
Petsa Ng Paglikha: 1 Abril 2021
I -Update Ang Petsa: 25 Hunyo 2024
Anonim
ОШИБКИ В САНТЕХНИКЕ! | Как нельзя делать монтаж канализации своими руками
Video.: ОШИБКИ В САНТЕХНИКЕ! | Как нельзя делать монтаж канализации своими руками

Nilalaman


Pinagmulan: Kgtoh / Dreamstime.com

Takeaway:

Ang isang bilis ng aplikasyon ay higit sa lahat ay nakasalalay sa bilis ng I / O bilis ng cache. Narito ihambing namin ang iba't ibang mga pamamaraan ng cache I / O.

Ang pagganap ng aplikasyon ay naka-ugat sa bilis - bilis sa pagkumpleto ng basahin at isulat ang mga kahilingan na hiniling ng iyong mga aplikasyon mula sa iyong imprastraktura. Ang pag-iimbak ay responsable para sa bilis ng pagbabalik ng mga kahilingan sa I / O (input / output), at ang pamamaraan na napiling gawin ang mga nagsusulat at maihatid ang mga nabasa ay may malaking epekto sa pagganap ng aplikasyon. Ang isang karaniwang pamamaraan sa industriya ngayon ay ang paggamit ng mga SSD para sa caching sa tradisyonal na pag-iimbak ng disk sa pag-iimbak, mga hybrid na arrays o all-flash arrays. Karamihan sa mga solusyon sa caching ay pinabilis ang mga nabasa para sa mga aplikasyon, ngunit ang totoong tanong ay nananatiling, "Alin ang sumulat ay tama?"


Tingnan natin kung bakit nakakaapekto sa pagganap ng iyong aplikasyon ang pag-optimize ng pagsusulat. Sumulat I / O ay nagpapahiwatig na ito ay bagong data na hindi nakasulat sa iyong pinagbabatayan na imbakan. Sa tradisyunal na imbakan ng SAN, halimbawa, ang mga sumusulat ay nakasulat nang direkta sa pinagbabatayan na imbakan at pagkatapos ay ibabalik sa application. Sa mga application na patuloy na sumusulat ng mga bagong data, lalo na ang mga malalaking database application (SQL, atbp.), Hindi mapapanatili ang tradisyonal na mga disk sa pag-ikot. Ang pag-cache sa SSD ay naging isang solusyon na pinapayagan ang mga nagsusulat na maisulat sa lokal at naka-cache batay sa dalas ng demand ng aplikasyon; gayunpaman, may ilang mga pamamaraan sa pakikipag-ugnayan ng sulat-cache sa pinagbabatayan na imbakan na nagdudulot ng malaking pagkakaiba sa pagganap.

Ito ang 3 anyo ng pagsulat ng I / O:

  1. Sumulat-Sa paligid (sa paligid ng cache)
  2. Sumulat-through (sa pamamagitan ng cache)
  3. Sumulat-Bumalik (mula sa cache)

Ang lahat ng tatlong mga form ay may iba't ibang mga benepisyo na batay sa pangunahing uri ng data na nakasulat: sunud-sunod kumpara sa random. Ang Sequential I / O ay ang pinaka-optimize ng pinagbabatayan ng disk (mga file o mga stream ng video halimbawa), habang ang random na I / Os ay na-optimize ng cache. Karamihan sa mga gamit sa caching ay walang dynamic na katalinuhan upang baguhin ang anyo ng teknolohiya ng pagsulat batay sa uri ng data. Unawain natin ang pagkakaiba sa pagitan ng tatlong anyo ng pagsulat ng I / O.


Sumulat-sa paligid

Sumulat-sa paligid, na kilala rin bilang read-only caching mode, ay kapaki-pakinabang na puro libre ang puwang sa mga nabasa sa cache. Ang papasok na I / O ay hindi kailanman tumatama sa cache. Ako / Os ay nakasulat nang direkta sa permanenteng imbakan nang walang pag-cache ng anumang data.

Ano ang maaaring maging pakinabang ng cache kung hindi ito ginagamit? Tumutulong ito na mabawasan ang cache na binabaha sa sulat na I / O na hindi kasunod na muling basahin, ngunit may kakulangan na ang isang kahilingan sa pagbasa para sa kamakailang nakasulat na data ay lilikha ng isang "cache miss" at kailangang basahin mula sa mas mabagal na imbakan ng bulkan at makakaranas ng mas mataas na latency. Kung ang iyong aplikasyon ay transactional, dahil ang karamihan sa mga kritikal na aplikasyon ng misyon ay, ang bilis ng aplikasyon ay babagal at lalago ako / O. Talagang ang halaga ng mode na ito ay para sa mga bihirang kaso ng paggamit dahil napapanahon, mabagal, at hindi performant.

Isulat sa pamamagitan ng

Ang pamamaraang ito ay karaniwang ginagamit sa cache at hybrid na mga solusyon sa imbakan ngayon. Ang pagsulat ay kilala bilang isang mode ng pagbasa caching, nangangahulugan na ang lahat ng data ay nakasulat sa cache at ang pinagbabatayan na imbakan nang sabay. Ang isulat ay LAMANG itinuturing na kumpleto sa sandaling ito ay nakasulat sa iyong imbakan. Tunog na medyo ligtas talaga ... ngunit mayroong isang sagabal na bilis.

Narito ang isyu: Ang bawat operasyon ng pagsulat ay ginagawa nang dalawang beses, sa cache at pagkatapos ay sa permanenteng imbakan. Bago magpatuloy ang mga aplikasyon, ang permanenteng imbakan ay dapat ibalik ang I / O na bumalik sa cache, pagkatapos ay bumalik sa mga aplikasyon. Ang pamamaraang ito ay karaniwang ipinatupad para sa kabiguan ng pagkabigo at upang maiwasan ang pagpapatupad ng isang diskarte sa failover o HA na may cache dahil ang data ay nakatira sa parehong mga lokasyon. Gayunpaman, ang Writing-through incurs latency bilang ang I / O ay tinutukoy ng bilis ng permanenteng imbakan, na kung saan ay hindi katugma sa bilis ng CPU at networking. Mabilis ka lamang bilang iyong pinakamabagal na bahagi, at ang Pagsulat-Saan ay maaaring critically hamstring bilis ng aplikasyon.

Walang Mga bug, Walang Stress - Ang Iyong Hakbang sa Hakbang Patnubay sa Paglikha ng Software na Pagbabago ng Buhay nang Walang Pagsira sa Iyong Buhay

Hindi mo maaaring mapabuti ang iyong mga kasanayan sa pag-programming kapag walang nagmamalasakit sa kalidad ng software.

Sagutin ang sulat

Pinapabuti ng Writing-Back ang mga kinalabasan ng system sa mga tuntunin ng bilis - dahil hindi na kailangang maghintay ang system para sa mga magsusulat na pumunta sa pinagbabatayan na imbakan.

Kapag naisulat ang data, isusulat ng Isulat-Balik ang data sa cache, isang "tapos na", at panatilihin ang data para isulat sa imbakan ng disk sa ibang pagkakataon.

Malulutas nito ang maraming mga problema sa latency, dahil ang system ay hindi kailangang maghintay para sa mga malalim na nagsusulat.

Gamit ang tamang suporta, ang Writing-Back ay maaaring maging pinakamahusay na pamamaraan para sa multi-stage caching. Nakakatulong ito kapag ang cache ay may malaking halaga ng memorya (i.e. memorya na sinusukat sa mga terabytes, hindi gigabytes) upang mahawakan ang malalaking dami ng aktibidad. Ang mga sopistikadong sistema ay kakailanganin din ng higit sa isang solidong drive ng estado, na maaaring magdagdag ng gastos. Mahalaga na isaalang-alang ang mga sitwasyon tulad ng lakas ng kapangyarihan o iba pang mga sitwasyon kung saan maaaring mawala ang mga kritikal na data. Ngunit sa tamang "proteksyon ng cache," ang Isulat-Balik ay maaaring mapabilis ang isang arkitektura na may ilang mga down-side. Halimbawa, ang mga sistema ng Writing-Back ay maaaring gumamit ng mga disenyo ng RAID o kalabisan upang mapanatiling ligtas ang data.

Kahit na mas detalyadong mga sistema ay makakatulong sa cache at ang SAN o pinagbabatayan na disk sa pagtatrabaho upang gumana sa bawat isa bilang "as-kinakailangang batayan," ang pagsulat ng delegasyon sa alinman sa malalim na imbakan o ang cache depende sa workload ng disk.

Ang pilosopiya ng disenyo ng Writing-Back ay isa na sumasalamin sa paglutas ng problema na dala ng mga advanced na sistema ng paghawak ng data sa mga malalaking gawain. Sa pamamagitan ng paglikha ng isang mas kumplikadong arkitektura, at paggamit ng isang cache sa isang kumplikadong paraan, sinisira ng Writing-Back ang mga problema sa latency, at bagaman nangangailangan ito ng higit pang overhead, pinapayagan nito para sa mas mahusay na paglaki ng system, at mas kaunting mga lumalagong sakit.