Танзими ядрои Linux барои GlusterFS

Тарҷумаи мақола дар арафаи оғози курс омода шудааст "Администратор Linux. касбӣ".

Танзими ядрои Linux барои GlusterFS

Баъзан, дар ин ҷо ва дар он ҷо саволҳо дар бораи тавсияҳои Gluster оид ба мутобиқсозии ядро ​​​​ва зарурати он пайдо мешаванд.

Ин зарурат хеле кам ба миён меояд. Ядро дар аксари сарбориҳои корӣ хеле хуб иҷро мекунад. Ҳарчанд як камбудӣ вуҷуд дорад. Таърихан, ядрои Linux, агар имконият дода шавад, ба осонӣ хотираи зиёдеро истеъмол мекунад, аз ҷумла барои кэш ҳамчун воситаи асосии беҳтар кардани кор.

Дар аксари мавридҳо ин хеле хуб кор мекунад, аммо дар зери бори вазнин он метавонад боиси мушкилот гардад.

Мо таҷрибаи ғании кор бо системаҳое дорем, ки хотираи зиёдро истеъмол мекунанд, аз қабили CAD, EDA ва монанди инҳо, ки дар зери сарбории зиёд суст шудан гирифтанд. Ва баъзан мо дар Gluster ба мушкилот дучор мешудем. Пас аз бодиққат назорат кардани хотираи истифодашуда ва вақти интизории диск барои зиёда аз як рӯз, мо аз ҳад зиёди диск, iowait, хатогиҳои ядро ​​​​(ҳайфи ядро), яхбандӣ ва ғ.

Ин мақола натиҷаи бисёр таҷрибаҳои танзимкунии параметрҳо мебошад, ки дар ҳолатҳои гуногун анҷом дода шудаанд. Ба шарофати ин параметрҳо, на танҳо ҷавобгарӣ дар маҷмӯъ беҳтар шуд, балки кори кластер низ ба таври назаррас мӯътадил гардид.

Вақте ки сухан дар бораи конфигуратсияи хотира меравад, дар ҷои аввал зерсистемаи хотираи виртуалӣ (VM) аст, ки дорои шумораи зиёди имконоти, ки метавонад шуморо ба иштибоҳ.

vm.swappiness

Параметр vm.swappiness муайян мекунад, ки ядро ​​нисбат ба RAM чӣ қадар свопро истифода мебарад. Он инчунин дар рамзи сарчашма ҳамчун "майли дуздии хотираи хариташуда" муайян карда шудааст. Арзиши баланди мубодила маънои онро дорад, ки ядро ​​​​ба иваз кардани саҳифаҳои хариташуда бештар майл мекунад. Арзиши пасти мубодила маънои баръакс дорад: ядро ​​​​саҳифаҳоро аз хотира камтар иваз мекунад. Ба ибораи дигар, арзиши баландтар аст vm.swappiness, система бештар свопро истифода мебарад.

Истифодаи васеъи мубодила номатлуб аст, зеро блокҳои бузурги додаҳо ба RAM бор ва бор карда мешаванд. Бисёр одамон баҳс мекунанд, ки арзиши мубодила бояд баланд бошад, аммо дар таҷрибаи ман, гузоштани он ба "0" боиси беҳтар шудани кор мегардад.

Шумо метавонед бештар дар ин ҷо хонед - lwn.net/Articles/100978

Аммо боз ҳам, ин танзимотҳо бояд бо эҳтиёт ва танҳо пас аз санҷиши барномаи мушаххас истифода шаванд. Барои барномаҳои ҷараёнҳои серборшуда, ин параметр бояд ба "0" муқаррар карда шавад. Вақте ки ба "0" иваз карда мешавад, вокуниши система беҳтар мешавад.

vm.vfs_cache_pressure

Ин танзимот хотираеро, ки ядро ​​барои кэшкунии объектҳои директория ва инодҳо (dentry ва inode) сарф мекунад, назорат мекунад.

Бо арзиши пешфарз 100, ядро ​​кӯшиш мекунад, ки кэшҳои dentry ва inode-ро ба таври одилона ба pagecache ва swapcache озод кунад. Паст шудани vfs_cache_pressure боиси нигоҳ доштани кэшҳои dentry ва inode мегардад. Вақте ки арзиш "0" аст, ядро ​​​​ҳеҷ гоҳ аз сабаби фишори хотира кэши dentry ва inode-ро тоза намекунад ва ин метавонад ба осонӣ ба хатогии берун аз хотира оварда расонад. Баланд бардоштани vfs_cache_pressure аз 100 боло боиси он мегардад, ки ядро ​​ба саҳифаҳои dentry ва inode афзалият диҳад.

Ҳангоми истифодаи GlusterFS, бисёр корбарон бо миқдори зиёди маълумот ва бисёр файлҳои хурд метавонанд ба осонӣ миқдори зиёди RAM-ро дар сервер бо сабаби кэшкунии inode/dentry истифода баранд, ки ин метавонад ба кори суст оварда расонад, зеро ядро ​​​​бояд сохторҳои додаҳоро дар система идора кунад. бо хотираи 40 ГБ. Муқаррар кардани ин параметр ба зиёда аз 100 ба бисёр корбарон кӯмак кард, ки кэшкунии одилонатар ва посухгӯии ядроро беҳтар ба даст оранд.

vm.dirty_background_ratio ва vm.dirty_ratio

Параметри якум (vm.dirty_background_ratio) фоизи хотираро бо саҳифаҳои ифлос муайян мекунад, ки пас аз расидан ба он обшуйкунии пасзаминаи саҳифаҳои ифлосро ба диск оғоз кардан лозим аст. То расидан ба ин фоиз, саҳифаҳо ба диск тоза карда намешаванд. Ва вақте ки барқароркунӣ оғоз мешавад, он дар замина бидуни халалдор кардани равандҳои иҷрошаванда кор мекунад.

Параметри дуюм (vm.dirty_ratio) фоизи хотираеро, ки пеш аз оғози флеши маҷбурӣ дар саҳифаҳои ифлос ишғол кардан мумкин аст, муайян мекунад. Пас аз расидан ба ин ҳадди ниҳоӣ, ҳама равандҳо синхронӣ мешаванд (банд карда мешаванд) ва иҷоза намедиҳад, ки то он даме, ки амалиёти вуруд/чориши дархосткардаи онҳо воқеан анҷом наёбад ва маълумот дар диск бошад. Бо сарбории баланди вуруд/чор, ин мушкилотро ба вуҷуд меорад, зеро кэшкунии додаҳо вуҷуд надорад ва ҳама равандҳои воридотӣ дар интизории вуруд/берҳо баста мешаванд. Ин боиси шумораи зиёди равандҳои овезон, сарбории баланд, ноустувории система ва кори суст мегардад.

Паст кардани арзишҳои ин параметрҳо боиси он мегардад, ки маълумот дар диск зуд-зуд тоза карда шавад ва дар RAM нигоҳ дошта нашавад. Ин метавонад ба системаҳои вазнини хотира кӯмак расонад, ки дар он ҷо тоза кардани кэшҳои саҳифаи 45-90 ГБ ба диск муқаррарӣ аст, ки дар натиҷа ба таъхири зиёд барои замимаҳои пешрафта оварда мерасонад, ки посухгӯӣ ва интерактивии умумиро коҳиш медиҳад.

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

Кэши саҳифа кэшест, ки маълумотро аз файлҳо ва барномаҳои иҷрошаванда нигоҳ медорад, яъне ин саҳифаҳо бо мундариҷаи воқеии файлҳо ё дастгоҳҳои блок мебошанд. Ин кэш барои кам кардани шумораи хондани диск истифода мешавад. Қимати "1" маънои онро дорад, ки кэш 1% хотираи RAM-ро истифода мебарад ва хондани дискҳо нисбат ба RAM бештар хоҳад буд. Тағйир додани ин танзимот шарт нест, аммо агар шумо дар бораи назорати кэши саҳифа параноид бошед, шумо метавонед онро истифода баред.

"мӯҳлати ниҳоӣ" > /sys/block/sdc/queue/scheduler

