Maqolaning tarjimasi kurs boshlanishi arafasida tayyorlangan .

Vaqti-vaqti bilan, u erda va u erda Glusterning yadroni sozlash bo'yicha tavsiyalari va bunga ehtiyoj bor-yo'qligi haqida savollar tug'iladi.
Bu ehtiyoj kamdan-kam hollarda yuzaga keladi. Ko'pgina ish yuklamalarida yadro juda yaxshi ishlaydi. Biroq, uning salbiy tomoni ham bor. Tarixan, yadro Linux agar imkoniyat berilsa, ixtiyoriy ravishda ko'p xotirani iste'mol qiladi, shu jumladan ishlashni yaxshilashning asosiy usuli sifatida keshlash uchun ham.
Ko'pgina hollarda, bu yaxshi ishlaydi, lekin og'ir yuk ostida bu muammolarga olib kelishi mumkin.
Og'ir yuk ostida sekinlasha boshlagan SAPR, EDA va shunga o'xshashlar kabi xotirani talab qiladigan tizimlar bilan bizda katta tajriba mavjud. Va ba'zida biz Glusterda muammolarga duch keldik. Ko'p kunlar davomida xotiradan foydalanish va diskning kechikishini diqqat bilan kuzatib borganimizdan so'ng, biz ularning haddan tashqari yuklanishi, katta iowait, yadro xatolari (yadro oops), muzlash va hokazolarni oldik.
Ushbu maqola turli vaziyatlarda o'tkazilgan ko'plab sozlash tajribalarining natijasidir. Ushbu parametrlar tufayli nafaqat umumiy sezgirlik yaxshilandi, balki klaster ham sezilarli darajada barqarorlashdi.
Xotirani sozlash haqida gap ketganda, diqqat qilish kerak bo'lgan birinchi narsa virtual xotira quyi tizimi (VM, virtual xotira), bu sizni chalkashtirib yuborishi mumkin bo'lgan juda ko'p imkoniyatlarga ega.
vm.swappiness
Parametr vm.swappiness yadro RAM bilan solishtirganda qanchalik almashtirishni (almashtirish, peyjing) ishlatishini aniqlaydi. Shuningdek, u manba kodida "xaritalangan xotirani o'g'irlash tendentsiyasi" sifatida ham ta'riflangan. Yuqori almashinish yadro xaritalangan sahifalarni almashtirishga ko'proq moyil bo'lishini anglatadi. Past almashtirish qiymati buning aksini anglatadi: yadro xotiradan kamroq sahifaga ega bo'ladi. Boshqacha aytganda, qiymat qanchalik baland bo'lsa vm.swappiness, tizim almashtirishdan qanchalik ko'p foydalanadi.
Swappingdan ko'p foydalanish istalmagan, chunki ma'lumotlarning katta bloklari RAMga yuklanadi va tushiriladi. Ko'p odamlar almashtirish qiymati katta bo'lishi kerakligini ta'kidlaydilar, ammo mening tajribamga ko'ra, uni "0" ga qo'yish yaxshi ishlashga olib keladi.
Batafsil bu yerda o'qishingiz mumkin -
Ammo, yana, bu sozlamalar ehtiyotkorlik bilan va faqat ma'lum bir dasturni sinab ko'rgandan so'ng qo'llanilishi kerak. Yuqori yuklangan oqim ilovalari uchun ushbu parametr "0" ga o'rnatilishi kerak. "0" ga o'zgartirilsa, tizimning sezgirligi yaxshilanadi.
vm.vfs_cache_pressure
Ushbu sozlama katalog va inode obyektlarini (dentry va inode) keshlash uchun yadro tomonidan iste'mol qilinadigan xotirani boshqaradi.
Sukut bo'yicha 100 qiymati bilan yadro dentry va inode keshlarini pagecache va swapcache uchun "adolatli" asosda bo'shatishga harakat qiladi. Vfs_cache_pressurening pasayishi yadroning dentry va inode keshlarini saqlashiga olib keladi. Qiymat "0" bo'lsa, yadro xotira bosimi tufayli hech qachon dentry va inode keshini tozalamaydi va bu osongina xotiradan tashqari xatolikka olib kelishi mumkin. Vfs_cache_pressure ning 100 dan yuqori ortishi yadroni dentry va inode yuvishni birinchi o'ringa qo'yishiga olib keladi.
GlusterFS-dan foydalanganda katta hajmdagi ma'lumotlarga va ko'plab kichik fayllarga ega bo'lgan ko'plab foydalanuvchilar inode/dentry keshlash tufayli serverda katta hajmdagi operativ xotiradan osongina foydalanishi mumkin, bu esa ishlashning pasayishiga olib kelishi mumkin, chunki yadro tizimdagi ma'lumotlar tuzilmalarini qayta ishlashga majbur bo'ladi. 40 GB xotira bilan. Ushbu qiymatni 100 dan yuqori o'rnatish ko'plab foydalanuvchilarga adolatli keshlash va yadro sezgirligini oshirishga yordam berdi.
vm.dirty_background_ratio va vm.dirty_ratio
Birinchi parametr (vm.dirty_background_ratio) iflos sahifalar bilan xotira foizini aniqlaydi, unga erishgandan so'ng fonda iflos sahifalarni diskka tozalashni boshlash kerak. Ushbu foizga erishilmaguncha, hech qanday sahifa diskka o'tkazilmaydi. Va qayta o'rnatish boshlanganda, u ishlaydigan jarayonlarni to'xtatmasdan fonda ishlaydi.
Ikkinchi parametr (vm.dirty_ratio) majburiy chaqnash boshlanishidan oldin iflos sahifalar bilan band bo'lishi mumkin bo'lgan xotira foizini belgilaydi. Ushbu chegaraga erishilgandan so'ng, barcha jarayonlar sinxronlashadi (bloklanadi) va ular so'ragan kiritish-chiqarish amalda tugallanmaguncha va ma'lumotlar diskda bo'lmaguncha davom etishga ruxsat etilmaydi. Og'ir kiritish/chiqarish bilan bu muammoga sabab bo'ladi, chunki ma'lumotlarni keshlash yo'q va barcha kiritish/chiqarish jarayonlari kirish/chiqarishni kutishda bloklanadi. Bu ko'p sonli osilgan jarayonlar, yuqori yuk, tizimning beqarorligi va yomon ishlashiga olib keladi.
Ushbu sozlamalarni pasaytirish ma'lumotlarning diskka tez-tez tozalanishiga va RAMda saqlanmasligiga olib keladi. Bu 45-90 GB hajmdagi sahifa keshlarini diskka oʻchirish odatiy hol boʻlgan xotirasi ogʻir tizimlarga yordam berishi mumkin, bu esa oldingi ilovalar uchun katta kechikishga olib keladi, bu esa umumiy sezgirlik va interaktivlikni pasaytiradi.
"1" > /proc/sys/vm/pagecache
Sahifa keshi - bu fayllar va bajariladigan dasturlarning ma'lumotlarini saqlaydigan kesh, ya'ni bu fayllar yoki blok qurilmalarning haqiqiy mazmuni bo'lgan sahifalar. Ushbu kesh diskni o'qish sonini kamaytirish uchun ishlatiladi. "1" qiymati operativ xotiraning 1% kesh uchun ishlatilishini anglatadi va RAMdan ko'ra diskdan ko'proq o'qiladi. Ushbu sozlamani o'zgartirish shart emas, lekin agar siz sahifa keshini boshqarish haqida paranoyak bo'lsangiz, undan foydalanishingiz mumkin.
"deadline" > /sys/block/sdc/queue/scheduler
I/O rejalashtiruvchisi yadro komponentidir. Linux, o'qish va yozish navbatlarini boshqaradi. Nazariy jihatdan, aqlli RAID kontrolleri uchun "noop" dan foydalanish yaxshiroq, chunki Linux Rejalashtiruvchi diskning fizik geometriyasi haqida hech narsa bilmaydi, shuning uchun disk geometriyasini yaxshi biladigan kontrollerga so'rovni iloji boricha tezroq qayta ishlashga ruxsat berish samaraliroq. Biroq, "oxirgi muddat" ishlashni yaxshilaydiganga o'xshaydi. Rejalashtiruvchilar haqida ko'proq ma'lumotni yadro manba hujjatlarida topish mumkin. Linux: linux/Documentation/block/*osched.txt. Shuningdek, aralash operatsiyalar (ko'p yozishlar) paytida o'qish tezligining oshishini ko'rdim.
"256" > /sys/block/sdc/queue/nr_requests
Buferdagi kiritish/chiqarish so'rovlarining rejalashtirishga o'tishidan oldin soni. Ba'zi kontrollerlarning ichki navbat hajmi (queue_depth) kiritish-chiqarish rejalashtiruvchisining nr_requests hajmidan kattaroqdir, shuning uchun kiritish/chiqarish rejalashtiruvchisi so'rovlarni to'g'ri ustuvorlashtirish va birlashtirish imkoniyatiga ega emas. Belgilangan muddat va CFQ rejalashtiruvchilar uchun nr_requests nazoratchining ichki navbatidan 2 marta ko'p bo'lsa yaxshi bo'ladi. So'rovlarni birlashtirish va qayta tartiblash rejalashtiruvchiga og'ir yuk ostida yanada sezgir bo'lishiga yordam beradi.
echo "16" > /proc/sys/vm/page-cluster
Sahifa-klaster parametri bir vaqtning o'zida almashtirishga yozilgan sahifalar sonini boshqaradi. Yuqoridagi misolda qiymat 16 KB RAID chiziq o'lchamiga muvofiq "64" ga o'rnatiladi. Swappiness = 0 bilan mantiqiy emas, lekin agar siz almashtirishni 10 yoki 20 ga o'rnatsangiz, bu qiymatdan foydalanish RAID chizig'i o'lchami 64K bo'lganda sizga yordam beradi.
blockdev --setra 4096 /dev/<devname> (-sdb, hdc yoki dev_mapper)
Ko'pgina RAID kontrollerlari uchun standart blokli qurilma sozlamalari ko'pincha dahshatli ishlashga olib keladi. Yuqoridagi variantni qo'shish 4096 * 512 baytli sektorlar uchun oldindan o'qishni o'rnatadi. Hech bo'lmaganda, oqim operatsiyalari uchun yadro tomonidan kiritish/chiqarishni tayyorlash uchun foydalaniladigan davrda chipdagi disk keshini oldindan o'qish bilan to'ldirish orqali tezlik oshiriladi. Keshda keyingi o'qishda so'raladigan ma'lumotlar bo'lishi mumkin. Haddan tashqari oldindan yuklash katta fayllar uchun tasodifiy kiritish-chiqarishni o'ldirishi mumkin, agar u potentsial foydali disk vaqtini ishlatsa yoki keshdan tashqarida ma'lumotlarni yuklasa.
Quyida fayl tizimi darajasida yana bir nechta tavsiyalar mavjud. Ammo ular hali sinovdan o'tkazilmagan. Fayl tizimingiz chiziq o'lchamini va massivdagi disklar sonini bilishiga ishonch hosil qiling. Masalan, bu oltita diskdan iborat 5K chiziqli raid64 massivi (aslida beshta, chunki bitta disk paritet uchun ishlatiladi). Ushbu tavsiyalar nazariy taxminlarga asoslangan va RAID ekspertlari tomonidan turli bloglar/maqolalardan tuzilgan.
-> 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))Katta fayllar uchun yuqorida sanab o'tilgan chiziqlar o'lchamlarini oshirishni o'ylab ko'ring.
E'tibor bering! Yuqorida tavsiflangan har bir narsa ba'zi turdagi ilovalar uchun juda sub'ektivdir. Ushbu maqola tegishli ilovalarni foydalanuvchi tomonidan oldindan sinovdan o'tkazmasdan hech qanday yaxshilanishlarga kafolat bermaydi. U faqat tizimning umumiy javob berish qobiliyatini yaxshilash zarur bo'lganda yoki mavjud muammolarni hal qilsa ishlatilishi kerak.
Dopolnitelnye materiallar:
Ko'proq o'qish
Manba: www.habr.com
