Ịtọlite ​​​​Linux kernel maka GlusterFS

A haziri nsụgharị nke isiokwu ahụ n'abalị nke mmalite nke ọmụmụ ahụ Linux nchịkwa. Ọkachamara».

Ịtọlite ​​​​Linux kernel maka GlusterFS

Oge ụfọdụ, ebe a na ebe ahụ, ajụjụ na-ebilite gbasara ndụmọdụ Gluster gbasara ntugharị kernel yana ma ọ dị mkpa maka nke a.

Mkpa dị otú ahụ adịghị adịkarị. N'ọtụtụ ibu ọrụ, kernel na-arụ ọrụ nke ọma. Ọ bụ ezie na enwere ọdịda. N'akụkọ ihe mere eme, Linux kernel adịla njikere iri ọtụtụ ebe nchekwa ma ọ bụrụ na enyere ya ohere, gụnyere maka caching dị ka ụzọ isi kwalite arụmọrụ.

N'ọtụtụ ọnọdụ, nke a na-arụ ọrụ nke ọma, ma n'okpuru ibu dị arọ ọ nwere ike ịkpata nsogbu.

Anyị nwere ọtụtụ ahụmahụ na usoro nchekwa kpụ ọkụ n'ọnụ dị ka CAD, EDA na ihe ndị yiri ya, nke malitere ịdalata n'okpuru ibu dị arọ. Ma mgbe ụfọdụ, anyị nwere nsogbu na Gluster. Mgbe anyị lechara anya nke ọma iji ebe nchekwa na nkwụsị diski ruo ọtụtụ ụbọchị, anyị nwetara ibu ha, nnukwu iowait, njehie kernel (kernel oops), freezes, wdg.

Isiokwu a bụ n'ihi ọtụtụ n'iji ya gee ntị nnwale emere na ọnọdụ dị iche iche. N'ihi paramita ndị a, ọ bụghị naanị na nzaghachi zuru ezu emeela ka ọ dịkwuo mma, mana ụyọkọ ahụ agbaziwokwa nke ọma.

A bịa na nlegharị anya ebe nchekwa, ihe mbụ ị ga-eleba anya bụ sistemụ nchekwa nchekwa mebere (VM, mebere ebe nchekwa), nke nwere ọtụtụ nhọrọ nwere ike ịgbagwoju gị anya.

vm.swappiness

Ogologo vm.swappiness na-ekpebi ole kernel na-eji swap (swap, paging) tụnyere RAM. A kọwakwara ya na koodu isi mmalite dị ka "ọchịchọ izu ohi ebe nchekwa mapụtara". Mgbanwe dị elu pụtara na kernel ga-enwe mmasị ịgbanwe ibe ndị nwere eserese. Uru swappiness dị ala pụtara ihe dị iche: kernel ga-adị ntakịrị site na ebe nchekwa. N'ikwu ya n'ụzọ ọzọ, ọnụ ahịa dị elu vm.swappiness, ka usoro ahụ ga-eji swap.

Achọghị iji mgbanwe dị ukwuu eme ihe, ebe ọ bụ na a na-ebufe ma budata nnukwu data na RAM. Ọtụtụ ndị na-arụ ụka na uru swapiness kwesịrị ịdị ukwuu, ma na ahụmahụ m, ịtọ ya na "0" na-eduga n'ịrụ ọrụ ka mma.

Ị nwere ike ịgụkwu ebe a - lwn.net/Akụkọ/100978

Mana, ọzọ, a ga-eji nlezianya tinye ntọala ndị a na naanị mgbe ịnwale otu ngwa. Maka ngwa nkwanye ugwu nke ukwuu, ekwesịrị ịtọ oke a ka ọ bụrụ "0". Mgbe agbanwere ka ọ bụrụ "0", nnabata sistemụ na-akawanye mma.

vm.vfs_cache_pressure

Ntọala a na-ejikwa ebe nchekwa kernel na-eri maka ndekọ ndekọ na ihe inode (dentry na inode).

