Ang katulin sa pagtipig nga angay alang sa etcd? Mangutana ta ni fio

Ang katulin sa pagtipig nga angay alang sa etcd? Mangutana ta ni fio

Usa ka mubo nga istorya mahitungod sa fio ug etcd

Pagpasundayag sa cluster ug uban pa kadaghanan nagdepende sa pasundayag sa pagtipig niini. etcd exports sa pipila ka metrics sa Prometheussa paghatag sa gitinguha nga storage performance impormasyon. Pananglitan, ang wal_fsync_duration_seconds metric. Ang dokumentasyon alang sa etcd nag-ingon: Alang sa pagtipig nga makonsiderar nga paspas, ang ika-99 nga porsyento sa kini nga sukatan kinahanglan nga ubos sa 10ms. Kung nagplano ka nga magpadagan ug etcd cluster sa mga makina sa Linux ug gusto nimong susihon kung ang imong pagtipig igo nga kusog (pananglitan SSD), mahimo nimong gamiton fio mao ang usa ka popular nga himan alang sa pagsulay sa mga operasyon sa I/O. Pagdalagan ang mosunod nga sugo, diin ang test-data mao ang direktoryo ubos sa storage mount point:

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

Kinahanglan nimo nga tan-awon ang mga resulta ug susihon kung ang ika-99 nga porsyento sa gidugayon fdatasync ubos sa 10 ms. Kung mao, adunay ka dali nga pagtipig. Ania ang usa ka pananglitan sa mga resulta:

  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]

Mga nota

  • Among gipahiangay ang --size ug --bs nga mga kapilian para sa among partikular nga senaryo. Aron makakuha usa ka mapuslanon nga resulta gikan sa fio, ihatag ang imong kaugalingon nga mga kantidad. Asa kini makuha? Basaha giunsa namo nakat-on ang pag-configure sa fio.
  • Atol sa pagsulay, ang tanan nga I/O load nagagikan sa fio. Sa usa ka senaryo sa tinuod nga kinabuhi, lagmit adunay uban pang mga hangyo sa pagsulat nga moabut sa pagtipig gawas sa mga may kalabutan sa wal_fsync_duration_seconds. Ang dugang nga load mopataas sa bili sa wal_fsync_duration_seconds. Mao nga kung ang ika-99 nga porsyento hapit sa 10ms, ang imong pagtipig nahutdan sa katulin.
  • Kuhaa ang bersyon fio dili moubus sa 3.5 (ang mga nauna wala magpakita sa mga porsyento sa gidugayon sa fdatasync).
  • Sa ibabaw usa lang ka snippet sa mga resulta gikan sa fio.

Taas nga story about fio and etcd

Unsa ang WAL sa etcd

Kasagaran ang mga database gigamit pagsulat sa unahan nga log; etcd gigamit pud ni. Dili nato hisgotan ang detalye sa write-ahead log (WAL) dinhi. Igo na alang kanato nga mahibal-an nga ang matag miyembro sa etcd cluster nagmintinar niini sa padayon nga pagtipig. etcd nagsulat sa matag key-value nga operasyon (sama sa usa ka update) ngadto sa WAL sa dili pa kini i-apply sa tindahan. Kung ang usa sa mga miyembro sa pagtipig nahagsa ug nagsugod pag-usab tali sa mga snapshot, mahimo kini nga ibalik sa lokal ang mga transaksyon sukad sa katapusan nga snapshot sa sulud sa WAL.

Kung ang usa ka kliyente nagdugang usa ka yawe sa key-value store o nag-update sa kantidad sa usa ka naglungtad nga yawe, etcd nagrekord sa operasyon sa WAL, nga usa ka regular nga file sa padayon nga pagtipig. etcd KINAHANGLAN nga hingpit nga sigurado nga ang WAL entry tinuod nga nahitabo sa wala pa magpadayon sa pagproseso. Sa Linux, ang usa ka tawag sa sistema dili igo alang niini. isulat, tungod kay ang aktuwal nga pagsulat sa pisikal nga pagtipig mahimong malangan. Pananglitan, ang Linux mahimong magtipig og WAL entry sa cache sa kernel memory (sama sa page cache) sulod sa pipila ka panahon. Ug aron ang datos tukma nga gisulat sa padayon nga pagtipig, ang fdatasync system nga tawag gikinahanglan human sa pagsulat, ug etcd gigamit lang kini (ingon sa imong makita sa resulta sa trabaho subay, diin ang 8 mao ang WAL file descriptor):

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>

