It-twaqqif tal-kernel tal-Linux għal GlusterFS

It-traduzzjoni tal-artiklu tħejjiet lejlet il-bidu tal-kors "Amministratur Linux. Professjonali".

It-twaqqif tal-kernel tal-Linux għal GlusterFS

Minn żmien għal żmien, hawn u hemm iqumu mistoqsijiet dwar ir-rakkomandazzjonijiet ta 'Gluster rigward l-adattament tal-qalba u jekk huwiex meħtieġ.

Din il-ħtieġa rari tqum. Il-qalba taħdem tajjeb ħafna taħt il-biċċa l-kbira tal-piżijiet tax-xogħol. Għalkemm hemm żvantaġġ. Storikament, il-kernel tal-Linux faċilment jikkonsma ħafna memorja jekk jingħata l-opportunità, inkluż għall-caching bħala mezz primarju biex tittejjeb il-prestazzjoni.

F'ħafna każijiet dan jaħdem tajjeb, iżda taħt tagħbija kbira jista 'jikkawża problemi.

Għandna esperjenza estensiva ta 'ħidma ma' sistemi li jikkunsmaw ħafna memorja, bħal CAD, EDA u affarijiet simili, li bdew jonqsu taħt tagħbija għolja. U kultant iltqajna ma’ problemi f’Gluster. Wara monitoraġġ bir-reqqa tal-memorja użata u l-ħin ta 'stennija tad-disk għal aktar minn ġurnata waħda, aħna ltqajna tagħbija żejda tad-disk, iowait enormi, żbalji tal-qalba (kernel oops), iffriżar, eċċ.

Dan l-artikolu huwa r-riżultat ta 'ħafna esperimenti ta' rfinar tal-parametri mwettqa f'diversi sitwazzjonijiet. Grazzi għal dawn il-parametri, mhux biss ir-rispons b'mod ġenerali tjiebet, iżda wkoll it-tħaddim tar-raggruppament ġie stabbilizzat b'mod sinifikanti.

Meta niġu għall-konfigurazzjoni tal-memorja, l-ewwel post li għandek tfittex hija s-subsistema tal-memorja virtwali (VM), li għandha numru kbir ta 'għażliet li jistgħu jħawduk.

vm.swappiness

Parametru vm.swappiness jiddetermina kemm il-kernel juża tpartit meta mqabbel mar-RAM. Hija definita wkoll fil-kodiċi tas-sors bħala "tendenza li tisraq il-memorja mmappjata." Valur għoli ta' tpartit ifisser li l-qalba se tkun aktar suxxettibbli li tpartit il-paġni mmappjati. Valur ta 'skambju baxx ifisser l-oppost: il-qalba se tbiddel il-paġni mill-memorja inqas. Fi kliem ieħor, iktar ikun għoli l-valur vm.swappiness, aktar is-sistema se tuża swap.

L-użu estensiv ta 'skambju mhuwiex mixtieq, peress li blokki kbar ta' dejta huma mgħobbija u mħotta fir-RAM. Ħafna nies jargumentaw li l-valur ta 'swapiness għandu jkun għoli, iżda fl-esperjenza tiegħi, l-issettjar għal "0" jirriżulta f'prestazzjoni aħjar.

Tista' taqra aktar hawn - lwn.net/Articles/100978

Iżda għal darb'oħra, dawn is-settings għandhom jintużaw b'kawtela u biss wara li tiġi ttestjata l-applikazzjoni speċifika. Għal applikazzjonijiet ta' streaming mgħobbija ħafna, dan il-parametru għandu jkun issettjat għal "0". Meta tinbidel għal "0", ir-rispons tas-sistema titjieb.

vm.vfs_cache_pressure

Dan l-issettjar jikkontrolla l-memorja kkunsmata mill-qalba għall-caching oġġetti tad-direttorju u inodes (dentry u inode).

