Astar stòraidh freagarrach airson msaa? Faighnich fio

Astar stòraidh freagarrach airson msaa? Faighnich fio

Sgeulachd ghoirid mu dheidhinn fio agus msaa

Coileanadh brabhsair etc gu mòr an urra ri coileanadh a stòradh. etcd às-mhalairt cuid de mheatairean gu Prometheusgus am fiosrachadh coileanaidh stòraidh a tha thu ag iarraidh a thoirt seachad. Mar eisimpleir, am meatrach wal_fsync_duration_seconds. Tha na sgrìobhainnean airson etcd ag ràdh: Airson stòradh a bhith air a mheas luath gu leòr, feumaidh an 99mh sa cheud den mheatrach seo a bhith nas lugha na 10ms. Ma tha thu an dùil cruinneachadh msaa a ruith air innealan Linux agus gu bheil thu airson measadh a bheil an stòradh agad luath gu leòr (m.e. SSD), faodaidh tu a chleachdadh fio na inneal mòr-chòrdte airson a bhith a’ dèanamh deuchainn air gnìomhachd I/O. Ruith an àithne a leanas, far a bheil test-data an eòlaire fon phuing sreap stòraidh:

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

Cha leig thu leas ach sùil a thoirt air na toraidhean agus dèanamh cinnteach gu bheil an 99mh sa cheud den fhad sioncronachadh nas lugha na 10 ms. Ma tha, tha stòradh gu math luath agad. Seo eisimpleir de na toraidhean:

  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]

Notaichean

  • Tha sinn air na roghainnean --size agus --bs a ghnàthachadh airson ar suidheachadh sònraichte. Gus toradh feumail fhaighinn bho fio, thoir seachad na luachan agad fhèin. Càite am faigh thu iad? Leugh mar a dh'ionnsaich sinn fio a rèiteachadh.
  • Rè deuchainn, thig a h-uile eallach I / O bho fio. Ann an suidheachadh fìor, tha coltas ann gum bi iarrtasan sgrìobhaidh eile a’ tighinn a-steach don stòradh a bharrachd air an fheadhainn co-cheangailte ri wal_fsync_duration_seconds. Meudaichidh an luchd a bharrachd luach wal_fsync_duration_seconds. Mar sin ma tha an 99mh sa cheud faisg air 10ms, tha an stòradh agad a’ ruith a-mach à astar.
  • Gabh an dreach fio gun a bhith nas ìsle na 3.5 (chan eil an fheadhainn roimhe a’ sealltainn ceudadan fad fdatasync).
  • Gu h-àrd tha dìreach criomag de na toraidhean bho fio.

Sgeul fada mu fio and etc

Dè tha WAL ann am etc

Mar as trice bidh stòran-dàta a’ cleachdadh log sgrìobhadh air thoiseach; etcd ga chleachdadh cuideachd. Cha bhi sinn a’ beachdachadh air a’ chlàr sgrìobhaidh air adhart (WAL) gu mionaideach an seo. Is leoir dhuinne fios a bhi againn gu bheil gach ball de'n cliuid etcd 'ga chumail ann an stòradh bith-bhuan. etcd a’ sgrìobhadh gach gnìomhachd luach-iuchrach (leithid ùrachadh) gu WAL mus cuir thu a-steach don stòr e. Ma thuiteas aon de na buill stòraidh agus ath-thòiseachadh eadar dealbhan, faodaidh e gnothaichean a thoirt air ais gu h-ionadail bhon dealbh mu dheireadh le susbaint WAL.

