Новости в 2.6.25 Linux kernel

Във версия 2.6.25 на linux ядрото е въведена поддръжка на нова архитектура (MN10300/AM33) и на Orion SoC, нов интерфейс за по-точно измерване на използваната памет от процесите, управление на използваната памет на група от процеси, планиране на реалновремеви процеси с групиране, RCU с прекъсване, инструмент за измерване на латентности (latencytop), ново системно извикване timerfd(), нова работна рамка (framework) за сигурност МАС, наречена SMAC, обновена е файловата система ext4, EFI поддръжка при x86-64, нов мрежов протокол CAN, разбира се подобрена е поддръжката на някои устройства и други по-малки подобрения.

Както написах по-горе управлението на паметта вече е групово (cgrups) базирано. Cgroups, или "Control Groups" бяха въведени във версия 2.6.24 на ядрото и се използват за управление на различни ресурси в системата като планиране на процесорното време и разпределяне на паметта. Също така предлага унифициран интерфейс, базиран на виртуална файлова система, в която администраторите могат да прилагат ограничения на групи от задачи. Например в 2.6.24 ядрото са въведени два типа управление на ресурси „cpusets“ и „group scheduling“. Първия позволява прикрепяне на възли от процесор(и) и памет към произволна група от задачи (cgroup), а втория позволява прикрепяне на политики за процесорно време към cgroup.

Управлението на паметта с изолиране на памет за група от задачи може да се използва за:
  • изолиране на приложения или група от приложения. Гладните за памет приложения могат да бъдат изолирани и ограничени да използват по-малко памет;
  • създаване на cgroup с ограничено количество памет като алтернатива на зареждане на системата с mem=XXXX;
  • при виртуализация за задаване на количество памет за всяка виртуална машина;
  • при записване на дискове за контролиране на количеството памет, което се използва от останалата част от системата за да се предотвратят грешки поради недостиг на достатъчно памет.
Конфигурационният интерфейс, както и групите влизат в сила при монтиране на файловата система cgoup с опция „-o memory“. Създава се директория с произволно име (името на с-групата), добавят се задачи към групата с записване на техните PID (идентификаторите на процесите) във файла на задачата в директорията и се записват стойности в следните файлове: memory.limit_in_bytes, memory.usage_in_bytes (статистики за паметта на групата), memory.stats (повече статистики: RSS, кеш, активни и неактивни страници), memory.failcnt (колко пъти cgroup е превишила лимита си) и mem_control_type.

Във версия 2.6.24 на linux ядрото беше въведено планиране на процесорното време на групи. Това позволява разпределяне на процесорното време по различен начин от този с nice. Например, ако двама потребителя използват компютър едновременно , може да се зададе по 50% от процесорното време на всеки, независимо кой колко задачи е пуснал. До сега нямаше такава възможност и ако един потребител беше пуснал 10 задачи силно използващи процесора, а другия само 1, то тогава вторият потребител щеше да „изпитва процесорен глад“. Тази опция е „group tasks by user id“ при избор на групово разпределяне на процесорното време в конфигурационния файл на ядрото. Опцията „group tasks by Control Groups“ позволява да се задават на група от процеси приоритети. Новото в 2.6.25 е възможността за групиране на реалновремеви задачи.

За да се подобри подобри производителността на компютърни системи с повече от един процесор в 2.6 се използва RCU (read-copy-update). Това е технология за заключване на четене и запис. Новото е, че вече е с прекъсване, а целта е в linux да се постигнат подобрения при реалновремеви задачи.

Измерването на колко памет използва даден процес звучи лесно, но не е точно така и по-точно в случаите, кога процеси си споделят памет. За тази цел може да се използва /proc/$PID/smaps , но това не помага достатъчно. Затова в настоящата версия на ядрото са добавени статистики, които улесняват изчисляването. За всеки процес се създава файл /proc/$PID/pagemaps, в който се експортира (в бинарен формат) физическото разположение на всяка страница от паметта, която използва процеса. Сравняването на тези файлове на различните процеси които си споделят памет, позволява да се разбере, кои страници си споделят. Друг файл /proc/kpagemaps предоставя друг тип статистики PSS и USS. Първата разделя споделената памет на броя на процесите. Например, ако един процес има 200 страници само за себе си и 100 споделени, тогава неговата PSS ще е 250. Тази статистика се извежда също така и в /proc/$PID/smaps. USS е броят на страниците, които не са споделени. За наблюдение на статистиките са създадени както конзолни, така и графични програми.

Най-използвания „ задължитен контрол за достъп “ (Mandatory Access Control) е SELinux. SMAC (от simple) е алтернативно решението, което не е толкова мощно, но за сметка на това е по-лесно за конфигуриране.

LatencyTOP е програма за програмисти (без значение дали пишат за kernel или userspace), която може да им помогне да идентифицират, къде има голяма латентност.

От архитектурата MN10300/AM33 и мрежовия протокол CAN не съм се интересувал и затова няма да пиша за тях. Единствено за CAN знам, че има голямо бъдеще в автомобилите и е разработен от volkswagen.

Към ACPI е добавена поддръжка на WMI ( Windows Management Interface ).

В повечето Unix операционни системи има две състояния на сън – с прекъсване и без прекъсване. В linux 2.6.25 е добавено трето състояние - убиваем (killable). Когато процес е в състояние на прекъсваем сън може да бъде прекъснат от всеки сигнал. При убиваемо състояние може да бъде прекъснат само от фатален сигнал. За практическа имплементация може да се посочи, когато NFS бъде приспособен да го използва е възможно с kill -9 да се убие процес, който чака недостъпен NFS сървър.

Промените в ext4 от потребителска гледна точка са възможността за поддържане на по големи файлове и файлови системи.

1 коментар:

foozy каза...

Надявам се да не е много сухо и скучно за четене :)