Saosaoa teuina talafeagai mo etcd? Tatou fesili ia fio

Saosaoa teuina talafeagai mo etcd? Tatou fesili ia fio

O se tala puupuu e uiga i fio ma etcd

Fa'atinoga o vaega ma isi mea tele e faalagolago i le faatinoga o lona teuina. etcd auina atu i fafo nisi metrics i Prometheuse tu'uina atu fa'amatalaga fa'atinoga o lo'o mana'omia. Mo se fa'ata'ita'iga, o le wal_fsync_duration_seconds metric. O faʻamaumauga mo etcd fai mai: Mo le teuina ina ia vave ona manatu, o le 99 pasene o lenei metric e tatau ona itiiti ifo i le 10ms. Afai o loʻo e fuafua e faʻatautaia se fuifui etcd i luga o masini Linux ma e te manaʻo e iloilo pe ua vave lau teuina (eg SSD), e mafai ona e faʻaogaina fio o se meafaigaluega lauiloa mo le suʻeina o galuega I/O. Faʻataʻitaʻi le faʻatonuga o loʻo i lalo, pe a fai o suʻega-faʻamatalaga o le faʻatonuga i lalo o le nofoaga e teu ai:

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

E tatau ona e vaʻai i faʻaiʻuga ma siaki le 99th percentile o le umi fdatasync itiiti ifo i le 10 ms. Afai o lea, o loʻo ia te oe le teuina vave. O se fa'ata'ita'iga lea o fa'ai'uga:

  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]

Faamatalaga

  • Ua matou fa'avasegaina le --size ma --bs filifiliga mo la matou fa'aaliga fa'apitoa. Ina ia maua se fa'ai'uga aoga mai fio, tu'u mai au lava fa'atauga. O fea e aumai ai? Faitau auala na matou aʻoaʻo ai e faʻapipiʻi fio.
  • I le taimi o suʻega, o uta I/O uma e sau mai le fio. I se fa'aaliga moni o le olaga, e foliga mai o le ai ai isi tusi talosaga e sau i totonu o le teuina e ese mai i latou e fesoʻotaʻi ma wal_fsync_duration_seconds. O le uta fa'aopoopo o le a fa'ateleina ai le tau o le wal_fsync_duration_seconds. Afai la o le 99th percentile e latalata ile 10ms, ua leai se saoasaoa o lau teuina.
  • Ave le lomiga fio aua le maualalo ile 3.5 (o mea muamua e le o faʻaalia fdatasync umi pasene).
  • O lo'o i luga ua na'o se snippet o fa'ai'uga mai fio.

Tala umi e uiga i fio ma etcd

O le a le WAL i etcd

E masani ona fa'aoga fa'amaumauga tusi-i luma ogalaau; etcd faʻaaogaina foi. O le a matou le fa'atalanoaina le fa'amatalaga tusitusia i luma (WAL) i'inei. Ua lava mo i tatou le iloa o tagata taʻitoʻatasi o le etcd fuifui o loʻo tausia i le teuina faifai pea. etcd tusia ta'iala ta'i-taua (pei o se fa'afouga) i le WAL a'o le'i fa'aoga i le faleoloa. Afai e pa'u se tasi o sui o le teuina ma toe amata i le va o ata, e mafai ona toe faʻafoʻisia fefaʻatauaiga talu mai le ata mulimuli a le WAL anotusi.

Pe a fa'aopoopo e le tagata o tausia se ki i le faleoloa tau-taua pe fa'afou le tau o se ki o lo'o i ai, etcd fa'amaumau le gaioiga i le WAL, o se faila masani i le teuina faifai pea. etcd E TATAU ona mautinoa atoatoa o le ulufale WAL na tupu moni a'o le'i fa'aauau le faiga. I luga o Linux, e le lava le telefoni e tasi mo lenei mea. tusi, talu ai o le tusi moni i le teuina faaletino atonu e tuai. Mo se faʻataʻitaʻiga, e mafai e Linux ona teuina se WAL ulufale i totonu o se faʻaoga i le fatu fatu (pei o se itulau cache) mo sina taimi. Ma ina ia mafai ona saʻo le tusiaina o faʻamaumauga i le teuina faifai pea, e manaʻomia le fdatasync system call pe a uma le tusitusi, ma etcd naʻo le faʻaaogaina (e pei ona e vaʻaia i le taunuuga o le galuega. fusi, lea 8 o le faila faila 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>

