Sefydlu'r cnewyllyn Linux ar gyfer GlusterFS

Paratowyd y cyfieithiad o'r erthygl ar y noson cyn dechrau'r cwrs Gweinyddwr Linux. Proffesiynol».

Sefydlu'r cnewyllyn Linux ar gyfer GlusterFS

O bryd i'w gilydd, yma ac acw, mae cwestiynau'n codi am argymhellion Gluster ynghylch tiwnio cnewyllyn ac a oes angen hyn.

Anaml y mae angen o'r fath yn codi. Ar y rhan fwyaf o lwythi gwaith, mae'r cnewyllyn yn perfformio'n dda iawn. Er bod yna anfantais. Yn hanesyddol, mae cnewyllyn Linux wedi bod yn barod i ddefnyddio llawer o gof os rhoddir cyfle iddo, gan gynnwys caching fel y brif ffordd o wella perfformiad.

Yn y rhan fwyaf o achosion, mae hyn yn gweithio'n iawn, ond o dan lwyth trwm gall arwain at broblemau.

Mae gennym lawer o brofiad gyda systemau cof dwys fel CAD, EDA ac ati, a ddechreuodd arafu o dan lwyth trwm. Ac weithiau fe aethon ni i broblemau yn Gluster. Ar ôl arsylwi'n ofalus ar y defnydd o gof a hwyrni disg am ddyddiau lawer, cawsom eu gorlwytho, iowait enfawr, gwallau cnewyllyn (wps cnewyllyn), rhewi, ac ati.

Mae'r erthygl hon yn ganlyniad i lawer o arbrofion tiwnio a gynhaliwyd mewn gwahanol sefyllfaoedd. Diolch i'r paramedrau hyn, nid yn unig mae'r ymatebolrwydd cyffredinol wedi gwella, ond mae'r clwstwr hefyd wedi sefydlogi'n sylweddol.

O ran tiwnio cof, y peth cyntaf i edrych arno yw'r is-system cof rhithwir (VM, cof rhithwir), sydd â nifer fawr o opsiynau a all eich drysu.

vm.swappiness

Paramedr vm.swappiness yn pennu faint mae'r cnewyllyn yn defnyddio cyfnewid (cyfnewid, paging) o'i gymharu â RAM. Fe'i diffinnir hefyd yn y cod ffynhonnell fel "tuedd i ddwyn cof wedi'i fapio". Mae cyfnewidiad uchel yn golygu y bydd y cnewyllyn yn fwy tueddol o gyfnewid tudalennau wedi'u mapio. Mae gwerth swappiness isel yn golygu'r gwrthwyneb: bydd y cnewyllyn yn tudalen llai o'r cof. Mewn geiriau eraill, yr uchaf yw'r gwerth vm.swappiness, po fwyaf y bydd y system yn defnyddio cyfnewid.

Mae defnydd mawr o gyfnewid yn annymunol, gan fod blociau enfawr o ddata yn cael eu llwytho a'u dadlwytho i RAM. Mae llawer o bobl yn dadlau y dylai'r gwerth swapiness fod yn fawr, ond yn fy mhrofiad i, mae ei osod i "0" yn arwain at well perfformiad.

Gallwch ddarllen mwy yma - lwn.net/Erthyglau/100978

Ond, unwaith eto, dylid defnyddio'r gosodiadau hyn yn ofalus a dim ond ar ôl profi cymhwysiad penodol. Ar gyfer cymwysiadau ffrydio llwythog iawn, dylid gosod y paramedr hwn i "0". Pan gaiff ei newid i "0", mae ymatebolrwydd y system yn gwella.

vm.vfs_cache_pressure

Mae'r gosodiad hwn yn rheoli'r cof a ddefnyddir gan y cnewyllyn ar gyfer cyfeiriadur caching a gwrthrychau inod (dentry ac inod).

