Pag-set up sa Linux kernel para sa GlusterFS

Ang paghubad sa artikulo giandam sa bisperas sa pagsugod sa kurso Administrator sa Linux. PropesyonalΒ».

Pag-set up sa Linux kernel para sa GlusterFS

Matag karon ug unya, mitungha ang mga pangutana bahin sa mga rekomendasyon ni Gluster bahin sa pag-tune sa kernel ug kung kinahanglan ba kini.

Ang ingon nga panginahanglan panagsa ra motungha. Sa kadaghanan sa mga workloads, ang kernel maayo kaayo. Bisan tuod adunay usa ka downside. Sa kasaysayan, ang Linux kernel andam nga mokonsumo sa daghang memorya kung hatagan sa higayon, lakip ang pag-cache isip panguna nga paagi aron mapaayo ang pasundayag.

Sa kadaghanan nga mga kaso, kini molihok nga maayo, apan ubos sa bug-at nga karga kini mahimong mosangpot sa mga problema.

Daghan kami og kasinatian sa memory intensive system sama sa CAD, EDA ug uban pa, nga nagsugod sa paghinay ubos sa bug-at nga karga. Ug usahay naa miy problema sa Gluster. Pagkahuman sa mabinantayon nga pag-obserbar sa paggamit sa memorya ug latency sa disk sa daghang mga adlaw, nakuha namon ang ilang sobra nga gibug-aton, dako nga iowait, mga sayup sa kernel (kernel oops), nag-freeze, ug uban pa.

Kini nga artikulo mao ang resulta sa daghang mga eksperimento sa tuning nga gihimo sa lainlaing mga sitwasyon. Salamat sa kini nga mga parameter, dili lamang ang kinatibuk-ang pagtubag ang milambo, apan ang kumpol usab nag-ayo nga nag-ayo.

Kung bahin sa memory tuning, ang una nga butang nga tan-awon mao ang virtual memory subsystem (VM, virtual memory), nga adunay daghang mga kapilian nga makapalibog kanimo.

vm.swappiness

Parameter vm.swappiness nagtino kung unsa kadaghan ang gigamit sa kernel swap (swap, paging) kumpara sa RAM. Gihubit usab kini sa source code nga "tendency to steal mapped memory". Ang usa ka taas nga swappiness nagpasabot nga ang kernel mas mokiling sa pag-swap sa mga pahina nga na-map. Ang usa ka ubos nga swappiness nga bili nagpasabot sa kaatbang: ang kernel dili kaayo pahina gikan sa memorya. Sa laing pagkasulti, mas taas ang bili vm.swappiness, mas daghan ang gamiton sa sistema sa swap.

Ang usa ka dako nga paggamit sa swapping dili gusto, tungod kay ang dagkong mga bloke sa datos gikarga ug gidiskarga sa RAM. Daghang mga tawo ang nangatarungan nga ang kantidad sa swapiness kinahanglan nga dako, apan sa akong kasinatian, ang pagbutang niini sa "0" nagdala sa mas maayo nga pasundayag.

Mahimo nimong basahon ang dugang dinhi - lwn.net/Article/100978

Apan, pag-usab, kini nga mga setting kinahanglan nga gamiton uban ang pag-amping ug pagkahuman sa pagsulay sa usa ka partikular nga aplikasyon. Alang sa daghan kaayo nga mga aplikasyon sa streaming, kini nga parameter kinahanglan itakda sa "0". Kung giusab sa "0", ang pagtubag sa sistema molambo.

vm.vfs_cache_pressure

Kini nga setting nagkontrol sa memorya nga gigamit sa kernel alang sa caching directory ug inode nga mga butang (dentry ug inode).

