Conas dioscaí a sheiceáil le fio le haghaidh feidhmíochta leordhóthanach le haghaidh etcd

Nóta. aistrigh.: Is é an t-alt seo ná torthaí mionthaighde a rinne innealtóirí IBM Cloud sa tóir ar réiteach ar fhíorfhadhb a bhaineann le feidhmiú an bhunachair shonraí srl. Bhí tasc den chineál céanna ábhartha dúinn, ach d’fhéadfadh cúrsa smaointe agus gníomhartha na n-údar a bheith suimiúil i gcomhthéacs níos leithne.

Conas dioscaí a sheiceáil le fio le haghaidh feidhmíochta leordhóthanach le haghaidh etcd

Achoimre ghairid ar an alt ar fad: fio agus srl

Tá feidhmíocht braisle srld ag brath go mór ar luas an stórais bhunúsach. onnmhairíonn etcd méadrachtaí Prometheus éagsúla chun monatóireacht a dhéanamh ar fheidhmíocht. Is é ceann acu wal_fsync_duration_seconds. Sna doiciméid le haghaidh etc a deir sé, is féidir an stóráil sin a mheas tapa go leor mura sáraíonn an 99ú peircintíl den mhéadrach seo 10 ms...

Má tá tú ag smaoineamh ar bhraisle srl a bhunú ar mheaisíní Linux agus más mian leat a thástáil an bhfuil tiomántáin stórála (cosúil le SSDanna) tapa go leor, molaimid úsáid a bhaint as tástálaí coitianta I/O ar a dtugtar fio. Is leor an t-ordú seo a leanas a rith (eolaire test-data Ní mór é a bheith suite sa laindéal gléasta den tiomántán atá á thástáil):

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

Níl fágtha ach féachaint ar an aschur agus seiceáil an n-oireann sé don 99ú peircintíl fdatasync ag 10 ms. Más amhlaidh, tá do thiomáint ag obair go tapa go leor. Seo aschur samplach:

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]

Cúpla nóta:

  1. Sa sampla thuas táimid tar éis na paraiméadair a choigeartú --size и --bs do chás ar leith. Chun toradh bríoch a fháil ó fio, sonraigh luachanna atá oiriúnach do do chás úsáide. Pléifear thíos conas iad a roghnú.
  2. Le linn tástála amháin fio luchtaíonn an fochóras diosca. Sa saol fíor, is dócha go bhfuil próisis eile (seachas iad siúd a bhaineann le wal_fsync_duration_seconds). Is féidir le méadú ar líon na n-ualach breise den sórt sin wal_fsync_duration_seconds. I bhfocail eile, má fhaightear an 99ú peircintíl ó thástáil le fio, ach beagán níos lú ná 10 ms, tá seans maith nach bhfuil feidhmíocht stórála leordhóthanach.
  3. Le haghaidh na tástála beidh an leagan uait fio nach ísle ná 3.5, toisc nach gcomhiomlánaíonn leaganacha níos sine torthaí fdatasync i bhfoirm peircintílí.
  4. Níl sa chonclúid thuas ach sliocht beag ón gconclúid ghinearálta fio.

Tuilleadh faoi fio agus srl

Cúpla focal faoi WALs etc

Go ginearálta, úsáideann bunachair shonraí logáil réamhghníomhach (logáil roimh scríobh, WAL). etcd difear freisin. Tá plé ar WAL taobh amuigh de scóip an ailt seo, ach chun ár gcríoch, ní mór duit fios a bheith agat go ndéanann gach ball braisle srld WAL a stóráil i stóráil leanúnach. scríobhann etcd roinnt oibríochtaí stórála eochairluacha (cosúil le nuashonruithe) chuig WAL sula ndéantar iad. Má thuairteanna nód agus atosaíonn sé idir na pictiúir, is féidir srl idirbhearta a ghnóthú ón seat roimhe seo bunaithe ar a bhfuil sa WAL.