Gyda gwerth rhagosodedig o 100, bydd y cnewyllyn yn ceisio rhyddhau'r caches dentry a inode ar sail "weddol" i pagecache a swapcache. Mae lleihau vfs_cache_pressure yn achosi i'r cnewyllyn gadw celciau deintyddiaeth a inod. Pan fydd y gwerth yn "0", ni fydd y cnewyllyn byth yn fflysio'r storfa ddeintyddol a inod oherwydd pwysau cof, a gall hyn arwain yn hawdd at gamgymeriad y tu allan i'r cof. Mae cynyddu vfs_cache_pressure uwchlaw 100 yn achosi i'r cnewyllyn roi blaenoriaeth i ddeintyddiaeth a fflysio inod.

Wrth ddefnyddio GlusterFS, gall llawer o ddefnyddwyr sydd â llawer iawn o ddata a llawer o ffeiliau bach ddefnyddio swm sylweddol o RAM ar y gweinydd yn hawdd oherwydd caching inod/dentry, a all arwain at ddirywiad perfformiad gan fod yn rhaid i'r cnewyllyn brosesu strwythurau data ar system gyda 40 GB o gof. Mae gosod y gwerth hwn uwchlaw 100 wedi helpu llawer o ddefnyddwyr i gyflawni caching tecach a gwell ymatebolrwydd cnewyllyn.

vm.dirty_background_cymhareb a vm.dirty_cymhareb

Paramedr cyntaf (vm.dirty_background_ratio) yn pennu canran y cof gyda thudalennau budr, ar ôl cyrraedd y mae angen dechrau fflysio tudalennau budr yn y cefndir i ddisg. Hyd nes y cyrhaeddir y ganran hon, ni chaiff unrhyw dudalennau eu fflysio i ddisg. A phan fydd y ailosod yn dechrau, mae'n rhedeg yn y cefndir heb dorri ar draws prosesau rhedeg.

Yr ail baramedr (vm.dirty_ratio) yn diffinio canran y cof y gall tudalennau budr ei feddiannu cyn i fflachiau gorfodol ddechrau. Unwaith y bydd y trothwy hwn wedi'i gyrraedd, mae'r holl brosesau'n dod yn gydamserol (wedi'u rhwystro) ac ni chaniateir iddynt barhau nes bod yr I/O y gofynnwyd amdano wedi'i gwblhau a bod y data ar ddisg. Gyda I/O trwm mae hyn yn achosi problem oherwydd nid oes caching data ac mae'r holl brosesau sy'n gwneud I/O yn cael eu rhwystro rhag aros am I/O. Mae hyn yn arwain at nifer fawr o brosesau hongian, llwyth uchel, ansefydlogrwydd system a pherfformiad gwael.

Mae lleihau'r gosodiadau hyn yn achosi i ddata gael ei fflysio i ddisg yn amlach a pheidio â'i storio mewn RAM. Gall hyn helpu systemau cof-drwm lle mae'n arferol i fflysio caches tudalennau 45-90 GB i ddisg, gan arwain at hwyrni enfawr ar gyfer cymwysiadau pen blaen, gan leihau ymatebolrwydd a rhyngweithedd cyffredinol.

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

Mae cache tudalen yn storfa sy'n storio data ffeiliau a rhaglenni gweithredadwy, hynny yw, mae'r rhain yn dudalennau gyda chynnwys gwirioneddol ffeiliau neu ddyfeisiau bloc. Defnyddir y storfa hon i leihau nifer y disgiau sy'n cael eu darllen. Mae gwerth o "1" yn golygu bod 1% o RAM yn cael ei ddefnyddio ar gyfer y storfa a bydd mwy o ddarlleniadau o ddisg nag o RAM. Nid oes angen newid y gosodiad hwn, ond os ydych yn baranoiaidd ynglŷn â rheoli storfa'r dudalen, gallwch ei ddefnyddio.

"dyddiad cau" > /sys/block/sdc/ciw/scheduler

