Diferențele în nucleele de server ubuntu si ubuntu tamburina desktop-IT

Articolul de astăzi despre diferențele în server-versiunea Ubuntu sâmburilor de pe desktop-versiune. Acesta vă va ajuta să înțelegeți de ce utilizarea versiunii server este încă și mai de preferat este de a rezolva problemele de server, doar în cazul, dacă dintr-o dată conceput pentru a ascuți în conformitate cu această afacere desktop versiune.

În plus, pentru cei care sunt încă de învățare kernel-ul Linux și se pregătește pentru a face sa reconstrui mai întâi kernel-ul, există o informație foarte interesantă și utilă.

Deci, în plus față de mai mici decât cerințele de resurse și lipsa unui GUI este diferit Ubuntu Server, sape mai adânc în miezul.

Pentru a afla, vom compara fișiere (Server) /boot/config-2.6.22-14-server și (desktop) /boot/config-2.6.22-14-generic.

Podmontiruem două imagini .iso într-un director temporar, extrage fișierul, și apoi comparați-le (care rulează sub rădăcină):

Acum fișierele ar trebui să fie despachetat în două directoare diferite, deoarece există fișiere cu același nume în cadrul fișierului deb: control.tar.gz, data.tar.bz2 și debian binar.

Utilizați comenzile Ar și tar pentru a despacheta fișierul .deb și fișierele razpakovki tar.gz. conținute în ele:

Acum obținem din directorul de boot, fișierele, config-2.6.22-14-server și-config 2.6.22-14-generic, copiat în același director și să le compare:

Obținem dif ieșire: câteva zeci de diferențe față de 3.100 de linii ale acestor fișiere.

Să ne uităm la aceste diferențe.

Există patru tipuri diferite de programare I / O (intrare / ieșire): CFQ (Complet Queuing Fair), Termen limită, NOOP și anticipativ. Ubuntu desktop implicit pune CFQ, și termenul limită de servere. Scopul urmărit de I / O programare același: a optimiza hard disk capacitate de transfer pentru volumul de muncă diferite clase.

În configurația opțiunile descrise CONFIG_DEFAULT_IOSCHED, CONFIG_IOSCHED_CFQ, _DEADLINE, _AS, _NOOP.

* CFQ încearcă să echilibreze și să facă egal cu toate cererile de citire / scriere. * Termenul limită acordă prioritate pentru a citi cereri. * Anticipativ acordă prioritate aplicațiilor care rulează deja. * NOOP este proiectat pentru sisteme cu hardware care sprijină planificarea I / O, cum ar fi SCSI mari RAID-matrice.

Problema unui tip preferat de I / O se bazează pe hardware-ul existent: cât de multe procesoare în dvs. de calculator, hard disk-uri, ce tipuri de aplicații sunt pornite și care este sarcina cu care sistemul trebuie să se ocupe.

Puteți experimenta cu aceste valori pentru a verifica testele de referință și, în consecință alege varianta cea mai optimă. Apropo, puteți specifica aceste opțiuni la boot, utilizați diferite tipuri pentru toate dispozitivele bloc sau schimbați-le pe zbor. implicit cu implicații majore în Ubuntu - nu-i rău pentru un început, dar dacă doriți să le modificați, puteți face în același fel ca și în orice alt distro Linux.

Preempțiune (preempțiune - PPO)

La kernel-ul server este oprit (CONFIG_PREEMPT_NONE = y), în timp ce nucleul pentru desktop - ului (CONFIG_PREEMPT_BKL = y, CONFIG_PREEMPT_VOLUNTARY = y). PPO interacționează cu planificarea I / O, în scopul de a obține o performanță mai bună, o mai mare eficiență și eficacitate. În nuclee fără cod de middleware este executat până la sfârșitul anului. Deoarece nucleul Linux vă permite să-și întrerupă orice sarcină în orice moment al activității sale (dar cu siguranță nu în momentul în care acesta este nesigur), și sarcini cu o prioritate mai mică pot pop lista de sarcini la etaj, PPO este potrivit pentru sistemele desktop, deoarece în mod obișnuit utilizatorii efectua mai multe sarcini în același timp: a scrie documente, asculta muzică, descărca fișiere, etc. Și utilizatorii pasă cât de bine o aplicație de fundal, este important să aplicația cu care se lucrează în prezent.

Pe servere, aveți nevoie pentru a minimiza orice și toate diferențele posibile în performanță, de aceea este de obicei practicat și în afara PPO.

Tiki și Hertz (Căpușele HZ)

Ambele cronometre de sprijin de bază în cererea de întrerupere (CONFIG_NO_HZ = y), așa-numita opțiunea „tickless“. Acest lucru înseamnă că, în timpul perioadelor de inactivitate, sistemul este într-adevăr inactiv, acest lucru presupune un consum mai mic de energie și o temperatură mai scăzută a procesorului.

server de timer întrerupere kernel este setat la 100 Hz (CONFIG_HZ = 100, CONFIG_HZ_100 = y), ceea ce înseamnă că este nevoie de 100 întrerupe activitatea în al doilea. Pe de altă parte, vă puteți uita la ea în acest fel: kernel-ul de 100 de ori pe a doua verificări dacă procesorul nici o problemă.

Dacă trebuie să modificați această valoare, va trebui să recompilați kernel-ul.

Server Core utilizează opțiunea CONFIG_M686 = y, și desktopr CONFIG_M586 = y. Acest lucru înseamnă că kernel-ul serverului este optimizat pentru Pentium set Pro instrucțiuni, și kernel-ul desktop-ul funcționează cu familiile 586 și 686. Pentru a fi sincer, chiar nucleul sistemului pentru 486 va funcționa pe mașinile moderne, astfel încât atunci când compilarea propriile kernel, știi că, pentru cea mai bună opțiune CPU de performanță ar trebui să se potrivească procesorul pentru a lucra eficient cu setul său de instrucțiuni.

O scurgere într-un spațiu de nume

Înainte de a exista virtualizarea, exista un set de obiecte Inter-Process Communications - IPC, (segmente memorie partajată, cozi de mesaje și), care semafoare sunt folosite pentru miezul de tot. Dar mediul virtual trebuie să își păstreze propria lor IPC în interiorul containerelor lor, fără posibilitatea de scurgere. Acesta este inclus în kernel-ul de server (CONFIG_IPC_NS = y, CONFIG_UTS_NS = y) și care nu sunt incluse în nucleul de desktop. Asta înseamnă că mediul virtual este nesigur și are o scurgere în kernel-ul pentru un desktop? (NB. Această caracteristică este mai degrabă necesară de acoperire a riscului unic împotriva scurgerilor pentru versiunea de server)

Iar diferența finală este că serverul de bază suportă mai multe tabele de rutare IPv6 care kernel-ul desktop nu acceptă.