Mar a nì thu sgrùdadh air diosgan le fio airson coileanadh gu leòr airson msaa

Thoir an aire. eadar-theangachadh.: Tha an artaigil seo mar thoradh air mion-sgrùdadh a rinn innleadairean IBM Cloud a’ lorg fuasgladh air fìor dhuilgheadas co-cheangailte ri gnìomhachd an stòr-dàta msaa. Bha gnìomh coltach ris a’ buntainn rinn, ach dh’ fhaodadh cùrsa meòrachaidh agus gnìomhan nan ùghdaran a bhith inntinneach ann an co-theacs nas fharsainge.

Mar a nì thu sgrùdadh air diosgan le fio airson coileanadh gu leòr airson msaa

Geàrr-chunntas goirid den artaigil gu lèir: fio agus msaa

Tha coileanadh brabhsair msaa gu mòr an urra ri astar an stòraidh bunaiteach. Gus sùil a chumail air coileanadh, bidh msaa a’ cur a-mach diofar mheatairean Prometheus. Tha fear dhiubh wal_fsync_duration_seconds. Anns na sgrìobhainnean airson etc tha e ag ràdhfaodar beachdachadh air an stòradh sin luath gu leòr mura h-eil an 99mh sa cheud den mheatrach seo nas àirde na 10 ms...

Ma tha thu a’ beachdachadh air cruinneachadh msaa a stèidheachadh air innealan Linux agus gu bheil thu airson deuchainn a dhèanamh a bheil draibhearan stòraidh (leithid SSDs) luath gu leòr, tha sinn a’ moladh a bhith a’ cleachdadh deuchainniche I/O mòr-chòrdte ris an canar fio. Dìreach ruith an àithne a leanas (eòlaire test-data feumaidh iad a bhith suidhichte anns a’ phàirt shuidhichte den draibhear a thathar a’ dèanamh deuchainn):

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

Chan eil air fhàgail ach coimhead air an toradh agus dèanamh cinnteach a bheil e a’ freagairt air an 99mh sa cheud fdatasync ann an 10 ms. Ma tha, tha an draibhear agad ag obair luath gu leòr. Seo eisimpleir toradh:

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]

Beagan notaichean:

  1. Anns an eisimpleir gu h-àrd, tha sinn air na crìochan atharrachadh --size и --bs airson cùis shònraichte. Gus toradh brìoghmhor fhaighinn bho fio, sònraich luachan a tha iomchaidh airson do chùis cleachdaidh. Mar a roghnaicheas tu iad thèid a dheasbad gu h-ìosal.
  2. Rè na deuchainn a-mhàin fio A’ luchdachadh fo-shiostam an diosg. Ann am fìor bheatha, tha e coltach gun sgrìobh pròiseasan eile gu diosc (a bharrachd air an fheadhainn co-cheangailte ri wal_fsync_duration_seconds). Faodaidh an leithid de eallach a bharrachd leantainn gu àrdachadh ann an wal_fsync_duration_seconds. Ann am faclan eile, ma tha an 99mh sa cheud bho dheuchainn le fio, dìreach beagan nas lugha na 10 ms, tha deagh chothrom ann nach eil an coileanadh stòraidh gu leòr.
  3. Airson an deuchainn bidh feum agad air an dreach fio gun a bhith nas ìsle na 3.5, a chionn 's nach eil tionndaidhean nas sine a' cruinneachadh thoraidhean fdatasync ann an cruth ceudadan.
  4. Chan eil anns a’ cho-dhùnadh gu h-àrd ach earrann bheag den cho-dhùnadh iomlan fio.

Tuilleadh mu fio agus msaa

Beagan fhaclan mu WALs msaa

