Linux performance tuning

Iš Žinynas.
13:44, 20 rugpjūčio 2018 versija, sukurta \dev\null (Aptarimas | indėlis) (Naujas puslapis: Linux yra naudojamas tiek laikrodžiuose, toasteriuose, kavos aparatuose tiek ir darbinėse stotyse ar net super kompiuteriuose. Todėl, linux'as yra pritaikytas ir gali būt...)
(skirt) ← Ankstesnė versija | Dabartinė versija (skirt) | Vėlesnė versija → (skirt)
Jump to navigation Jump to search

Linux yra naudojamas tiek laikrodžiuose, toasteriuose, kavos aparatuose tiek ir darbinėse stotyse ar net super kompiuteriuose. Todėl, linux'as yra pritaikytas ir gali būti konfigūruojamas pagal sisteminius poreikius, darbo pobūdį, apkrovą. Pramoninėse distribucijose tai jau būna atlikta, bet visada yra galimybė pasiekti dar aukštesnius rezultatus, suderinti programinę įrangą "geležies" teikiamiems resursams. Šis straipsnis apjungs sistemos stebėseną, analizavimą ir daugelį Linux derinimo parametrų, kuriuos galėsite reguliuoti pagal savo poreikius. Taip suderinta sistema gali veikti iki 30% ar net greičiau.

Naudota aparatinė/programinė įranga:

OS: Debian GNU/Linux
Versija: Stretch
HW: 4x Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz, 24GB Ram
SF: nginx 1.10.3, mysql-5.7.23(percona branch), php-fpm-7.0.30
Jeigu serveryje ar darbinėje stotyje nereikalinga grafinė vartotojo sąsaja, tai jos ir nenaudokite, išmeskite iš sistemos visai!

Pusiausvyra sistemoje

"Irqbalance" yra daemonas, padedantis išlaikyti pusiausvyrą CPU apkrovoje, kurią sukelia pertraukos visose sistemos procesoriuose. "Irqbalance" nustato didžiausios apimties pertraukimo šaltinius ir juos išskiria į vieną unikalų procesorių, kad apkrova būtų kuo labiau išplitusi per visą procesorių rinkinį, tuo pat metu sumažinant "irq" tvarkyklių talpyklos praleidimo dažnius.

apt-get install irqbalance

Pagreitinam programų krovimąsi

"Preload" yra daemonas, kuris veikia fone ir analizuoja tai, ką darai, atidaromas programas, jis daro kešavimą ir paspartina įkrovos darbą bei bendrą našumą. Defaultinio konfigūravimo turėtų užtekti, bet norint papildomos konfigūracijos redaguojame /etc/preload.conf, taip pat visą statusą galima peržvelgti /var/lib/preload/preload.state

apt-get install preload

Sumažinam swap

Šiais laikais sistemos turi pakankamai ramo, kad naudoti swap ir bružinti diską, ypac jei jis ne SSD. Peržiūra:

cat /proc/sys/vm/swappiness

Nustatymas

sysctl –w vm.swappiness=1

Temp nustatymas:

dedam į /etc/sysctl vm.swappiness=1 ir paleidžiam sysctl -p

Galimi nustatymų variantai:

  • vm.swappiness = 0 Kernelis naudos swapą tiktai tada kai norės išvengti out of memory.
  • vm.swappiness = 1 Kernelio versija 3.5 ir didesnė: Minimalus swapo naudojimas, jo neišjungiant.
  • vm.swappiness = 10 Šis nustatymas kartais būna rekomenduotinas kai ne įtin daug atminties turi sistema.
  • vm.swappiness = 60 Įprastinis nustatymas pagal nutylėjimą.
  • vm.swappiness = 100 Agresyviai naudos swap'a.

Diskų greitaveika

  • noatime – Šis parametras nebeleidžia rašyti paskutinio kreipimosi į failą laiko štampo. Išjungus šį parametrą į diską kaskart nerašoma informacija kai failas bandomas pasiekti. Rašymo komanda daroma tik tada kai tuo pačiu failas keičiamas/rašomas.
  • relatime – Failų sistemos užmontavimas su šiuo parametru leidžia atnaujinti prieigos laiką, jei jis yra (prieš atnaujinimą) anksčiau nei modifikavimo laikas. Tai žymiai sumažina įrašus, kuriuos sukelia atnaujinimai atime.
  • atime – Ši parinktis verčia Linux įrašyti paskutinesnį (arba paskutinį) laiką, kai buvo pasiektas tam tikras failas. Ši informacija ypač naudinga sysadminams ar kai kurioms programoms (ypač pašto programoms), kad žinotų, kada paskutinį kartą buvo naudojamas / pasiektas konkretus failas. "Atime" atnaujinimai yra didžiausias IO veikimo trūkumas, kurį šiandien turi "Linux".
  • noatime,data=writeback - Greičiausiai bus *gana* pastebimas (su skirtingu poveikiu skirtingoms apkrovoms), bet beveik niekas iš tikrųjų to nedaro.

Jeigu naudojate extX failų sistemą, rekomenduojama naudoti data=writeback, turėsite nustatyti FS iš naujo:

tune2fs -o journal_data_writeback /dev/sdxN
tune2fs -O ^has_journal /dev/sdxN
e2fsck -f /dev/sdxN

Dabar galėsite naudoti data=writeback mount parametrą. Įspėjimas: nežinia kas gali nutikti naudojant šį parametrą, neparuošus failų sistemos iš anksto. Ką mes naudojame?

defaults,noatime,data=writeback,barrier=0,nobh,errors=remount-ro

Ką tai reiškia?

  • writeback mode - Ext4 nedaro žurnalo duomenims visai. Šis režimas pateikia panašų žurnalų lygį kaip ir XFS, JFS ir ReiserFS numatytojo režimo - metaduomenų žurnalavimas. "Crash + atkūrimas" gali sukelti duomenų įrašytų prieš incidentą, nepasiekiamumą. Šis režimas paprastai užtikrina geriausią "ext4" našumą.
  • ordered mode - Ext4 nutylimai daro žurnalą tiktai metadata duomenims, tačiau jis logiškai su duomenų pakeitimais susijusią metaduomenų informaciją su duomenų blokais įtraukia į vieną vienetą, vadinamą transakcija. Kai ateina metas įrašyti naujus metaduomenis į diską, pirmieji rašomi susiję duomenų blokai. Apskritai, šis režimas veikia šiek tiek lėčiau nei writeback, bet žymiai greičiau nei žurnalo režimas.
  • commit - Padidina įrašymo intervalą (pagal nutylėjimą: 5s). Iš tikrųjų tai yra duomenų ir metaduomenų sinchronizavimo operacija, kuri yra svarbi duomenų saugos funkcija.
  • nouser_xattr - Išjungia išplėstinio vartotojo atributus, jei jų nereikia. Jei naudojate darbalaukio nustatymą namuose (arba mažame biurų tinkle), jums gali neprireikti šios funkcijos.
  • errors=remount-ro - Daugelis distribucijų prideda ir šią įkrovos parinktį. Iš tikrųjų šis įkrovos parinktis turi būti be jokių abejonių, nes ši įkėlimo parinktis yra nustatoma pagal nutylėjimą.

Kiti neprivalomi parametrai, skirti padidinti HDD ar SSD našumą

  • noatime ir nodiratime
  • no acl
  • data=writeback,nobh
  • delalloc - šis turėtų jau būti vienas iš numatytūjų
  • commit=N Pagal nutylejimą 5 sekundės, gerai saugumui bet blogai spartos atžvilgiu. Keičiant parametrą į aukštesnį skaičių, galite prarasti 'X' darbo sekundžių kai sistema užlūžta. Žurnalai vis dar saugomi, todėl diskas nepaveikiamas.
  • inode_readahead=n
  • max_batch_time=N


ĮSPĖJIMAS
Šis puslapis pažymėtas kaip nebaigtas. Jo turinyje gali trūkti informacijos apie aprašytus informacijos panaudojimus bei esminiai trūkumai kurie gali trūkdyti juos realizuoti.