Kafa kernel na Linux don GlusterFS

An shirya fassarar labarin a jajibirin fara karatun "Mai sarrafa Linux. Kwararren".

Kafa kernel na Linux don GlusterFS

Daga lokaci zuwa lokaci, nan da can tambayoyi suna tasowa game da shawarwarin Gluster game da gyare-gyaren kwaya da ko ya zama dole.

Wannan bukata ba kasafai take tasowa ba. Jigon yana aiki sosai a ƙarƙashin yawancin ayyukan aiki. Ko da yake akwai kasala. A tarihi, kernel na Linux yana cinye ƙwaƙwalwar ajiya da yawa idan aka ba shi dama, gami da caching azaman hanyar farko ta inganta aiki.

A mafi yawan lokuta wannan yana aiki sosai, amma ƙarƙashin nauyi mai nauyi yana iya haifar da matsala.

Muna da kwarewa mai yawa tare da tsarin da ke cinye ƙwaƙwalwar ajiya mai yawa, irin su CAD, EDA da makamantansu, wanda ya fara raguwa a ƙarƙashin babban nauyi. Kuma wani lokacin muna fuskantar matsaloli a cikin Gluster. Bayan sa ido a hankali ƙwaƙwalwar da aka yi amfani da ita da lokacin jiran faifai fiye da kwana ɗaya, mun sami nauyin faifai, babban iowait, kurakuran kernel (kernel oops), daskarewa, da sauransu.

Wannan labarin shine sakamakon gwaje-gwajen daidaita ma'auni da yawa da aka yi a yanayi daban-daban. Godiya ga waɗannan sigogi, ba kawai amsawa gabaɗaya ya inganta ba, amma har ma aikin tari ya daidaita sosai.

Idan ya zo ga daidaita ƙwaƙwalwar ajiya, wurin farko da za a duba shi ne tsarin ƙwaƙwalwar ajiyar ƙwaƙwalwar ajiya (VM), wanda ke da adadi mai yawa da za su iya rikitar da ku.

vm.swappiness

Alamar vm.swappiness yana ƙayyade nawa kernel ke amfani da musanyawa idan aka kwatanta da RAM. Hakanan an bayyana shi a cikin lambar tushe azaman “ƙancewar sata ƙwaƙwalwar taswira.” Ƙimar swappiness mai girma tana nufin cewa kwaya za ta fi dacewa da musanya shafukan da aka zana. Ƙimar musanyawa mara ƙanƙanci tana nufin akasin haka: kernel zai musanya shafuka daga ƙananan ƙwaƙwalwar ajiya. A wasu kalmomi, mafi girman ƙimar vm.swappiness, mafi yawan tsarin zai yi amfani da musanyawa.

Ba a so a yi amfani da musanyawa da yawa, tunda ana loda manyan tubalan bayanai kuma ana sauke su cikin RAM. Mutane da yawa suna jayayya cewa ƙimar swapiness ya kamata ya zama babba, amma a cikin kwarewata, saita shi zuwa "0" yana haifar da kyakkyawan aiki.

Kuna iya karanta ƙarin anan - lwn.net/Labarai/100978

Amma kuma, ya kamata a yi amfani da waɗannan saitunan tare da taka tsantsan kuma kawai bayan gwada takamaiman aikace-aikacen. Don aikace-aikacen yawo masu ɗorewa, yakamata a saita wannan siga zuwa "0". Lokacin da aka canza zuwa "0", amsawar tsarin yana inganta.

vm.vfs_cache_matsi

Wannan saitin yana sarrafa ƙwaƙwalwar ajiyar da kernel ke cinyewa don adana abubuwa na adireshi da inodes (hakori da inode).