Ae paga lea, o le tusitusi i le teuina faifai pea e le tupu vave. Afai e telegese le valaau fdatasync, o le a pagatia le faatinoga o le etcd system. O faʻamaumauga mo etcd fai maio le teuina e manatu vave lava pe afai, i le 99th percentile, fdatasync telefoni e itiiti ifo i le 10ms e tusi ai i le faila WAL. E i ai isi metotia aoga mo le teuina, ae i lenei pou o loʻo matou talanoa e uiga i lenei metric.

Fuafuaina le teuina ma fio

Afai e te manaʻomia le suʻesuʻeina pe talafeagai lau teuina mo etcd, faʻaaoga fio, o se meafaigaluega faʻataʻitaʻiga I / O e sili ona lauiloa. E tatau ona manatua e mafai ona matua ese le gaioiga o le tisiki: synchronous ma asynchronous, tele vasega o telefoni feaveaʻi, ma isi. O se taunuuga, o le fio e faigata tele ona faʻaoga. E tele faʻamaufaʻailoga, ma tuʻufaʻatasiga eseese o latou tau e maua ai le tele o galuega I / O. Ina ia maua ni fuainumera talafeagai mo etcd, e tatau ona e mautinoa o le suʻega tusitusi uta mai fio e latalata i le uta moni mai etcd pe a tusia faila WAL.

O le mea lea, e tatau i le fio, i se tulaga maualalo, fatuina se uta i le tulaga o se faasologa o tusitusiga sosoo i le faila, o tusitusiga taitasi o le a aofia ai se telefoni feaveaʻi. tusisosoo ai ma le fdatasync system call. Fa'asologa tusitusi i fio mana'omia le --rw=tusi filifiliga. Mo fio e fa'aoga le faiga tusitusi valaau pe a tusitusi, nai lo tusi, e tatau ona e faʻamaonia le --ioengine=sync parameter. Ma le mea mulimuli, ina ia mafai ona valaʻau fdatasync pe a uma tusitusiga taʻitasi, e tatau ona e faʻaopopo le --fdatasync=1 parakalafa. O isi filifiliga e lua i lenei faʻataʻitaʻiga (--size ma -bs) e faʻapitoa i tusitusiga. I le isi vaega, matou te faʻaali atu ia te oe le auala e faʻapipiʻi ai.

Aisea tonu fio ma pe na faapefea ona matou aoao e setiina

I lenei pou, matou te faʻamatalaina se tulaga moni. E iai la matou fuifui Kubernetes v1.13 lea na matou mataituina ma Prometheus. etcd v3.2.24 sa talimalo ile SSD. Etcd metrics fa'aalia fdatasync latencies maualuga tele, e tusa lava pe leai se mea o faia e le fuifui. O fua fa'atatau e ese ma matou te le'i iloa lelei le uiga. O le fuifui e aofia ai masini masini, e tatau ona malamalama pe o le a le faʻafitauli: i SSD faaletino poʻo le virtualization layer. E le gata i lea, e masani ona matou faia suiga i masini ma polokalama faakomepiuta, ma sa matou manaomia se auala e iloilo ai a latou taunuuga. E mafai ona matou tamoe etcd i faatulagaga uma ma vaʻavaʻai i le Prometheus metrics, ae o se faʻalavelave tele. Sa matou suʻeina se auala faigofie e iloilo ai se faʻatulagaga patino. Matou te manaʻo e siaki pe matou te malamalama lelei i le Prometheus metrics mai etcd saʻo.

