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.
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.