Tare da ƙimar tsoho na 100, kernel zai yi ƙoƙarin 'yantar da ma'ajiyar haƙori da inode ta hanyar gaskiya zuwa cache shafi da swapcache. Rage vfs_cache_pressure yana haifar da kernel don adana ma'aunin haƙori da inode caches. Lokacin da ƙimar ta kasance "0", kernel ɗin ba zai taɓa goge hakoran haƙora da ma'ajin inode ba saboda matsin ƙwaƙwalwar ajiya, kuma wannan na iya haifar da kuskuren ƙwaƙwalwar ajiya cikin sauƙi. Ƙara vfs_cache_pressure sama da 100 yana haifar da kernel don ba da fifiko ga haƙoran haƙori da abubuwan da ba a iya gani ba.

Lokacin amfani da GlusterFS, yawancin masu amfani da bayanai masu yawa da ƙananan fayiloli da yawa suna iya amfani da adadi mai yawa na RAM a sauƙaƙe a kan uwar garke saboda inode / dentry caching, wanda zai iya haifar da mummunan aiki kamar yadda kernel ya kula da tsarin bayanai akan tsarin. tare da 40 GB na ƙwaƙwalwar ajiya. Tsayar da wannan siga zuwa sama da 100 ya taimaka wa masu amfani da yawa su sami ingantaccen caching da ingantacciyar amsawar kwaya.

vm.dirty_background_ratio da vm.dirty_ratio

siga na farko (vm.dirty_background_ratio) yana ƙayyade adadin ƙwaƙwalwar ajiya tare da shafuka masu ƙazanta, bayan isa wanda ya zama dole a fara goge bayanan datti zuwa faifai. Har sai an kai wannan kashi, ba a juyar da shafuka zuwa faifai ba. Kuma lokacin da sake saitin ya fara, yana gudana a bango ba tare da katse tafiyar matakai ba.

Siga ta biyu (vm.dirty_ratio) yana ƙayyade adadin ƙwaƙwalwar ajiyar da za a iya shagaltar da su ta hanyar datti kafin filasha ta tilastawa ta fara. Da zarar wannan matakin ya kai, duk matakai suna aiki tare (an katange) kuma ba a bar su su ci gaba da gudana har sai an kammala aikin I/O da suka nema kuma bayanan suna kan faifai. Tare da babban nauyin I / O, wannan yana haifar da matsala saboda babu caching na bayanai kuma duk hanyoyin da ke yin I / O an katange suna jiran I / O. Wannan yana haifar da adadi mai yawa na hanyoyin da aka rataye, babban kaya, rashin tsarin tsarin da rashin aiki mara kyau.

Rage ƙimar waɗannan sigogi yana haifar da zubar da bayanai akai-akai zuwa faifai kuma ba a adana su cikin RAM ba. Wannan na iya taimakawa tsarin ƙwaƙwalwar ajiya-nauyi inda ya zama al'ada don jujjuya caches na 45-90GB zuwa faifai, yana haifar da babban latency don aikace-aikacen gaba-gaba, rage amsa gaba ɗaya da hulɗa.

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

Shafukan cache cache ne da ke adana bayanai daga fayiloli da shirye-shiryen da za a iya aiwatarwa, wato, waɗannan shafuka ne masu ɗauke da ainihin abubuwan da ke cikin fayiloli ko toshe na'urori. Ana amfani da wannan cache don rage yawan karatun faifai. Ƙimar "1" tana nufin cewa cache yana amfani da 1% na RAM kuma za a sami ƙarin karantawa daga faifai fiye da na RAM. Ba lallai ba ne a canza wannan saitin, amma idan kun damu game da sarrafa cache na shafin, zaku iya amfani da shi.

"ƙarshe" > /sys/block/sdc/queue/scheduler

