Ọsọ nchekwa kwesịrị ekwesị maka wdgd? Ka anyị jụọ fio

Ọsọ nchekwa kwesịrị ekwesị maka wdgd? Ka anyị jụọ fio

Akụkọ dị mkpirikpi gbasara fio na wdg

Ịrụ ọrụ ụyọkọ wdg dabere na arụmọrụ nke nchekwa ya. wdgd na-ebupụ ụfọdụ metrik gaa Prometheusiji nye ozi arụmọrụ nchekwa achọrọ. Dịka ọmụmaatụ, metric wal_fsync_duration_seconds. Akwụkwọ maka etcd kwuru: Ka a ga-atụle nchekwa ngwa ngwa, pasentị 99 nke metric a ga-erughị 10ms. Ọ bụrụ na ị na-eme atụmatụ ịgbasa ụyọkọ etcd na igwe Linux ma chọọ inyocha ma nchekwa gị dị ngwa ngwa (dịka SSD), ị nwere ike iji. a bụ ngwá ọrụ na-ewu ewu maka ịnwale ọrụ I/O. Gbaa iwu na-esonụ, ebe ule-data bụ ndekọ n'okpuru ebe nchekwa ebe nchekwa:

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

Naanị ị ga-elele nsonaazụ ya wee lelee na 99th percentile nke ogologo oge fdatasync erughị 10 ms. Ọ bụrụ otu a, ị nwere nchekwa ngwa ngwa kwesịrị ekwesị. Nke a bụ ọmụmaatụ nsonaazụ ya:

  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]

Ihe edeturu

  • Anyị ahaziri nhọrọ --size na --bs maka ọnọdụ anyị. Iji nweta nsonaazụ bara uru site na fio, nye ụkpụrụ nke gị. Ebee ka ị ga-enweta ha? Gụọ ka anyị siri mụta ịhazi fio.
  • N'oge ule, ibu I/O niile sitere na fio. N'ọnọdụ dị adị n'ezie, a ga-enwe arịrịọ ederede ndị ọzọ na-abata na nchekwa ma e wezụga nke metụtara wal_fsync_duration_seconds. Ibu agbakwunyere ga-abawanye uru nke wal_fsync_duration_seconds. Yabụ ọ bụrụ na pasentị 99 dị nso na 10ms, nchekwa gị na-agba ọsọ ọsọ.
  • Were ụdị ahụ a ọ bụghị karịa 3.5 (ndị gara aga egosighi nkeji oge fdatasync).
  • N'elu bụ naanị snippet nke nsonaazụ fio.

Ogologo akụkọ gbasara fio na wdg

Kedu ihe bụ WAL na wdg

A na-ejikarị ọdụ data eme ihe ide-n'ihu log; etcd na-ejikwa ya. Anyị agaghị atụle n'akwụkwọ ndekọ-aga n'ihu (WAL) n'ụzọ zuru ezu ebe a. O zuru ezu ka anyị mara na onye ọ bụla so na ụyọkọ etcd na-edobe ya na nchekwa na-adịgide adịgide. etcd na-edere ọrụ igodo-uru ọ bụla (dị ka mmelite) na WAL tupu itinye ya na ụlọ ahịa ahụ. Ọ bụrụ na otu n'ime ndị otu nchekwa ahụ daa ma malitegharịa n'etiti foto onyonyo, ọ nwere ike weghachi azụmahịa na mpaghara ebe ọ bụ na ọdịnaya WAL nwere foto ikpeazụ.

Mgbe onye ahịa gbakwunyere igodo na ụlọ ahịa igodo-uru ma ọ bụ na-emelite uru nke igodo dị, wdgd na-edekọ ọrụ na WAL, nke bụ faịlụ oge niile na nchekwa na-adịgide adịgide. etcd ga-enwerịrị ijide n'aka na ntinye WAL mere n'ezie tupu ọ gaa n'ihu na nhazi. Na Linux, otu oku sistemụ ezughị maka nke a. dee, ebe ọ bụ na n'ezie ide na nchekwa anụ ahụ nwere ike igbu oge. Dịka ọmụmaatụ, Linux nwere ike ịchekwa ntinye WAL na cache na ebe nchekwa kernel (dị ka cache ibe) ruo oge ụfọdụ. Na ka e wee dee data ahụ nke ọma na nchekwa na-adịgide adịgide, a chọrọ oku usoro fdatasync mgbe edere ya, na wdgd na-eji ya (dị ka ị nwere ike ịhụ na nsonaazụ nke ọrụ ahụ). eriri, ebe 8 bụ nkọwa faịlụ 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>

