Sida loo hubiyo saxanka leh fio si loogu helo waxqabad ku filan iwm

Ogow. turjumi: Maqaalkani waa natiijada cilmi-baadhis yar oo ay sameeyeen injineerada IBM Cloud iyaga oo raadinaya xalinta dhibaatada dhabta ah ee la xidhiidha hawlgalka xogta iwm. Hawl la mid ah ayaa nagu habboonayd, si kastaba ha ahaatee, koorsada milicsiga iyo ficillada qorayaashu waxay noqon karaan kuwo xiiso leh marka la eego macnaha guud.

Sida loo hubiyo saxanka leh fio si loogu helo waxqabad ku filan iwm

Soo koobid kooban ee maqaalka oo dhan: fio iyo iwm

Waxqabadka kooxda iwmd waxay aad ugu tiirsan tahay xawaaraha kaydinta hoose. etcd waxay dhoofiyaan qiyaasaha Prometheus kala duwan si ay ula socdaan waxqabadka. Mid ka mid ah waa wal_fsync_duration_seconds. Warqadaha iwm waxay leedahaykaydintaas waxaa loo qaddarin karaa si degdeg ah haddii boqolkiiba 99 ee cabbirkan aanu ka badnayn 10 ms…

Haddii aad ka fekereyso inaad ku rakibto koox iwm mashiinnada Linux oo aad rabto inaad tijaabiso in darawallada (sida SSDs) ay ku filan yihiin, waxaan kugula talineynaa inaad isticmaasho tijaabiyaha I/O ee caanka ah ee la yiraahdo fiyo. Way ku filan tahay inaad socodsiiso amarka soo socda (directory test-data waa inay ku taal qaybta rakiban ee wadista la tijaabiyay):

fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytest

Waxa hadhay oo kaliya in la eego wax soo saarka oo la hubiyo in boqolkiiba 99 ku haboon yahay fdatasync 10 ms. Hadday sidaas tahay, markaa darawalkaagu si dhakhso leh ayuu u shaqaynayaa. Waa kan tusaale wax soo saarka:

fsync/fdatasync/sync_file_range:
  sync (usec): min=534, max=15766, avg=1273.08, stdev=1084.70
  sync percentiles (usec):
   | 1.00th=[ 553], 5.00th=[ 578], 10.00th=[ 594], 20.00th=[ 627],
   | 30.00th=[ 709], 40.00th=[ 750], 50.00th=[ 783], 60.00th=[ 1549],
   | 70.00th=[ 1729], 80.00th=[ 1991], 90.00th=[ 2180], 95.00th=[ 2278],
   | 99.00th=[ 2376], 99.50th=[ 9634], 99.90th=[15795], 99.95th=[15795],
   | 99.99th=[15795]

Dhawr qoraal ah:

  1. Tusaalaha kore, waxaan hagaajinnay cabbirrada --size и --bs kiis gaar ah. Si loo helo natiijo macno leh fio, qeex qiyamka ku haboon kiiskaaga isticmaalka. Sida loo doorto iyaga ayaa hoos looga hadli doonaa.
  2. Inta lagu jiro tijaabada kaliya fio waxay ku shubtaa nidaamka hoose ee diskka. Nolosha dhabta ah, waxay u badan tahay in hababka kale ay u qori doonaan diskka (marka laga reebo kuwa la xiriira wal_fsync_duration_seconds). Culayskan dheeraadka ah wuu kordhin karaa wal_fsync_duration_seconds. Si kale haddii loo dhigo, haddii boqolleyda 99-aad laga keenay tijaabinta fio, oo kaliya in ka yar 10 ms, waxaa jirta fursad wanaagsan in waxqabadka kaydintu aanu ku filnayn.
  3. Imtixaanka waxaad u baahan doontaa nooca fio aan ka hoosayn 3.5, sababtoo ah noocyadii hore iskuma geeyaan natiijooyinka fdatasync qaabka boqolleyda.
  4. Gabagabada kore waa qayb yar oo ka mid ah gabagabada guud fio.

Wax badan oo ku saabsan fio iyo iwm