Nuair a chuireas neach-dèiligidh iuchair ris a’ bhùth luach-iuchrach no nuair a dh’ ùraicheas e luach iuchair a th’ ann mar-thà, bidh msaa a’ clàradh an obrachaidh ann an WAL, a tha na fhaidhle cunbhalach ann an stòradh leantainneach. msaa FEUMAIDH tu a bhith gu tur cinnteach gun do thachair an inntrigeadh WAL mus lean thu air adhart leis a’ ghiollachd. Air Linux, chan eil aon ghairm siostam gu leòr airson seo. sgrìobhadh, oir dh’ fhaodadh gun tèid dàil a chuir air an fhìor sgrìobhadh gu stòradh corporra. Mar eisimpleir, faodaidh Linux inntrigeadh WAL a stòradh ann an tasgadan ann an cuimhne kernel (leithid tasgadan duilleag) airson ùine. Agus gus an tèid an dàta a sgrìobhadh gu ceart gu stòradh leantainneach, tha feum air gairm siostam fdatasync às deidh an sgrìobhadh, agus msaa dìreach ga chleachdadh (mar a chì thu ann an toradh na h-obrach srath, far a bheil 8 na thuairisgeul faidhle 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>

Gu mì-fhortanach, chan eil sgrìobhadh gu stòradh leantainneach a 'tachairt sa bhad. Ma tha an gairm fdatasync slaodach, bidh coileanadh an t-siostam msaa a’ fulang. Tha na sgrìobhainnean airson etcd ag ràdhgu bheilear den bheachd gu bheil an stòradh luath gu leòr ma bheir, anns an 99mh ceudadan, fiosan fdatasync nas lugha na 10ms airson sgrìobhadh chun fhaidhle WAL. Tha metrics feumail eile ann airson stòradh, ach anns an dreuchd seo chan eil sinn a’ bruidhinn ach mun mheatrach seo.

A’ dèanamh tuairmse air stòradh le fio

Ma dh’ fheumas tu measadh a bheil an stòradh agad freagarrach airson msaa, cleachd fio, inneal deuchainn luchdan I/O air a bheil fèill mhòr. Bu chòir cuimhneachadh gum faod gnìomhachd diosc a bhith gu math eadar-dhealaichte: sioncronaich agus asyncronach, mòran chlasaichean de ghlaodhan siostam, msaa. Mar thoradh air an sin, tha fio gu math duilich a chleachdadh. Tha mòran pharaimearan ann, agus tha measgachadh eadar-dhealaichte de na luachan aca a’ toirt a-mach eallach obrach I/O gu math eadar-dhealaichte. Gus figearan iomchaidh fhaighinn airson msaa, bu chòir dhut dèanamh cinnteach gu bheil an luchd sgrìobhaidh deuchainn bho fio cho faisg ‘s a ghabhas air an fhìor luchd bho msaa nuair a bhios tu a’ sgrìobhadh faidhlichean WAL.

Mar sin, bu chòir dha fio, aig a’ char as lugha, eallach a chruthachadh ann an cruth sreath de sgrìobhaidhean leantainneach chun fhaidhle, bidh gach sgrìobhadh a’ gabhail a-steach gairm siostam sgrìobhadhair a leantainn le gairm siostam fdatasync. Feumaidh sgrìobhadh sreathach gu fio an roghainn --rw = sgrìobhaidh. Airson fio a bhith a’ cleachdadh gairm an t-siostam sgrìobhaidh nuair a thathar a’ sgrìobhadh, seach sgrìobhadh, bu chòir dhut am paramadair --ioengine=sync a shònrachadh. Mu dheireadh, gus fdatasync a ghairm às deidh gach sgrìobhadh, feumaidh tu am paramadair --fdatasync = 1 a chuir ris. Tha an dà roghainn eile san eisimpleir seo (--size agus -bs) sònraichte don sgriobt. Anns an ath earrann, bidh sinn a 'sealltainn dhut mar a shuidhicheas tu iad.

Carson dìreach fio agus mar a dh'ionnsaich sinn a stèidheachadh

Anns an dreuchd seo, tha sinn a 'toirt cunntas air fìor chùis. Tha buidheann againn Kubernetes v1.13 air an do choimhead sinn le Prometheus. etcd v3.2.24 a chumail air SSD. Sheall metrics Etcd latencies fdatasync ro àrd, eadhon nuair nach robh an cruinneachadh a’ dèanamh dad. Bha na meatrach neònach agus cha robh fios againn gu cinnteach dè bha iad a’ ciallachadh. Bha an cruinneachadh air a dhèanamh suas de innealan brìgheil, bha e riatanach tuigsinn dè an duilgheadas a bh ’ann: ann an SSDan corporra no anns an ìre virtualization. A bharrachd air an sin, gu tric rinn sinn atharrachaidhean air rèiteachadh bathar-cruaidh is bathar-bog, agus bha feum againn air dòigh gus na toraidhean aca a mheasadh. B’ urrainn dhuinn ruith msaa anns a h-uile rèiteachadh agus coimhead air metrics Prometheus, ach tha sin cus de dhuilgheadas. Bha sinn a’ coimhead airson dòigh gu math sìmplidh airson rèiteachadh sònraichte a mheasadh. Bha sinn airson faighinn a-mach a bheil sinn a’ tuigsinn metrics Prometheus bho msaa gu ceart.

Ach airson seo, dh'fheumadh dà dhuilgheadas a bhith air am fuasgladh. An toiseach, cò ris a bhios an luchd I/O a bhios msaa a’ cruthachadh nuair a thathar a’ sgrìobhadh gu WAL? Dè na gairmean siostam a thathas a’ cleachdadh? Dè cho mòr 'sa tha na clàran? San dàrna h-àite, ma fhreagras sinn na ceistean sin, ciamar a dh’ ath-ghineas sinn eallach obrach coltach ri fio? Na dìochuimhnich gur e inneal gu math sùbailte a th’ ann am fio le mòran roghainnean. Dh'fhuasgail sinn an dà dhuilgheadas ann an aon dòigh - a' cleachdadh nan òrduighean lof и srath. Tha lsof a’ liostadh a h-uile tuairisgeul faidhle a chleachd am pròiseas agus na faidhlichean co-cheangailte riutha. Agus le strì, faodaidh tu sgrùdadh a dhèanamh air pròiseas a tha a’ ruith mu thràth, no pròiseas a thòiseachadh agus a sgrùdadh. Bidh strace a’ clò-bhualadh a h-uile gairm siostam bhon phròiseas a thathar a’ sgrùdadh (agus na pròiseasan cloinne aige). Tha an tè mu dheireadh glè chudromach, leis gu bheil etcd dìreach a’ gabhail dòigh-obrach coltach ris.

Chleachd sinn strace an toiseach gus am frithealaiche msaa airson Kubernetes a sgrùdadh nuair nach robh luchd sam bith air a’ bhuidheann. Chunnaic sinn gu robh cha mhòr a h-uile clàr WAL mun aon mheud: 2200–2400 bytes. Mar sin, anns an àithne aig toiseach a’ phuist, shònraich sinn am paramadair -bs = 2300 (b a’ ciallachadh meud ann am bytes airson gach inntrigeadh fio). Thoir an aire gu bheil meud an inntrig msaa an urra ris an tionndadh etcd, cuairteachadh, luachan paramadair, msaa, agus a’ toirt buaidh air fad an fdatasync. Ma tha suidheachadh coltach ris agad, thoir sùil gheur air na pròiseasan msaa agad gus faighinn a-mach na dearbh àireamhan.

An uairsin, airson deagh bheachd fhaighinn air na tha an siostam faidhle etcd a’ dèanamh, thòisich sinn air le strace agus na roghainnean -ffttT. Mar sin dh'fheuch sinn ri sgrùdadh a dhèanamh air pròiseasan an leanaibh agus a 'clàradh toradh gach fear dhiubh ann am faidhle air leth, agus cuideachd a' faighinn aithisgean mionaideach mu thoiseach agus fad gach gairm siostam. Chleachd sinn lsof gus ar mion-sgrùdadh air toradh strace a dhearbhadh agus faicinn dè an tuairisgeul faidhle a bhathar a’ cleachdadh airson an adhbhar sin. Mar sin le cuideachadh bho strace, chaidh na toraidhean gu h-àrd fhaighinn. Dhearbh staitistig ùine sioncronaidh gu bheil wal_fsync_duration_seconds from etcd co-chòrdail ri fiosan fdatasync le tuairisgeulan faidhle WAL.

Chaidh sinn tro na sgrìobhainnean airson fio agus thagh sinn roghainnean airson an sgriobt againn gus an cruthaicheadh ​​fio luchd coltach ri msaa. Rinn sinn sgrùdadh cuideachd air fiosan siostam agus an ùine le bhith a’ ruith fio bho strace, coltach ri msaa.

Tha sinn air luach a’ pharamadair --size a thaghadh gu faiceallach gus an luchd I/O gu lèir bho fio a riochdachadh. Anns a 'chùis againn, is e seo an àireamh iomlan de bytes a chaidh a sgrìobhadh chun stòradh. Thionndaidh e a-mach gu robh e ann an co-rèir dìreach ris an àireamh de ghlaodhan siostam sgrìobhaidh (agus fdatasync). Airson luach sònraichte de bs, tha an àireamh de ghlaodhan fdatasync = meud/bs. Leis gu robh ùidh againn anns an àireamh sa cheud, bha againn ri sampallan gu leòr a bhith againn airson a bhith cinnteach, agus rinn sinn a-mach gum biodh 10^4 gu leòr dhuinn (sin 22 mebibytes). Ma tha --size nas lugha, dh’ fhaodadh gun tachair outliers (mar eisimpleir, bheir grunn fiosan fdatasync nas fhaide na an àbhaist agus bheir iad buaidh air an 99mh ceudad).

Feuch e fhèin

Sheall sinn dhut mar a chleachdas tu fio agus faic a bheil an stòradh luath gu leòr airson msaa gus coileanadh gu math. A-nis faodaidh tu feuchainn air dhut fhèin a’ cleachdadh, mar eisimpleir, innealan brìgheil le stòradh SSD a-steach Cloud IBM.

Source: www.habr.com

Cuir beachd ann