Mae'r rhaglennydd I/O yn gydran cnewyllyn Linux sy'n delio â chiwiau darllen ac ysgrifennu. Mewn theori, mae'n well defnyddio "noop" ar gyfer rheolydd RAID craff, oherwydd nid yw Linux yn gwybod dim am geometreg ffisegol y ddisg, felly mae'n fwy effeithlon gadael i'r rheolydd, sy'n gwybod geometreg y ddisg yn dda, brosesu'r cais cyn gynted â phosibl. posibl. Ond mae'n edrych fel bod "dyddiad cau" yn gwella perfformiad. Gallwch ddarllen mwy am amserlenwyr yn nogfennaeth cod ffynhonnell cnewyllyn Linux: linux/Documentation/block/*osched.txt. A hefyd rwyf wedi gweld cynnydd yn y mewnbwn darllen yn ystod gweithrediadau cymysg (mae llawer yn ysgrifennu).

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

Nifer y ceisiadau I/O yn y byffer cyn iddynt gael eu trosglwyddo i'r trefnydd. Mae maint ciw mewnol rhai rheolwyr (queue_depth) yn fwy na nr_requests y trefnydd I/O, felly nid oes gan y trefnydd I/O fawr o siawns o flaenoriaethu ac uno ceisiadau yn gywir. Ar gyfer dyddiad cau a rhaglenwyr CFQ, mae'n well pan fydd nr_requests 2 waith ciw mewnol y rheolwr. Mae uno ac aildrefnu ceisiadau yn helpu'r trefnydd i fod yn fwy ymatebol o dan lwyth trwm.

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

Mae'r paramedr tudalen-clwstwr yn rheoli nifer y tudalennau sy'n cael eu hysgrifennu i'r cyfnewid ar un adeg. Yn yr enghraifft uchod, mae'r gwerth wedi'i osod i "16" yn ôl maint y streipen RAID o 64 KB. Nid yw'n gwneud synnwyr gyda chyfnewidedd = 0, ond os ydych chi'n gosod cyfnewidioldeb i 10 neu 20 yna bydd defnyddio'r gwerth hwn yn eich helpu pan fydd maint y streipen RAID yn 64K.

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

Mae'r gosodiadau dyfais bloc rhagosodedig ar gyfer llawer o reolwyr RAID yn aml yn arwain at berfformiad ofnadwy. Mae ychwanegu'r opsiwn uchod yn gosod darlleniad ymlaen llaw ar gyfer sectorau 4096 * 512-beit. O leiaf, ar gyfer gweithrediadau ffrydio, cynyddir cyflymder trwy lenwi'r storfa ddisg ar sglodion gyda darllen ymlaen llaw yn ystod y cyfnod a ddefnyddir gan y cnewyllyn i baratoi I/O. Gall y storfa gynnwys data y gofynnir amdano ar y darlleniad nesaf. Gall gormod o ragosodiad ladd I/O ar hap ar gyfer ffeiliau mawr os yw'n defnyddio amser disg a allai fod yn ddefnyddiol neu'n llwytho data y tu allan i'r storfa.

Isod mae ychydig mwy o argymhellion ar lefel y system ffeiliau. Ond nid ydyn nhw wedi cael eu profi eto. Sicrhewch fod eich system ffeiliau yn gwybod maint y streipen a nifer y disgiau yn yr arae. Er enghraifft, mai amrywiaeth o chwe disg streipen 5K yw hwn (pump mewn gwirionedd, oherwydd defnyddir un ddisg ar gyfer cydraddoldeb). Mae'r argymhellion hyn yn seiliedig ar ragdybiaethau damcaniaethol ac wedi'u llunio o flogiau/erthyglau amrywiol gan arbenigwyr 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))

Ar gyfer ffeiliau mawr, ystyriwch gynyddu'r meintiau streipiau a restrir uchod.

SYLW! Mae popeth a ddisgrifir uchod yn oddrychol iawn ar gyfer rhai mathau o geisiadau. Nid yw'r erthygl hon yn gwarantu unrhyw welliannau heb i ddefnyddwyr brofi cymwysiadau cysylltiedig ymlaen llaw. Dylid ond ei ddefnyddio os oes angen gwella ymatebolrwydd cyffredinol y system, neu os yw'n datrys problemau cyfredol.

Deunyddiau ychwanegol:

Sefydlu'r cnewyllyn Linux ar gyfer GlusterFS

Darllen mwy

Ffynhonnell: hab.com

Ychwanegu sylw