Dhowr eray oo ku saabsan WALs iwm

Guud ahaan, database-yada ayaa la isticmaalaa goynta firfircoon (hor-qor-qorista, WAL). iwm ayaa sidoo kale saameeya. Ka doodista WAL waa mid ka baxsan xadka maqaalkan, laakiin ujeeddooyinkeena, waxaad u baahan tahay inaad ogaato waa in xubin kasta oo kutlada etcd ah ku kaydiso WAL kayd joogto ah. etcd waxay u qortaa qaar ka mid ah hawlaha kaydinta qiimaha muhiimka ah (sida cusboonaysiinta) WAL ka hor inta aan la fulin. Haddii noodu burburto oo uu dib u bilaabo inta u dhaxaysa sawir-qaadista, etcd waxay awoodi doontaa inay soo ceshato wax kala iibsiga tan iyo sawirkii hore ee ku salaysan waxa ku jira WAL.

Haddaba, mar kasta oo macmiilku ku daro furaha dukaanka KV ama uu cusboonaysiiyo qiimaha furaha jira, etcd waxa ay ku darayaan sharraxaadda hawlgalka WAL, kaas oo ah fayl joogto ah oo ku jira bakhaarka joogtada ah. etcd WAA inay hubiyaan 100% in galitaanka WAL dhab ahaantii la keydiyay kahor intaanay socon. Si tan loo gaaro Linux, kuma filna in la isticmaalo wicitaanka nidaamka write, maadaama hawlgalka qorista laftiisa warbaahinta jirku ay dib u dhici karto. Tusaale ahaan, Linux waxa laga yaabaa in ay WAL ku hayso kaydka kernel-ka ee xusuusta (tusaale, bogga khasnadda) in muddo ah. Si loo hubiyo in xogta loo qoro warbaahinta, nidaamka wicitaanka waa in la wacaa ka dib marka la qoro fdatasync - tani waa dhab ahaan waxa etcd sameeyo (sida aad ku arki karto wax soo saarka soo socda strace; Halkan 8 - Sharaxa faylka WAL):

21:23:09.894875 lseek(8, 0, SEEK_CUR)   = 12808 <0.000012>
21:23:09.894911 write(8, ".20210220361223255266632$1020103026"34"rn3fo"..., 2296) = 2296 <0.000130>
21:23:09.895041 fdatasync(8)            = 0 <0.008314>

Nasiib darro, qorista kaydinta joogtada ah waxay qaadataa waqti. Fulinta dheeraynta wicitaanada fdatasync waxay saameyn kartaa waxqabadka iwm. Dukumentiga kaydka tilmaamay, in waxqabadka ku filan ay lagama maarmaan tahay in boqolkiiba 99 ee muddada wicitaanada oo dhan fdatasync marka wax loo qorayo faylka WAL wuxuu ka yaraa 10 ms. Waxa jira cabbiro kale oo la xidhiidha kaydinta, laakiin maqaalkani waxa uu diiradda saari doonaa midkaas.

Ku qiimaynta kaydinta fio

Waxaad qiimeyn kartaa haddii kayd gaar ah uu ku habboon yahay in lagu isticmaalo iwm addoo isticmaalaya utility fiyo - tijaabiye I/O caan ah. Maskaxda ku hay in disk I / O uu ku dhici karo siyaabo badan oo kala duwan: sync / async, fasallo badan oo kala duwan oo syscall ah, iyo wixii la mid ah. Dhinaca kale ee qadaadiicda waa taas fio aad u adag in la isticmaalo. Utility wuxuu leeyahay xuduudo badan, iyo isku darka kala duwan ee qiyamkooda waxay keenaysaa natiijooyin gebi ahaanba kala duwan. Si aad u hesho qiyaas macquul ah oo ku saabsan etcd, waxaad u baahan tahay inaad hubiso in culayska qorista ee ay dhaliso fio uu aad ugu dhow yahay inta suurtogalka ah ee faylka WAL ee iwm.

  • Tani waxay ka dhigan tahay in la abuuray fio culaysku waa in uu ugu yaraan ahaadaa qoraalo taxane ah oo xidhiidhsan faylka, halkaas oo qoraal kastaa uu ka kooban yahay nidaamka wicitaanka writeku xiga fdatasync.
  • Si aad u suurtageliso qoraal taxane ah, waa inaad caddaa calanka --rw=write.
  • in fio qoray isagoo isticmaalaya wicitaano write (halkii loo yeeri lahaa nidaamka kale - tusaale ahaan, pwrite), isticmaal calanka --ioengine=sync.
  • Ugu danbayntii calanka --fdatasync=1 waxay hubisaa in mid kasta write waa in ay noqdaan fdatasync.
  • Labada halbeeg ee kale ee tusaalaheena ku jira waa: --size и --bs - way kala duwanaan kartaa iyadoo ku xidhan kiiska isticmaalka gaarka ah. Qaybta xigta waxay sharxi doontaa qaabayntooda.