Банақшагирии I/O як ҷузъи ядрои Linux мебошад, ки навбатҳои хондан ва навиштанро идора мекунад. Дар назария, беҳтар аст, ки "noop" -ро барои контроллери интеллектуалии RAID истифода баред, зеро Linux дар бораи геометрияи физикии диск чизе намедонад, аз ин рӯ самараноктар аст, ки ба контроллер, ки геометрияи дискро хуб медонад, дархостро ҳамчун ҳарчи зудтар. Аммо чунин ба назар мерасад, ки "мӯҳлат" корҳоро беҳтар мекунад. Маълумоти бештарро дар бораи банақшагирандагон дар ҳуҷҷатҳои коди сарчашмаи ядрои Linux пайдо кардан мумкин аст: linux/Documentation/block/*osched.txt. Ва ман инчунин афзоиши қобилияти хонданро ҳангоми амалиёти омехта мушоҳида кардам (бисёр навиштан).

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

Миқдори дархостҳои воридот ва баромад дар буфер пеш аз фиристодани онҳо ба нақшакаш. Андозаи навбати дохилии баъзе контроллерҳо (queue_depth) аз nr_requests банақшагирии I/O калонтар аст, аз ин рӯ нақшаи I/O барои дуруст афзалият додан ва якҷоя кардани дархостҳо шонси кам дорад. Барои ҷадвалҳои мӯҳлати ниҳоӣ ва CFQ беҳтар аст, вақте ки nr_requests аз навбати дохилии контроллер 2 маротиба калонтар бошад. Якҷоя ва аз нав тартиб додани дархостҳо ба нақшакаш кӯмак мекунад, ки дар зери бори вазнин бештар ҷавоб диҳад.

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

Параметри саҳифа-кластер шумораи саҳифаҳоеро, ки дар як вақт ба своп навишта мешаванд, назорат мекунад. Дар мисоли боло, арзиш ба "16" муқаррар карда шудааст, то ба андозаи рахи RAID 64 KB мувофиқат кунад. Вақте ки ивазшавӣ = 0 аст, ин маъно надорад, аммо агар шумо ивазкуниро ба 10 ё 20 муқаррар кунед, истифодаи ин арзиш ба шумо ҳангоми 64 KB андозаи рахи RAID кӯмак хоҳад кард.

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

Танзимоти пешфарзии дастгоҳи блок барои бисёре аз контроллерҳои RAID аксар вақт ба иҷрои даҳшатнок оварда мерасонад. Илова кардани имконоти дар боло овардашуда хондани пешро барои бахшҳои 4096*512 байт танзим мекунад. Ҳадди ақал барои амалиёти ҷараён, суръат тавассути пур кардани кэши диски чипӣ тавассути хондани пешакӣ дар тӯли даврае, ки ядро ​​​​барои омодасозии вуруд/ баромад истифода мебарад, афзоиш меёбад. Кэш метавонад маълумотеро нигоҳ дорад, ки ҳангоми хондани навбатӣ дархост карда мешавад. Аз ҳад зиёди хондани пешакӣ метавонад вуруди тасодуфиро барои файлҳои калон кушад, агар он вақти эҳтимолии муфиди дискро истифода барад ё маълумотро берун аз кэш бор кунад.

Дар зер якчанд тавсияҳои бештар дар сатҳи системаи файлӣ мавҷуданд. Аммо онҳо то ҳол санҷида нашудаанд. Боварӣ ҳосил кунед, ки системаи файлии шумо андозаи рах ва шумораи дискҳоро дар массив медонад. Масалан, ин массиви raid5 бо андозаи рахи 64K аз шаш диск аст (воқеан панҷ, зеро як диск барои паритет истифода мешавад). Ин тавсияҳо ба фарзияҳои назариявӣ асос ёфта, аз блогҳо/мақолаҳои гуногун аз ҷониби коршиносони 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))

Барои файлҳои калонтар, шумо метавонед андозаи рахҳои дар боло зикршударо зиёд кунед.

ДАСТГИРӢ! Ҳама чизҳои дар боло тавсифшуда барои баъзе намудҳои барномаҳо бениҳоят субъективӣ мебошанд. Ин мақола бидуни санҷиши аввал барномаҳои мувофиқ аз ҷониби корбар ягон беҳбудиро кафолат намедиҳад. Он бояд танҳо дар сурате истифода шавад, ки зарурати беҳтар кардани вокуниши умумии система ё ҳалли мушкилоти ҷорӣ вуҷуд дошта бошад.

Маводи иловагӣ:

Танзими ядрои Linux барои GlusterFS

Бештар

Манбаъ: will.com

Илова Эзоҳ