Ae mo lenei mea, e lua faafitauli sa tatau ona foia. Muamua, o le a le mea e foliga mai o le I/O load lea etcd pe a tusi i le WAL? O a faiga telefoni e fa'aaogaina? O le a le tele o faamaumauga? Lona lua, afai tatou te taliina nei fesili, e faʻafefea ona tatou toe faia se galuega faʻatusa tutusa ma fio? Aua nei galo o le fio o se meafaigaluega e sili ona fetuutuunai ma le tele o filifiliga. Na matou foia uma faʻafitauli i le tasi auala - faʻaaoga tulafono lsof и fusi. lsof lisi faila faila uma o loʻo faʻaaogaina e le faʻagasologa ma a latou faila e fesoʻotaʻi. Ma fa'atasi ai ma strace, e mafai ona e su'esu'eina se fa'agasologa o lo'o fa'agasolo, pe amata se fa'agasologa ma su'esu'e. strace lolomi uma telefoni mai le faagasologa o loʻo suʻesuʻeina (ma ana faʻagasologa o tamaiti). O le mea mulimuli e taua tele, talu ai o le etcd o loʻo faia se auala tutusa.

Na matou faʻaaogaina muamua le strace e suʻesuʻe ai le etcd server mo Kubernetes pe a leai se uta i luga o le fuifui. Na matou va'aia e toetoe lava o fa'amaumauga uma a WAL e tutusa le tele: 2200–2400 paita. O le mea lea, i le faʻatonuga i le amataga o le pou, matou te faʻamaonia le parakalafa -bs = 2300 (bs o lona uiga o le tele i bytes mo faʻamaumauga taʻitasi). Manatua o le tele o le etcd entry e faʻalagolago i le etcd version, tufatufaga, tau faʻamaufaʻailoga, ma isi, ma aʻafia ai le fdatasync umi. Afai e iai sau fa'aaliga fa'apena, su'esu'e au faiga etcd fa'atasi ma strace e su'e ai numera sa'o.

Ma, ina ia maua se manatu lelei i le mea o loʻo faia e le faila faila etcd, na matou amataina i le strace ma le -ffttT filifiliga. O lea na matou taumafai ai e suʻesuʻe le faʻagasologa o tamaiti ma faʻamaumau le gaioiga o latou taʻitoʻatasi i se faila eseese, ma maua ai foʻi faʻamatalaga auiliili e uiga i le amataga ma le umi o telefoni taʻitasi. Na matou fa'aogaina le lsof e fa'amaonia ai a matou au'ili'iliga o le strace output ma va'ai po'o fea faila fa'amatalaga o lo'o fa'aogaina mo le fa'amoemoe. Faatasi ai ma le fesoasoani a strace, o taunuuga o loʻo faʻaalia i luga na maua. Fa'amauina fa'amaumauga o taimi fa'amaopoopo o wal_fsync_duration_seconds mai etcd e ogatasi ma fdatasync telefoni ma faila faila WAL.

Na matou suʻesuʻeina faʻamaumauga mo fio ma filifili filifiliga mo a matou tusitusiga ina ia mafai ai e fio ona maua se uta e pei o etcd. Na matou siakiina foi telefoni feaveaʻi ma lo latou umi e ala i le taʻavale fio mai strace, tutusa ma etcd.

Ua matou filifilia ma le faaeteete le tau o le --size parameter e fai ma sui o le I / O atoa mai le fio. I la matou tulaga, o le aofaʻi atoa o bytes na tusia i le teuina. Na aliali mai e fetaui tonu ma le numera o le tusitusi (ma fdatasync) telefoni feaveaʻi. Mo se tulaga taua o le bs, o le numera o fdatasync telefoni = tele / bs. Talu ai sa matou fiafia i le pasene, e tatau ona lava a matou faʻataʻitaʻiga ina ia mautinoa, ma matou fuafua e lava le 10^4 mo i matou (e 22 mebibytes). Afai --size e laʻititi, e ono tupu mai fafo (mo se faʻataʻitaʻiga, tele fdatasync telefoni e umi atu nai lo le masani ma aafia ai le 99th pasene).

Taumafai e oe lava

Na matou faʻaali atu ia te oe le faʻaogaina o le fio ma vaʻai pe o le teuina e vave tele mo etcd e faʻatino lelei. Ole taimi nei e mafai ona e faʻataʻitaʻiina mo oe lava e faʻaaoga, mo se faʻataʻitaʻiga, masini masini ma SSD teuina i totonu Ava IBM.

puna: www.habr.com

Faaopoopo i ai se faamatalaga