Лінус Торвальдс анансаваў рэліз Linux-ядры 2.6.38, у які ўвайшлі напрацоўкі па павелічэнні інтэрактыўнасці выканання дэсктоп-задач, значна падвышаная маштабаванасць VFS, у Btrfs забяспечаная падтрымка LZO-сціскі і стварэнні даступных толькі на чытанне снапшотов, інтэграваныя HugePage-патчы, дададзеная падтрымка працэсараў AMD Fusion, дададзеныя новыя драйверы і забяспечаная падтрымка mesh-пратаколу B.A.T.M.A.N.
У новую версію прынята 10413 выпраўленняў ад 1349 распрацоўнікаў, памер патча - 49 Мб (дададзена 9295 тыс. радкоў кода, выдаленае - 9159 тыс. радкоў). Каля 38% усіх прадстаўленых у 2.6.38 змен звязаныя з драйверамі прылад, прыкладна 24% змен маюць стаўленне да абнаўлення кода спецыфічнага для апаратных архітэктур, 12% звязана з сеткавым стэкам, 6% - файлавымі сістэмамі і 4% c унутранымі падсістэмамі ядра.
Найболей цікавыя навіны ядра 2.6.38:
* Памяць і сістэмныя сэрвісы
- У склад ядра інтэграваны патч з рэалізацыяй ідэі аўтаматычнай групоўкі задач для падвышэння інтэрактыўнасці на дэсктопе. Патч адмысловай выявай разбівае выкананыя задачы на групы ў прывязцы да ідэнтыфікатара сесіі, у наступным планавальнік задач аперуе дадзенымі групамі як адзіным цэлым. Нумар сесіі змяняецца пры выкананні сістэмнай функцыі setsid(), якая, напрыклад, выклікаецца для кожнага новага сеансу каманднай абалонкі (тым не менш пры запуску дэсктоп прыкладанняў ідэнтыфікатар сесіі не змяняецца, т.е. калі запусціць у тэрмінале "make -j 20", уплыў на дэсктоп-прыкладанні будзе мінімальна, але калі выконваць нейкую рэсурсаёмістую аперацыю ў gimp, інтэрактыўнасць панізіцца). Паглядзець размеркаванне сесій можна камандай "ps -eo session,pid,cmd". Для актывацыі рэжыму аўтаматычнай групоўкі задач у /proc/sys/kernel/sched_autogroup_enabled неабходна запісаць 1;
- У ядро інтэграваны патч "Transparent Huge Рages", які рэалізуе тэхніку павелічэння базавага памеру адрасаваных старонак памяці (без патча памер старонкі складае заўсёды 4096 байт, з патчам да 2 або 4 Мб), што прыводзіць да скарачэння ліку выкарыстоўваных TLB-блокаў (Translation Lookaside Buffer) і пашырэнню магчымасцяў па задзейнічанні вылучанай, але невыкарыстоўванай памяці, для кэшавання сістэмных дадзеных (напрыклад, пад дыскавы кэш). Тэарэтычна рэалізуемы патчам падыход павінен прывесці да павелічэння прадукцыйнасці самога ядры і актыўна выкарыстоўвалых памяць прыкладанняў (напрыклад, патч эфектыўны пры выкарыстанні сістэм віртуалізацыі і СКБД). Тым не менш, не выключаныя сітуацыі, калі патч аказвае негатыўны ўплыў. Напрыклад, прыкладанне можа вылучыць праз функцыю mmap вялікі блок памяці, але запісаць у яго ўсяго 1 байт дадзеных. У гэтым выпадку, з патчам будзе вылучаная старонка памяці памерам 2 Мб, а не 4 Кб як у сітуацыі без патча. Уключэнне рэжыму вырабляецца праз файл /sys/kernel/mm/transparent_hugepage/enabled;
- Дададзеная магчымасць прызначаць асобныя ліміты на лік "брудных" старонак памяці (dirty page) для кожнага кантролера памяці cgroup. Інтэрфейс кіравання нагадвае раней даступныя параметры /proc/sys/vm/dirty_*: memory.dirty_ratio, memory.dirty_limit_in_bytes, memory.dirty_background_ratio, memory.dirty_background_limit_in_bytes; o У декомпрессор ядра, initramfs і initrd дададзеная падтрымка метаду сціску XZ;
* Дыскавая падсістэма, увод/выснова і файлавыя сістэмы
- Праведзеная вялікая праца па павелічэнні маштабаванасці VFS (Virtual File System). Перапісаны код арганізацыі кэшировния элементаў дырэкторый (dcache) і механізмаў для забеспячэння азначэння файлавага шляху (path lookup). Новая рэалізацыя ў поўнай меры выкарыстае рэсурсы шмат'ядравых CPU, а таксама прыкметна падвышае прадукцыйнасць і на аднаядзерных сістэмах, за рахунак выдалення атамарных аперацый і выкарыстанні механізму сінхранізацыі RCU (Read-copy-update), які дазваляе арганізаваць адначасовы доступ да дадзеных без выкарыстання блакаванняў. У прыватнасці, новае ядро паскарае выкананне "find . -size" у хатняй дырэкторыі Лінуса прыкладна на 35%, аднаструменевы "git diff" для прокэшированного дрэва ядра выконваецца на 20% хутчэй (пры запуску 26 раўналежных "git diff" прапускная здольнасць павялічваецца ў 26 раз), значна паскараецца выкананне аперацый, выкарыстоўвалых выклік stat();
- У файлавай сістэме Btrfs рэалізаваная падтрымка празрыстага сціску дадзеных на кружэлцы метадам LZO. У параўнанні з раней падтрымоўваным метадам zlib хуткасць аперацый капіявання пры выкарыстанні LZO узрасла ў два разу, а хуткасць разархивирования tar-архіва ўзрасла на 25%. Характэрна, што за рахунак памяншэння аперацый з кружэлкай LZO-рэжым таксама абганяе па хуткасці выкананне аперацый рэжым без выкарыстання сціску. Іншай навінай Btrfs з'яўляецца падтрымка стварэння снапшотов, даступных толькі для чытання, што можа быць выкарыстана для мантавання ФС пасля збою або ў сітуацыі магчымага наступу збою;
- У склад ядра інтэграваны iSCSI Target фреймворк LIO, адрозны высокай прадукцыйнасцю, працай у неблокирующем рэжыме, шматструменнай архітэктурай, падтрымкай SIMD, сответствием стандарту IETF (RFC 3720) і рэалізацыяй падтрымкі SPC-4 PRs і ALUA. Фреймворк не залежыць ад тыпу носьбіта, можа абслугоўваць падзелы да 750 Тб, у якія могуць уваходзіць такія тыпы назапашвальнікаў, як SATA, SAS, SCSI, BluRay, DVD, FLASH, USB, ramdisk і т.п. У хуткім часе LIO выцесніць сабой раней дададзены ў ядро фреймворк STGT (параўнанне);
- У dm-crypt забяспечаная падтрымка маштабавання на сістэмах з шмат'ядравымі CPU;
- У RAID1 (DM mirror), ext3 і XFS дададзеная падтрымка выканання аперацыі "discard" для SSD-назапашвальнікаў. У XFS для працы з кэшам inode задзейнічаны механізм сінхранізацыі RCU замест блакаванняў;
- У рэалізацыі сеткавай файлавай сістэмы CIFS дададзеная падтрымка опцыі мантавання "strictcache", улучальнай рэжым прымусовага чытання дадзеных з кэша. Акрамя таго, дададзеная опцыя мантавання "cruid=" для азначэння uid уладальніка credential-кэша;
- У файлавых сістэмах Ext2 і Ext3 паскорана выкананне аперацый па стварэнні файлаў;
- У файлавай сістэме Squashfs рэалізаваная падтрымка сціску метадам XZ, забяспечвальным больш высокую ступень сціску ў параўнанні з раней выкарыстоўваным zlib, але патрабавальным для працы больш памяці і рэсурсаў CPU;
* Сеткавая падсістэма
- Рэалізаваная падтрымка пратаколу маршрутызацыі B.A.T.M.A.N. ("Better Approach To Mobile Adhoc Networking), распрацаванага для mesh-сетак у рамках праекту Open Mesh і які дазваляе ствараць дэцэнтралізаваныя сеткі, не патрабавальныя наяўнасці маршрутызатараў або кропак доступу. Кожны вузел у такой сетцы звязаны праз суседнія вузлы, т.е. кожны вузел удзельнічае падчас маршрутызацыі і дынамічна перанакіроўвае дадзеныя да іншых вузлоў у залежнасці ад бягучых умоў складнасці паміж элементамі сеткі. У якасці абласцей ужывання B.A.T.M.A.N. завецца магчымасць разгортвання сетак у выпадку прыродных катаклізмаў, вайскоўцаў канфліктаў або ўзмацненні цэнзуры;
- Павялічаны да 10 mss, выкарыстоўваны па змаўчанні, памер уваходнага TCP-вокны;
- Рэалізаваны які ўлічвае ECN код дэфрагментацыі IPv4 пакетаў (RFC3168);
* Віртуалізацыя і бяспека
- У код забеспячэння працы Xen (Dom0) дададзеная падтрымка XenBus API і серыя бэкенд-драйвераў, якія нажаль дададзеныя не ўсё, працяг інтэграцыі бэкенд-драйвераў чакаецца ў версіі 2.6.39. Акрамя таго, у ядро дададзены драйвер gntdev, які дазваляе выканаць маппинг абласцей памяці з іншага Xen-дамена, што звычайна выкарыстоўваецца ў працы бэкенд-драйвераў, што працуюць на ўзроўні карыстача;
- У lguest дададзеная падтрымка опцый "--username" і "--chroot" для скіду прывілеяў і выкананні пераходу ў chroot;
- Пашырэнне магчымасцяў сістэмы мандатнага кантролю доступу SMACK (уключаная ў ядро пачынальна з 2.6.25 і грунтуецца на прывязцы пазнак да задач і блокам дадзеных (файлы, IPC, сеткавыя пакеты і т.д.) на ўзроўні ядра): вырашаныя праблемы з UNIX domain socket, дададзеная падтрымка атрыбутаў SMACK64TRANSMUTE і SMACK64EXEC, дададзеная падтрымка двух новых тыпаў ключоў: даверных і шыфраваных, адрозных метадам іх стварэння;
- Прадстаўлены праграмны інтэрфейс для доступу да Crypto API ядры з узроўня карыстача;
* Абсталяванне і апаратныя архітэктуры
- Дададзеная падтрымка працэсарнай архітэктуры AMD Fusion, адрознай інтэграцыяй на адным крышталі CPU і GPU;
- Інтэграваныя новыя версіі DRM-модуляў для для відэакарт Intel (2.14.0: палепшаная падтрымка Intel Sandy Bridge, прыкметна павялічаная прадукцыйнасць), NVIDIA (Nouveau: падтрымка пераключэння відэарэжымаў на ўзроўні ядра для карт "Fermi") і AMD/ATI (Radeon 6.14.0: падтрымка 2D-акселерацыі EXA і акселерацыі прайгравання відэа Xv (X-Video) для карт сямейства AMD Ontario Fusion і Northern Islands/Radeon HD 6000. Для ўсіх карт ATI Radeon праз KMS-модуль забяспечаная падтрымка метаду Page Flipping);
- Дададзены эксперыментальны драйвер rtl8192ce для падтрымкі 802.11n чыпаў Realtek RTL8188CE і RTL8192CE. У драйверы ath9k дададзеная падтрымка чыпа AR9485. Пашыраная падтрымка Broadcom 802.11n чыпаў у драйверы b43. Дададзеная падтрымка Ralink RT3370 (USB) і RT3390 (PCI/PCIe).
рэкамендуем прачытаць таксама