Ikasubo, ang pagsulat sa padayon nga pagtipig dili mahitabo dayon. Kung ang tawag sa fdatasync hinay, ang pasundayag sa etcd nga sistema mag-antus. Ang dokumentasyon alang sa etcd nag-ingonnga ang pagtipig gikonsiderar nga paspas kung, sa ika-99 nga porsyento, ang mga tawag sa fdatasync dili moubos sa 10ms aron isulat sa WAL file. Adunay uban pang mga mapuslanon nga sukatan alang sa pagtipig, apan sa kini nga post naghisgot lamang kami bahin sa kini nga sukatan.

Pagbanabana sa pagtipig gamit ang fio

Kung kinahanglan nimo nga susihon kung ang imong pagtipig angay alang sa etcd, gamita ang fio, usa ka sikat kaayo nga himan sa pagsulay sa pagkarga sa I/O. Kinahanglang hinumdoman nga ang mga operasyon sa disk mahimong lahi kaayo: dungan ug asynchronous, daghang mga klase sa mga tawag sa sistema, ug uban pa. Ingon nga resulta, ang fio lisud gamiton. Kini adunay daghang mga parameter, ug ang lainlaing mga kombinasyon sa ilang mga kantidad nagpatunghag lahi kaayo nga mga karga sa trabaho sa I/O. Aron makakuha og igong numero alang sa etcd, kinahanglan nimong sigurohon nga ang test write load gikan sa fio kay duol sa aktuwal nga load gikan sa etcd sa pagsulat sa WAL files.

Busa, ang fio kinahanglan, sa labing gamay, maghimo usa ka load sa porma sa usa ka serye sa sunud-sunod nga pagsulat sa file, ang matag pagsulat maglangkob sa usa ka tawag sa sistema isulatgisundan sa fdatasync system call. Ang sunud-sunod nga pagsulat sa fio nagkinahanglan sa --rw=write option. Para fio gamiton ang write system call sa pagsulat, kay sa pagsulat, kinahanglan nimong ipiho ang --ioengine=sync parameter. Sa katapusan, aron matawag ang fdatasync pagkahuman sa matag pagsulat, kinahanglan nimong idugang ang --fdatasync=1 parameter. Ang laing duha ka mga opsyon niini nga pananglitan (--size ug -bs) kay script-specific. Sa sunod nga seksyon, ipakita namo kanimo kung giunsa kini pag-set up.

Ngano nga eksakto ang fio ug kung giunsa naton nahibal-an ang pag-set up niini

Niini nga post, among gihulagway ang tinuod nga kaso. Naa mi cluster Kubernetes v1.13 nga among gibantayan sa Prometheus. etcd v3.2.24 gi-host sa usa ka SSD. Ang Etcd metrics nagpakita sa fdatasync latencies nga taas kaayo, bisan kung ang cluster walay gibuhat. Katingad-an ang mga sukatan ug wala gyud kami nahibal-an kung unsa ang gipasabut niini. Ang cluster naglangkob sa mga virtual machine, gikinahanglan nga masabtan kung unsa ang problema: sa pisikal nga SSDs o sa virtualization layer. Dugang pa, kanunay kaming naghimog mga pagbag-o sa pag-configure sa hardware ug software, ug nanginahanglan kami usa ka paagi sa pagtimbang-timbang sa ilang mga resulta. Mahimo kaming modagan ug uban pa sa matag pag-configure ug tan-awon ang mga sukatan sa Prometheus, apan kana labi ka hasol. Nangita kami og usa ka yano nga paagi sa pagtimbang-timbang sa usa ka piho nga configuration. Gusto namon nga susihon kung nasabtan ba namon ang mga sukatan sa Prometheus gikan sa etcd sa husto.