Sababta aan u dooranay fio iyo sida aan u barannay sida loo dejiyo

Qoraalkani wuxuu ka yimid kiis dhab ah oo aan la kulannay. Waxaan ku haynay koox ku taal Kubernetes v1.13 oo leh la socodka Prometheus. SSD-yada waxa loo isticmaalay kayd ahaan iwmd v3.2.24. Qiyaasta iwm waxay muujiyeen daahitaanno aad u sarreeya fdatasync, xitaa markii kooxdu ay shaqo la'aan ahayd. Annaga, cabbiradani waxay u muuqdeen kuwo shaki badan, mana aanan hubin waxa dhabta ah ee ay matalaan. Intaa waxaa dheer, kooxdu waxay ka koobnayd mashiinnada casriga ah, markaa suurtagal maaha in la sheego in dib u dhigista ay sabab u tahay farsamaynta ama SSD ayaa lagu eedeeyay.

Intaa waxaa dheer, waxaan tixgelinnay isbeddello kala duwan oo ku saabsan qaabeynta qalabka iyo software-ka, sidaas darteed waxaan u baahanahay hab lagu qiimeeyo iyaga. Dabcan, waxaa suurtogal ah in lagu socodsiiyo etcd qaabeyn kasta oo la eego cabbirada Prometheus ee u dhigma, laakiin taasi waxay u baahan doontaa dadaal weyn. Waxa aan u baahanahay waxay ahayd hab fudud oo lagu qiimeeyo qaabayn gaar ah. Waxaan rabnay inaan tijaabino fahamkayaga cabbirrada Prometheus ee ka imanaya iwm.

Tani waxay u baahan tahay xalinta laba dhibaato:

  • Marka hore, muxuu u egyahay rarka I/O ee ay abuurto etcd marka wax loo qorayo faylasha WAL? Waa maxay wicitaanada nidaamka la isticmaalo? Waa maxay cabbirka blocks rikoorka?
  • Marka labaad, aan nidhaahno waxaan haynaa jawaabaha su'aalaha kor ku xusan. Sida loo soo saaro culeyska u dhigma fio? Ka dib oo dhan fio - utility aad u dabacsan oo leh cabbirro badan (tani way fududahay in la xaqiijiyo, tusaale ahaan, halkan - qiyaastii. turjumi.).

Waxaan ku xalinay labada dhibaato hab isku mid ah oo amar ku saleysan lsof и strace:

  • Iyada oo gargaar ah lsof Waxaad arki kartaa dhammaan sharraxayaasha faylka loo isticmaalo habka, iyo sidoo kale faylasha ay tixraacaan.
  • Iyada oo gargaar ah strace waxaad falanqeyn kartaa hanaan hore u socday ama aad maamuli kartaa habsocod oo aad daawato. Amarku wuxuu soo bandhigayaa dhammaan wicitaannada nidaamka lagu sameeyo habkan iyo, haddii loo baahdo, farcankiisa. Midda dambe waxay muhiim u tahay geeddi-socodyada fargeeto, iyo iwm waa mid ka mid ah hannaankaas.

Waxa ugu horreeya ee aan sameynay waxay ahayd inaan isticmaalno strace si loo baadho serferka iwmd ee kutlada Kubernetes inta ay shaqo la'aan tahay.

