ДЛЯ НАЧАЛА: ЖИВЫЕ

- Knoppix -
Линукс за пять минут
- Puppy Linux -
Хороший друг


ДЛЯ ДЕЛА: ПРОФИ

- Debian -
Он такой один
- Linux Mint -
С родинкой на щеке!
- CentOS -
Копейка рубль бережёт!
- Fedora -
По следам Red Hat
- Ubuntu Linux -
Мы одной крови!
- Mageia -
Красота и удобства
- openSUSE -
Настоящее немецкое качество
- Slackware -
Линукс из кубиков
- ALT Linux -
Что русскому хорошо





ДЛЯ ДЕЛА: РОЛЛЫ

- ArchLinux -
Гениальное - просто!
- PCLinuxOS -
Просто линукс
- Aptosid -
Почувствуй силу!


ДЛЯ ДЕЛА: СОБЕРИ САМ

- Gentoo -
Каждому своё
- LinuxFromScratch -
Линукс с нуля


ДЛЯ ДЕЛА: ЛЁГКИЕ

- DeLiCate -
Старость в радость!
- SLAX -
Тысяча и один модуль


ЗАЩИТА

- OpenWall -
Не стучите, закрыто!
- Kali -
Вам, хакеры!


ПРИЛОЖЕНИЯ

- Planet CCRMA -
Работа со звуком
- VegaStrike -
Каждому по планете!


ЭКСПЕРИМЕНТ

- коЛинуксы -
Не выходя из Виндоус
- GoboLinux -
Очевидно и вероятно
- ReactOS -
Освободите Виндоус!


РОДНЯ

- BSD-семейство -
На плечах гигантов
- OpenIndiana -
До звёзд рукой подать


АРХИВ (2003-2016)
ФОРУМ




НАШИ ПРОЕКТЫ

MATRIX GL
ПОЛЕЗНЫЕ СОВЕТЫ
ПИНГВИН В КАРМАНЕ
ЗАКЛАДКИ
СТАТЬИ
КОНТАКТЫ


ПОМОЧЬ






Личный архив ЕЗ

17.11.2010 Нет задачи без ответа!

Шутники любят проехаться по достоинствам Linux, помянув кто её возраст, кто сложность освоения. Но факт остаётся фактом: именно свободная операционная система часто оказывается первой на новой дорожке. В начале 90-ых Linux стала первой доступной ОС, предоставившей своим пользователям выход в глобальную компьютерную сеть. И Линукс же оказалась первой массовой системой с настоящей многозадачностью. Хорошее забывается быстро, а плохое ещё быстрей — и сегодня мало кто помнит, что совсем недавно все работали в однозадачных средах. Ни MS-DOS, ни MS Windows вплоть до NT, ни Mac OS до версии 9 не имели истинной многозадачности. Linux начала эту гонку первой и ведёт до сих пор, совершенствуясь без передышек. Очередная «бомба» прогремела в новостях на уходящей неделе. Вы наверняка уже слышали: разработчики линуксового ядра смогли одним патчем махом улучшить отзывчивость системы на порядок (не просто красивое слово: на порядок - в десять раз минимум!). Если вам интересно, как это удалось сделать и чем может обернуться, не перелистывайте страничку. Давайте разберём тему по винтикам, начав с самых азов.

Что такое многозадачность? Так именуют способность операционной системы поддерживать одновременную работу нескольких программ. Задача непростая как ни крути. Во-первых, нужно организовать справедливую раздачу доступа к ресурсам машины (оперативной и дисковой памяти, видеокарте, периферийным устройствам). Во-вторых, защитить одну программу от другой, чтоб ошибка одного приложения не стала фатальной для комплекса в целом. В-третьих, необходимо научиться правильно делить время исполнения программ, спланировав их доступ к центральному процессору. И вот здесь как раз зарыта самая большая проблема.

Линукс любят все. Не все понимают за что ;-)

