Cia ceev haum rau lwm yam? Wb nug fio

Cia ceev haum rau lwm yam? Wb nug fio

Ib zaj dab neeg luv luv txog fio thiab lwm yam

Kev ua haujlwm ntawm pawg lwm yam feem ntau nyob ntawm qhov ua tau zoo ntawm nws qhov chaw cia. etcd exports ib co metrics rau Prometheuslos muab cov ntaub ntawv khaws cia xav tau. Piv txwv li, lub wal_fsync_duration_seconds metric. Cov ntaub ntawv rau lwm yam hais tias: Rau kev khaws cia kom suav tau nrawm txaus, 99 feem pua ​​​​ntawm qhov ntsuas no yuav tsum tsawg dua 10ms. Yog tias koj tab tom npaj los khiav ib pawg lwm yam ntawm Linux cov tshuab thiab xav ntsuas yog tias koj qhov chaw cia ceev txaus (xws li SSD), koj tuaj yeem siv. fio yog cov cuab yeej nrov rau kev sim I / O cov haujlwm. Khiav cov lus txib nram qab no, qhov kev xeem-cov ntaub ntawv yog cov npe hauv qab qhov chaw khaws cia mount point:

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

Koj tsuas yog yuav tsum tau saib cov txiaj ntsig thiab xyuas tias 99 feem pua ​​​​ntawm lub sijhawm fdatasync tsawg dua 10ms. Yog tias muaj, koj muaj peev xwm ceev cia. Nov yog ib qho piv txwv ntawm cov txiaj ntsig:

  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]

Sau ntawv

  • Peb tau kho qhov --size thiab --bs xaiv rau peb qhov xwm txheej tshwj xeeb. Txhawm rau kom tau txais txiaj ntsig zoo los ntawm fio, muab koj tus kheej qhov tseem ceeb. Qhov twg yuav tau txais lawv? Nyeem peb kawm tau li cas rau configure fio.
  • Thaum kuaj, tag nrho I / O load los ntawm fio. Hauv qhov xwm txheej ntawm lub neej tiag tiag, tej zaum yuav muaj lwm cov ntawv thov tuaj rau hauv qhov chaw khaws cia ntxiv rau cov uas cuam tshuam nrog wal_fsync_duration_seconds. Qhov ntxiv load yuav nce tus nqi ntawm wal_fsync_duration_seconds. Yog li yog tias 99 feem pua ​​​​ntawm ze rau 10ms, koj qhov chaw cia tau khiav tawm ntawm qhov nrawm.
  • Coj lub version fio tsis qis dua 3.5 (cov yav dhau los tsis qhia fdatasync duration percentiles).
  • Saum toj no tsuas yog ib ntu ntawm cov txiaj ntsig los ntawm fio.

Zaj dab neeg ntev txog fio thiab lwm yam

WAL yog dab tsi hauv lwm yam

Feem ntau siv databases sau-ua ntej log; etcd siv nws thiab. Peb yuav tsis tham txog cov ntawv sau ua ntej (WAL) kom ntxaws ntawm no. Nws yog txaus rau peb paub tias txhua tus tswv cuab ntawm pawg etcd tswj nws nyob rau hauv tsis tu ncua cia. etcd sau txhua qhov tseem ceeb-tus nqi lag luam (xws li kev hloov tshiab) rau WAL ua ntej siv rau lub khw. Yog tias ib qho ntawm cov tswv cuab khaws cia sib tsoo thiab rov pib dua ntawm snapshots, nws tuaj yeem rov ua haujlwm hauv zos txij li lub snapshot kawg los ntawm WAL cov ntsiab lus.

Thaum tus neeg siv khoom ntxiv tus yuam sij rau lub khw muag khoom tseem ceeb lossis hloov kho tus nqi ntawm tus yuam sij uas twb muaj lawm, thiab lwm yam sau cov haujlwm hauv WAL, uas yog cov ntaub ntawv tsis tu ncua hauv kev khaws cia tsis tu ncua. etcd YUAV TSUM paub tseeb tias qhov WAL nkag tau tshwm sim ua ntej ua haujlwm txuas ntxiv. Ntawm Linux, ib qho kev hu xov tooj tsis txaus rau qhov no. sau ntawv, txij li qhov tseeb sau rau lub cev cia yuav ncua. Piv txwv li, Linux tuaj yeem khaws WAL nkag rau hauv lub cache hauv kernel nco (xws li nplooj ntawv cache) rau qee lub sijhawm. Thiab txhawm rau kom cov ntaub ntawv raug sau kom raug rau kev khaws cia tsis tu ncua, kev hu xov tooj fdatasync yog xav tau tom qab sau, thiab lwm yam tsuas yog siv nws (raws li koj tuaj yeem pom hauv cov txiaj ntsig ntawm kev ua haujlwm. nruj, qhov twg 8 yog WAL cov ntaub ntawv piav qhia):

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>

