Luas stórála oiriúnach do srl? Iarraimid fio

Luas stórála oiriúnach do srl? Iarraimid fio

Gearrscéal faoi fio agus srl

Feidhmíocht braisle srl ag brath go mór ar fheidhmíocht a stórála. onnmhairíonn etcd roinnt méadrachta go Prometheuschun an fhaisnéis feidhmíochta stórála a theastaíonn uait a sholáthar. Mar shampla, an méadrach wal_fsync_duration_seconds. Deir an doiciméadacht etc: Le go measfar an stóráil tapa go leor, ní mór don 99ú peircintíl den mhéadrach seo a bheith níos lú ná 10 ms. Má tá sé beartaithe agat braisle etcd a reáchtáil ar mheaisíní Linux agus más mian leat a mheas an bhfuil do stóráil (cosúil le SSD) tapa go leor, is féidir leat úsáid a bhaint as fio is uirlis choitianta é chun oibríochtaí I/O a thástáil. Rith an t-ordú seo a leanas, áit a bhfuil sonraí tástála an eolaire faoin bpointe gléasta stórála:

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

Ní gá duit ach breathnú ar na torthaí agus seiceáil go bhfuil an 99ú peircintíl den ré sioncronú sonraí níos lú ná 10 ms. Má tá, tá stóráil tapa go leor agat. Seo sampla de na torthaí:

  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]

Nótaí

  • Rinneamar luachanna na bparaiméadar -size agus -bs a shaincheapadh dár gcás sonrach. Chun torthaí úsáideacha a fháil ó fio, cuir isteach do luachanna. Cá bhfaighidh mé iad? Léigh, conas a d’fhoghlaimíomar fio a chumrú.
  • Le linn na tástála, tagann an t-ualach I/O ar fad ó fio. I gcás fíorshaol, is dócha go mbeidh iarratais scríofa eile ag teacht isteach sa stóras seachas iad siúd a bhaineann le wal_fsync_duration_seconds. Méadóidh ualach breise an luach wal_fsync_duration_seconds. Mar sin má tá an 99ú peircintíl beagnach 10ms, níl do stóráil tapa go leor.
  • Tóg an leagan fio nach ísle ná 3.5 (ní léiríonn na cinn roimhe seo peircintílí fad fdatasync).
  • Níl anseo thuas ach blúire de thorthaí fio.

Scéal fada faoi fio agus srl

Cad é WAL i etc

Go hiondúil úsáidtear bunachair shonraí logáil ar aghaidh; srl úsáideann freisin é. Ní phléifimid logáil chun tosaigh (WAL) go mion anseo. Is leor dúinn fios a bheith againn go gcoimeádann gach ball den chnuasach srl i stór leanúnach é. srl. scríobhann sé gach oibríocht ar phéirí eochairluacha (cosúil le nuashonrú) chuig WAL sula gcuirtear i bhfeidhm ar an siopa iad. Má thuairteanna agus má atosaíonn duine de na baill stórála idir na pictiúir, is féidir leis idirbhearta a chur ar ais go háitiúil ón ngrianghraf deireanach ag baint úsáide as ábhar an WAL.

Nuair a chuireann cliant eochair le stór eochairluacha nó nuair a nuashonraíonn sé luach eochrach atá ann cheana féin, scríobhann srld taifead den oibríocht seo chuig WAL, ar gnáthchomhad é i stóráil mharthanach. srl. NÍ MÓR duit a bheith iomlán cinnte gur tharla an scríobh WAL i ndáiríre sula leanann an phróiseáil ar aghaidh. I Linux, ní leor glao córais amháin chuige seo scríobh, toisc go bhféadfaí moill a chur ar scríobh chuig an stór fisiciúil. Mar shampla, féadfaidh Linux iontráil WAL a stóráil go sealadach i dtaisce i gcuimhne eithne (cosúil le taisce an leathanaigh). Agus d'fhonn na sonraí a scríobh go beacht chuig stóráil leanúnach, tá gá le glao an chórais fdatasync tar éis taifeadta, agus úsáideann etcd díreach é (mar atá le feiceáil mar thoradh ar an obair stríoc, áit a bhfuil 8 ina thuairisceoir comhaid WAL):

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