Простейшим способом разделения времени считается так называемый конкурентный. Программы выполняются по очереди, причём каждая работает столько времени, сколько сочтёт нужным, самостоятельно возвращая управление операционной системе. Сами понимаете, такой подход чреват — ведь если одна из программ «повиснет», то другие приложения и сама операционка уже не увидят свет. Конкурентная многозадачность присутствовала во всех вышеупомянутых системах, кроме Linux. В Linux с самого начала был реализован более надёжный алгоритм, называемый вытесняющей многозадачностью. Тут вся власть принадлежит операционной системе, которая выделяет каждой программе крохотный квант времени, отрезок длиной в миллионные доли секунды. Получая управление множество раз в течение одной секунды, каждая запущенная программа потребляет положенную ей порцию процессорной мощности. Занимается раздачей временных квантов так называемый планировщик (англ. scheduler) — компонент Ядра, вокруг которого сломано столько копий, что хватило бы на маленькую армию.

Тут позвольте сделать ещё одно, последнее лирическое отступление и сказать, что программисты — компьютерные шовинисты. Для них процессы делятся на полезные (занятые чем-нибудь стоящим, к примеру, компиляцией) и бесполезные, обслуживающие пользователя (прокрутка страничек, переключение окошек, просмотр фильма и прочие глупые штучки). Идеальным с точки зрения прагматичного программера было бы отдать максимум времени полезным процессам, и минимум — бесполезным. Однако в этом случае мы получим систему, которая даже на клик мышки среагирует только через несколько секунд. И если для сервера, который сутками напролёт перекачивает байты, отзывчивость не так уж и важна, то на домашней персоналке необходимо выделять бесполезным процессам времени побольше. Если же у вас рабочая станция, обрабатывающая мультимедийные потоки (вы, к примеру, любите подключить электрогитару к связке jack-плагинов), то реакция на действия пользователя должна производиться в реальном времени.

Общение с человеком (human interface) очевидно не самая важная задача Ядра

Итак, скорость реакции системы («отзывчивость») находится в прямой зависимости от того, сколько квантов времени будет выделено процессам, обслуживающим пользователя. Но справедливо и обратное: чем больше времени вы уделите пользователю, тем больше его будет откушено у полезных задач. И вот здесь рождается вечный спор о золотой середине. На своём рабочем месте каждый линуксоид волен решить для себя, где на шкале «сервер — десктоп — рабочая станция» находится его система, и выставить соответствующий ключик в настройках Ядра. Однако среди ядерных хакеров страсти не утихают уже много лет. Тонкости реализации планировщика выливаются порой в такие драмы, что впору книгу писать. Так, как это случилось, к примеру, с австралийцем Коном Коливасом (Con Kolivas).

Коливас программирует для линуксового ядра в свободное от работы время, но и здесь он преуспел. Пытаясь улучшить отзывчивость Linux, он с 2004 по 2007 год написал несколько вариантов планировщика под названием Staircase. К сожалению, в основную версию ядра его разработка так никогда и не попала. Staircase действительно ускорял реакцию системы на пользователя, но ценой слишком высоких потерь производительности. Так, по крайней мере, считал Линус Торвальдс. К слову, не все согласны с Линусом, но последнее слово в судьбе любой добавки к основному Ядру всегда за ним, и после нескольких лет бесплодных усилий Кон взял тайм-аут. Он вернулся год назад — уже с новой версией своего планировщика, который в пику Линусу назвал BFS. Расшифровывается эта аббревиатура как Brain Fucking Scheduler и, по словам Коливаса, она будет развиваться отдельно от торвальдсовской версии ядра (ищите версию с ключиком -ck).

Ядро для Кона Коливаса - хобби: его основная профессия анестезиолог

Что ж, на то она и свобода: BFS добилась некоторого успеха в альтернативных линуксах (в частности, для мобильных устройств), в мейнстриме же события развиваются своим чередом. С появлением ветки 2.6 начался настоящий штурм проблемы многозадачности. Не было буквально ни одной версии, в которую не добавили бы то или иное исправление, улучшающее отзывчивость Linux под большой нагрузкой. Сменили планировщик (оригинальный O(1) уступил место Completely Fair Scheduler (CFS) — кстати, навеянный работой Коливаса), для каждой версии готовятся десятки патчей. Особенно активно работа в этом направлении велась в последний год. Но — стоп. Остановимся и представим, что все модификации и усовершенствования, доступные к настоящему моменту для наисвежайшей версии Ядра (2.6.37-rc2) учтены и наложены. Скомпилируем его, загрузим систему и проведём небольшой тест: включим HD-кино с одновременной компиляцией всё того же Ядра (хорошая нагрузка даже для многоядерной многопроцессорной машины). Оценим плавность реакции интерфейса, воспроизведения видео. Теперь наложим тот самый патч, о котором упоминалось в начале сегодняшней заметки. Повторим тест.

Как уверяют счастливчики, успевшие поставить этот эксперимент, разница поразительна. Работа системы становится беспрецедентно плавнее и приятней без ущерба для производительности. В численном выражении результат выглядит так: средняя задержка реакции уменьшается в 60 раз. Автор этой замечательной разработки — Майк Галбрайт (Mike Galbraith), в соавторах сам Линус Торвальдс, подавший идею. Секрет же скрыт в хитром распределении времени, называемом групповым планированием (group scheduling). Чтобы понять, с чем его едят, представьте, что на одном компьютере работают два пользователя. Первый запустил только одну программу, тогда как второй — десять штук. Традиционный принцип разделения времени — всем поровну — предполагает, что процессор будет поровну поделён между одиннадцатью программами (читайте: первому юзеру достанется вдесятеро меньше). Групповое планирование учитывает неравенство в количестве запущенных программ и делит время ровно напополам: в нашем случае по 50% каждому пользователю. Суть патча Галбрайта — автоматическое разбиение процессов на группы. О результате вы уже наслышаны. Вдобавок, по словам Линуса, ставшего первым тестером, скорость исполнения некоторых программ может даже увеличиться (так, быстрее загружает странички веб-браузер) — неожиданный побочный эффект нового распределения времени. Тот же Линус назвал групповое планирование «убойной фичей» - свойством, которое определённо пригодится большинству пользователей.

Что ж, позавидуем пользователям ArchLinux и Gentoo, для которых соответствующие пакеты с подправленным ядром могут появиться со дня на день. Впрочем, есть и причины не торопиться. Во-первых, патч Галбрайта войдёт только в следующую версию ядра (текущая 2.6.37 готовится к релизу, добавления запрещены). Во-вторых, Галбрайт реализовал пока только часть задуманного, в ближайшие недели автоматическое групповое планирование без сомнения подвергнется жесточайшему мозговому штурму. Если же вам таки не терпится оценить эффект самому, дерзайте! Исходники свободно доступны (оригинальное письмо Майка), патч накладывается на ядро 2.6.37 или .36

В такой момент не грех и помечтать. С начала XXI века каждый год пресса пытается объявить годом Линукса на десктопе. И каждый раз осуществлению этой мечты что-то мешает. Теперь перелом близок. Стремительное ускорение веб-браузеров (Google Chrome летает даже на машинах десятилетней давности), надвигающийся отказ от X-сервера (см. «Прощание с мистером Икс»), и наконец блистательный финал битвы за плавную многозадачность — всё это говорит о том, что пользователи и разработчики Linux сделали своим приоритетом интересы маленького человека, рядового юзера. Хочется надеяться, теперь уже навсегда.

------------------------------------------------------------------------------------------------------------

Этот текст всегда доступен по адресу Knoppix.ru/171110.shtml


При частичной или полной перепечатке, переводе, переработке материалов сайта ссылка на Knoppix.ru обязательна.
(c) Knoppix.ru 2003 - 2016