Hmoov tsis zoo, kev sau ntawv mus rau qhov tsis tu ncua tsis tshwm sim tam sim ntawd. Yog tias fdatasync hu qeeb, kev ua haujlwm ntawm lwm yam system yuav raug kev txom nyem. Cov ntaub ntawv rau lwm yam hais tiastias qhov chaw cia tau suav tias yog ceev txaus yog tias, hauv 99 feem pua, fdatasync hu siv tsawg dua 10ms los sau rau WAL cov ntaub ntawv. Muaj lwm cov kev ntsuas muaj txiaj ntsig rau kev khaws cia, tab sis hauv cov ntawv tshaj tawm no peb tsuas yog tham txog qhov ntsuas no xwb.

Kwv yees cia nrog fio

Yog tias koj xav tau los ntsuas seb koj qhov chaw khaws cia yog qhov tsim nyog rau lwm yam, siv fio, ib qho khoom siv I/O nrov heev. Nws yuav tsum nco ntsoov tias kev ua haujlwm disk tuaj yeem sib txawv heev: synchronous thiab asynchronous, ntau chav kawm ntawm kev hu xov tooj, thiab lwm yam. Yog li ntawd, fio nyuaj heev rau kev siv. Nws muaj ntau yam tsis sib xws, thiab kev sib txawv ntawm lawv cov txiaj ntsig ua rau I / O workloads sib txawv. Yuav kom tau txais cov nuj nqis txaus rau etcd, koj yuav tsum xyuas kom meej tias qhov kev xeem sau ntawv los ntawm fio yog ze li qhov ua tau rau qhov tseeb ntawm cov khoom thauj los ntawm lwm yam thaum sau WAL cov ntaub ntawv.

Yog li ntawd, fio yuav tsum, qhov tsawg kawg nkaus, tsim ib qho load nyob rau hauv daim ntawv ntawm ib tug series ntawm sib law liag sau rau cov ntaub ntawv, txhua tus sau yuav muaj ib tug system hu. sau ntawvua raws li fdatasync system hu. Sequential sau rau fio xav tau qhov kev xaiv --rw = sau. Rau fio siv lub kaw lus sau hu thaum sau ntawv, tsis yog sau, koj yuav tsum qhia qhov --ioengine=sync parameter. Thaum kawg, txhawm rau hu fdatasync tom qab txhua tus sau, koj yuav tsum ntxiv qhov --fdatasync = 1 parameter. Lwm ob txoj kev xaiv hauv qhov piv txwv no (--size thiab -bs) yog cov ntawv tshwj xeeb. Hauv seem tom ntej, peb yuav qhia koj yuav ua li cas teeb tsa lawv.

Vim li cas fio thiab yuav ua li cas peb tau kawm los teeb tsa

Hauv tsab ntawv no, peb piav qhia txog qhov xwm txheej tiag tiag. Peb muaj pawg Kubernetes v1.13 uas peb saib nrog Prometheus. etcd v3.2.24 tau tuav ntawm SSD. Etcd metrics pom fdatasync latencies siab dhau, txawm tias thaum pawg tsis ua dab tsi. Cov kev ntsuas tau txawv txawv thiab peb tsis paub tias lawv txhais li cas. Cov pawg muaj cov tshuab virtual, nws yuav tsum nkag siab tias qhov teeb meem yog dab tsi: hauv lub cev SSDs lossis hauv txheej virtualization. Tsis tas li ntawd, peb feem ntau tau hloov kho kho vajtse thiab software teeb tsa, thiab peb xav tau txoj hauv kev los ntsuas lawv cov txiaj ntsig. Peb tuaj yeem khiav lwm yam hauv txhua qhov kev teeb tsa thiab saib Prometheus metrics, tab sis qhov ntawd yog qhov nyuaj heev. Peb tab tom nrhiav ib txoj hauv kev yooj yim los ntsuas qhov kev teeb tsa tshwj xeeb. Peb xav xyuas seb peb nkag siab Prometheus metrics los ntawm lwm yam kom raug.

Tab sis rau qhov no, ob qho teeb meem yuav tsum tau daws. Ua ntej, I/O load uas etcd tsim thaum sau rau WAL zoo li cas? Qhov kev hu xov tooj siv dab tsi? Qhov loj ntawm cov ntaub ntawv yog dab tsi? Qhov thib ob, yog tias peb teb cov lus nug no, peb yuav ua li cas rov tsim cov haujlwm zoo sib xws nrog fio? Tsis txhob hnov ​​​​qab tias fio yog cov cuab yeej hloov tau yooj yim nrog ntau txoj kev xaiv. Peb daws ob qho teeb meem nrog ib txoj hauv kev - siv cov lus txib lsof ua и nruj. lsof teev tag nrho cov ntaub ntawv piav qhia siv los ntawm cov txheej txheem thiab lawv cov ntaub ntawv cuam tshuam. Thiab nrog txoj hlua, koj tuaj yeem tshuaj xyuas cov txheej txheem uas twb tau ua lawm, lossis pib txheej txheem thiab tshuaj xyuas nws. strace luam tawm txhua qhov kev hu xov tooj los ntawm cov txheej txheem raug tshuaj xyuas (thiab nws cov txheej txheem me nyuam). Cov yav tas yog ib qho tseem ceeb heev, vim etcd tsuas yog siv txoj hauv kev zoo sib xws.

Peb thawj zaug siv txoj hlua los tshawb txog lwm yam server rau Kubernetes thaum tsis muaj kev thauj khoom ntawm pawg. Peb pom tias yuav luag tag nrho WAL cov ntaub ntawv tau hais txog tib qhov loj: 2200-2400 bytes. Yog li ntawd, nyob rau hauv cov lus txib thaum pib ntawm tus ncej, peb teev qhov parameter -bs = 2300 (bs txhais tau tias qhov loj me hauv bytes rau txhua qhov fio nkag). Nco ntsoov tias qhov loj ntawm etcd nkag yog nyob ntawm lwm yam version, faib, parameter qhov tseem ceeb, thiab lwm yam, thiab cuam tshuam rau fdatasync ntev. Yog tias koj muaj qhov xwm txheej zoo sib xws, tshuaj xyuas koj cov txheej txheem thiab lwm yam nrog txoj hlua kom paub cov lej tseeb.

Tom qab ntawd, kom tau txais lub tswv yim zoo ntawm qhov etcd filesystem ua li cas, peb pib nws nrog txoj hlua thiab cov kev xaiv -ffttT. Yog li peb tau sim tshuaj xyuas cov txheej txheem ntawm tus menyuam thiab sau cov ntaub ntawv tawm ntawm lawv txhua tus hauv cov ntaub ntawv sib cais, thiab tseem tau txais cov lus qhia ntxaws txog kev pib thiab sijhawm ntawm txhua qhov kev hu xovtooj. Peb siv lsof kom paub meej tias peb qhov kev soj ntsuam ntawm cov khoom tso tawm thiab pom cov ntaub ntawv piav qhia tau raug siv rau lub hom phiaj twg. Yog li nrog kev pab los ntawm txoj hlua, cov txiaj ntsig tau pom saum toj no tau txais. Synchronization lub sij hawm txheeb cais tau lees paub tias wal_fsync_duration_seconds los ntawm lwm yam zoo ib yam nrog fdatasync hu nrog WAL cov ntaub ntawv piav qhia.

Peb tau dhau los ntawm cov ntaub ntawv rau fio thiab xaiv cov kev xaiv rau peb tsab ntawv kom fio yuav tsim cov khoom zoo ib yam li lwm yam. Peb kuj tau txheeb xyuas qhov kev hu xov tooj thiab lawv lub sijhawm los ntawm kev khiav fio los ntawm txoj hlua, zoo ib yam li lwm yam.

Peb tau ua tib zoo xaiv tus nqi ntawm --size parameter los sawv cev tag nrho I / O load los ntawm fio. Hauv peb cov ntaub ntawv, qhov no yog tag nrho cov lej ntawm bytes sau rau hauv qhov chaw cia. Nws tau hloov mus ncaj qha rau tus lej sau ntawv (thiab fdatasync) hu xov tooj. Rau qee tus nqi ntawm bs, tus naj npawb ntawm fdatasync hu = loj / bs. Txij li thaum peb txaus siab rau qhov feem pua, peb yuav tsum muaj cov qauv txaus kom paub tseeb, thiab peb suav tias 10^4 yuav txaus rau peb (uas yog 22 mebibytes). Yog hais tias --size me me, outliers tej zaum yuav tshwm sim (piv txwv li, ob peb fdatasync hu siv sij hawm ntev dua li ib txwm thiab cuam tshuam rau 99th feem pua).

Sim nws tus kheej

Peb qhia koj yuav ua li cas siv fio thiab saib seb qhov chaw cia yog ceev txaus rau lwm yam kom ua tau zoo. Tam sim no koj tuaj yeem sim nws rau koj tus kheej siv, piv txwv li, cov tshuab virtual nrog SSD cia hauv IBM huab.

Tau qhov twg los: www.hab.com

Ntxiv ib saib