Uban sa usa ka default nga kantidad nga 100, ang kernel mosulay sa pagpahigawas sa dentry ug inode cache sa usa ka "patas" nga basehan sa pagecache ug swapcache. Ang pagkunhod sa vfs_cache_pressure hinungdan nga ang kernel magpadayon sa dentry ug inode cache. Kung ang kantidad kay "0", ang kernel dili gayud mag-flush sa dentry ug inode cache tungod sa presyur sa memorya, ug kini daling mosangpot sa out-of-memory error. Ang pagtaas sa vfs_cache_pressure nga labaw sa 100 hinungdan nga ang kernel mag-una sa dentry ug inode flushing.

Kung gigamit ang GlusterFS, daghang mga tiggamit nga adunay daghang data ug daghang gagmay nga mga file dali nga makagamit sa usa ka hinungdanon nga kantidad sa RAM sa server tungod sa inode/dentry caching, nga mahimong mosangput sa pagkadaot sa pasundayag tungod kay ang kernel kinahanglan nga magproseso sa mga istruktura sa datos sa usa ka sistema. nga adunay 40 GB nga memorya. Ang pagbutang niini nga kantidad labaw sa 100 nakatabang sa daghang tiggamit nga makab-ot ang mas patas nga pag-cache ug gipaayo ang pagtubag sa kernel.

vm.dirty_background_ratio ug vm.dirty_ratio

Unang parameter (vm.dirty_background_ratio) nagtino sa porsyento sa panumduman nga adunay hugaw nga mga panid, pagkahuman maabot kung diin kinahanglan nga magsugod sa pag-flush sa hugaw nga mga panid sa background sa disk. Hangtud nga maabot kini nga porsyento, walay mga panid nga ma-flush sa disk. Ug kung magsugod ang usa ka pag-reset, kini modagan sa background nga dili makabalda sa mga proseso sa pagdagan.

Ang ikaduha nga parameter (vm.dirty_ratio) naghubit sa porsyento sa memorya nga mahimong okupar sa hugaw nga mga panid sa dili pa magsugod ang pinugos nga flash. Kung maabot na kini nga threshold, ang tanan nga mga proseso mahimong magkadungan (gibabagan) ug dili tugutan nga magpadayon hangtod ang I/O nga ilang gihangyo makompleto gyud ug ang data naa sa disk. Uban sa bug-at nga I / O kini hinungdan sa usa ka problema tungod kay walay data caching ug ang tanan nga mga proseso sa pagbuhat sa I/O gibabagan naghulat alang sa I/O. Kini modala ngadto sa usa ka dako nga gidaghanon sa gibitay nga mga proseso, taas nga load, sistema instability ug dili maayo nga performance.

Ang pagkunhod sa kini nga mga setting hinungdan nga ang data ma-flush sa disk nga mas kanunay ug dili gitipigan sa RAM. Makatabang kini sa mga sistema nga bug-at sa panumduman nga okay sa pag-flush sa 45-90 GB nga mga cache sa panid sa disk, nga nagresulta sa dako nga latency alang sa mga aplikasyon sa unahan, pagkunhod sa kinatibuk-ang pagtubag ug interaktibidad.

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

Ang cache sa panid usa ka cache nga nagtipig sa datos sa mga file ug mga executable nga programa, nga mao, kini ang mga panid nga adunay tinuud nga sulud sa mga file o block device. Kini nga cache gigamit sa pagpakunhod sa gidaghanon sa disk reads. Ang kantidad nga "1" nagpasabut nga 1% sa RAM ang gigamit alang sa cache ug adunay daghang mga pagbasa gikan sa disk kaysa gikan sa RAM. Dili kinahanglan nga usbon kini nga setting, apan kung paranoid ka bahin sa pagkontrol sa cache sa panid, mahimo nimo kini gamiton.

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

