Дневник на јадрото - што носи (3) инфраструктурно списание
Трендови и новости | Дневник на јадрото

AppArmor, влезни точки за достапни скенери за вируси, ново напишан убиец од меморија и основи за кодот Xen-Dom0 се едни од најважните иновации во Linux кернелот 2.6.36. Благодарение на некое преструктуирање, оваа верзија станува малку помала од претходникот и покрај неколку стотици илјади редови на нов код.
Во средата наутро, Линус Торвалдс ја објави шестата верзија на претходната верзија на Linux 2.6.36. Тој посочи дека наскоро би сакал да го објави 2.6.36, но сепак, можеби вметнете друга прелиминарна верзија.
Дневникот на јадрото го зема ова како можност да се продолжи со мини-серијата „Што носи 2.6.36“ со опис на иновациите што се однесуваат на работи како што се управување со меморијата, системот за градење и поддршка за разни архитектури на процесорот и системот. Првиот дел од серијата се занимаваше со промени во графичкиот хардвер, вториот со датотечни системи, складирање и мрежен хардвер; четвртиот дел за промените во ACPI, PCI, управување со напојувањето и драјверите за USB, FireWire, V4L/DVB и Co ќе ја заврши мини серијата за неколку дена.
Безбедност
Откако програмерите на AppArmor, обелоденети од Новел во 2006 година, неколку години неуспешно се обидоа да го вклучат кодот на јадрото за подобрување на безбедноста, верзијата 2.6.36 од ова конечно го најде кернелот (вклучувајќи документација од 1, 2, 3). Слично на SELinux, AppArmor може да ги ограничи апликациите на наведените дејства; Напаѓачите кои ќе добијат пристап до системот преку безбедносна дупка, на пример во серверски софтвер, можат да предизвикаат само ограничена штета.
AppArmor има репутација на полесна администрација отколку SELinux. Вториот е фаворизиран од Red Hat и се користи од Red Hat Enterprise Linux (RHEL) и Fedora, меѓу другите. Новел долго време се фокусираше на AppArmor, но се оддели од сопствениот оддел за развој на AppArmor во 2007 година и исто така го користи SELinux од 2008 година. Како резултат, развојот на AppArmor значително забави сè додека Joон Јохансен не му даде нов поттик на почетокот на годината и конечно се залагаше за вклучување во официјалното јадро. Јохансен претходно работеше во Новел и моментално е одговорен за интеграцијата на AppArmor во Убунту во Каноник.
На Fanotify, кој се појави од ТАЛПА, му беа потребни бројни обиди и неколку години пред Торвалдс да ги интегрира (вклучувајќи 1, 2, 3). Се базира на Fsnotify интегриран во 2.6.31 и нуди влезни точки преку кои скенерите на вируси, на пример, можат да се поврзат за да ги проверат датотеките кога пристапуваат до малициозен софтвер пред да се испорача нивната содржина ("скенирање на пристап"). Неколку статии на LWN.net даваат одредена позадина за тоа како работи Fanotify и проблемите со претходните верзии на Fanotify (вклучувајќи 1, 2, 3).
[Ажурирање 10.10.2010, 09:30] Само неколку дена пред завршувањето на Linux 2.6.36, програмерите привремено ги деактивираа интерфејсите на корисничкиот простор Fanotify за да можат да отстранат некои недостатоци, од кои некои влијаат и на ABI (1, 2, 3) - ова значи дека Fanotify не може да се користи засега. Се планира дебагирање и повторно активирање на интерфејсите за кориснички простор за Кернел 2.6.37; Сè уште е нејасно дали овие закрпи исто така ќе се најдат во еден од стабилните јадра од серијата 2.6.36. [/Ажурирање]
Меморија и управување со нишки
Развивачите на јадрата значително се променија и во голема мера го препишаа убиецот надвор од меморијата (ООМ), кој убива процеси кога нема доволно меморија, така што системот може да продолжи да работи (1, 2, 3). Поради овие измени, финото прилагодување на ООМ се применува преку/proc /
/ oom_adj сега е „застарен“ и треба да исчезне во август 2012 година. LWN.net обезбедува повеќе информации во врска со промените во ООМ во написот „Друг убиец на ООМ“.
Хакерите на јадрата исто така ги интегрираа "Работните теми со кои се управува истовремено", со што се оптимизира ракувањето со темите на јадрото (вклучувајќи 1, документација). Како резултат, јадрото треба поефикасно да ги користи ресурсите, да го размери подобро и да помине со помалку нишки на многу системи - корисниците исто така ќе го забележат последното, бидејќи ова го скратува списокот со нишки на јадрото издадени од ps -A. Инвеститорот обезбедува дополнителни предности и причини за промените во деталната пошта на неговите закрпи и како дел од барањето Git-Pull; LWN.net минатата есен напиша статија за работни термините со истовремено управување.
[виртуелизација на кршење на страница, Kbuild]
Архитектонски код
Списокот на архитектури на процесорите поддржани од јадрото повторно расте со 2.6.36 и сега ги вклучува и 32-битните процесори TILEPro и TILE64 (вклучувајќи 1, 2, 3) развиени од Tilera. Тие се процесори слични на МИПС VLIW со многу јадра кои комуницираат едни со други преку мрежа iMesh. Бидејќи тие работат многу економично, повеќе од 10.000 процесорски јадра можат да се сместат во решетката на серверот. Поддршката за процесорите на Nvidia, Tegra, кои се базираат на архитектурата на ARM (вклучувајќи 1, 2, 3), доаѓа од опкружувањето на Android. Понатаму, јадрото сега содржи околу 90 проценти од двигателите на Ben NanoNote (вклучувајќи 1, 2, 3, 4, 5, 6, 7, 8) - џебен компјутер со отворена хардверска платформа што е исто така достапна во Европа од пролетта е на располагање.
Одржувачот на KVM, Ави Кивити, во своето барање Git-Pull пишува дека нема големи големи карактеристики во KVM за 2.6.36. Сепак, тој посочува некои оптимизации на перформансите и споменува поддршка за командните процесори Xsave (1, 2) и AVX (Intel Advanced Vector Extension) во гостинските системи.
Барањата Git-Pull од remереми Фицхардинге и Конрад Ржезутек Вилк даваат преглед на промените во кодот Ксен. Со закрпите собрани од претходните, двигателите на Paravirt сега може да се користат и во целосно виртуелизирани домени („pv-on-hvm“); Поради другите промени, Linux како паравиртуелизиран гостински систем може да пристапи до PCI уреди преку еден вид виртуелен IOMMU што домаќинот (Dom0) го обезбедува (вклучително и 1). Некои од промените исто така ги поставуваат темелите на кои треба да се заснова кодот за управување со јадрото на Линукс како „почетен домен“ - еден вид одземена поддршка за Dom0. Овој код во моментов се дискутира на LKML и може да премине во главната гранка за развој на Linux во една од следните верзии.
Посно
Код-кодот сега нуди четири нови цели:
- „oldnoconfig“ ја заменува „loose_nonint_oldconfig“ и ги поставува сите опции за конфигурација во датотеката за конфигурација на јадрото „.config“ на „не“ што не беа претходно поставени.
- "listnewconfig" ја заменува "nonint_oldconfig" и ги наведува сите опции што сè уште не се поставени во ".config".
- „alldefconfig“ создава „.config“ во која на сите опции им се дадени поставките како што се наведени во датотеките Kconfig како стандардни.
- „savedefconfig“ пишува конфигурациска датотека наречена „defconfig“ во која се наведени само опциите што се разликуваат од стандардните поставки на датотеките Kconfig.
Со помош на последната цел, развивачите создадоа десетици стандардни конфигурациски датотеки за различните архитектури на системот и процесорот поддржани од јадрото на Linux, кои ги заменуваат претходните стандардни конфигурациски датотеки. Бидејќи второто исто така претходно содржеше записи за сите опции што датотеките kconfig на јадрото ги специфицираа како стандард, соодветната обврска е скоро 6 MB и отстранува над двесте илјади редови во изворите на јадрото.
Администраторите за поддршка на Itanium (IA64) и Power претходно ги рационализираа конфигурациските датотеки на овој начин (1, 2). Сите овие промени се главната причина зошто изворниот код од 2.6.36 треба да биде малку помал од неговиот директен претходник - ова е крајно невообичаено, бидејќи во последниве години јадрото порасна за неколку стотици илјади линии со секоја нова верзија.
Диетата за стандардните конфигурациски датотеки веќе започна со 2.6.35, кога развивачите на јадрото ги направија датотеките за системите АРМ подвижни. Целата работа не менува ништо за корисникот, бидејќи како и порано, „направи defconfig“ создава основна конфигурациска датотека за вашиот сопствен систем.
[пробивање на страници разни, мали бисери]
разни
- Хакерите на јадрото дополнително ја намалија употребата на Big Kernel Lock (BKL) во инфраструктурниот код и бројните двигатели - вклучително и во потсистемот TTY, што предизвика потешкотии дури и за некои од најискусните хакери на јадра. Програмерите на тој начин се приближуваат до целта на јадрото што работи на стандардни системи без овој обемен механизам за заклучување, што ја нарушува приспособливоста и перформансите на системот.
- Кодот x86 сега ги поддржува известувањата за ограничување на моќноста од процесорите Sandy Bridge на Интел, кои се очекуваат на почетокот на следната година (1, 2, 3). Новиот двигател Hwmonitor pkgtemp се базира на тоа и може да ја прочита температурата на процесорот (1, документација)
- Во одредени ситуации, распоредувачот на процеси ја намалува конкуренцијата помеѓу нишките на јадрото што сакаат да добијат исклучителна контрола врз зафатениот ресурс. Ова им овозможува на активниот процес да работи понепречено, што во некои случаи значително ја зголемува пропусната моќ на податоците (Комисија, напис на LWN.net).
- Како и кај неговите претходници, 2.6.36 исто така носи бројни промени во дебагирањето, следењето на перформансите и кодот за следење. Хакерите на јадрото го отстраниле приклучокот kmemtrace Ftrace, на пример, бидејќи функциите сега можат да се вршат со помош на трагите на трагите од типот „kmem“ и „perf kmem“. Како што е веќе опишано во првиот дел од серијата „Што носи 2.6.36“, јадрото на системите со поддршка на Intel KMS сега нуди школка за дебагерирање KDB за да се анализира причината за падот на X серверот кога префрлувањето во текстуална конзола повеќе не е можно и не е конфигурирана сериска конзола.
- Скоро еден месец по завршувањето на прозорецот за спојување, хакерите на јадрото направија промена во распоредувачот на процеси, преку кои распоредувачот треба да ги намали максималните времиња на чекање, особено на десктоп системите, кога другите процеси бараат паралелно време на процесорот - тоа ветува подобро Брзина на одговор, што треба да направи системот да се чувствува побрзо. Дискусијата што претходи на промената и коментарот за извршувањето ја објаснуваат позадината и обезбедуваат измерени вредности според кои максималната латентност во тест сценариото е скоро преполовена.
- Со 2.6.36, хакерите на јадрото сакаат да го елиминираат проблемот што предизвика системите со 2.6.35 и некои претходни верзии на јадрото да се чувствуваат екстремно бавно под одредени услови или да престанат да реагираат на моменти, додека јадрото пренесуваше поголеми количини на податоци на бавен медиум (на пр. УСБ-стик) напиша (вклучително и 1).
- Подобрувањето на безбедноста на Томојо сега нуди „Интерактивен режим на присилување“, кој администраторите можат да го користат за да одлучат дали сакаат да игнорираат повреда на политиката. Видео на YouTube илустрира како работи.
- Стефани Зајболд го смени API Kfifo, кој веќе беше значително ревидиран во 2.6.32, за да ги подобри перформансите и да обезбеди подобар API (вклучувајќи 1, 2). Старите API повици сè уште се поддржани, новите можности се објаснети со неколку примери.
- Кокинел сега може да се повика преку „coccicheck“ на целта - програма за анализа на семантички код што може да ги ослободи програмерите од работа при рефакторирање на кодот. Детали за можностите се дадени во документацијата на јадрото и написот објавен на LWN.net во пролетта минатата година.
Малите бисери
Многу помали, но во никој случај незначителни промени може да се најдат во следната листа со англиски наслови за соодветните промени. Како и многуте референци во претходниот текст, записите се водат до веб-страницата на гранката Git што ја одржува Линус Торвалдс со „официјалните“ извори на јадрото на Kernel.org. Коментарот за извршување прикажан преку овие врски и лепенката издадена под него даваат многу повеќе информации за соодветните промени.
Пред секоја врска има неколку букви и броеви во загради. „Ц“ идентификува закрпи со промени во датотеките Kconfig, кои содржат текстови за помош и опции за конфигурација што се прикажуваат за време на конфигурацијата на јадрото преку „направи менуконфиг“, „направи xconfig“ и слични алатки. „Д“ се залага за закрпи кои ја менуваат документацијата што се наоѓа во гранката на јадрото под Документација /. „N“ означува промени што создаваат нова датотека. Бројот дава груб впечаток за големината на лепенката: „1“ означува промени што се помеѓу 10 и 20 KByte вклучувајќи коментари, „2“ за оние со големина помеѓу 20 и 30 KBytes; Промените без број се помали од 10 KB, додека закрпите со „9“ се 90 KB или поголеми.
Дебагирање, следење на перформансите и код за следење