Ar an drochuair, ní ar an toirt a scríobhtar chuig stóráil mharthanach. Má tá an glao fdatasync mall, díghrádóidh feidhmíocht an chórais srl. Deir an doiciméadacht etcgo meastar go bhfuil an stóráil tapa go leor má thógann an 99ú peircintíl de ghlaonna fdatasync níos lú ná 10 ms chun scríobh chuig an gcomhad WAL. Tá méadracht stórála úsáideach eile ann, ach is é seo an t-aon mhéadrach a bhfuilimid ag caint faoi sa phost seo.

Measúnú stórála ag baint úsáide as fio

Más gá duit a mheas cibé an bhfuil do stór oiriúnach do srl., bain úsáid as fio, uirlis tástála ualaigh I/O a bhfuil an-tóir air. Ba chóir a mheabhrú gur féidir le hoibríochtaí diosca a bheith an-difriúil: sioncrónach agus asincrónach, go leor ranganna de ghlaonna córais, etc. Mar thoradh air sin, tá fio deacair go leor a úsáid. Tá go leor paraiméadair aige, agus cruthaíonn teaglaim éagsúla dá luachanna ualaí oibre I/O an-difriúla. Chun líon leordhóthanach a fháil le haghaidh srld, ba chóir duit a chinntiú go bhfuil an t-ualach scríofa tástála ó fio chomh gar agus is féidir don ualach iarbhír ó etcd agus comhaid WAL á scríobh.

Mar sin, caithfidh fio, ar a laghad, ualach de roinnt scríbhinní seicheamhacha a ghiniúint chuig an gcomhad, gach scríobh comhdhéanta de ghlao córais scríobhina dhiaidh sin glao an chórais fdatasync. Le haghaidh scríobhann fio seicheamhach, tá an rogha --rw=scríobh ag teastáil. Ionas go n-úsáideann fio glaoch an chórais scríobh agus é ag scríobh, seachas scriobh, is fiú an paraiméadar –ioengine=sync a shonrú. Ar deireadh, chun fdatasync a ghlaoch tar éis gach scríobh, ní mór duit an rogha --fdatasync=1 a chur leis. Baineann an dá rogha eile sa sampla seo (--size agus -bs) le cás sonrach. Sa chéad chuid eile taispeánfaimid duit conas iad a shocrú.

Cén fáth fio agus conas a d'fhoghlaim muid é a chumrú

Sa phost seo déanaimid cur síos ar chás fíor. Bhí braisle againn Kubernetes v1.13, a ndearnamar monatóireacht air ag baint úsáide as Prometheus. etcd v3.2.24 a óstáil ar SSD. Thaispeáin méadracht Etcd latency ró-ard le haghaidh fdatasync, fiú nuair nach raibh an bhraisle ag déanamh rud ar bith. Bhí na méadrachtaí aisteach agus ní raibh a fhios againn i ndáiríre cad a bhí i gceist leo. Is éard a bhí sa bhraisle ná meaisíní fíorúla, ba ghá a thuiscint cad é an fhadhb a bhí ann: sna SSDanna fisiceacha nó sa chiseal fíorúlaithe. Ina theannta sin, rinneamar athruithe go minic ar chumraíochtaí crua-earraí agus bogearraí, agus bhí bealach ag teastáil uainn chun a gcuid torthaí a mheas. D’fhéadfaimis etcd a rith i ngach cumraíocht agus breathnú ar mhéadracht Prometheus, ach is iomaí deacracht é sin. Bhíomar ag lorg bealach simplí go leor chun cumraíocht shonrach a mheas. Theastaigh uainn a sheiceáil ar thuig muid méadracht Prometheus srl i gceart.