Mar sin, gach uair a chuireann cliant eochair leis an stór KV nó a nuashonraíonn sé luach eochrach atá ann cheana féin, cuireann etcd cur síos ar an oibríocht chuig WAL, ar gnáthchomhad é i stóráil mharthanach. srl. NÍ MÓR duit a bheith 100% cinnte go bhfuil an iontráil WAL sábháilte roimh leanúint ar aghaidh. Chun é seo a bhaint amach ar Linux, ní leor an glao córais a úsáid write, toisc go bhféadfaí moill a chur ar an oibríocht scríofa féin chuig na meáin fhisiciúla. Mar shampla, féadfaidh Linux iontráil WAL a choinneáil i dtaisce eithne i gcuimhne (m.sh., sa taisce leathanaigh) ar feadh tamaill. Chun a chinntiú go scríobhtar na sonraí chuig na meáin, ní mór glao córais a agairt tar éis an scríobh fdatasync - is é seo go díreach cad a dhéanann srl (mar atá le feiceáil san aschur seo a leanas strace; Anseo 8 - Láimhseáil comhaid 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>

Ar an drochuair, tógann sé roinnt ama scríobh chuig stóráil leanúnach. Is féidir le feidhmiú fada glaonna fdatasync dul i bhfeidhm ar fheidhmíocht etcd. Sa doiciméadú stór léirithe, gur gá an 99ú peircintíl d'fhad na nglaonna go léir le haghaidh feidhmíochta leordhóthanach fdatasync nuair a bhí níos lú ná 10 ms ag scríobh chuig comhad WAL. Tá méadracht eile a bhaineann le stóráil, ach díreoidh an t-alt seo ar an gceann sin.

Stóráil a mheas ag baint úsáide as fio

Is féidir leat a mheas an bhfuil stóras áirithe oiriúnach le húsáid le srl ag baint úsáide as an bhfóntas fio - tástálaí I/O coitianta. Coinnigh i gcuimhne gur féidir le diosca I/O tarlú ar bhealaí éagsúla: sioncrónú/asioncronú, go leor aicmí éagsúla glaonna córais, etc. Is é an taobh eile den bhoinn sin fio thar a bheith deacair a úsáid. Tá go leor paraiméadair ag an bhfóntas, agus bíonn torthaí go hiomlán difriúil mar thoradh ar chomhcheangail éagsúla dá luachanna. Chun meastachán réasúnta a fháil le haghaidh srld, ní mór duit a chinntiú go bhfuil an t-ualach scríofa a ghineann fio chomh gar agus is féidir d’ualach scríofa an chomhaid WAL etcd:

  • Ciallaíonn sé seo go bhfuil an ghintear fio ba cheart go mbeadh an t-ualach ar a laghad ina shraith scríbhinní comhleanúnacha chuig an gcomhad, áit a bhfuil glao córais i ngach scríobh writeina dhiaidh sin fdatasync.
  • Chun scríobh seicheamhach a chumasú, ní mór duit an bhratach a shonrú --rw=write.
  • Sin fio scríobh ag baint úsáide as glaonna write (agus ní glaonna córais eile - mar shampla, pwrite), bain úsáid as an bhratach --ioengine=sync.
  • Ar deireadh, an bhratach --fdatasync=1 cinntíonn sé go bhfuil gach write Ní mór a bheith fdatasync.
  • Is iad an dá pharaiméadar eile inár shampla: --size и --bs - féadfaidh sé athrú ag brath ar an gcás úsáide sonrach. Déanfaidh an chéad chuid eile cur síos ar conas iad a chumrú.

Cén fáth ar roghnaigh muid fio agus conas a d'fhoghlaim muid conas é a shocrú

Tagann an nóta seo ó chás fíor a chonaiceamar. Bhí braisle againn ar Kubernetes v1.13 le monatóireacht ar Prometheus. Baineadh úsáid as SSDanna mar stóráil do etcd v3.2.24. Léirigh méadracht srl. latencies ró-ard fdatasync, fiú nuair a bhí an braisle díomhaoin. Dúinn, bhí cuma an-amhrasach ar na méadrachtaí seo, agus ní raibh muid cinnte cad go díreach a léirigh siad. Ina theannta sin, is éard a bhí sa bhraisle ná meaisíní fíorúla, agus mar sin níorbh fhéidir a rá an raibh an mhoill mar gheall ar fhíorúiliú nó an raibh an locht ar an SSD.

Ina theannta sin, mheasamar athruithe éagsúla ar chumraíocht na crua-earraí agus na bogearraí, agus mar sin bhí bealach ag teastáil uainn chun iad a mheas. Ar ndóigh, bheifí in ann srld a rith i ngach cumraíocht agus féachaint ar mhéadracht chomhfhreagrach Prometheus, ach bheadh ​​gá le hiarracht shuntasach. Ba é an rud a theastaigh uainn ná bealach simplí chun cumraíocht shonrach a mheas. Theastaigh uainn ár dtuiscint ar mhéadracht Prometheus ag teacht ó etcd a thástáil.

Chun seo a dhéanamh, bhí dhá fhadhb a réiteach:

  • Ar dtús, cén chuma atá ar an ualach I/O a ghineann srl agus tú ag scríobh chuig comhaid WAL? Cad iad na glaonna córais a úsáidtear? Cad é méid an bhloic scríobh?
  • Ar an dara dul síos, abair linn go bhfuil freagraí againn ar na ceisteanna thuas. Conas an t-ualach comhfhreagrach a atáirgeadh le fio? Tar éis gach rud fio — áirgiúlacht thar a bheith solúbtha le raidhse paraiméadair (is furasta é seo a fhíorú, mar shampla, anseo — thart. aistrigh.).

Réitíomar an dá fhadhb ag baint úsáide as an gcur chuige ceann-bhunaithe céanna lsof и strace:

  • Le lsof Is féidir leat féachaint ar na tuairisceoirí comhaid go léir a úsáideann próiseas, chomh maith leis na comhaid dá dtagraíonn siad.
  • Le strace is féidir leat próiseas atá ar siúl cheana féin a anailísiú nó próiseas a rith agus é a bhreathnú. Taispeánann an t-ordú gach glao córais a rinne an próiseas seo agus, go roghnach, a sliocht. Tá an dara ceann tábhachtach do phróisis atá forking, agus tá etcd ar cheann de na próisis sin.

Ba é an chéad rud a rinne muid a úsáid strace chun an freastalaí srld i mbraisle Kubernetes a scrúdú agus é díomhaoin.

Mar sin fuarthas amach go bhfuil bloic taifead WAL grúpáilte an-dlúth, bhí méid an chuid is mó sa raon 2200-2400 bytes. Sin é an fáth go n-úsáideann an t-ordú ag tús an ailt seo an bhratach --bs=2300 (bs is é an méid i mbearta de gach bloc scríofa isteach fio).

Tabhair faoi deara le do thoil go bhféadfadh méid na mbloic scríofa srld a bheith éagsúil ag brath ar an leagan, an t-imscaradh, luachanna na bparaiméadar, etc. - cuireann sé isteach ar an ré fdatasync. Má tá cás úsáide comhchosúil agat, déan anailís le strace do phróisis etcd chun na luachanna is déanaí a fháil.

Ansin, chun smaoineamh soiléir cuimsitheach a fháil ar an gcaoi a n-oibríonn etcd leis an gcóras comhad, chuireamar tús leis ó thíos strace le bratacha -ffttT. Mar sin bhíothas in ann próisis linbh a ghabháil agus aschur gach ceann díobh a scríobh chuig comhad ar leith. Ina theannta sin, fuarthas faisnéis mhionsonraithe faoi am tosaithe agus fad gach glao córais.

Úsáideamar an t-ordú freisin lsofchun do thuiscint ar an aschur a dhearbhú strace i dtéarmaí cén tuairisceoir comhaid a úsáideadh chun na críche sin. Fuair ​​​​mé an tátal strace, cosúil leis an gceann thuas. Staitistiúil manipulations le hamanna sioncrónaithe, dheimhnigh go bhfuil an méadrach wal_fsync_duration_seconds ó ghlaonna meaitseálann srl fdatasync le tuairisceoirí comhaid WAL.

A ghiniúint ag baint úsáide as fio ualach oibre cosúil leis an gceann ó etcd, rinneadh staidéar ar dhoiciméadú an áirgiúlachta agus roghnaíodh na paraiméadair oiriúnach dár tasc. Tá sé fíoraithe againn go bhfuil na glaonna córais cearta ar siúl agus dheimhnigh muid a ré trí rith fio de strace (mar a deineadh ar eagla etcd).

Tugadh aird ar leith ar luach an pharaiméadar a chinneadh --size. Léiríonn sé an t-ualach iomlán I/O arna ghiniúint ag an bhfóntas fio. Is é ár gcás, is é seo an líon iomlán beart scríofa chuig na meáin. Tá sé comhréireach go díreach le líon na nglaonna write (agus fdatasync). Le haghaidh ar leith bs líon na nglaonna fdatasync ionann size / bs.

Toisc go raibh suim againn sa pheircintíl, rinneamar iarracht a chinntiú go raibh líon na samplaí mór go leor le go mbeadh tábhacht staitistiúil againn. Agus shocraigh siad sin 10^4 (a fhreagraíonn do mhéid 22 MB) is leor. Luachanna paraiméadar níos lú --size tháinig torann níos suntasaí (mar shampla, glaonna fdatasync, a thógann i bhfad níos faide ná mar is gnách agus a chuireann isteach ar an 99ú peircintíl).

Do Chomhairle féin

Léiríonn an t-alt conas é a úsáid fio is féidir leat a mheas cibé an bhfuil na meáin atá beartaithe le húsáid le etcd tapa go leor. Anois tá sé suas duit! Is féidir leat meaisíní fíorúla a iniúchadh le stóráil SSD-bhunaithe sa tseirbhís IBM Cloud.

PS ó aistritheoir

Le cásanna úsáide réidh fio Le haghaidh tascanna eile, féach doiciméadú nó go díreach chuig stórtha tionscadail (tá i bhfad níos mó acu ná mar atá luaite sa doiciméadú).

PPS ón aistritheoir

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment