Veloċità tal-ħażna adattata għal etcd? Ejja nistaqsu fio

Veloċità tal-ħażna adattata għal etcd? Ejja nistaqsu fio

Storja qasira dwar fio u etcd

Prestazzjoni tal-cluster eċċd jiddependi ħafna fuq il-prestazzjoni tal-ħażna tiegħu. etcd tesporta xi metriċi lejn Prometheusbiex tipprovdi l-informazzjoni mixtieqa dwar il-prestazzjoni tal-ħażna. Pereżempju, il-metrika wal_fsync_duration_seconds. Id-dokumentazzjoni għal etcd tgħid: Biex il-ħażna titqies veloċi biżżejjed, id-99 perċentil ta' din il-metrika għandu jkun inqas minn 10ms. Jekk qed tippjana li tħaddem cluster etcd fuq magni Linux u trid tevalwa jekk il-ħażna tiegħek hijiex veloċi biżżejjed (eż. SSD), tista' tuża fio hija għodda popolari għall-ittestjar tal-operazzjonijiet I/O. Mexxi l-kmand li ġej, fejn id-data tat-test hija d-direttorju taħt il-punt tal-muntaġġ tal-ħażna:

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

Għandek bżonn biss li tħares lejn ir-riżultati u tivverifika li d-99 perċentil tat-tul fdatasync inqas minn 10 ms. Jekk iva, għandek ħażna raġonevolment veloċi. Hawn eżempju tar-riżultati:

  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]

Noti

  • Aħna personalizzati l-għażliet --size u --bs għax-xenarju partikolari tagħna. Biex tikseb riżultat utli minn fio, ipprovdi l-valuri tiegħek. Fejn tiksebhom? Aqra kif tgħallimna nikkonfiguraw fio.
  • Waqt l-ittestjar, it-tagħbija I/O kollha tiġi minn fio. F'xenarju tal-ħajja reali, x'aktarx ikun hemm talbiet oħra ta' kitba li jidħlu fil-ħażna minbarra dawk relatati ma' wal_fsync_duration_seconds. It-tagħbija żejda se żżid il-valur ta 'wal_fsync_duration_seconds. Mela jekk id-99 perċentil ikun qrib l-10ms, il-ħażna tiegħek qed tispiċċa mingħajr veloċità.
  • Ħu l-verżjoni fio mhux inqas minn 3.5% (dawk ta' qabel ma jurux perċentili ta' dewmien fdatasync).
  • Hawn fuq hemm biss snippet tar-riżultati minn fio.

Storja twila dwar fio u etcd

X'inhu WAL f'etcd

Normalment id-databases jużaw log tal-kitba bil-quddiem; etcd jużaha wkoll. Aħna mhux se niddiskutu l-write-ahead log (WAL) fid-dettall hawn. Huwa biżżejjed għalina li nkunu nafu li kull membru tal-cluster etcd iżommha f'ħażna persistenti. etcd jikteb kull operazzjoni ta 'valur ewlieni (bħal aġġornament) lil WAL qabel ma tapplikaha għall-maħżen. Jekk wieħed mill-membri tal-ħażna jiġġarraf u jerġa 'jibda bejn snapshots, jista' lokalment jirrestawra t-tranżazzjonijiet mill-aħħar snapshot mill-kontenut WAL.

Meta klijent iżid ċavetta mal-maħżen tal-valur taċ-ċavetta jew jaġġorna l-valur ta 'ċavetta eżistenti, etcd jirreġistra l-operazzjoni f'WAL, li huwa fajl regolari f'ħażna persistenti. etcd GĦANDU jkun kompletament ċert li d-dħul tal-WAL fil-fatt seħħet qabel ma kompliet bl-ipproċessar. Fuq Linux, sejħa waħda tas-sistema mhix biżżejjed għal dan. jiktbu, peress li l-kitba attwali għall-ħażna fiżika tista 'tittardja. Per eżempju, Linux jista 'jaħżen dħul WAL f'cache fil-memorja tal-kernel (bħal cache tal-paġna) għal xi żmien. U sabiex id-dejta tinkiteb b'mod preċiż f'ħażna persistenti, is-sejħa tas-sistema fdatasync hija meħtieġa wara l-kitba, u etcd jużaha biss (kif tistgħu taraw fir-riżultat tax-xogħol strace, fejn 8 huwa d-deskrittur tal-fajl 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>

Sfortunatament, il-kitba għal ħażna persistenti ma sseħħx istantanjament. Jekk is-sejħa fdatasync hija bil-mod, il-prestazzjoni tas-sistema etcd se tbati. Id-dokumentazzjoni għal etcd tgħidli l-ħażna titqies veloċi biżżejjed jekk, fid-99 perċentil, sejħiet fdatasync jieħdu inqas minn 10ms biex jiktbu fil-fajl WAL. Hemm metriċi utli oħra għall-ħażna, iżda f'din il-kariga qed nitkellmu biss dwar din il-metrika.

Stima tal-ħażna bil-fio

Jekk għandek bżonn tevalwa jekk il-ħażna tiegħek hijiex adattata għal etcd, uża fio, għodda popolari ħafna għall-ittestjar tat-tagħbija I/O. Għandu jiġi mfakkar li l-operazzjonijiet tad-disk jistgħu jkunu differenti ħafna: sinkroniċi u asinkroniċi, ħafna klassijiet ta 'sejħiet tas-sistema, eċċ. Bħala riżultat, fio huwa pjuttost diffiċli biex tużah. Għandha ħafna parametri, u kombinazzjonijiet differenti tal-valuri tagħhom jipproduċu xogħol I/O differenti ħafna. Biex tikseb ċifri adegwati għal etcd, għandek tiżgura li t-tagħbija tal-kitba tat-test minn fio tkun qrib kemm jista 'jkun tat-tagħbija attwali minn etcd meta tikteb fajls WAL.

Għalhekk, fio għandu, bħala minimu, joħloq tagħbija ta 'serje ta' kitbiet sekwenzjali fil-fajl, kull kitba tkun tikkonsisti f'sejħa tas-sistema jiktbusegwit mis-sejħa tas-sistema fdatasync. Il-kitbiet sekwenzjali għal fio jeħtieġu l-għażla --rw=write. Biex fio juża s-sejħa tas-sistema tal-kitba meta tikteb, aktar milli ikteb, għandek tispeċifika l-parametru --ioengine=sync. Fl-aħħarnett, sabiex issejjaħ fdatasync wara kull kitba, trid iżżid il-parametru --fdatasync=1. Iż-żewġ għażliet l-oħra f'dan l-eżempju (--size u -bs) huma speċifiċi għall-iskript. Fit-taqsima li jmiss, aħna ser nuruk kif twaqqafhom.

Għaliex fio u kif tgħallimna nwaqqfuha

F'din il-kariga, niddeskrivu każ reali. Għandna raggruppament Kubernetes v1.13 li aħna mmonitorjajna ma' Prometheus. etcd v3.2.24 kien ospitat fuq SSD. Il-metriċi Etcd wrew latenzi fdatasync għoljin wisq, anke meta l-cluster ma kien qed jagħmel xejn. Il-metriċi kienu strambi u ma tantx konna nafu xi jfisser. Il-cluster kien jikkonsisti minn magni virtwali, kien meħtieġ li wieħed jifhem x'kienet il-problema: f'SSDs fiżiċi jew fis-saff ta 'virtwalizzazzjoni. Barra minn hekk, ħafna drabi għamilna bidliet fil-konfigurazzjoni tal-ħardwer u s-softwer, u kellna bżonn mod kif nevalwaw ir-riżultati tagħhom. Nistgħu nħaddmu etcd f'kull konfigurazzjoni u nħarsu lejn il-metriċi ta 'Prometheus, iżda dan huwa wisq ta' battikata. Konna qed infittxu mod pjuttost sempliċi biex nevalwaw konfigurazzjoni speċifika. Ridna niċċekkjaw jekk nifhmux il-metriċi Prometheus minn etcd b'mod korrett.

Iżda għal dan, kellhom jiġu solvuti żewġ problemi. L-ewwel, kif tidher it-tagħbija tal-I/O li etcd toħloq meta tikteb lil WAL? Liema sejħiet tas-sistema jintużaw? X'inhu d-daqs tar-rekords? It-tieni, jekk inwieġbu dawn il-mistoqsijiet, kif nirriproduċu xogħol simili bil-fio? Tinsiex li fio hija għodda flessibbli ħafna b'ħafna għażliet. Solvejna ż-żewġ problemi b'approċċ wieħed - bl-użu tal-kmandi lsof и strace. lsof telenka d-deskritturi tal-fajls kollha użati mill-proċess u l-fajls assoċjati tagħhom. U bi strace, tista 'teżamina proċess li diġà qed jaħdem, jew tibda proċess u teżaminah. strace jistampa s-sejħiet kollha tas-sistema mill-proċess li qed jiġi eżaminat (u l-proċessi tifel tiegħu). Dan tal-aħħar huwa importanti ħafna, peress li etcd qed tieħu approċċ simili.

L-ewwel użajna strace biex nesploraw is-server etcd għal Kubernetes meta ma kien hemm l-ebda tagħbija fuq il-cluster. Rajna li kważi r-rekords WAL kollha kienu madwar l-istess daqs: 2200–2400 bytes. Għalhekk, fil-kmand fil-bidu tal-post, speċifikajna l-parametru -bs=2300 (bs tfisser id-daqs f'bytes għal kull dħul fio). Innota li d-daqs tad-dħul etcd jiddependi fuq il-verżjoni etcd, id-distribuzzjoni, il-valuri tal-parametri, eċċ., u jaffettwa t-tul ta 'fdatasync. Jekk għandek xenarju simili, eżamina l-proċessi etcd tiegħek b'strace biex issir taf in-numri eżatti.

Imbagħad, biex ikollok idea tajba ta’ x’qed tagħmel is-sistema tal-fajls etcd, bdejna b’strace u l-għażliet -ffttT. Allura ppruvajna neżaminaw il-proċessi tat-tfal u nirreġistraw l-output ta 'kull wieħed minnhom f'fajl separat, u niksbu wkoll rapporti dettaljati dwar il-bidu u t-tul ta' kull sejħa tas-sistema. Aħna użajna lsof biex nikkonfermaw l-analiżi tagħna tal-output ta 'strace u naraw liema deskrittur tal-fajl kien qed jintuża għal liema skop. Allura bl-għajnuna ta 'strace, inkisbu r-riżultati murija hawn fuq. L-istatistika tal-ħin tas-sinkronizzazzjoni kkonfermat li wal_fsync_duration_seconds minn etcd hija konsistenti ma' sejħiet fdatasync b'deskritturi tal-fajl WAL.

Għaddejna mid-dokumentazzjoni għal fio u għażilna għażliet għall-iskript tagħna sabiex fio jiġġenera tagħbija simili għal etcd. Aħna vverifikajna wkoll is-sejħiet tas-sistema u t-tul tagħhom billi nħaddmu fio minn strace, simili għal etcd.

Għażilna bir-reqqa l-valur tal-parametru --size biex jirrappreżenta t-tagħbija I/O kollha minn fio. Fil-każ tagħna, dan huwa n-numru totali ta 'bytes miktuba fil-ħażna. Irriżulta li kien direttament proporzjonali għan-numru ta 'sejħiet tas-sistema ta' kitba (u fdatasync). Għal ċertu valur ta' bs, in-numru ta' sejħiet fdatasync = daqs/bs. Peress li konna interessati fil-perċentili, kellna jkollna biżżejjed kampjuni biex inkunu ċerti, u kkalkulajna li 10^4 ikun biżżejjed għalina (jiġifieri 22 mebibytes). Jekk --size huwa iżgħar, jistgħu jseħħu outliers (pereżempju, bosta sejħiet fdatasync jieħdu aktar żmien mis-soltu u jaffettwaw id-99 perċentil).

Ipprova lilek innifsek

Aħna wrejnek kif tuża fio u ara jekk il-ħażna għandhiex veloċità biżżejjed għal eċċd ta 'prestazzjoni għolja. Issa tista' tipprovaha għalik innifsek billi tuża, pereżempju, magni virtwali b'ħażna SSD IBM Cloud.

Sors: www.habr.com

Żid kumment