Site na uru ndabara nke 100, kernel ga-anwa ịtọhapụ oghere dentry na inode na ndabere "ezigbo" na cache ihu na swapcache. Mbelata vfs_cache_pressure na-eme ka kernel dobe dentry na inode cache. Mgbe uru ahụ bụ "0", kernel agaghị ekpochapụ dentry na inode cache n'ihi nrụgide ebe nchekwa, nke a nwere ike ibute njehie na-enweghị ncheta. Ịbawanye vfs_cache_pressure n'elu 100 na-eme ka kernel na-ebute dentry na inode flushing.

Mgbe ị na-eji GlusterFS, ọtụtụ ndị ọrụ nwere nnukwu data na ọtụtụ obere faịlụ nwere ike iji nnukwu RAM na sava ahụ n'ụzọ dị mfe n'ihi caching inode / dentry, nke nwere ike ibute mmebi arụmọrụ dịka kernel ga-ahazi nhazi data na sistemụ. na 40 GB nke ebe nchekwa. Ịtọlite ​​uru a karịa 100 enyerela ọtụtụ ndị ọrụ aka inweta caching nke ọma na nzaghachi kernel ka mma.

vm.dirty_background_ratio na vm.dirty_ratio

Oke nke mbụ (vm.dirty_background_ratio) na-ekpebi pasent nke ebe nchekwa na ibe ruru unyi, mgbe erutechara nke ọ dị mkpa ịmalite ịmịnye ibe ruru unyi na ndabere na diski. Ruo mgbe ruru pasenti a, ọ nweghị ibe a na-agbanye na diski. Na mgbe nrụpụta amalite, ọ na-agba n'azụ na-akwụsịghị na-agba ọsọ usoro.

Oke nke abụọ (vm.dirty_ratio) kọwapụta pasentị ebe nchekwa nwere ike iji ibe ruru unyi tupu ọkụ amanye amalite. Ozugbo a rutere n'ọnụ ụzọ a, usoro niile na-emekọrịta (kpọchiri) ma ghara ikwe ka ọ gaa n'ihu ruo mgbe I/O ha rịọrọ ka emechara ma data dị na diski. Na arọ I / O nke a na-akpata nsogbu n'ihi na ọ dịghị caching data na usoro niile na-eme I / O na-egbochi echere I / O. Nke a na-eduga na ọnụ ọgụgụ dị ukwuu nke usoro a na-akwụ ụgwọ, ibu dị elu, nkwụsị usoro na arụ ọrụ adịghị mma.

Mbelata ntọala ndị a na-eme ka a na-awụsa data na diski ugboro ugboro na anaghị echekwa ya na RAM. Nke a nwere ike inye aka na sistemu dị arọ ebe nchekwa ebe ọ bụ ihe dị mma ịkwanye caches peeji 45-90 GB na diski, na-ebute nnukwu latency maka ngwa n'ihu, na-ebelata nzaghachi na mmekọrịta.

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

Cache ibe bụ ebe nchekwa na-echekwa data nke faịlụ na mmemme enwere ike ime, ya bụ, ibe ndị a nwere ezigbo ọdịnaya nke faịlụ ma ọ bụ gbochie ngwaọrụ. A na-eji cache a belata ọnụ ọgụgụ ọgụgụ diski. Uru nke "1" pụtara na 1% nke RAM na-eji maka cache na a ga-enwe ọtụtụ ọgụgụ na diski karịa na RAM. Ọ dịghị mkpa ịgbanwe ntọala a, ma ọ bụrụ na ị na-atụ egwu ịchịkwa cache ibe, ị nwere ike iji ya.

"N'ikpeazụ" > /sys/block/sdc/queue/scheduler