Bil-valur default ta '100, il-kernel jipprova jeħles id-dentry u l-inode caches b'mod ġust għall-pagecache u swapcache. It-tnaqqis ta' vfs_cache_pressure jikkawża li l-qalba tippreserva l-caches tad-dentry u l-inode. Meta l-valur huwa "0", il-qalba qatt ma se tlaħlaħ id-dentry u l-inode cache minħabba pressjoni tal-memorja, u dan jista 'faċilment iwassal għal żball barra mill-memorja. Iż-żieda ta' vfs_cache_pressure 'l fuq minn 100 tikkawża li l-qalba tagħti prijorità lid-dentry u l-inode pageouts.

Meta tuża GlusterFS, ħafna utenti b'ammonti kbar ta 'dejta u ħafna fajls żgħar jistgħu faċilment jużaw ammont sinifikanti ta' RAM fuq is-server minħabba caching inode/dentry, li jista 'jwassal għal prestazzjoni fqira peress li l-kernel irid jimmaniġġja strutturi tad-dejta fuq sistema. b'40 GB ta 'memorja. L-issettjar ta' dan il-parametru għal aktar minn 100 għen lil ħafna utenti jiksbu caching aktar ġust u rispons imtejjeb tal-kernel.

vm.dirty_background_ratio u vm.dirty_ratio

L-ewwel parametru (vm.dirty_background_ratio) tiddetermina l-perċentwal tal-memorja b'paġni maħmuġin, malli jintlaħaq huwa meħtieġ li jibda l-flushing fl-isfond tal-paġni maħmuġin fuq id-diska. Sakemm jintlaħaq dan il-perċentwal, il-paġni ma jiġux imlaħlaħ fuq id-disk. U meta jibda r-reset, jaħdem fl-isfond mingħajr ma jinterrompi l-proċessi tat-tħaddim.

It-tieni parametru (vm.dirty_ratio) jiddetermina l-perċentwali tal-memorja li tista' tiġi okkupata minn paġni maħmuġin qabel ma tibda flash sfurzat. Ladarba dan il-limitu jintlaħaq, il-proċessi kollha jsiru sinkroniċi (imblukkati) u ma jitħallewx ikomplu jaħdmu sakemm l-operazzjoni I/O li talbu tkun fil-fatt titlesta u d-data tkun fuq disk. B'tagħbija għolja I/O, dan jikkawża problema minħabba li m'hemm l-ebda caching tad-dejta u l-proċessi kollha li jagħmlu I/O huma mblukkati jistennew I/O. Dan jirriżulta f'numru kbir ta 'proċessi mdendla, tagħbija għolja, instabbiltà tas-sistema u prestazzjoni fqira.

It-tnaqqis tal-valuri ta 'dawn il-parametri jikkawża li d-dejta titlaħlaħ fuq id-disk aktar spiss u ma tinħażenx fir-RAM. Dan jista 'jgħin sistemi ta' memorja tqal fejn huwa normali li jitlaħlaħ il-caches tal-paġni 45-90GB fuq disk, li jirriżulta f'latency enormi għall-applikazzjonijiet front-end, li jnaqqas ir-rispons u l-interattività ġenerali.

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

Il-cache tal-paġna hija cache li taħżen dejta minn fajls u programmi eżekutibbli, jiġifieri, dawn huma paġni bil-kontenut attwali ta 'fajls jew tagħmir ta' blokk. Din il-cache tintuża biex tnaqqas in-numru ta' qari tad-disk. Valur ta '"1" ifisser li l-cache juża 1% ta' RAM u se jkun hemm aktar qari mid-disk milli minn RAM. Mhuwiex meħtieġ li tibdel dan l-issettjar, imma jekk int paranojku dwar il-kontroll tal-cache tal-paġna, tista 'tużah.

"iskadenza" > /sys/block/sdc/queue/scheduler

L-I/O scheduler huwa komponent tal-kernel tal-Linux li jieħu ħsieb il-kjuwijiet tal-qari u tal-kitba. Fit-teorija, huwa aħjar li tuża "noop" għal kontrollur RAID intelliġenti, minħabba li Linux ma jaf xejn dwar il-ġeometrija fiżika tad-diska, għalhekk huwa aktar effiċjenti li tħalli lill-kontrollur, li jaf sew il-ġeometrija tad-diska, jipproċessa t-talba kif malajr kemm jista’ jkun. Iżda jidher li l-"iskadenza" ittejjeb il-prestazzjoni. Aktar informazzjoni dwar l-iskedaturi tista 'tinstab fid-dokumentazzjoni għall-kodiċi tas-sors tal-kernel Linux: linux/Documentation/block/*osched.txt. U osservajt ukoll żieda fil-qari throughput waqt operazzjonijiet imħallta (ħafna kitbiet).

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