Ọ dị nwute, ide na nchekwa na-adịgide adịgide anaghị eme ozugbo. Ọ bụrụ na oku fdatasync dị nwayọ, arụmọrụ nke sistemụ wdgd ga-ata ahụhụ. Akwụkwọ maka etcd kwuruna a na-atụle nchekwa ahụ ngwa ngwa ma ọ bụrụ na, na 99th percentile, fdatasync oku na-erughị 10ms iji dee faịlụ WAL. Enwere metrik ndị ọzọ bara uru maka nchekwa, mana na post a, anyị na-ekwu naanị maka metrik a.

Na-eme atụmatụ nchekwa na fio

Ọ bụrụ na ịchọrọ inyocha ma nchekwa gị dabara maka wdgd, jiri fio, ngwa nnwale ibu I/O ama ama. Ọ ga-echeta na disk arụmọrụ nwere ike dị nnọọ iche: synchronous na asynchronous, ọtụtụ klas nke usoro oku, wdg N'ihi ya, fio bụ nnọọ ike iji. Ọ nwere ọtụtụ paramita, yana nchikota dị iche iche nke ụkpụrụ ha na-arụpụta ọrụ I / O dị iche iche. Iji nweta ọnụ ọgụgụ zuru oke maka wdgd, ị kwesịrị ijide n'aka na nnwale dee ibu sitere na fio dị nso dị ka o kwere mee n'ezie ibu sitere na etcd mgbe ị na-ede faịlụ WAL.

Ya mere, fio kwesịrị, na opekempe, mepụta ibu nke usoro nke usoro ederede na faịlụ ahụ, ederede ọ bụla ga-enwe oku usoro. deesoro usoro fdatasync oku. Usoro edegara fio chọrọ nhọrọ --rw=write. Maka fio iji sistemu ederede kpọọ mgbe ị na-ede, karịa dee, ị ga-ezipụta --ioengine=sync parameter. N'ikpeazụ, iji kpọọ fdatasync ka emechara ederede ọ bụla, ịkwesịrị ịgbakwunye paramita --fdatasync=1. Nhọrọ abụọ ndị ọzọ dị na ọmụmaatụ a (--size na -bs) bụ nke akọwapụtara n'edemede. Na ngalaba na-esote, anyị ga-egosi gị otu esi edozi ha.

Ihe kpatara fio na otu anyị siri mụta ịtọlite ​​ya

Na nke a post, anyị na-akọwa a n'ezie ikpe. Anyị nwere ụyọkọ Kubernetes v1.13 nke anyị ji Prometheus nyochaa. etcd v3.2.24 ka akwadoro na SSD. Etcd metrics gosiri fdatasync latencies dị oke elu, ọbụlagodi mgbe ụyọkọ anaghị eme ihe ọ bụla. Metiriks ndị ahụ dị egwu ma anyị amaghị n'ezie ihe ha pụtara. Ụyọkọ ahụ nwere igwe mebere, ọ dị mkpa ịghọta ihe nsogbu ahụ bụ: na SSD anụ ahụ ma ọ bụ na oyi akwa virtualization. Na mgbakwunye, anyị na-emekarị mgbanwe na nhazi ngwaike na ngwanrọ, yana anyị chọrọ ụzọ iji nyochaa nsonaazụ ha. Anyị nwere ike ịgba ọsọ wdgd na nhazi ọ bụla wee lelee metrics Prometheus, mana nke ahụ bụ nnukwu nsogbu. Anyị na-achọ ụzọ dị mfe iji nyochaa otu nhazi. Anyị chọrọ ịlele ma anyị ghọtara Prometheus metrics si etcd nke ọma.

