Журнал LinuxFormat - перейти на главную

LXF158:Ядро Linux 3.3 18

Материал из Linuxformat
Перейти к: навигация, поиск


Яд­ро Linux 3.3

Игорь Штом­пель бла­го­го­вей­но всту­па­ет в свя­ти­ли­ще опе­ра­ци­он­ной сис­те­мы. Какие вести прибудут к нам оттуда?

Вкратце

Яд­ро – это основ­ная часть опе­ра­ци­он­ной сис­те­мы, ко­то­рая по сути оп­ре­де­ля­ет ее воз­мож­но­сти. Его но­вые вы­пуски для ОС Linux всегда при­но­сят боль­шое ко­ли­че­­ст­во из­менений. Вот, на­при­мер, как вер­сия 3.3...

Вы­пуск яд­ра вер­сии 3.3 стал зна­ме­на­тель­ным со­бы­ти­ем – его ис­ход­ный код пре­вы­сил 15 млн строк. Но одним ко­ли­че­­ст­вом строк ис­ход­но­го ко­да досто­ин­ст­ва это­го яд­ра не ог­раничи­ва­ют­ся. Да­вай­те рас­смот­рим под­робнее то, что в нем еще но­во­го.

Ос­нов­ные из­менения

Пе­ре­ход ди­ст­ри­бу­ти­вов на но­вое яд­ро толь­ко на­чал­ся. Так, про­ект openSUSE на яд­ре вет­ки 3.3 стро­ит свою но­вую вер­сию ди­ст­ри­бу­ти­ва. На мо­мент на­пи­сания об­зо­ра бы­ла доступ­на вер­сия openSUSE для раз­ра­бот­чи­ков – 12.2 build 0318 (Milestone 3). Те­ку­щая вер­сия Arch осно­ва­на на яд­ре 3.3.4. Сле­дую­щая за Fedora 16 раз­ра­ба­ты­вае­мая вер­сия про­ек­та осно­ва­на на яд­ре 3.4.0. На этой же вер­сии яд­ра осно­ван и бу­ду­щий ре­лиз Ubuntu – 12.10.

Раз­ра­бот­чи­ки яд­ра 3.3 осу­ще­ст­ви­ли ин­те­гра­цию на­ра­бо­ток, реа­ли­зо­ван­ных в рам­ках про­ек­та Android. Как из­вест­но, соз­да­те­ли по­следнего под­го­то­ви­ли ряд улуч­шений для яд­ра Linux, ко­то­рые они ис­поль­зо­ва­ли в сво­ем про­ек­те. Дан­ные на­ра­бот­ки дол­гое вре­мя не бы­ли ин­тег­ри­ро­ва­ны в яд­ро Linux из-за раз­но­гла­сий раз­ра­бот­чи­ков яд­ра Linux и про­ек­та Android. В ча­ст­но­сти, речь идет о та­ких тех­но­ло­ги­ях, как ashmem (раз­де­ляе­мая па­мять, ко­то­рая да­ет воз­мож­ность мар­ки­ро­вать неза­кре­п­лен­ные страницы па­мя­ти – ес­ли возника­ет си­туа­ция нехват­ки сво­бод­ной па­мя­ти, дан­ные страницы мож­но осво­бо­дить), драй­вер для ве­дения сис­тем­но­го журнала и дру­гих.

Еще одним важ­ным нов­ше­ст­вом ста­ла реа­ли­за­ция под­держ­ки ар­хи­тек­ту­ры C6X про­цес­со­ров ком­пании Texas Instruments. На ба­зе дан­ной ар­хи­тек­ту­ры вы­пуска­ют­ся од­но­ядер­ные и мно­го­ядер­ные про­цес­со­ры се­мей­ст­ва DSP. Кста­ти, ранее под­держ­ку этой ар­хи­тек­ту­ры обес­пе­чил про­ект linux-c6x.org.