Ang I/O scheduler usa ka Linux kernel component nga nagdumala sa pagbasa ug pagsulat sa mga pila. Sa teoriya, mas maayo nga gamiton ang "noop" alang sa usa ka maalamon nga RAID controller, tungod kay ang Linux walay nahibal-an mahitungod sa pisikal nga geometry sa disk, mao nga mas episyente ang pagtugot sa controller, nga nahibal-an pag-ayo sa disk geometry, nga maproseso ang hangyo sa labing madali. posible. Apan morag ang "deadline" nagpauswag sa performance. Makabasa ka og dugang mahitungod sa mga scheduler sa Linux kernel source code documentation: linux/Documentation/block/*osched.txt. Ug usab nakita nako ang pagtaas sa pagbasa sa throughput sa panahon sa nagkasagol nga operasyon (daghang nagsulat).

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

Ang gidaghanon sa mga hangyo sa I/O sa buffer sa dili pa kini ipasa ngadto sa scheduler. Ang gidak-on sa pila nga internal nga pila (queue_depth) sa ubang mga controller mas dako kaysa sa nr_requests sa scheduler sa I/O, mao nga gamay ra ang kahigayonan sa scheduler sa I/O sa hustong pag-prioritize ug paghiusa sa mga hangyo. Para sa deadline ug CFQ schedulers, mas maayo kung ang nr_requests 2 ka beses sa internal queue sa controller. Ang paghiusa ug paghan-ay sa mga hangyo makatabang sa scheduler nga mahimong mas responsive ubos sa bug-at nga karga.

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

Ang page-cluster parameter nagkontrol sa gidaghanon sa mga panid nga gisulat sa swap sa usa ka higayon. Sa pananglitan sa ibabaw, ang kantidad gitakda sa "16" sumala sa gidak-on sa RAID stripe nga 64 KB. Dili kini makatarunganon sa swappiness = 0, apan kung imong gibutang ang swappiness sa 10 o 20 unya ang paggamit niini nga kantidad makatabang kanimo kung ang RAID stripe nga gidak-on mao ang 64K.

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

Ang default block device settings alang sa daghang RAID controllers kasagaran moresulta sa makalilisang nga performance. Ang pagdugang sa kapilian sa ibabaw nagtakda sa pagbasa sa unahan alang sa 4096 * 512-byte nga mga sektor. Sa labing gamay, alang sa streaming nga mga operasyon, ang katulin madugangan pinaagi sa pagpuno sa on-chip disk cache sa read-ahead sa panahon nga gigamit sa kernel sa pag-andam sa I/O. Ang cache mahimong adunay mga datos nga hangyoon sa sunod nga pagbasa. Ang sobra nga prefetch mahimong makapatay sa random I/O alang sa dagkong mga file kung magamit niini ang posibleng mapuslanon nga oras sa disk o mag-load sa data sa gawas sa cache.

Sa ubos mao ang pipila pa nga mga rekomendasyon sa lebel sa file system. Apan wala pa sila masulayan. Siguroha nga nahibal-an sa imong filesystem ang gidak-on sa stripe ug ang gidaghanon sa mga disk sa array. Pananglitan, nga kini usa ka 5K stripe raid64 array sa unom ka mga disk (sa tinuud lima, tungod kay ang usa ka disk gigamit alang sa parity). Kini nga mga rekomendasyon gibase sa theoretical assumptions ug gihugpong gikan sa nagkalain-laing mga blog/artikulo sa mga eksperto sa 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))

Alang sa dagkong mga file, ikonsiderar ang pagdugang sa mga gidak-on sa stripe nga gilista sa ibabaw.

PAGHATAG! Ang tanan nga gihulagway sa ibabaw kay suhetibo kaayo alang sa pipila ka matang sa mga aplikasyon. Kini nga artikulo dili garantiya sa bisan unsang mga pag-uswag nga wala’y una nga pagsulay sa tiggamit sa mga may kalabutan nga aplikasyon. Kinahanglan lang kini gamiton kung gikinahanglan aron mapauswag ang kinatibuk-ang pagtubag sa sistema, o kung kini makasulbad sa mga problema karon.

Dugang nga mga materyales:

Pag-set up sa Linux kernel para sa GlusterFS

Basaha ang dugang pa

Source: www.habr.com

Idugang sa usa ka comment