Mai tsara tsarin I/O wani bangare ne na kernel Linux wanda ke sarrafa karantawa da rubuta jerin gwano. A ka'idar, yana da kyau a yi amfani da "noop" don mai kula da RAID mai kaifin baki, saboda Linux bai san kome ba game da lissafin jiki na faifai, don haka ya fi dacewa don barin mai sarrafawa, wanda ya san ilimin lissafi na diski da kyau, aiwatar da buƙatar kamar yadda ya kamata. da sauri kamar yadda zai yiwu. Amma ga alama cewa "ƙarshe" yana inganta aiki. Ana iya samun ƙarin bayani game da masu tsara jadawalin a cikin takaddun don lambar tushen Linux kernel: linux/Documentation/block/*osched.txt. Kuma na kuma lura da karuwar abubuwan karantawa yayin ayyukan gaurayawan (yawan rubuce-rubuce).

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

Adadin buƙatun I/O a cikin buffer kafin a aika su zuwa mai tsarawa. Girman jerin gwano na cikin wasu masu sarrafawa (queue_depth) ya fi girma fiye da buƙatun I/O mai tsara nr_requests, don haka mai tsara I/O yana da ɗan damar ba da fifiko daidai da haɗa buƙatun. Don lokacin ƙarshe da masu tsara jadawalin CFQ, yana da kyau idan nr_requests ya fi girma sau 2 fiye da jerin gwano na cikin mai sarrafawa. Haɗawa da sake yin odar tambayoyin na taimaka wa mai tsara jadawalin zama mai saurin amsawa ƙarƙashin nauyi mai nauyi.

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

Ma'aunin shafi-cluster yana sarrafa adadin shafukan da aka rubuta zuwa musanyawa lokaci guda. A cikin misalin da ke sama, an saita ƙimar zuwa "16" don dacewa da girman ɗigon RAID na 64 KB. Wannan ba shi da ma'ana lokacin swappiness = 0, amma idan kun saita swappiness zuwa 10 ko 20, to, yin amfani da wannan ƙimar zai taimaka muku lokacin da girman RAID ɗin ya kasance 64 KB.

blockdev --setra 4096 / dev/<sunan> (-sdb, hdc ko dev_mapper)

Tsohuwar toshe saitunan na'urar don yawancin masu kula da RAID galibi suna haifar da mummunan aiki. Ƙara zaɓin da ke sama yana daidaita karatun gaba don sassan 4096*512 byte. Aƙalla don ayyukan yawo, ana haɓaka saurin ta hanyar cike cache ɗin diski akan-chip ta hanyar karantawa gaba yayin lokacin da kernel ke amfani da shi don shirya I/O. Cache na iya riƙe bayanan da za a nema yayin karatu na gaba. Yawan karantawa gaba zai iya kashe I/O bazuwar don manyan fayiloli idan yana amfani da lokacin faifai mai yuwuwar amfani ko loda bayanai a wajen cache.

A ƙasa akwai wasu ƙarin shawarwari a matakin tsarin fayil. Amma har yanzu ba a gwada su ba. Tabbatar cewa tsarin fayil ɗinku ya san girman ratsi da adadin faifai a cikin tsararrun. Misali, cewa wannan raid5 array ne mai girman 64K na diski shida (a zahiri guda biyar, saboda ana amfani da faifai ɗaya don daidaitawa). Waɗannan shawarwarin sun dogara ne akan zato na ka'idar kuma an tattara su daga bulogi / labarai daban-daban ta ƙwararrun 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))

Don manyan fayiloli, kuna iya yin la'akari da haɓaka girman ɗigon ɗigon da ke sama.

HANKALI! Duk abin da aka bayyana a sama yana da matuƙar mahimmanci ga wasu nau'ikan aikace-aikace. Wannan labarin baya ba da garantin haɓakawa ba tare da fara gwada aikace-aikacen mai amfani ba. Ya kamata a yi amfani da shi kawai idan akwai buƙatar inganta tsarin amsawa gaba ɗaya ko kuma idan ya magance matsalolin yanzu.

Materialsarin kayan:

Kafa kernel na Linux don GlusterFS

Kara karantawa

source: www.habr.com

Add a comment