Apan alang niini, duha ka problema ang kinahanglang sulbaron. Una, unsa ang hitsura sa I/O load nga etcd sa pagsulat sa WAL? Unsa nga mga tawag sa sistema ang gigamit? Unsa ang gidak-on sa mga rekord? Ikaduha, kung tubagon nato kini nga mga pangutana, unsaon nato pag-reproduce ang susamang workload sa fio? Ayaw kalimti nga ang fio kay flexible kaayo nga himan nga adunay daghang kapilian. Nasulbad namo ang duha ka mga problema sa usa ka paagi - gamit ang mga sugo lsof ΠΈ subay. Gilista sa lsof ang tanan nga mga deskriptor sa file nga gigamit sa proseso ug ang mga kauban nga file niini. Ug sa strace, mahimo nimong susihon ang usa ka proseso nga nagdagan, o magsugod usa ka proseso ug susihon kini. Giimprinta ni strace ang tanan nga tawag sa sistema gikan sa proseso nga gisusi (ug ang mga proseso sa bata niini). Ang ulahi hinungdanon kaayo, tungod kay ang etcd nagkuha usa ka parehas nga pamaagi.

Una namong gigamit ang strace aron ma-explore ang etcd server para sa Kubernetes kung walay load sa cluster. Among nakita nga halos tanan nga mga rekord sa WAL halos managsama ang gidak-on: 2200–2400 bytes. Busa, sa sugo sa sinugdanan sa post, among gipiho ang parameter -bs=2300 (bs nagpasabot sa gidak-on sa bytes alang sa matag fio entry). Timan-i nga ang gidak-on sa etcd entry nagdepende sa etcd version, distribution, parameter values, etc., ug makaapekto sa fdatasync nga gidugayon. Kung adunay ka parehas nga senaryo, susiha ang imong etcd nga mga proseso nga adunay strace aron mahibal-an ang eksaktong mga numero.

Pagkahuman, aron makakuha usa ka maayong ideya kung unsa ang gibuhat sa etcd file system, gisugdan namon kini sa mga kapilian sa strace ug -ffttT. Mao nga gisulayan namon nga susihon ang mga proseso sa bata ug irekord ang output sa matag usa kanila sa usa ka lahi nga file, ug makakuha usab mga detalyado nga taho bahin sa pagsugod ug gidugayon sa matag tawag sa sistema. Gigamit namo ang lsof aron pagkumpirma sa among pag-analisa sa strace output ug tan-awa kung unsang file descriptor ang gigamit alang sa unsa nga katuyoan. Busa uban sa tabang sa strace, ang mga resulta nga gipakita sa ibabaw nakuha. Gipamatud-an sa mga istatistika sa oras sa pag-synchronize nga ang wal_fsync_duration_seconds gikan sa etcd nahiuyon sa mga tawag sa fdatasync nga adunay mga deskriptor sa WAL file.

Among giagian ang dokumentasyon para sa fio ug mipili og mga opsyon alang sa among script aron ang fio makamugna og load nga susama sa etcd. Gisusi usab namo ang mga tawag sa sistema ug ang ilang gidugayon pinaagi sa pagpadagan sa fio gikan sa strace, susama sa etcd.

Gipili namo pag-ayo ang bili sa --size nga parameter nga magrepresentar sa tibuok I/O load gikan sa fio. Sa among kaso, kini ang kinatibuk-ang gidaghanon sa mga byte nga gisulat sa pagtipig. Kini nahimo nga direkta nga katimbang sa gidaghanon sa pagsulat (ug fdatasync) nga mga tawag sa sistema. Alang sa usa ka piho nga kantidad sa bs, ang gidaghanon sa mga tawag sa fdatasync = gidak-on / bs. Tungod kay kami interesado sa porsyento, kinahanglan nga adunay igo nga mga sample aron masiguro, ug among gikalkula nga ang 10^4 igo na alang kanamo (kana ang 22 mebibytes). Kung ang --size mas gamay, ang mga outlier mahimong mahitabo (pananglitan, daghang mga tawag sa fdatasync mas dugay kaysa naandan ug makaapekto sa ika-99 nga porsyento).

Sulayi kini sa imong kaugalingon

Gipakita namo kanimo kung giunsa ang paggamit sa fio ug tan-awa kung ang pagtipig igo ba nga paspas aron ang etcd molihok nga maayo. Karon mahimo nimong sulayan kini alang sa imong kaugalingon gamit, pananglitan, mga virtual nga makina nga adunay pagtipig sa SSD IBM Cloud.

Source: www.habr.com

Idugang sa usa ka comment