San fharsaingeachd, bidh stòran-dàta a 'cleachdadh logadh for-ghnìomhach (logadh sgrìobhte air thoiseach, WAL). etcd cuideachd a 'toirt buaidh. Tha deasbad air WAL taobh a-muigh farsaingeachd an artaigil seo, ach airson ar n-adhbharan, is e an rud a dh’ fheumas a bhith agad gu bheil gach ball brabhsair msaa a’ stòradh WAL ann an stòradh leantainneach. etcd a’ sgrìobhadh cuid de dh’ obraichean stòraidh prìomh luach (leithid ùrachaidhean) gu WAL mus cuir iad an gnìomh iad. Ma bhuaileas nód agus ma thèid ath-thòiseachadh eadar dealbhan, bidh e comasach dha msaa gnothaichean fhaighinn air ais bhon dealbh roimhe stèidhichte air susbaint an WAL.

Mar sin, a h-uile uair a bhios neach-dèiligidh a’ cur iuchair ris a’ bhùth KV no ag ùrachadh luach iuchrach a tha ann mar-thà, msaa cuiridh e an tuairisgeul air an obair ris an WAL, a tha na fhaidhle cunbhalach anns a’ bhùth leantainneach. msaa FEUMAIDH a bhith 100% cinnteach gu bheil an inntrigeadh WAL air a shàbhaladh mus lean thu air adhart. Gus seo a choileanadh air Linux, chan eil e gu leòr a 'cleachdadh a' ghairm siostam write, oir dh’ fhaodadh gun tèid dàil a chuir air an obair sgrìobhaidh fhèin chun mheadhan corporra. Mar eisimpleir, faodaidh Linux inntrigeadh WAL a chumail ann an tasgadan kernel mar chuimhneachan (leithid tasgadan na duilleige) airson ùine. Gus dèanamh cinnteach gu bheil dàta air a sgrìobhadh gu na meadhanan, feumar gairm siostam a chuir a-steach às deidh sgrìobhadh fdatasync - is e seo dìreach a bhios msaa a’ dèanamh (mar a chì thu san toradh a leanas strace; Seo 8 - Làimhseachadh faidhle 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>

Gu mì-fhortanach, bheir sgrìobhadh gu stòradh leantainneach beagan ùine. Le bhith a’ toirt ùine mhòr airson a’ ghairm fdatasync a chrìochnachadh faodaidh sin buaidh a thoirt air coileanadh msaa. Anns na sgrìobhainnean airson an stòr air a chomharrachadhgum feumar an 99mh sa cheud de ùine gach gairm airson coileanadh gu leòr fdatasync nuair a bha sgrìobhadh gu faidhle WAL nas lugha na 10 ms. Tha metrics eile co-cheangailte ri stòradh, ach cuiridh an artaigil seo fòcas air an fhear sin.

A’ cur luach air stòradh le fio

Faodaidh tu measadh a bheil stòradh sònraichte freagarrach airson a chleachdadh le msaa a’ cleachdadh a’ ghoireas fio - neach-dearbhaidh I/O mòr-chòrdte. Cumaibh cuimhne gum faod diosc I/O tachairt ann an iomadh dòigh eadar-dhealaichte: sioncranachadh/async, mòran chlasaichean syscall eadar-dhealaichte, agus mar sin air adhart. Is e taobh eile a’ bhuinn sin fio uabhasach duilich a chleachdadh. Tha mòran pharaimearan aig a ’ghoireas, agus tha measgachadh eadar-dhealaichte de na luachan aca a’ leantainn gu toraidhean gu tur eadar-dhealaichte. Gus tuairmse reusanta fhaighinn airson msaa, feumaidh tu dèanamh cinnteach gu bheil an luchd sgrìobhaidh a thig bho fio cho coltach ‘s a ghabhas ri luchd sgrìobhaidh etcd gu faidhlichean WAL:

  • Tha seo a 'ciallachadh gu bheil an gineadh fio bu chòir gum biodh an luchd co-dhiù na shreath de sgrìobhaidhean leantainneach chun fhaidhle, far a bheil gach sgrìobhadh a’ toirt a-steach gairm siostaim writeair a leantainn le fdatasync.
  • Gus sgrìobhadh sreathach a chomasachadh, feumaidh tu am bratach a shònrachadh --rw=write.
  • gu bheil fio sgrìobh e a’ cleachdadh gairmean write (seach gairmean siostam eile - mar eisimpleir, pwrite), cleachd am bratach --ioengine=sync.
  • Mu dheireadh, am bratach --fdatasync=1 a 'gealltainn sin air cùlaibh a h-uile write feumaidh iad a bhith fdatasync.
  • Is e an dà pharamadair eile san eisimpleir againn: --size и --bs - faodaidh iad atharrachadh a rèir cùis cleachdaidh sònraichte. Bheir an ath earrann cunntas air an rèiteachadh aca.

Carson a thagh sinn fio agus mar a dh’ ionnsaich sinn mar a chuireadh e air dòigh e

Tha an nota seo a’ tighinn bho fhìor chùis ris an do choinnich sinn. Bha cruinneachadh againn air Kubernetes v1.13 le sgrùdadh air Prometheus. Chaidh draibhearan stàite soladach a chleachdadh mar stòradh airson msaa v3.2.24. sheall metrics etcd latencies ro àrd fdatasync, eadhon an uair a bha am braisle dìomhanach. Fhuair sinn a-mach gu robh na meatrach sin gu math teagmhach agus cha robh sinn cinnteach dè dìreach a bha iad a’ riochdachadh. A bharrachd air an sin, bha innealan brìgheil anns a’ bhuidheann, agus mar sin bha e do-dhèanta innse an ann mar thoradh air virtualization a bha an dàil no an e na SSDs a bu choireach.

A bharrachd air an sin, bha sinn a’ coimhead air diofar atharrachaidhean air rèiteachadh bathar-cruaidh is bathar-bog, agus mar sin bha feum againn air dòigh air an luachadh. Gu dearbh, bhiodh e comasach ruith msaa anns gach rèiteachadh agus coimhead air na metrics Prometheus co-fhreagarrach, ach bhiodh feum air oidhirp mhòr. Bha feum againn air dòigh shìmplidh airson rèiteachadh sònraichte a mheasadh. Bha sinn airson ar tuigse mu mheatairean Prometheus a’ tighinn bho msaa a dhearbhadh.

Dh'fheumadh seo fuasgladh fhaighinn air dà dhuilgheadas:

  • An toiseach, cò ris a tha an luchd I/O a bhios msaa a’ gineadh nuair a bhios tu a’ sgrìobhadh gu faidhlichean WAL? Dè na gairmean siostam a thathas a’ cleachdadh? Dè am meud bloc sgrìobhadh?
  • San dàrna h-àite, canaidh sinn gu bheil freagairtean againn do na ceistean gu h-àrd. Mar a nì thu ath-riochdachadh air an luchd co-fhreagarrach le fio? An dèidh a h-uile nì fio - goireas air leth sùbailte le pailteas de pharamadairean (tha seo furasta a dhearbhadh, mar eisimpleir, an seo - mu thuairmeas. eadar-theangachadh.).

Dh’ fhuasgail sinn an dà dhuilgheadas leis an aon dòigh-obrach stèidhichte air àithne lsof и strace:

  • Le cuideachadh bho lsof chì thu a h-uile tuairisgeul faidhle a chleachdar sa phròiseas, a bharrachd air na faidhlichean air a bheil iad a’ toirt iomradh.
  • Le cuideachadh bho strace faodaidh tu pròiseas a tha a’ ruith mu thràth a sgrùdadh no pròiseas a ruith agus coimhead air. Bidh an àithne a’ taisbeanadh a h-uile gairm siostam a rinn am pròiseas seo agus, ma tha sin riatanach, a shliochd. Tha an tè mu dheireadh cudromach airson pròiseasan a tha a’ sparradh, agus msaa mar aon phròiseas den leithid.

B’ e a’ chiad rud a rinn sinn a chleachdadh strace gus sgrùdadh a dhèanamh air an t-seirbheisiche msaa ann am buidheann Kubernetes fhad ‘s a bha e leisg.

Mar sin, chaidh a lorg gu bheil na blocaichean sgrìobhaidh ann an WAL air an cruinneachadh gu math dùmhail, a’ mhòr-chuid dhiubh anns an raon de 2200-2400 bytes. Sin as coireach gu bheil an àithne aig toiseach an artaigil seo a’ cleachdadh a’ bhratach --bs=2300 (bs - meud ann am bytes de gach bloc clàraidh a-steach fio).

Thoir an aire gum faod meud blocaichean sgrìobhaidh msaa atharrachadh a rèir an tionndaidh, cleachdadh, luachan paramadair, msaa. - bheir seo buaidh air an fhad fdatasync. Ma tha cùis cleachdaidh coltach ris agad, dèan sgrùdadh le strace na pròiseasan msaa agad gus luachan as ùire fhaighinn.

An uairsin, gus beachd soilleir agus farsaing fhaighinn air mar a tha msaa ag obair leis an t-siostam faidhle, thòisich sinn air bho shìos strace le brataichean -ffttT. Rinn seo e comasach pròiseasan cloinne a ghlacadh agus toradh gach fear a sgrìobhadh gu faidhle air leth. A bharrachd air an sin, chaidh fiosrachadh mionaideach fhaighinn mu àm tòiseachaidh agus fad gach gairm siostaim.

Chleachd sinn an àithne cuideachd lsofgus do thuigse mun toradh a dhearbhadh strace a thaobh dè an tuairisgeul faidhle a chaidh a chleachdadh airson an adhbhar sin. Fhuair mi an co-dhùnadh strace, coltach ris an fhear gu h-àrd. Dhearbh làimhseachadh staitistigeil le amannan sioncronaidh gu robh am meatrach wal_fsync_duration_seconds bho etcd a’ maidseadh gairmean fdatasync le tuairisgeulan faidhle WAL.

A ghineadh le fio eallach obrach coltach ris an luchd bho msaa, chaidh na sgrìobhainnean goireis a sgrùdadh agus chaidh crìochan a bha freagarrach airson ar gnìomh a thaghadh. Rinn sinn cinnteach gu robh na fiosan siostam ceart an sàs agus dhearbh sinn an ùine aca le bhith a’ ruith fio bho strace (mar a rinneadh air eagal etcd).

Chaidh aire shònraichte a thoirt do bhith a’ dearbhadh luach a’ pharamadair --size. Tha e a’ riochdachadh an luchd iomlan I/O a ghineadh leis a’ ghoireas fio. Anns a 'chùis againn, is e seo an àireamh iomlan de bytes a chaidh a sgrìobhadh gu na meadhanan. Tha e dìreach co-rèireach ris an àireamh de ghairmean write (agus fdatasync). Airson sònraichte bs àireamh de ghlaisean fdatasync co-ionann size / bs.

Leis gu robh ùidh againn anns a’ cheudadail, bha sinn airson gum biodh an àireamh de shamhlaichean mòr gu leòr airson a bhith cudromach gu staitistigeil. Agus cho-dhùin sin 10^4 (a tha co-ionann ri meud 22 MB) gu leòr. Luachan paramadair nas lugha --size thug e fuaim nas soilleire (mar eisimpleir, fiosan fdatasync, a bheir fada nas fhaide na an àbhaist agus a bheir buaidh air an 99mh sa cheud).

Tha e an urra riut fhèin

Tha an artaigil a’ sealltainn mar a chleachdas tu e fio faodaidh aon breithneachadh a bheil na meadhanan a thathar an dùil a chleachdadh le msaa luath gu leòr. A-nis tha e an urra riut fhèin! Faodaidh tu sgrùdadh a dhèanamh air innealan brìgheil le stòradh stèidhichte air SSD san t-seirbheis Cloud IBM.

PS bhon eadar-theangair

Le cùisean cleachdaidh deiseil fio Airson gnìomhan eile, faic sgrìobhainnean no gu dìreach stòran pròiseict (tha tòrr a bharrachd dhiubh ann na tha air an ainmeachadh anns na sgrìobhainnean).

PPS bhon eadar-theangair

Leugh cuideachd air ar blog:

Source: www.habr.com

Cuir beachd ann