Sidaa darteed waxaa la ogaaday in baloogyada diiwaanka WAL ay yihiin kuwo aad u cufan, oo cabbirkoodu ahaa inta u dhaxaysa 2200-2400 bytes. Taasi waa sababta amarka bilowga maqaalkani u isticmaalo calanka --bs=2300 (bs waa cabbirka bytes ee block kasta oo qoraal ah gudaha fio).

Fadlan ogow in cabbirka qoraallada iwmd ay kala duwanaan karaan iyadoo ku xiran nooca, dejinta, qiyamka cabbirka, iwm. - waxay saamaysaa muddada fdatasync. Haddii aad leedahay kiis la mid ah isticmaalka, la falanqee strace hababkaaga etcd si aad u hesho qiyamka cusub.

Kadib, si aan u helno fikrad cad oo dhamaystiran oo ku saabsan sida etcd ula shaqeyso nidaamka faylka, waxaan ka bilownay hoos strace calammo leh -ffttT. Tani waxay suurtogal ka dhigtay in la qabto hababka ilmaha oo mid walba lagu qoro fayl gaar ah. Intaa waxaa dheer, macluumaad faahfaahsan oo ku saabsan wakhtiga bilowga iyo muddada wicitaan kasta oo nidaam ah ayaa la helay.

Waxaan sidoo kale isticmaalnay amarka lsofsi loo xaqiijiyo fahamkaaga wax-soo-saarka strace marka la eego fayl-fayleeyaha loo adeegsaday ujeeddada. Waxaan helay gunaanad strace, oo la mid ah kan sare. Waxqabadyada tirakoobka ee wakhtiyada is-dhexgalka ayaa xaqiijiyay in cabbirku wal_fsync_duration_seconds ka iwm fdatasync oo wata sharaxayaasha faylka WAL.

Si loo dhaliyo fio culeys shaqo oo la mid ah kan iwm, dukumeentiyada utility-ga ayaa la darsay waxaana la doortay cabbirrada ku habboon hawshayada. Waxaan xaqiijinay in wicitaanada nidaamka saxda ah ay socdaan waxaana ku xaqiijinay mudada ay soconayaan fio ka strace (sida la sameeyay haddii ay dhacdo iwm).

Fiiro gaar ah ayaa la siiyay si loo go'aamiyo qiimaha cabbirka --size. Waxay ka dhigan tahay wadarta guud ee culayska I/O ee ay keentay utility fio. Xaaladeena, tani waa tirada guud ee bytes loo qoray warbaahinta. Waxay si toos ah ugu dhigan tahay tirada wicitaanada write (iyo fdatasync). Wixii gaar ah bs tirada wicitaanada fdatasync si siman size / bs.

Maadaama aan xiisayneyno boqolleyda, waxaan rabnay in tirada shaybaaradu ay ahaato mid weyn oo ku filan inay noqoto mid muhiim ah. Oo go'aansaday in 10^4 (oo u dhiganta cabbirka 22 MB) ayaa ku filnaan doona. Qiimayaasha halbeegyada yaryar --size wuxuu bixiyay buuq badan (tusaale, wicitaano fdatasync, kaas oo qaata waqti aad uga dheer inta caadiga ah oo saameeya boqolkiiba 99).

Adiga ayay ku xiran tahay

Maqaalku wuxuu muujinayaa sida loo isticmaalo fio mid ayaa xukumi kara in warbaahinta loogu talagalay in lagu isticmaalo iwm ay si degdeg ah ugu filan tahay. Hadda adiga ayay kugu xiran tahay! Waxaad ku sahamin kartaa mashiinnada farsamada gacanta ee kaydinta SSD-ku-salaysan ee adeegga IBM Cloud.

PS ka turjumaan

Iyada oo kiisaska isticmaalka diyaarka ah fio Hawlaha kale, eeg dukumentiyo ama si toos ah kaydka mashruuca (waxaa jira qaar badan oo iyaga ka mid ah oo ku xusan dukumeentiyada).

PPS ka turjumaan

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment