Linux kodola iestatīŔana GlusterFS

Raksta tulkojums tika sagatavots kursu sākuma priekÅ”vakarā Linux administrators. ProfesionālsĀ».

Linux kodola iestatīŔana GlusterFS

Periodiski, Å”ur tur, rodas jautājumi par Gluster ieteikumiem attiecÄ«bā uz kodola regulÄ“Å”anu un to, vai tas ir nepiecieÅ”ams.

Tāda vajadzÄ«ba rodas reti. Lielākajā daļā darba slodžu kodols darbojas ļoti labi. Lai gan ir mÄ«nuss. Vēsturiski Linux kodols ir bijis gatavs patērēt daudz atmiņas, ja tam tika dota iespēja, tostarp keÅ”atmiņai kā galvenais veids, kā uzlabot veiktspēju.

Vairumā gadījumu tas darbojas labi, taču ar lielu slodzi tas var radīt problēmas.

Mums ir liela pieredze ar atmiņu ietilpÄ«gām sistēmām, piemēram, CAD, EDA un tamlÄ«dzÄ«gām, kas lielas slodzes laikā sāka palēnināties. Un dažreiz mēs saskārāmies ar problēmām Glusterā. RÅ«pÄ«gi novērojot atmiņas lietojumu un diska latentumu daudzu dienu garumā, mēs saņēmām to pārslodzi, milzÄ«go iowait, kodola kļūdas (kodola oops), sasalÅ”anu utt.

Å is raksts ir daudzu dažādās situācijās veiktu skaņoÅ”anas eksperimentu rezultāts. Pateicoties Å”iem parametriem, ir uzlabojusies ne tikai kopējā atsaucÄ«ba, bet arÄ« bÅ«tiski stabilizējies klasteris.

Runājot par atmiņas regulÄ“Å”anu, pirmā lieta, kas jāņem vērā, ir virtuālās atmiņas apakÅ”sistēma (VM, virtuālā atmiņa), kurā ir liels skaits iespēju, kas var jÅ«s mulsināt.

vm.swapiness

Parametrs vm.swappiness nosaka, cik daudz kodols izmanto mijmaiņas (swap, peidžeru), salÄ«dzinot ar RAM. Tas ir arÄ« definēts avota kodā kā "tendence nozagt kartēto atmiņu". Augsta mijmaiņas intensitāte nozÄ«mē, ka kodols bÅ«s vairāk tendēts apmainÄ«t kartētās lapas. Zema mijmaiņas vērtÄ«ba nozÄ«mē pretējo: kodols mazāk lappuÅ”u no atmiņas. Citiem vārdiem sakot, jo lielāka vērtÄ«ba vm.swappiness, jo vairāk sistēma izmantos mijmaiņas.

PlaÅ”a apmaiņas izmantoÅ”ana nav vēlama, jo RAM tiek ielādēti un izlādēti milzÄ«gi datu bloki. Daudzi cilvēki apgalvo, ka mijmaiņas vērtÄ«bai jābÅ«t lielai, taču, pēc manas pieredzes, iestatot to uz "0", tiek nodroÅ”ināta labāka veiktspēja.

Vairāk var lasīt Ŕeit - lwn.net/Articles/100978

Bet atkal Å”ie iestatÄ«jumi ir jāpiemēro uzmanÄ«gi un tikai pēc konkrētas lietojumprogrammas pārbaudes. Ä»oti ielādētām straumÄ“Å”anas lietojumprogrammām Å”im parametram jābÅ«t iestatÄ«tam uz ā€œ0ā€. Mainot uz "0", sistēmas reakcija uzlabojas.

vm.vfs_cache_pressure

Å is iestatÄ«jums kontrolē atmiņu, ko kodols patērē direktoriju un inode objektu (dentry un inode) keÅ”atmiņas saglabāŔanai.

Ja noklusējuma vērtÄ«ba ir 100, kodols mēģinās "godÄ«gi" atbrÄ«vot dentry un inode keÅ”atmiņu, izmantojot lapas keÅ”atmiņu un mijmaiņas keÅ”atmiņu. Samazinot vfs_cache_pressure, kodols saglabā dentry un inode keÅ”atmiņu. Ja vērtÄ«ba ir "0", kodols nekad neizskalos dentry un inode keÅ”atmiņu atmiņas spiediena dēļ, un tas var viegli izraisÄ«t atmiņas trÅ«kuma kļūdu. Palielinot vfs_cache_spiedienu virs 100, kodols pieŔķir prioritāti dentry un inode flushing.

Lietojot GlusterFS, daudzi lietotāji ar lielu datu apjomu un daudziem maziem failiem var viegli izmantot ievērojamu daudzumu RAM serverÄ« inode/dentry keÅ”atmiņas dēļ, kas var izraisÄ«t veiktspējas pasliktināŔanos, jo kodolam ir jāapstrādā sistēmas datu struktÅ«ras. ar 40 GB atmiņu. Å Ä«s vērtÄ«bas iestatÄ«Å”ana virs 100 ir palÄ«dzējusi daudziem lietotājiem panākt godÄ«gāku keÅ”atmiņu un uzlabot kodola reaģētspēju.

vm.dirty_background_ratio un vm.dirty_ratio

Pirmais parametrs (vm.dirty_background_ratio) nosaka atmiņas procentuālo daudzumu ar netÄ«rām lapām, pēc kuras sasniegÅ”anas jāsāk netÄ«ro lapu skaloÅ”ana fonā diskā. Kamēr Å”is procents nav sasniegts, neviena lapa netiek izskalota diskā. Un, kad sākas atiestatÄ«Å”ana, tā darbojas fonā, nepārtraucot darbÄ«bas procesus.

Otrais parametrs (vm.dirty_ratio) nosaka atmiņas procentuālo daudzumu, ko var aizņemt netÄ«rās lapas, pirms tiek sākta piespiedu zibspuldze. Kad Å”is slieksnis ir sasniegts, visi procesi kļūst sinhroni (bloķēti) un tiem nav atļauts turpināties, kamēr nav faktiski pabeigta to pieprasÄ«tā ievade/izvade un dati atrodas diskā. Ar smagu I/O tas rada problēmas, jo nav datu keÅ”atmiņas un visi procesi, kas veic I/O, tiek bloķēti, gaidot I/O. Tas izraisa lielu skaitu pakarinātu procesu, lielu slodzi, sistēmas nestabilitāti un sliktu veiktspēju.

Samazinot Å”os iestatÄ«jumus, dati tiek biežāk izskaloti diskā un netiek saglabāti RAM. Tas var palÄ«dzēt sistēmām ar lielu atmiņu, kur parasti ir 45ā€“90 GB lappuÅ”u keÅ”atmiņas izskaloÅ”ana diskā, tādējādi radot milzÄ«gu latentumu priekÅ”gala lietojumprogrammām, samazinot vispārējo atsaucÄ«bu un interaktivitāti.

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

Lapas keÅ”atmiņa ir keÅ”atmiņa, kurā tiek glabāti failu un izpildāmo programmu dati, tas ir, tās ir lapas ar faktisko failu saturu vai blokierÄ«cēm. Å Ä« keÅ”atmiņa tiek izmantota, lai samazinātu diska nolasÄ«jumu skaitu. VērtÄ«ba "1" nozÄ«mē, ka keÅ”atmiņai tiek izmantots 1% RAM, un no diska tiks lasÄ«ts vairāk nekā no RAM. Å is iestatÄ«jums nav jāmaina, taču, ja jums ir paranoisks lapas keÅ”atmiņas kontrole, varat to izmantot.

"termiņŔ" > /sys/block/sdc/queue/scheduler