Onye nhazi I/O bụ mpaghara kernel Linux nke na-ahụ maka ịgụ na ide kwụ n'ahịrị. Na tiori, ọ ka mma iji "noop" maka onye na-ahụ maka RAID smart, n'ihi na Linux amaghị ihe ọ bụla gbasara geometry anụ ahụ nke diski ahụ, ya mere ọ na-arụ ọrụ nke ọma ka onye njikwa ahụ, nke maara geometry diski nke ọma, hazie arịrịọ ahụ ngwa ngwa. kwere omume. Mana ọ dị ka "n'ikpeazụ" na-eme ka arụmọrụ dịkwuo mma. Ị nwere ike ịgụkwu gbasara ndị na-eme nhazi na akwụkwọ koodu kernel Linux: linux/Documentation/block/*osched.txt. Na kwa ahụla m mmụba na ntinye akwụkwọ n'oge arụ ọrụ agwakọtara (ọtụtụ ọrụ ide).

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

Ọnụọgụ nke arịrịọ I/O na nchekwa tupu ebufe ha na onye nhazi oge. Ogo kwụ n'ahịrị nke ụfọdụ ndị njikwa (queue_depth) buru ibu karịa arịrịọ nr_request nke I/O, yabụ onye nhazi I/O nwere obere ohere nke ibute ụzọ na ijikọ arịrịọ nke ọma. Maka oge imecha na ndị na-ahazi CFQ, ọ ka mma mgbe nr_requests dị okpukpu abụọ n'ahịrị n'ime onye njikwa. Ijikọ na nhazigharị arịrịọ na-enyere onye nhazi oge aka ịzaghachi karịa n'okpuru ibu dị arọ.

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

Oke-ụyọkọ ibe na-ejikwa ọnụọgụ ibe edere na swap n'otu oge. N'ihe atụ dị n'elu, a na-edozi uru ahụ na "16" dịka nha RAID nke 64 KB. Ọ baghị uru na swappiness = 0, mana ọ bụrụ na ịtọọ swappiness na 10 ma ọ bụ 20 mgbe ahụ iji uru a ga-enyere gị aka mgbe nha RAID dị 64K.

blockdev --setra 4096 / dev/<aha> (-sdb, hdc ma ọ bụ dev_mapper)

Ntọala ngọngọ ngwaọrụ maka ọtụtụ ndị na-ahụ maka RAID na-ebutekarị arụmọrụ dị egwu. Ịgbakwunye nhọrọ dị n'elu na-edozi agụ n'ihu maka ngalaba 4096 * 512-byte. Opekempe, maka ọrụ mgbasa ozi, a na-abawanye ọsọ site na-ejuputa cache diski on-chip na-agụ n'ihu n'oge kernel ji akwado I/O. Ebe nchekwa ahụ nwere ike ịnwe data nke a ga-arịọ na agụ na-esote. Ọtụtụ prefetch nwere ike igbu I/O random maka nnukwu faịlụ ma ọ bụrụ na ọ na-eji oge diski bara uru ma ọ bụ na-ebu data na mpụga nke cache.

N'okpuru bụ ndụmọdụ ole na ole ọzọ na ọkwa sistemụ faịlụ. Mana anwalebeghị ha. Gbaa mbọ hụ na sistemụ faịlụ gị mara nha nke straipu na ọnụọgụ diski dị n'usoro. Dịka ọmụmaatụ, na nke a bụ 5K stripe raid64 nke diski isii (n'ezie ise, n'ihi na a na-eji otu diski maka parity). Ndụmọdụ ndị a gbadoro ụkwụ na ntule echiche ma chịkọta ya site na blọọgụ/akụkọ dị iche iche site n'aka ndị ọkachamara 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))

Maka nnukwu faịlụ, tụlee ịbawanye nha nha nke e depụtara n'elu.

Echiche! Ihe niile akọwara n'elu bụ nke ukwuu maka ụdị ngwa ụfọdụ. Edemede a anaghị ekwe nkwa nkwalite ọ bụla na-enweghị nnwale onye ọrụ mbụ nke ngwa metụtara ya. Ekwesịrị iji ya mee ihe naanị ma ọ bụrụ na ọ dị mkpa iji melite nzaghachi zuru ezu nke usoro ahụ, ma ọ bụ ọ bụrụ na ọ na-edozi nsogbu ndị dị ugbu a.

Ihe ndi ozo:

Ịtọlite ​​​​Linux kernel maka GlusterFS

GỤKWUO

isi: www.habr.com

Tinye a comment