Ach le haghaidh seo bhí sé riachtanach dhá fhadhb a réiteach. Ar dtús, cad é an t-ualach I/O a chruthaíonn srl agus tú ag scríobh chuig WAL? Cad iad na glaonna córais a úsáidtear? Cén méid atá sna postálacha? Ar an dara dul síos, má fhreagraímid na ceisteanna seo, conas is féidir linn ualach oibre den chineál céanna a atáirgeadh le fio? Ná déan dearmad gur uirlis an-solúbtha é fio le go leor roghanna. Réitíomar an dá fhadhb le cur chuige amháin - ag baint úsáide as orduithe lsof и stríoc. Taispeánann lsof na tuairisceoirí comhaid go léir a úsáideann próiseas agus na comhaid a bhaineann leo. Agus le strace is féidir leat staidéar a dhéanamh ar phróiseas atá ar siúl cheana féin nó tús a chur le próiseas agus staidéar a dhéanamh air. priontaí strace gach glao córais ón bpróiseas a bhfuil staidéar á dhéanamh air (agus a phróisis linbh). Tá an dara ceann an-tábhachtach, ós rud é go nglacann etcd cur chuige comhchosúil.

Ba é an chéad rud a rinneamar ná strace a úsáid chun staidéar a dhéanamh ar an bhfreastalaí srld do Kubernetes nuair nach raibh aon ualach ar an mbraisle. Chonaiceamar go raibh beagnach gach taifead WAL thart ar an méid céanna: 2200–2400 beart. Mar sin, san ordú ag tús an phoist, shonraigh muid an paraiméadar -bs = 2300 (ciallaíonn bs an méid i mbearta do gach iontráil fio). Tabhair faoi deara go mbraitheann méid na hiontrála srld ar an leagan srl, ar loingseoireacht, ar luachanna paraiméadar, etc. agus go mbíonn tionchar aige ar fhad an fdatasync. Má tá cás cosúil leis agat, scrúdaigh do phróisis etcd ag baint úsáide as strace chun na huimhreacha beachta a fháil amach.

Ansin, chun smaoineamh maith a fháil ar cad a dhéanann an córas comhaid etcd, ritheamar é le strace agus na roghanna -ffttT. Mar sin rinneamar iarracht staidéar a dhéanamh ar phróisis an linbh agus aschur gach ceann acu a thaifeadadh i gcomhad ar leith, agus freisin tuairiscí mionsonraithe a fháil faoi thús agus fad gach glao córais. D'úsáideamar lsof chun ár n-anailís ar an aschur strace a dheimhniú agus chun féachaint cén tuairisceoir comhaid a úsáideadh chun na críocha. Mar sin, ag baint úsáide as strace, fuair muid na torthaí a thaispeántar thuas. Dheimhnigh staitisticí ama sioncronaithe go bhfreagraíonn an wal_fsync_duration_seconds méadrach ó srld do ghlaonna fdatasync le tuairisceoirí comhaid WAL.

D'fhéachamar ar dhoiciméadú fio agus roghnaigh muid na paraiméadair dár script ionas go gcruthódh fio ualach cosúil le etcd. Rinneamar seiceáil freisin ar ghlaonna córais agus a n-fhad trí fio a rith, cosúil le etcd.

Roghnaíomar go cúramach luach an pharaiméadar --size, arb ionann é agus ualach iomlán I/O an fio. Is é ár gcás, is é seo an líon iomlán beart scríofa chuig an stóráil. Tharla sé go raibh sé comhréireach go díreach le líon na nglaonna ar an gcóras scríobh (agus fdatasync). I gcás luach áirithe bs, líon na nglaonna chuig fdatasync = méid/bs. Ós rud é go raibh suim againn sa pheircintíl, bhí go leor samplaí ag teastáil uainn le bheith iontaofa, agus ríomhamar gur leor 10^4 dúinn (is é sin 22 meibít). Má tá --size níos lú, d'fhéadfadh go dtarlódh asluitigh (mar shampla, tógann roinnt glaonna fdatasync níos faide ná mar is gnách agus cuireann siad isteach ar an 99ú peircintíl).

Bain triail as tú féin

Thaispeáin muid conas fio a úsáid agus fáil amach an bhfuil an stóráil tapa go leor le go n-éireoidh go maith le srl. Anois is féidir leat é seo a thriail go praiticiúil féin, ag baint úsáide as, mar shampla, meaisíní fíorúla le stóráil SSD i IBM Cloud.

Foinse: will.com

Add a comment