I/O plānotājs ir Linux kodola komponents, kas apstrādā lasÄ«Å”anas un rakstÄ«Å”anas rindas. Teorētiski viedajam RAID kontrollerim labāk ir izmantot "noop", jo Linux neko nezina par diska fizisko Ä£eometriju, tāpēc efektÄ«vāk ir ļaut kontrolierim, kurÅ” labi zina diska Ä£eometriju, apstrādāt pieprasÄ«jumu tik ātri, kā iespējams. Bet izskatās, ka "termiņŔ" uzlabo veiktspēju. PlaŔāku informāciju par plānotājiem varat lasÄ«t Linux kodola pirmkoda dokumentācijā: linux/Documentation/block/*osched.txt. Un arÄ« jauktu darbÄ«bu laikā (daudzi raksti) esmu redzējis lasÄ«Å”anas caurlaidÄ«bas pieaugumu.

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

I/O pieprasÄ«jumu skaits buferÄ«, pirms tie tiek nodoti plānotājam. Dažu kontrolleru iekŔējās rindas lielums (queue_depth) ir lielāks nekā I/O plānotāja nr_requests, tāpēc I/O plānotājam ir maz iespēju pareizi noteikt prioritātes un apvienot pieprasÄ«jumus. Termiņa un CFQ plānotājiem ir labāk, ja nr_requests ir 2 reizes lielāks par kontroliera iekŔējo rindu. PieprasÄ«jumu apvienoÅ”ana un pārkārtoÅ”ana palÄ«dz plānotājam bÅ«t atsaucÄ«gākam lielas slodzes apstākļos.

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

Lapu klastera parametrs kontrolē lappuÅ”u skaitu, kas vienlaikus tiek ierakstÄ«tas mijmaiņas programmā. IepriekÅ” minētajā piemērā vērtÄ«ba ir iestatÄ«ta uz "16" atbilstoÅ”i RAID joslas izmēram 64 KB. Nav jēgas, ja swappiness = 0, bet, ja iestatāt mijmaiņas vērtÄ«bu uz 10 vai 20, tad Ŕīs vērtÄ«bas izmantoÅ”ana jums palÄ«dzēs, ja RAID joslas izmērs ir 64K.

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

Noklusējuma bloka ierÄ«ces iestatÄ«jumi daudziem RAID kontrolleriem bieži rada briesmÄ«gu veiktspēju. Pievienojot iepriekÅ” minēto opciju, tiek iestatÄ«ta lasÄ«Å”ana uz priekÅ”u 4096 * 512 baitu sektoriem. Vismaz straumÄ“Å”anas operācijām ātrums tiek palielināts, aizpildot mikroshēmas diska keÅ”atmiņu ar priekÅ”lasÄ«Å”anu laikā, ko kodols izmanto ievades/izvades sagatavoÅ”anai. KeÅ”atmiņā var bÅ«t dati, kas tiks pieprasÄ«ti nākamajā lasÄ«Å”anas reizē. Pārāk daudz priekÅ”ielādÄ“Å”anas var iznÄ«cināt lielu failu nejauÅ”u ievadi/izvadi, ja tiek patērēts potenciāli noderÄ«gs diska laiks vai tiek ielādēti dati ārpus keÅ”atmiņas.

Tālāk ir sniegti vēl daži ieteikumi failu sistēmas lÄ«menÄ«. Bet tie vēl nav pārbaudÄ«ti. Pārliecinieties, vai jÅ«su failu sistēma zina svÄ«tras lielumu un disku skaitu masÄ«vā. Piemēram, ka Å”is ir 5K svÄ«tru raid64 masÄ«vs no seÅ”iem diskiem (faktiski pieci, jo viens disks tiek izmantots paritātei). Å ie ieteikumi ir balstÄ«ti uz teorētiskiem pieņēmumiem, un tos no dažādiem emuāriem/rakstiem apkopojuÅ”i RAID eksperti.

-> 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))

Lieliem failiem apsveriet iespēju palielināt iepriekÅ” norādÄ«to svÄ«tru izmēru.

UZMANÄŖBU! Viss, kas aprakstÄ«ts iepriekÅ”, ir ļoti subjektÄ«vs dažiem lietojumu veidiem. Å is raksts negarantē nekādus uzlabojumus bez iepriekŔējas saistÄ«to lietojumprogrammu testÄ“Å”anas. To vajadzētu izmantot tikai tad, ja ir nepiecieÅ”ams uzlabot sistēmas vispārējo reaģētspēju vai tas atrisina paÅ”reizējās problēmas.

Papildu materiāli:

Linux kodola iestatīŔana GlusterFS

Lasīt vairāk

Avots: www.habr.com

Pievieno komentāru