Улуч­шена реа­ли­за­ция опе­ра­ций ба­лан­си­ров­ки (“balance”) и под­держ­ки RAID в фай­ло­вой сис­те­ме Btrfs. Ба­лан­си­ров­ка в Btrfs пред­став­ля­ет со­бой пе­ре­запись дан­ных и мета­дан­ных фай­ло­вой сис­те­мы. Для че­го это необ­хо­ди­мо? Вот, на­при­мер, до­бав­ля­ет­ся но­вый же­ст­кий диск, а опе­ра­ция ба­лан­си­ров­ки по­зво­лит пе­ре­рас­пре­де­лить дан­ные фай­ло­вой сис­те­мы на него. С дру­гой сто­ро­ны, та­кая опе­ра­ция мо­жет за­нять мно­го вре­мени. Нов­ше­ст­вом ста­ло то, что про­цесс ба­лан­си­ров­ки те­перь воз­мож­но приоста­нав­ли­вать и во­зоб­нов­лять. А сам про­цесс ба­лан­си­ров­ки стал осно­вы­вать­ся на ба­зе про­фи­лей, что по­зво­ля­ет вы­полнить ба­лан­си­ров­ку толь­ко для пустых групп бло­ков.

Что ка­са­ет­ся улуч­шения под­держ­ки RAID, то реа­ли­зо­ва­на воз­мож­ность пе­ре­хо­да с од­но­го RAID-уров­ня на дру­гой, пу­тем пе­ре­строения [restripe] дан­ных. Для вы­полнения ука­зан­ных опе­ра­ций мож­но за­дей­ст­во­вать ин­ст­ру­мен­та­рий btrfs-progs из вет­ки parser.

Зна­чи­тель­ные улуч­шения про­изо­шли в се­те­вой под­сис­те­ме яд­ра. Раз­ра­бот­чи­ки яд­ра ин­тег­ри­ро­ва­ли Open vSwitch – про­грамм­ную реа­ли­за­цию мно­го­уровнего (с под­держ­кой боль­шо­го ко­ли­че­­ст­ва про­то­ко­лов) се­те­во­го ком­му­та­то­ра. На­до от­ме­тить, что в яд­ре уже име­ет­ся реа­ли­за­ция вир­ту­аль­ных се­те­вых мостов, но Open vSwitch ори­ен­ти­ро­ван на ре­шение бо­лее ком­плекс­ных за­дач: на­при­мер, в ка­че­­ст­ве вир­ту­аль­но­го ком­му­та­то­ра в ок­ру­жении сер­ве­ра вир­туа­ли­за­ции. Сре­ди под­дер­жи­вае­мых Open vSwitch ин­тер­фей­сов управ­ления – sFlow, Netflow, RSPAN, CLI. Кро­ме то­го, Open vSwitch по­зво­ля­ет под­клю­чать про­грамм­ные рас­ши­рения, а так­же ис­поль­зо­вать про­то­ко­лы Openflow и OVSDB для управ­ления.

Также реа­ли­зо­ва­но но­вое се­те­вое уст­рой­ст­во teaming, ко­то­рое при­зва­но стать бы­ст­рой, мас­шта­би­руе­мой, про­зрач­ной и управ­ляе­мой из про­стран­ст­ва поль­зо­ва­те­ля за­ме­ной тех­но­ло­гии bonding. Но­вая тех­но­ло­гия teaming по­зво­ля­ет соз­да­вать вир­ту­аль­ные ин­тер­фей­сы, объ­е­ди­няю­щие раз­лич­ные Ethernet-уст­рой­ст­ва. Это, в част­ности, по­зво­лит по­вы­сить про­пу­ск­ную спо­соб­ность, обес­пе­чить от­ка­зоустой­чи­вость.

В рам­ках борь­бы с эф­фек­том Buffer­bloat – влиянием бу­фе­ри­за­ции ря­да на за­держ­ки и про­пу­ск­ную спо­соб­ность – уста­нов­ле­но ог­раничение на раз­мер па­ке­та дан­ных, ко­то­рый мож­но по­ста­вить в оче­редь пе­ре­да­чи дан­ных для се­те­во­го уст­рой­ст­ва. Это по­зво­ля­ет обес­пе­чить при­ем­ле­мую тран­зит­ную за­держ­ку для па­ке­тов с вы­со­ким при­ори­те­том, причем не по­на­до­бит­ся очи­ст­ка со­от­вет­ст­вую­щих ап­па­рат­ных оче­ре­дей при по­яв­лении дан­ных для от­прав­ки.

