Paratowyd y cyfieithiad o'r erthygl ar y noson cyn dechrau'r cwrs .

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 bydd yr angen hwn yn codi. O dan y rhan fwyaf o lwythi gwaith, mae'r craidd yn perfformio'n dda iawn. Fodd bynnag, mae ochr negyddol. Yn hanesyddol, y craidd Linux yn defnyddio llawer o gof yn fwriadol os rhoddir y cyfle iddo, gan gynnwys ar gyfer storio dros dro fel y prif 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 -
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 amserlennydd I/O yn gydran cnewyllyn. Linux, sy'n trin ciwiau darllen ac ysgrifennu. Yn ddamcaniaethol, ar gyfer rheolydd RAID clyfar, mae'n well defnyddio "noop" oherwydd Linux Nid yw'r amserlennwr yn gwybod dim am geometreg ffisegol y ddisg, felly mae'n fwy effeithlon gadael i'r rheolydd, sydd â gwybodaeth dda am geometreg y ddisg, brosesu'r cais cyn gynted â phosibl. Fodd bynnag, mae'n ymddangos bod y "dyddiad cau" yn gwella perfformiad. Gellir dod o hyd i ragor o wybodaeth am amserlenwyr yn nogfennaeth ffynhonnell y 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:
Darllen mwy
Ffynhonnell: hab.com
