Kukhazikitsa kernel ya Linux ya GlusterFS

Kumasulira kwa nkhaniyi kunakonzedwa madzulo a chiyambi cha maphunziro Woyang'anira Linux. Katswiri».

Kukhazikitsa kernel ya Linux ya GlusterFS

Nthawi ndi nthawi, apa ndi apo, pamakhala mafunso okhudza malingaliro a Gluster okhudza kukonza kernel komanso ngati pakufunika izi.

Zosowa zotere sizichitika kawirikawiri. Pazinthu zambiri, kernel imagwira ntchito bwino kwambiri. Ngakhale pali downside. M'mbiri, Linux kernel yakhala yokonzeka kugwiritsa ntchito kukumbukira zambiri ngati itapatsidwa mwayi, kuphatikizapo caching monga njira yaikulu yopititsira patsogolo ntchito.

Nthawi zambiri, izi zimagwira ntchito bwino, koma polemera kwambiri zimatha kuyambitsa mavuto.

Tili ndi chidziwitso chochuluka ndi machitidwe okumbukira kwambiri monga CAD, EDA ndi zina zotero, zomwe zinayamba kuchepa pansi pa katundu wolemetsa. Ndipo nthawi zina tinkakumana ndi mavuto ku Gluster. Titayang'ana mosamalitsa kagwiritsidwe ntchito ka kukumbukira ndi disk latency kwa masiku ambiri, tidapeza zochulukira, iowait yayikulu, zolakwika za kernel (kernel oops), kuzizira, ndi zina zambiri.

Nkhaniyi ndi zotsatira za kuyesa kochulukira komwe kumachitika nthawi zosiyanasiyana. Chifukwa cha magawowa, sikuti kuyankha kwathunthu kwasintha, koma gululi lakhazikikanso kwambiri.

Zikafika pakukonzekera kukumbukira, chinthu choyamba choyenera kuyang'ana ndi makina okumbukira (VM, memory memory), omwe ali ndi zosankha zambiri zomwe zingakusokonezeni.

vm.swappiness

chizindikiro vm.swappiness imatsimikizira kuchuluka kwa kernel yomwe imagwiritsa ntchito kusinthana (kusinthana, paging) poyerekeza ndi RAM. Amatanthauzidwanso mu code source ngati "chizolowezi choba kukumbukira mapu". Kusinthana kwakukulu kumatanthauza kuti kernel imakonda kusinthana masamba ojambulidwa. Mtengo wotsika wa swappiness umatanthawuza zosiyana: kernel idzachepera pamtima. Mwa kuyankhula kwina, ndipamwamba mtengo vm.swappiness, m'pamenenso dongosolo lidzagwiritsa ntchito kusinthana.

Kugwiritsa ntchito kwambiri kusinthana sikofunikira, chifukwa midadada yayikulu imakwezedwa ndikutsitsidwa mu RAM. Anthu ambiri amatsutsa kuti mtengo wa swapiness uyenera kukhala waukulu, koma muzochitika zanga, kuziyika ku "0" kumabweretsa ntchito yabwino.

Mutha kuwerenga zambiri apa - lwn.net/Articles/100978

Koma, kachiwiri, zosinthazi ziyenera kugwiritsidwa ntchito mosamala komanso pambuyo poyesa pulogalamu inayake. Pamapulogalamu odzaza kwambiri, gawoli liyenera kukhazikitsidwa kukhala "0". Mukasinthidwa kukhala "0", kuyankha kwamakina kumakhala bwino.

vm.vfs_cache_pressure

Kukonzekera uku kumawongolera kukumbukira komwe kumagwiritsidwa ntchito ndi kernel ya caching directory ndi zinthu za inode (dentry ndi inode).

Ndi mtengo wosasinthika wa 100, kernel idzayesa kumasula dentry ndi inode cache pa "mwachilungamo" pa pagecache ndi swapcache. Kuchepetsa vfs_cache_pressure kumapangitsa kernel kusunga dentry ndi inode cache. Mtengo ukakhala "0", kernel sidzachotsa dentry ndi inode cache chifukwa cha kukakamiza kukumbukira, ndipo izi zitha kubweretsa cholakwika chosakumbukika. Kuchulukitsa kwa vfs_cache_pressure pamwamba pa 100 kumapangitsa kernel kuika patsogolo dentry ndi inode flushing.