Для сис­тем­ных ад­минист­ра­то­ров реа­ли­зо­ва­ны управ­ления се­те­вы­ми при­ори­те­та­ми. Те­перь ад­минист­ра­тор мо­жет управ­лять при­ори­те­том се­те­во­го тра­фи­ка, ко­то­рый генери­ру­ет­ся при­ло­жения­ми (cgroup). С по­мо­щью cgroup мож­но на­зна­чить про­цесс груп­пе, ко­то­рая оп­ре­де­ля­ет при­ори­тет для тра­фи­ка на необ­хо­ди­мом се­те­вом ин­тер­фей­се.

Появи­лась воз­мож­ность уста­нов­ки ог­раничения на раз­мер TCP-бу­фе­ра, что обес­пе­чи­ва­ет кон­троль нехват­ки па­мя­ти для про­то­ко­ла TCP. Речь идет о па­мя­ти на уровне яд­ра, а кон­крет­но – той, что пред­на­зна­ча­ет­ся для под­держ­ки со­еди­не­ний на ба­зе про­то­ко­ла TCP.

Важ­ные из­менения про­изош­ли в реа­ли­за­ции под­держ­ки фай­ло­вой сис­те­мы ext4. Ме­ханизм из­менения ее раз­ме­ра те­перь пол­но­стью реа­ли­зо­ван в яд­ре Linux, что зна­чи­тель­но уско­ри­ло опе­ра­цию из­менения раз­ме­ра. Бы­ло про­ве­де­но тес­ти­ро­вание (https://lwn.net/Articles/466299/), в хо­де ко­то­ро­го раз­мер фай­ло­вой сис­те­мы ext4 был из­менен с 20 ГБ до 230 ГБ за 3,3 се­кун­ды, тогда как с по­мо­щью ути­ли­ты resize2fs на это по­на­до­би­лось бо­лее 5 ми­нут.

Раз­ра­бот­чи­ки так­же реа­ли­зо­ва­ли под­держ­ку за­груз­ки с ис­поль­зо­ванием EFI (Extensible Firmware Interface) – спе­ци­аль­но­го ин­тер­фей­са ме­ж­ду ОС и мик­ро­про­грам­ма­ми [firmware], ко­то­рые при­зва­ны управ­лять обо­ру­до­ванием с по­мо­щью функ­ций низ­ко­го уров­ня. Дру­ги­ми сло­ва­ми, EFI по­мо­жет про­из­ве­сти инициа­ли­за­цию обо­ру­до­вания, а за­тем пе­ре­даст управ­ление за­груз­чи­ку ОС.

Про­чие улуч­шения

Из­менения в яд­ре весьма многочисленны, и вместить их все в рам­ки краткого об­зо­ра невоз­мож­но. Ведь они охватывают под­держ­ку ар­хи­тек­тур, драй­ве­ров, сис­тем­ных сер­ви­сов, управ­ления па­мя­тью, фай­ло­вых сис­тем, се­ти, вир­туа­ли­за­ции, крип­то­гра­фии, трас­си­ров­ки и про­фи­ли­ро­вания... Бо­лее под­роб­но с нов­ше­ст­ва­ми мож­но оз­на­ко­мить­ся в офи­ци­аль­ном анон­се – https://lkml.org/lkml/2012/3/18/132, или на странице пор­та­ла kernelnewbies.org: http://kernelnewbies.org/Linux_3.3. Мы здесь лишь за­тронули «вер­хуш­ку айс­бер­га».

По­го­во­рим о бо­лее мел­ких нов­ше­ст­вах, ко­то­рые по­ка­за­лись нам осо­бен­но ин­те­рес­ны­ми.

Для фай­ло­вой сис­те­мы Btrfs ста­ла доступ­на но­вая ути­ли­та, по­лу­чив­шая на­звание integrity check – она ори­ен­ти­ро­ва­на на раз­ра­бот­чи­ков и по­зво­ля­ет осу­ще­ст­в­лять рас­ши­рен­ное тес­ти­ро­вание це­ло­ст­но­сти дан­ных. На­при­мер, при за­пи­си дан­ных на диск ути­ли­та сле­дит за тем, что­бы не бы­ла за­пи­са­на лиш­няя ин­фор­ма­ция (под­дель­ные ссыл­ки и т. д.), способная при­вес­ти фай­ло­вую сис­те­му в неста­биль­ное со­стояние и обусловить по­те­рю дан­ных.

Не­сколь­ко слов о под­держ­ке ап­па­рат­ной час­ти. Реа­ли­зо­ва­на под­держ­ка LPAE (Large Physical Address Extension) для про­цес­со­ров ARMv7, что да­ет воз­мож­ность ад­ре­со­вать па­мять бо­лее 4 ГБ. Поя­ви­лась под­держ­ка уст­ройств OpenBlockS 600 на ба­зе про­цес­со­ров Power PC. Для ар­хи­тек­ту­ры S390 до­бав­ле­на под­держ­ка фи­зи­че­­ской па­мя­ти бо­лее 4 ТБ. Для плат­фор­мы x86 реа­ли­зо­ва­на под­держ­ка NumaChip.

Раз­ра­бот­чи­ки драй­ве­ров так­же пред­ло­жи­ли ин­те­рес­ные ре­шения, став­шие со­став­ной ча­стью яд­ра Linux вер­сии 3.3. Так, из вет­ки яд­ра staging (от­дель­ная вет­ка яд­ра для пред­ва­ри­тель­но­го тес­ти­ро­вания ко­да) в основ­ной код яд­ра пе­ре­шел драй­вер для ин­тег­ри­ро­ван­ных ви­део­карт от Intel – GMA500. Реа­ли­зо­ва­на на­чаль­ная под­держ­ка ви­део­карт NVD9 от NVIDIA. Для уст­ройств Exynos (сис­те­мы на кри­стал­ле, SoC, на ба­зе про­цес­со­ров ARM от ком­пании Samsung) до­бав­ле­на под­держ­ка HDMI. Так­же вклю­че­ны но­вые USB-драй­ве­ры: Samsung Exynos OHCI, Marvell Host Controller, Marvell usb OTG, iPhone 4S (драй­вер ipheth). Обес­пе­че­на под­держ­ка зву­ко­вой кар­ты Cirrus Logic 4213, а так­же обо­ру­до­вания, ко­то­рое под­дер­жи­ва­ет уско­рение об­ра­бот­ки сжа­то­го зву­ка.

Сре­ди дру­гих уст­ройств, драй­ве­ра для ко­то­рых бы­ли до­бав­ле­ны в яд­ро 3.3 – Realtek ALC5632, Lowland, 1277-EV1 Littlemill.

Но ука­зан­ным под­держ­ка уст­ройств не ог­раничи­ва­ет­ся – вве­де­на так­же под­держ­ка раз­лич­но­го уров­ня для уст­ройств: хранения дан­ных, се­те­вых, вво­да, web-ка­мер и др. Как вид­но, пе­ре­чень ап­па­ра­ту­ры серь­ез­но рас­ши­рен.

За­клю­чение

Вы­ход яд­ра Linux вер­сии 3.3 принес из­менения, ко­то­рые ожи­да­лись дав­но. В ча­ст­но­сти, осу­ще­ст­в­ле­на ин­те­гра­ция с на­ра­бот­ка­ми про­ек­та Android. Зна­чи­тель­но улуч­ше­на реа­ли­за­ция се­те­вой под­сис­те­мы (на­при­мер, ин­те­гра­ция в яд­ро Open vSwitch). Реа­ли­за­ция Btrfs ста­ла бо­лее гиб­кой (доста­точ­но вспомнить воз­мож­ность пе­ре­хо­да с од­но­го RAID-уров­ня на дру­гой). Наи­бо­лее за­мет­ным в об­лас­ти под­держ­ки ап­па­рат­ной час­ти ста­ла реа­ли­за­ция раз­ра­бот­чи­ка­ми под­держ­ки ар­хи­тек­ту­ры C6X про­цес­со­ров от ком­пании Texas Instruments. Что ка­са­ет­ся, фай­ло­вой сис­те­мы ext4, то она по­лу­чи­ла воз­мож­ность бы­ст­ро­го из­менения раз­ме­ра, да­ле­ко опе­ре­див ранее доступ­ные ме­ханиз­мы для этой це­ли. Рас­ши­рить воз­мож­но­сти про­цес­са за­груз­ки те­перь мож­но с по­мо­щью тех­но­ло­гии EFI.

Боль­шое ко­ли­че­­ст­во мел­ких из­менений и усовер­шенствований сде­ла­ли яд­ро Linux луч­шим и бо­лее гиб­ким. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика