Ajustarea parametrilor nucleului: sistemul de fisiere /proc
Directorul /proc contine fisiere si directoare virtuale care ofera informatii privind starea sistemului, din punctul de vedere a! nucleului. De asemenea, pot fi configurati anumiti parametri ai nucleului.
Pentru ca acest director sa fie disponibil, el trebuie mai întâi montat, în mod normal automat la pornirea sistemului. Pentru aceasta, fisierul /etc/fstab trebuie sa contina urmatoarea linie:
| none /proc prcc defaults O O
Multe programe, cum ar fifree sau top, extrag informatii din fisierele aflate în /proc, afisându-le într-un format util.
13.1. Informatii furnizate prin directorul /proc
Directorul /proc contine urmatoarele fisiere:
apm starea APM (Advanced Power Management);
cmdline parametrii cu care a fost apelat nucleul Linux;
cpuinfo informatii despre procesorul sistemului;
devices dispozitivele configurate din nucleu;
dma canalele DMA (Direct Memory Access} utilizate;
execdomains domeniile de executie suportate de nucleu. Acestea permit
executia si altor fisiere binare decât cele Linux, cum ar fi
Solaris sau FreeBSD;
ft> dispozitivele/rame biiffer (placi video);
filesystems tipurile de sisteme de fisiere suportate de catre nucleu; interrupts întreruperile active, tipul acestora si dispozitivele care le
utilizeaza;
iomem zonele de memorie alocate de catre dispozitive;
ioports regiunile de porturi I/O utilizate de catre dispozitive pentru
comunicatii;
isapnp placile Plug andPlay ISA din sistem;
Setari avansate ale sistemului
kcore reprezinta memoria fizica din sistem. Acest fisier binar nu
trebuie vizualizat, deoarece poate cauza efecte stranii asupra
terminalului;
kmsg mesajele
generate de nucleu. Sunt utilizate de alte programe,
cum ar fi klogd;
ksysms definitiile de simboluri din cadrul nucleului, utilizate de
programele de gestiune a modulelor pentru a face legatura cu
modulele încarcate;
loadavg nivelul de încarcare a
masinii. Este utilizat de programul
uptime',
locks fisierele blocate curent;
mdstat configuratiile RAID;
meminfo utilizarea memoriei RAM si a swap-ului;
mise driverele înregistrate ca dispozitive mise (numarul major 10);
modules modulele încarcate în memorie;
mount sistemele de fisiere montate;
mtrr MTRR-urile (Memory Type Range Register) utilizate;
partitions partitiile de pe discurile instalate în sistem;
pci dispozitivele conectate la magistrala PCI a sistemului;
slabinfo utilizarea memoriei la nivelul slab. Acesta este utilizat intern de
catre nucleu pentru a aloca memorie;
stat diverse
statistici despre sistem;
swaps dimensiunea si utilizarea swap-ului;
uptime timpul scurs de la pornirea sistemului;
version versiunea de nucleu si cea a compilatorului.
Directorul /proc contine, de asemenea, urmatoarele subdirectoare:
directoarele de proces au ca nume identificatorul procesului. Fiecare director contine urmatoarele fisiere:
cmdiine: linia de comanda cu care a fost pornit procesul;
cpu: informatii despre utilizarea fiecarui procesor;
cwd: directorul curent pentru procesul în cauza;
environ: continutul variabilelor de mediu pentru proces;
exe: o legatura la fisierul executabil al procesului;
f d: descriptorii de fisier;
maps: maparile de memorie pentru executabilele si
bibliotecile asociate procesului;
mem: memoria alocata de catre proces;
root: o legatura catre directorul-radacina al procesului;
stat: starea procesului;
statm: starea memoriei alocate de catre proces;
status: starea procesului;
Administrarea si configurarea sistemelor Linux
seif bus
driver ide
irq net scsi
sys sysvipc
tty
reprezinta o legatura simbolica catre directorul corespunzator
procesului executat curent;
informatii despre diversele magistrale din sistem. Contine
directoarele:
usb:
informatii despre dispozitivele conectate la magistrala
USB;
pci: informatii despre dispozitivele PCI din
sistem,
folosit de diverse drivere, de exemplu rtc;
informatii despre dispozitivele IDE din sistem. Acest director va contine mai multe subdirectoare, pentru canalele IDE (ideQ, idei), iar în acestea, subdirectoare pentru dispozitivele IDE (hda, hdc etc.). Fiecare subdirector pentru dispozitiv contine fisierele:
cache: dimensiunea
memoriei-tampon (cache) a dispoziti
vului;
capacity: dimensiunea
dispozitivului, masurata în blocuri
de câte 512 octeti;
driver: driverul utilizat;
geometry: geometria fizica si logica a dispozitivului;
media: tipul dispozitivului;
model: modelul dispozitivului;
settings: parametrii curenti ai dispozitivului. Pentru
detalii, vezi paragraful urmator;
utilizat pentru a conecta IRQ-uri la anumite procesoare;
diversi parametri ai retelei si statistici;
informatii despre dispozitivele SCSI din sistem. Contine:
scsi: lista tuturor dispozitivelor SCSI;
câte un director pentru fiecare driver SCSI;
permite modificarea diferitor configurari ale nucleului. Pentru
detalii, vezi paragraful urmator;
informatii despre resursele IPC System V, si anume cozile de
mesaje (msg), semafoarele (sem) si zonele de memorie comuna
(shm);
dispozitivele configurate si utilizate curent.
13.2. Ajustarea parametrilor nucleului
Este important de remarcat ca modificarea parametrilor trebuie facuta cu atentie, întrucât operatiunea poate conduce la un comportament anormal sau chiar la blocarea sistemului si pierderea de informatii.
Setari avansate ale sistemului
Modificarea informatiilor se face prin trimiterea acestora catre fisierul în cauza, de exemplu echo "l" > /proc/sys/kernel/sysrq.
/proc/sys/fs contine o serie de optiuni si informatii despre sistemele de fisiere, dupa cum urmeaza:
dentry-state: starea cache-u\ui de
directoare. Contine sase
valori:
nr_dentry: numarul total de intrari în cache;
nr_unused: numarul de intrari neutilizate;
age_limit: numarul de secunde de când
directorul a fost eliberat si poate fi
reclamat;
want_pages: numarul de pagini solicitate;
dummyi: neutilizata;
duitmy2: neutilizata.
file-max: numarul maxim de identificatori care vor fi
alocati de catre nucleu;
f ile-nr: numarul de identificatori de fisier alocati,
numarul
de identificatori utilizati si numarul
maxim de identificatori;
super-max: numarul maxim de superblocuri;
super-nr:
numarul de superblocuri utilizate.
/proc/sys/kernel contine diverse fisiere de configurare care afecteaza
functionarea nucleului, astfel:
ctrl-alt-dei: permite
folosirea combinatiei ctri-Ait-
Del pentru repornirea sistemului (l pentru activare, O pentru
dezactivare). Implicit: 0;
domainname: numele domeniului;
hostname: numele masinii;
modprobe: locatia
programului utilizat pentru încarcarea
modulelor. Implicit: /sbin/modprobe;
msgmax: marimea
maxima a mesajelor IPC. Implicit: 8192
octeti;
msgmnb: dimensiunea maxima a unei cozi de mesaje.
Implicit: 16384;
msgmni: numarul
maxim de identificatori de cozi de mesaje.
Implicit: 16;
osreiease: versiunea nucleului Linux. Nu poate fi
modificata;
ostype: tipul
sistemului de operare, în mod normal Linux.
Nu poate fi modificata;
panic: numarul de
secunde de la o cadere a nucleului
(kernel panic) pâna la repornirea sistemului. Implicit are
valoarea O, care dezactiveaza repornirea;
Administrarea si configurarea sistemelor Linux
printk: defineste modul de jurnalizare a mesajelor de
eroare. Contine patru valori:
prioritatea minima a mesajelor care vor fi trimise la
consola (console loglevel);
nivelul implicit al mesajelor care nu au stabilit un
nivel;
cea mai mica valoare a nivelului de jurnalizare
pentru consola;
valoarea implicita a nivelului pentru consola.
Nivelurile de jurnalizare sunt urmatoarele:
0: panica a nucleului. Sistemul este inutilizabil;
1: alerta a nucleului. Trebuie luata imediat o
decizie;
2: conditia nucleului este critica;
3: conditie generala de eroare;
4: conditie generala de atentionare;
5: conditie normala dar semnificativa;
6: mesaj informativ;
7: mesaj de depanare.
rtsig-max: numarul
maxim de semnale în timp real POSIX
poate avea sistemul în coada de asteptare. Implicit:
7024;
rtsig-nr: numarul
de semnale aflate în coada de asteptare
curent. Nu poate fi modificata;
sem
shmaii: dimensiunea
maxima a memoriei comune ce poate
fi utilizata, în octeti. Implicit: 2097152;
« shmmax: dimensiunea maxima a segmentului de memorie comuna, exprimata în octeti. Implicit: 33554432;
shînmni: numarul
maxim de segmente de memorie comuna.
Implicit: 4096;
sysrq: permite
utilizarea combinatiei de taste SysRq (System
Rec/uest Key), care este în general ctri+Ait+SysRq.
Implicit: 0. Pentru mai multe informatii
privind SysRq, a se
consulta fisierul
/usr/src/linux/Documentation/sysctl/
sysrq.txt;
threads-max:
numarul maxim de fire de executie. Implicit:
version: data si
timpul compilarii nucleului. Nu poate fi
modificat.
/proc/sys/net contine numeroase fisiere si directoare privind protocoalele de comunicatie. Pentru detalii, a se vedea fisierul
/usr/src/linux/Documentation/networking/ip-sysctl.txt.
Setari avansate ale sistemului
/proc/sys/vm permite configurarea sistemului de gestiune a memoriei virtuale. Contine urmatoarele fisiere:
bdflush: controleaza operarea daemonului bdflush (care
gestioneaza scrierea bufferelor
pe disc). Contine 9 câmpuri:
nf ract: numarul maxim de buffere nescrise (dirty
buffers), exprimat în procente. Implicit: 40;
dummyi: neutilizata;
dummy2: neutilizata;
dummyS: neutilizata;
interval: intervalul minim de timp la care
daemonul kupdate se va trezi si
va scrie bufferele
pe disc. Valoarea este exprimata în jiffies (numar
de tacturi de ceas), care este în general 100
pe
secunda. Implicit: 5 secunde;
age_buffer: durata maxima de timp (în jiffies)
dupa care bufferele vor fi scrise pe disc.
Implicit:
30 secunde;
nf ract_sync: procentul de buffere nescrise înainte
de activarea bdflush. Implicit: 60;
dummy4: neutilizata;
dummy5: neutilizata;
kswapd:
valori referitoare la daemonul de swap, kswapd (acesta
este un daemon intern al nucleului),
dupa cum urmeaza:
tries_base: numarul maxim de pagini pe care
kswapd va încerca
sa le elibereze într-o singura
încercare. Cu cât aceasta valoare este mai mare, cu
atât nucleul va fi mai agresiv în eliberarea de
pagini. Implicit: 572;
tries_min: numarul minim de încercari facute de
kswapd de a elibera
pagini. Implicit: 32;
swap_ciuster: numarul de pagini pe care kswapd
va încerca sa le scrie într-o încercare.
Implicit: 8;
overcommit_memory: daca este diferita de zero, permite
nucleului sa nu faca verificarea standard
daca exista destula
memorie disponibila înainte de a o aloca;
page-cluster: numarul de pagini citite într-o încercare.
Implicit: 4;
pagetabie cache: controleaza numarul de tabele de pagini
memorate pentru fiecare procesor în parte:
valoarea minima de tabele. Implicit: 25;
valoarea maxima de tabele. Implicit: 50;
Mai multe informatii despre aceste fisiere se gasesc în
fisierul/usr/src/linux/Documentation/sysctl/vm.txt.
Administrarea si configurarea sistemelor Linux
/proc/ide/canal/dispozitiv/settings permite modificarea parametrilor asociati fiecarui dispozitiv IDE. Aceasta se face prin comenzi
de genul echo "optiune: valoare" > settings. Optiunile
principale sunt:
current_speed: viteza maxima de rotatie, valabila doar
pentru unitati CD-ROM;
fiie_readahead: cantitatea de informatii pe care
dispozitivul o va citi în avans;
idc_sc3i: permite tratarea dispozitivului ca pe unul SCSl
(doar pentru unitati CD-ROM, util pentru unitati de
inscriptionare);
io_32bit: activeaza transferurile de date pe 32 biti;
max_kb_per_request: dimensiunea maxima a cererii;
using_dma: foloseste DMA (Direct Memory Access) pentru
transferurile de date.
Spre exemplu, comanda echo "using_dma:l" > /proc/ide/0/ hda/settings va activa transferurile de date prin intermediul DMA.
13.3. Utilizarea sysctl
Modificarea parametrilor descrisi în paragraful precedent poate fi realizata si prin intermediul interfetei grafice sysctlconfig (meniul System :: Sysctlconfig în Red Hat) sau a programului sysctl:
Setari avansate ale sistemului
Fisierul de configurare al programului sysctl este /etc/syscti.conf, care contine optiuni si valorile acestora, în formatul optiune=vaioare. Lista tuturor optiunilor posibile poate ft afisata apelând comanda sysctl -a.
Un fragment dintr-un posibil fisier /etc/sysctl. conf este redat în continuare:
I |
kernel.sysrq = l kernefl.sem = 250 32000 32 128
Dupa cum se poate observa, caracterul "/" (separatorul de director) este înlocuit cu,,.".
Fisierul de configurare va fi citit la pornirea sistemului din scriptul /etc/rc.d/rc.sysinit. Pentru a produce modificari la un moment dat, poate fi utilizata o comanda de genul:
| sysctl -w kernel.sysrq="l"
|