Linux kernel

Razumijevanje vm.zamijenjenost

Razumijevanje vm.zamijenjenost
Linux jezgra prilično je složen softver s dugim popisom komponenata kao što su moduli, sučelja i konfiguracijske datoteke [1]. Te se komponente mogu konfigurirati s određenim vrijednostima kako bi se postiglo željeno ponašanje ili način rada komponente [2,3,4]. Nakon toga, ova postavka izravno utječe na ponašanje i izvedbu vašeg Linux sustava u cjelini.

Trenutne vrijednosti Linux kernela i njegovih komponenata postaju dostupne pomoću posebnog sučelja - direktorija / proc [5]. Ovo je virtualni datotečni sustav u kojem se pojedinačne datoteke u stvarnom vremenu pune vrijednostima. Vrijednosti predstavljaju stvarno stanje u kojem se nalazi Linux kernel. Pojedinačnim datotekama u direktoriju / proc možete pristupiti pomoću naredbe cat na sljedeći način:

$ cat / proc / sys / net / core / somaxconn
128
$

Jedan od ovih parametara jezgre naziva se vm.zamijenjenost. Ona "kontrolira relativnu težinu koja se daje zamjeni iz runtime memorije, za razliku od ispuštanja memorijskih stranica iz predmemorije sistemskih stranica" [6]. Počevši od izdanja Linux kernela 2.6 uvedena je ova vrijednost. Pohranjeno je u datoteci / proc / sys / vm / swappiness .

Korištenje razmjene

Korištenje swap-a [6] bio je bitan dio korištenja manjih UNIX strojeva u ranim 1990-ima. Još uvijek je korisno (poput imati rezervnu gumu u vozilu) kada vam gadno curenje memorije ometa rad. Stroj će usporiti, ali u većini slučajeva i dalje će biti koristan za završetak zadanog zadatka. Programeri besplatnog softvera velikim su koracima smanjili i eliminirali programske pogreške, pa prije promjene parametara jezgre razmislite o nadogradnji na noviju verziju vaše aplikacije i srodnih knjižnica.

Ako pokrenete brojne zadatke, tada će se neaktivni zadaci zamijeniti na disk, što će bolje iskoristiti memoriju uz vaše aktivne zadatke. Uređivanje video zapisa i drugi programi koji troše veliku memoriju često imaju preporučene količine memorije i prostora na disku. Ako imate stariji stroj koji ne može nadograditi memoriju, pružanje dodatnih zamjena moglo bi biti dobro privremeno rješenje za vas (pogledajte [6] kako saznati više o tome).

Zamjena se može dogoditi na zasebnoj particiji ili na swap datoteci. Mnogo aplikacija baza podataka daje particiju bržu i favoriziranu. Pristup datotekama je fleksibilniji (pogledajte paket dphys-swapfile u Debian GNU / Linux [7]). Imati više od jednog fizičkog uređaja za zamjenu omogućuje jezgri Linuxa da odabere uređaj koji je najbrže dostupan (niža latencija).

vm.zamijenjenost

Zadana vrijednost vm.swappiness iznosi 60 i predstavlja postotak slobodne memorije prije aktiviranja swap-a. Što je vrijednost niža, to se manje zamjene koristi i više memorijskih stranica se čuva u fizičkoj memoriji.

Vrijednost 60 je kompromis koji dobro funkcionira za moderne stolne sustave. Umjesto toga preporučuje se manja vrijednost za poslužiteljski sustav. Kao što ističe priručnik za podešavanje performansi Red Hat-a [8], za radna opterećenja baze podataka preporučuje se manja vrijednost zamijenjenosti. Na primjer, za Oracle baze podataka, Red Hat preporučuje vrijednost zamijenjenosti 10. Suprotno tome, za baze podataka MariaDB preporuča se postavljanje swappiness na vrijednost 1 [9].

Promjena vrijednosti izravno utječe na performanse Linux sustava. Definirane su ove vrijednosti:

* 0: zamjena je onemogućena
* 1: minimalna količina zamjene bez potpunog onemogućavanja
* 10: preporučena vrijednost za poboljšanje performansi kada u sustavu postoji dovoljno memorije
* 100: agresivno razmjenjivanje

Kao što je prikazano iznad, naredba cat pomaže u čitanju vrijednosti. Također, naredba sysctl daje vam isti rezultat:

# sysctl vm.zamijenjenost
vm.zamijenjenost = 60
#

Imajte na umu da je naredba sysctl dostupna samo administrativnom korisniku. Da biste privremeno postavili vrijednost, postavite vrijednost u datotečnom sustavu / proc na sljedeći način:

# echo 10> / proc / sys / vm / swappiness

Kao alternativu možete koristiti naredbu sysctl kako slijedi:

# sysctl -w vm.zamijenjenost = 10

Da biste trajno postavili vrijednost, otvorite datoteku / etc / sysctl.conf kao administrativni korisnik i dodajte sljedeći redak:

vm.zamijenjenost = 10

Zaključak

Sve više i više korisnika linuxa koristi virtualne strojeve. Svaka ima svoju jezgru uz hipervizor koji zapravo kontrolira hardver. Virtualni strojevi imaju za njih stvorene virtualne diskove, pa će promjena postavke unutar virtualnog stroja imati neodređene rezultate. Prvo eksperimentirajte s promjenom vrijednosti jezgre hipervizora, jer ona zapravo kontrolira hardver u vašem stroju.

Za starije strojeve koji se više ne mogu nadograditi (već imaju maksimalno podržanu memoriju), možete razmisliti o postavljanju malog tvrdog diska u stroj kako bi ga koristili kao dodatni uređaj za zamjenu. Ovo će očito postati potrošni materijal jer memorijske stanice ne uspiju zbog velikog broja upisa, ali mogu produžiti životni vijek stroja za godinu dana ili više po vrlo niskim troškovima. Niža latencija i brzo čitanje pružit će puno bolje performanse od zamjene na obični disk, što daje srednje rezultate RAM-u. To bi vam trebalo omogućiti da koristite nešto niže vm.vrijednosti zamijenjenosti za optimalne performanse. Morat ćete eksperimentirati. SSD uređaji se brzo mijenjaju.

Ako imate više zamijenjenih uređaja, razmislite o tome da od njega napravite RAID uređaj za prebacivanje podataka na dostupne uređaje.

Možete napraviti promjene u zamjeni bez ponovnog pokretanja stroja, što je velika prednost u odnosu na druge operativne sustave.

Pokušajte uključiti samo usluge koje su vam potrebne za vaše poslovanje. To će smanjiti potrebe za memorijom, poboljšati performanse i učiniti sve jednostavnijim.

Posljednja napomena: Dodavat ćete opterećenje na svoje swap uređaje. Morat ćete pratiti njihove temperature. Pregrijani sustav smanjit će frekvenciju procesora i usporiti.

Zahvalnice

Autor bi želio posebno zahvaliti Geroldu Rupprechtu i Zoleki Hatitongwe za njihove kritičke primjedbe i komentare tijekom pripreme ovog članka.

Poveznice i reference

* [1] Vodič za Linux kernel za početnike, https: // linuxhint.com / linux-kernel-tutorial-početnici /

* [2] Derek Molloy: Pisanje modula jezgre Linuxa - 1. dio: Uvod, http: // derekmolloy.tj. / pisanje-linux-kernel-modula-dio-1-uvod /

* [3] Derek Molloy: Pisanje modula jezgre Linuxa - 2. dio: Uređaj s likovima, http: // derekmolloy.tj. / pisanje-Linux-kernel-modula-dio-2-a-karakter-uređaj /

* [4] Derek Molloy: Pisanje modula jezgre Linuxa - 3. dio: Gumbi i LED diode, http: // derekmolloy.tj. / kernel-gpio-programiranje-gumba-i-dioda /

* [5] Frank Hofmann: Naredbe za upravljanje Linux memorijom, https: // linuxhint.com / naredbe za upravljanje-linux-memorijom /

* [6] Frank Hofmann: Upravljanje memorijom jezgre Linuxa: Zamjena prostora, https: // linuxhint.com / linux-memory-management-swap-space /

* [7] dphys-swapfile paket za Debian GNU / Linux, https: // paketi.debian.org / stretch / dphys-swapfile

* [8] Red Hat Vodič za podešavanje performansi, https: // pristup.crveni šešir.com / documentation / en-us / red_hat_enterprise_linux / 6 / html / performance_tuning_guide / s-memory-tunables

* [9] Konfiguriranje MariaDB, https: // mariadb.com / kb / en / library / configuring-swappiness /

Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...
Instalirajte najnoviji Dolphin Emulator za Gamecube i Wii na Linux
Dolphin Emulator omogućuje vam igranje odabranih Gamecube i Wii igara na Linux osobnim računalima (PC). Dolphin Emulator je slobodno dostupan i emula...
Kako koristiti GameConqueror Cheat Engine u Linuxu
Članak pokriva vodič o korištenju GameConqueror varalice u Linuxu. Mnogi korisnici koji igraju igre na sustavu Windows često koriste aplikaciju "Cheat...