In-numru ta' talbiet I/O fil-buffer qabel ma jintbagħtu lill-iskeder. Id-daqs tal-kju intern ta' xi kontrolluri (queue_depth) huwa akbar min-nr_requests tal-I/O scheduler, għalhekk l-I/O scheduler għandu ftit ċans li jipprijoritizza u jingħaqad it-talbiet b'mod korrett. Għal skedaturi tal-iskadenza u CFQ, huwa aħjar meta nr_requests ikun 2 darbiet akbar mill-kju intern tal-kontrollur. L-għaqda u l-ordni mill-ġdid tal-mistoqsijiet tgħin lill-iskedar ikun aktar reattiv taħt tagħbija kbira.

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

Il-parametru page-cluster jikkontrolla n-numru ta' paġni li jinkitbu fit-tpartit f'ħin wieħed. Fl-eżempju ta 'hawn fuq, il-valur huwa ssettjat għal "16" biex jaqbel mad-daqs tal-istrixxa RAID ta' 64 KB. Dan ma jagħmilx sens meta swappiness = 0, imma jekk issettja swappiness għal 10 jew 20, allura l-użu ta 'dan il-valur jgħinek meta d-daqs tal-istrixxa RAID ikun ta' 64 KB.

blockdev --setra 4096 /dev/<devname> (-sdb, hdc jew dev_mapper)

Is-settings default tal-apparat tal-blokk għal ħafna kontrolluri RAID ħafna drabi jirriżultaw f'prestazzjoni terribbli. Iż-żieda tal-għażla ta 'hawn fuq tikkonfigura l-qari bil-quddiem għal setturi ta' 4096 * 512 byte. Mill-inqas għall-operazzjonijiet ta 'streaming, il-veloċità tiżdied billi timla l-cache tad-diska fuq iċ-ċippa permezz ta' read-ahead matul il-perjodu li l-kernel juża biex jipprepara I/O. Il-cache jista' jżomm dejta li se tintalab matul il-qari li jmiss. Wisq qari bil-quddiem jista 'joqtol I/O każwali għal fajls kbar jekk juża ħin tad-disk potenzjalment utli jew jgħabbi dejta barra mill-cache.

Hawn taħt hawn ftit rakkomandazzjonijiet oħra fil-livell tas-sistema tal-fajls. Iżda għadhom ma ġewx ittestjati. Kun żgur li s-sistema tal-fajls tiegħek tkun taf id-daqs tal-istrixxa u n-numru ta 'diski fil-firxa. Per eżempju, li din hija firxa raid5 b'daqs ta 'strixxa ta' 64K ta 'sitt diski (fil-fatt ħamsa, minħabba li diska waħda tintuża għall-parità). Dawn ir-rakkomandazzjonijiet huma bbażati fuq suppożizzjonijiet teoretiċi u miġbura minn diversi blogs/artikoli minn esperti 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))

Għal fajls akbar, tista 'tikkunsidra li żżid id-daqsijiet tal-istrixxi ta' hawn fuq.

ATTENZJONI Kollox deskritt hawn fuq huwa estremament suġġettiv għal xi tipi ta 'applikazzjonijiet. Dan l-artikolu ma jiggarantixxi l-ebda titjib mingħajr l-ewwel jittestja l-applikazzjonijiet rispettivi mill-utent. Għandu jintuża biss jekk ikun hemm bżonn li tittejjeb ir-rispons ġenerali tas-sistema jew jekk issolvi l-problemi attwali.

Materjali addizzjonali:

It-twaqqif tal-kernel tal-Linux għal GlusterFS

Aqra iktar

Sors: www.habr.com

Żid kumment