Pogwiritsa ntchito GlusterFS, ogwiritsa ntchito ambiri omwe ali ndi deta yambiri ndi mafayilo ang'onoang'ono amatha kugwiritsa ntchito mosavuta kuchuluka kwa RAM pa seva chifukwa cha inode / dentry caching, zomwe zingayambitse kuwonongeka kwa ntchito monga kernel imayenera kukonza mapangidwe a deta pa dongosolo. ndi 40 GB ya kukumbukira. Kuyika mtengo uwu pamwamba pa 100 kwathandiza ogwiritsa ntchito ambiri kukwaniritsa zosunga zobwezeretsera komanso kuyankha bwino kwa kernel.

vm.dirty_background_ratio ndi vm.dirty_ratio

Gawo loyamba (vm.dirty_background_ratio) imatsimikizira kuchuluka kwa kukumbukira ndi masamba akuda, pambuyo pofika komwe ndikofunikira kuti muyambe kutsitsa masamba akuda kumbuyo ku disk. Mpaka chiwerengerochi chifikire, palibe masamba omwe amalowetsedwa ku disk. Ndipo kukonzanso kukayamba, kumayendera chakumbuyo popanda kusokoneza njira zoyendetsera.

Gawo lachiwiri (vm.dirty_ratio) imatanthawuza kuchuluka kwa kukumbukira komwe kumatha kukhala ndi masamba akuda kusanayambike. Izi zikafika, njira zonse zimakhala zofanana (zotsekedwa) ndipo siziloledwa kupitiliza mpaka I / O yomwe adapempha itatha ndipo deta ili pa disk. Ndi I/O yolemetsa izi zimabweretsa vuto chifukwa palibe caching ya data ndipo njira zonse zochitira I/O zatsekedwa kudikirira I/O. Izi zimabweretsa njira zambiri zopachikidwa, katundu wambiri, kusakhazikika kwadongosolo komanso kusachita bwino.

Kuchepetsa makondawa kumapangitsa kuti deta isunthidwe ku disk pafupipafupi komanso kuti isasungidwe mu RAM. Izi zitha kuthandizira makina olemetsa kukumbukira omwe ali bwino ndikutsitsa ma cache a 45-90 GB pa disk, zomwe zimapangitsa kuti pakhale kuchedwa kwakukulu kwa mapulogalamu akutsogolo, kuchepetsa kuyankha kwathunthu ndi kuyanjana.

"1"> /proc/sys/vm/pagecache

Cache yamasamba ndi cache yomwe imasunga zidziwitso zamafayilo ndi mapulogalamu omwe angathe kuchitika, ndiye kuti, awa ndi masamba omwe ali ndi zomwe zili m'mafayilo kapena zida zotsekereza. Cache iyi imagwiritsidwa ntchito kuchepetsa kuchuluka kwa ma disk omwe amawerengedwa. Mtengo wa "1" umatanthawuza kuti 1% ya RAM imagwiritsidwa ntchito posungira ndipo padzakhala zowerengedwa zambiri kuchokera pa disk kusiyana ndi RAM. Sikofunikira kusintha izi, koma ngati mukukayikira za kuwongolera cache yatsamba, mutha kuyigwiritsa ntchito.

"tsiku lomaliza" > /sys/block/sdc/queue/scheduler

The I/O scheduler ndi Linux kernel component yomwe imayang'anira kuwerenga ndi kulemba mizere. Mwachidziwitso, ndi bwino kugwiritsa ntchito "noop" kwa wolamulira wanzeru wa RAID, chifukwa Linux sadziwa kanthu za geometry ya thupi la diski, kotero ndi bwino kulola wolamulira, yemwe amadziwa bwino disk geometry, akonze pempho mwamsanga. zotheka. Koma zikuwoneka ngati "tsiku lomaliza" limathandizira magwiridwe antchito. Mutha kuwerenga zambiri za okonza mapulani mu Linux kernel source code zolembedwa: linux/Documentation/block/*osched.txt. Ndipo ndawonanso kuwonjezeka kwa kuwerenga kowerengera panthawi yosakanikirana (ambiri amalemba).

"256" > /sys/block/sdc/queue/nr_requests

Nambala ya zopempha za I/O mu buffer zisanapatsidwe kwa wokonza. Kukula kwa mzere wamkati wa olamulira ena (kuzama_kuzama) ndikwambiri kuposa nr_requests ya I/O, kotero wokonza I/O alibe mwayi woyika patsogolo ndikuphatikiza zopempha. Pamatchulidwe omaliza komanso okonza ma CFQ, ndikwabwino ngati nr_requests ili pamzere wamkati wa olamulira ka 2. Kuphatikiza ndi kuyitanitsanso zopempha kumathandiza kuti wokonza mapulani azitha kuyankha polemera kwambiri.

echo "16"> /proc/sys/vm/page-cluster

Tsamba lamagulu atsamba limawongolera kuchuluka kwa masamba omwe amalembedwa kuti asinthe nthawi imodzi. Muchitsanzo chomwe chili pamwambapa, mtengowo umayikidwa "16" molingana ndi kukula kwa mizere ya RAID ya 64 KB. Sizomveka ndi swappiness = 0, koma ngati muyika swappiness ku 10 kapena 20 ndiye kugwiritsa ntchito mtengowu kudzakuthandizani pamene kukula kwa mzere wa RAID ndi 64K.

blockdev --setra 4096 /dev/<dzina> (-sdb, hdc kapena dev_mapper)

Zosintha zachida cha block block kwa owongolera ambiri a RAID nthawi zambiri zimabweretsa ntchito yoyipa. Kuonjezera njira yomwe ili pamwambayi kumayambitsa kuwerengera patsogolo kwa magawo 4096 * 512-byte. Osachepera, pakuchita zosewerera, liwiro limachulukitsidwa podzaza pa-chip disk cache ndikuwerenga patsogolo panthawi yomwe kernel imagwiritsa ntchito pokonzekera I/O. Cache ikhoza kukhala ndi deta yomwe idzafunsidwa powerenganso. Kuwongolera kochulukira kumatha kupha I/O mwachisawawa pamafayilo akulu ngati igwiritsa ntchito nthawi yothandiza ya disk kapena kutsitsa deta kunja kwa posungira.

Pansipa pali malingaliro ena ochepa pamlingo wamafayilo. Koma sanayesedwebe. Onetsetsani kuti fayilo yanu imadziwa kukula kwa mzere ndi kuchuluka kwa ma disks omwe ali pamndandanda. Mwachitsanzo, kuti iyi ndi 5K mizere raid64 mndandanda wa ma disks asanu ndi limodzi (kwenikweni asanu, chifukwa diski imodzi imagwiritsidwa ntchito pofanana). Malingaliro awa akuchokera pamalingaliro amalingaliro ndipo adapangidwa kuchokera kumabulogu/nkhani zosiyanasiyana ndi akatswiri a RAID.

-> ext4 fs, 5 disks, 64K stripe, units in 4K blocks
mkfs -text4 -E stride=$((64/4))
-> xfs, 5 disks, 64K stripe, units in 512-byte sectors
mkfs -txfs -d sunit=$((64*2)) -d swidth=$((5*64*2))

Pamafayilo akulu, lingalirani kukulitsa kukula kwa mizere yomwe yatchulidwa pamwambapa.

ZOCHITIKA! Chilichonse chomwe chafotokozedwa pamwambapa chimakhala chokhazikika pamitundu ina ya mapulogalamu. Nkhaniyi siyikutsimikizira kusintha kulikonse popanda kuyesa kogwiritsa ntchito kofananirako. Iyenera kugwiritsidwa ntchito pokhapokha ngati kuli kofunikira kuwongolera machitidwe onse a dongosolo, kapena ngati ikuthetsa mavuto omwe alipo.

Zowonjezera:

Kukhazikitsa kernel ya Linux ya GlusterFS

Werengani zambiri

Source: www.habr.com

Kuwonjezera ndemanga