Mana maka nke a, ekwesịrị idozi nsogbu abụọ. Nke mbụ, kedu ihe ibu I/O nke etcd na-emepụta mgbe a na-edegara WAL akwụkwọ dị ka? Kedu oku sistemu a na-eji? Kedu nha ihe ndekọ ahụ? Nke abụọ, ọ bụrụ na anyị zaa ajụjụ ndị a, olee otú anyị ga-esi jiri fio maliteghachi ibu ọrụ yiri nke ahụ? Echefula na fio bụ ngwá ọrụ na-agbanwe agbanwe nke nwere ọtụtụ nhọrọ. Anyị ji otu ụzọ dozie nsogbu abụọ ahụ - iji iwu Nkechi и eriri. lsof na-edepụta ndị na-akọwa faịlụ niile nke usoro ahụ na faịlụ ndị emetụtara na-eji. Na strace, ị nwere ike nyochaa usoro na-agba ọsọ, ma ọ bụ malite usoro wee nyochaa ya. strace na-ebipụta oku sistemụ niile site na usoro a na-enyocha (na usoro nwa ya). Nke ikpeazụ dị ezigbo mkpa, ebe ọ bụ na etcd na-ewere usoro yiri nke ahụ.

Anyị buru ụzọ jiri strace nyochaa ihe nkesa wdgd maka Kubernetes mgbe enweghị ibu na ụyọkọ ahụ. Anyị hụrụ na ihe fọrọ nke nta ka ọ bụrụ ndekọ ndekọ WAL niile bụ otu nha: 2200–2400 bytes. Ya mere, n'iwu ahụ dị na mmalite nke post ahụ, anyị kpọpụtara paramita -bs = 2300 (bs pụtara nha na bytes maka ntinye fio ọ bụla). Rịba ama na nha ntinye etcd dabere na ụdị etcd, nkesa, ụkpụrụ paramita, wdg, ma na-emetụta oge fdatasync. Ọ bụrụ na ị nwere ọnọdụ yiri nke ahụ, jiri strace nyochaa usoro wdgd gị iji chọpụta ọnụọgụgụ.

Mgbe ahụ, iji nweta ezi echiche nke ihe faịlụ faịlụ etcd na-eme, anyị malitere ya na strace na nhọrọ -ffttT. Ya mere, anyị gbalịrị nyochaa usoro ụmụaka ma dekọọ mmepụta nke onye ọ bụla n'ime ha na faịlụ dị iche iche, ma nweta nkọwa zuru ezu banyere mmalite na oge nke oku usoro ọ bụla. Anyị na-eji lsof iji kwado nyocha anyị nke mmepụta strace wee hụ ụdị nkọwa faịlụ a na-eji maka ebumnuche ya. Ya mere, site n'enyemaka nke strace, a na-enweta nsonaazụ egosiri n'elu. Ọnụọgụ oge mmekọrịta kwadoro na wal_fsync_duration_seconds si etcd kwekọrọ na oku fdatasync na ndị na-akọwa faịlụ WAL.

Anyị gafere akwụkwọ maka fio wee họrọ nhọrọ maka edemede anyị ka fio wee mepụta ibu yiri wdg. Anyị enyochakwara oku sistemụ na oge ha site na ịgba ọsọ fio si strace, yiri wdg.

Anyị ejirila nlezianya họrọ uru nke --size paramita iji nọchite anya ibu I/O dum sitere na fio. N'ọnọdụ anyị, nke a bụ ọnụọgụ bytes edere na nchekwa. Ọ tụgharịrị ka ọ dabara na ọnụ ọgụgụ oku sistemụ dee (na fdatasync). Maka uru ụfọdụ nke bs, ọnụọgụ fdatasync oku = nha/bs. Ebe ọ bụ na anyị nwere mmasị na pasentị, anyị ga-enwerịrị ihe nlele zuru oke iji jide n'aka, anyị gbakọọ na 10^4 ga-ezuru anyị (nke ahụ bụ 22 mebibytes). Ọ bụrụ na --size pere mpe, ndị na-apụ apụ nwere ike ime (dịka ọmụmaatụ, ọtụtụ oku fdatasync na-ewe ogologo oge karịa ka ọ na-adị na-emetụta 99th percentile).

Gbalịa ya n'onwe gị

Anyị gosiri gị otu esi eji fio wee hụ ma nchekwa ahụ nwere oke ọsọ maka ịrụ ọrụ dị elu wdgd. Ugbu a ị nwere ike ịnwale ya n'onwe gị site na iji, ọmụmaatụ, igwe mebere nke nwere nchekwa SSD IBM Cloud.

isi: www.habr.com

Tinye a comment