Ядро Linux реального времени - Complete Preemption в действии



12 коммент.
После применения lowlatency-патчей от Инго Молнара, я отметил существенный прирост отзывчивости системы по сравнению с обычным режимом (например, Preemptible Kernel). Стабильность системы от этого не пострадала и всё работало, как и прежде. Это вселяло оптимизм и желание дальнейших экспериментов.


Мотивация
Патчи с CFS, добавляющие отзывчивость системе, оставили противоречивые впечатления: да, повышение отзывчивости есть, особенно если загрузить после этого дефолтное ядро. Но музыка при высоких вычислительных и особенно дисковых нагрузках на ноутбуке начала заикаться (даже при запуске XMMS в RT-режиме через sudo), что очень неприятно.

На ноутбуках высокая производительность особенно не нужна, да её и не добиться с такой медленной дисковой подсистемой. Кажется логичным пожертвовать некоторой производительностью во имя более быстрой реакции системы на работу с приложениями. Короче, хочется и с кучей приложений одновременно работать, и архивами ворочать, и музыку слушать - и чтобы в лирические композиции CPU планировщик не вставлял лишних театральных пауз :-)

Поэтому я решил пойти дальше и использовать патчи реального времени (Realtime - Complete Preemption). Патч огромный, около 2Мб, выкачивал отсюда, накладывал на ядро 2.6.22.1. Наложилось и собралось без ошибок.


Изменения в конфигурации ядра
Конечно, такие масштабные изменения должны отразиться на конфиге. Меняется механизм распределения памяти:
General setup --- Choose SLAB allocator (SLAB)
Так же ставим Полностью Честный Планировщик для ввода-вывода:
Block layer -- Default I/O scheduler (CFQ)
В разделе Processor type and features самые заметные изменения:
Processor type and features --- [*] Tickless System (Dynamic Ticks)
RCU implementation type: (Preemptible RCU)
This option reduces the latency of the kernel by 'threading' hardirqs. This means that all (or selected) hardirqs will run in their own kernel thread context. While this helps latency, this feature can also reduce performance.
Processor type and features --- Preemption Mode (Complete Preemption (Real-Time))
Хотя в справке по этому параметру честно предупреждают, что если не уверены - говорите нет, я таки отметил эту опцию (так как она увеличивает отзывчивость).
Всё, теперь у нас ядро реального времени. После загрузки моё ядро теперь называется так:
# uname -a
Linux notebeast 2.6.22.1-rt9 #1 PREEMPT RT Thu Aug 23 17:20:21 MSD 2007 i686 GNU/Linux


Изменения в работе - Realtime ядро в действии
Ядро стало грузиться медленнее: 51 секунда против 43, даже при включённой concurrent-mode shell загрузке, при которой стартовые скрипты выполняются параллельно.

В логах dmesg появились угрожающие записи:
WARNING: experimental RCU implementation.
Кроме того, при загрузке повторяются сообщения о нестабильности отсчёта времени:
Clocksource tsc unstable (delta = -150284361 ns)
Ладно, несколькими секундами загрузки я пожертвую, но что изменилось в работе? Многое...

Во-первых, стало больше процессов ядра, всего при загрузке уже более сотни процессов, многие из которых появились как раз из моей любви к Realtime. Вот, например, как выглядит неполный перечень процессов:
top - 20:05:35 up 36 min, 1 user, load average: 2.03, 1.58, 1.31
Tasks: 116 total, 2 running, 113 sleeping, 1 stopped, 0 zombie
Cpu(s): 97.0%us, 2.3%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.3%hi, 0.3%si, 0.0%st
Mem: 498996k total, 416492k used, 82504k free, 15044k buffers
Swap: 801120k total, 33860k used, 767260k free, 232220k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7834 beast 20 0 189m 89m 15m R 92.8 18.4 2:11.13 firefox-bin
6979 root RT 0 69920 9396 4888 S 3.3 1.9 1:05.68 xmms
5338 root 20 0 313m 15m 4324 S 1.3 3.1 0:39.64 Xorg
67 root -51 -5 0 0 0 S 0.3 0.0 0:06.63 IRQ-9
3886 root -51 -5 0 0 0 S 0.3 0.0 0:02.08 IRQ-21
5044 root 30 10 1572 464 428 S 0.3 0.1 0:00.55 cpudynd
5418 beast 20 0 5976 1684 1304 S 0.3 0.3 0:14.49 conky
26970 beast 20 0 2228 1148 856 R 0.3 0.2 0:00.02 top
1 root 20 0 1576 480 452 S 0.0 0.1 0:00.77 init
2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 posix_cpu_timer
4 root -51 -5 0 0 0 S 0.0 0.0 0:00.00 softirq-high/0
5 root -51 -5 0 0 0 S 0.0 0.0 0:04.13 softirq-timer/0
6 root -51 -5 0 0 0 S 0.0 0.0 0:00.00 softirq-net-tx/
7 root -51 -5 0 0 0 S 0.0 0.0 0:00.00 softirq-net-rx/
8 root -51 -5 0 0 0 S 0.0 0.0 0:00.00 softirq-block/0
9 root -51 -5 0 0 0 S 0.0 0.0 0:00.00 softirq-tasklet
10 root -51 -5 0 0 0 S 0.0 0.0 0:00.00 softirq-sched/0
11 root -51 -5 0 0 0 S 0.0 0.0 0:00.97 softirq-hrtimer
12 root -51 -5 0 0 0 S 0.0 0.0 0:00.26 softirq-rcu/0
13 root 10 -10 0 0 0 S 0.0 0.0 0:00.02 desched/0
14 root -2 -5 0 0 0 S 0.0 0.0 0:00.09 events/0
15 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
64 root 15 -5 0 0 0 S 0.0 0.0 0:00.19 kblockd/0
65 root 15 -5 0 0 0 S 0.0 0.0 0:02.10 kacpid
66 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
187 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd
190 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
192 root 15 -5 0 0 0 S 0.0 0.0 0:00.02 kseriod
209 root 20 0 0 0 0 S 0.0 0.0 0:00.02 pdflush
210 root 20 0 0 0 0 S 0.0 0.0 0:00.39 pdflush
При этом играет музыка в XMMS (запущен с повышенными привилегиями RT), а Firefox пересортировывает дерево захваченных страниц (около 600Мб, занимает 4-5 минут, полная загрузка процессора). Перед этим я быстро, одно за другим, запустил для пробы OpenOffice.Writer, GiMP, Acroreader, Firefox, Thunderbird и Kate (горячими клавишами). Винчестер работал интенсивно, но музыку оборвать так и не удалось.

Выкатил другую дальнобойную артиллерию: запустил QEMU со ЗломХП, поставил три архиватора одновременно (для создания резервных копий). XMMS этого не заметил совершенно, а я в это время писал эту заметку в Scribefire плагине Огнелиса, закрывая время от времени ненужные приложения.

Единственное и ожидаемое следствие - некоторое снижение производительности системы. Приложения запускаются немного медленнее, особенно требующие интенсивных обращений к винчестеру. Но так как жёсткие диски на ноутбуках и без того не реактивные, это терпимо.


Немного объективности

Сам Инго Молнар провёл ряд очень интересных тестов, например эти данные определённо представляют интерес. Это только подтверждает визуальные наблюдения: выигрыш по отзывчивости с RT-ядром значителен. Так же интересные данные о гладкости работы 3D-игр есть тут. Подробное обсуждение того, какой патч (lowlatency или RT) когда лучше есть здесь.


Выводы
Ну что сказать... я впечатлён :-) Уменьшение латентности системы с Realtime-патчем субъективно имеет место быть, по сравнению с lowlatency - и это заметил не я один: Роман Химов поделился своими впечатлениями
Впечатления сугубо положительные. Разница с обычным 2.6.22 в отзывчивости есть и ощутимая, особенно при серьёзной загрузке процессора. Athlon XP 1700+ от этого, конечно, не стал Turion 64 X2, но изменения радуют.
Главное, чего я хотел получить - гладкое исполнение музыки и фильмов без "дёрганий" на фоне множества других приложений - я получил. И хотя это достигается некоторой потерей производительности системы, мне видится это оправданным.

Эти результаты могут разниться на разных машинах, и чтобы составить своё мнение об этом, лучше всего собрать два ядра: с lowlatency и Realtime патчами, а для контроля ещё поставить дистрибутивное ядро. И попробовать поработать по очереди под всеми тремя, включив свой любимый аудиоплеер и нагружая систему вычислительными и дисковыми операциями.
Читать далее

Лучший linux дистрибутив: какой дистрибутив Linux выбрать?



61 коммент.
Сакраментальные вопросы - какой дистрибутив Linux выбрать? и Какой лучший Linux дистрибутив? - теперь имеют вполне разумные ответы. Выбрать дистрибутив Linux можно по этой ссылке - отвечаем на русском языке на несколько простых и незамысловатых вопросов и всё, вопрос "какой линукс выбрать" решён и можно приступать к установке и освоению линукса. Так что идём сюда и выбираем свой лучший дистрибутив Linux.


О проекте
Linux Distribution Chooser
Замечательный проект, Linux Distribution Chooser, позволяет новичкам быстро и без лишних холиваров выбрать себе дистрибутив Linux, исходя из ответов на простые вопросы. До недавнего времени этот вопросник был только на английском, а теперь есть и русский перевод, причём довольно качественный.


О дистрибутивах Linux
Если вас интересует, чем один линукс отличается от другого, то пост по этой ссылке вам поможет быстро разобраться в этом вопросе. Говоря проще, это больше вопрос вкуса и привычек - если что-то работает в Ubuntu, будет работать и на Gentoo, и наоборот. И наконец, дистрибутив Linux - не жена или татуировка, можно без проблем сменить на другой.

В общем, сюда можно смело отправлять с форумов граждан, задающихся сим фундаментальным вопросом мироздания.
Читать далее

Сменил стиль блога



19 коммент.

Билайн - с пчёлами, МТС - с яйцами, а я теперь с листьями :-) Вдохновлённый смелым ребрендингом блога Прикладная дебианавтика, я тоже решил сменить стиль. Собственно, давно хотел сменить стандартный блоггеровский шаблон Sand Dollar на что-нибудь более приличное. Этот шаблон я раскопал в дебрях Интернета, он для старого блоггера - так что мне пришлось вручную его переделывать в новый. При обновлении шаблона, естественно, пара виджетов слетела и мне пришлось их восстанавливать. Это я к тому, что обратно возвращаться уже поздно :-)

Заодно добавил перевод постов на другие языки, снёс навигационный прибамбас блоггера и наконец разобрался с искажением вида шаблона после добавления социальных закладок - всё это записал в этом посте, чтоб потом не забыть. Обо всех критичных косяках кроме кривого отображения в IE :-) пишите в комментариях, желательно вместе с решением - я в веб-программировании не силён :-)

Так же подведены результаты опроса на тему "Стоит ли писать историю проекта Дебиан". Более 75% принявших в опросе сказали, что стоит - так что начинаю собирать материал по теме.
Читать далее

Видеозахват и сжатие видео в Linux



30 коммент.
С появлением устройств видеозахвата возникает необходимость в программном обеспечении, которое способно записывать видео или отдельные кадры через определённый промежуток времени. Всё это может быть решено открытыми программами, входящими в Debian Linux.

О настройке TV Tuner в Linux на примере Beholder 409FM говорилось в этом посте.

Запись видеопотока с устройств захвата на примере ТВ Тюнера

Большинство программ просмотра телепередач, например tvtime, умеют только просматривать программы и снимать скриншоты. Но время от времени требуется и записывать передачи, особенно когда они идут в неподходящее время. Для этого, в соответсвии с UNIX way, есть другие утилиты. Одна из них называется streamer.
#aptitude install streamer
После того, как пакет streamer будет установлен, он сможет писать и снимать скриншоты из из /dev/video0 и /dev/dsp в картинки jpeg, png и в видеофайлы со звуком. И ролики пишет, и скриншоты делает (в том числе несколько через равные промежутки времени). Программа,
естественно, консольная, так что завернуть её в скрипт труда не
составит.

Для подробной справки у streamer есть очень хороший ключик, который называется -h. Справка написана очень толково, с примерами и простым языком.
Программа пишет в файл заданного имени данные с указанного тюнера, в формате raw и с разными типами компрессии, с заданным числом кадров в секунду и проч.

Вот, например, мой скрипт на bash:
#! /bin/sh

if [ -z $1 ]; then
kmvTimeToRecord=50;
else
kmvTimeToRecord=$1;
fi

streamer -o ~/movie.avi -r 24 -f mjpeg -j 90 -s 720x520 -F mono8 -t $kmvTimeToRecord:00 -p2

Скрипт пишет в файл movie.avi 120 минут телепрограммы с тюнера (если время не передано скрипту явно) 24 кадра в секунду с mpeg-компрессией и в полном формате 720x520 и восьмибитным звуком.
Включение скрипта в нужное время осуществляется командой at, позволяющей выполнять любые задания в указанное пользователем время. Это ещё раз иллюстрирует мощь UNIX-way: несколько мелких программ можно связывать в цепочку для получения нужного результата.


Сжатие видеоданных
Если вы будете захватывать в jpeg-сжатии для экономии места, качество будет посредственным, а если в rawvideo rgb15, то минута видео займёт гигабайт. И тут потребуется сжать видеопоток...
Естественное желание - всё это как-то скомпрессировать. Есть несколько программ данного класса: например ffmpeg и mencoder.

Показательна следующая история. Мой коллега, использующий виндовс, обратился ко мне с просьбой: не могу ли я сжать видеофайл 50Гб, перегнанный с видеокассеты? Могу, конечно, а что, говорю, под виндой с этим проблемы? На что мне было отвечено, что некий VirtualDub попросил под это дело 7Гб и 16 часов времени. Ладно, скидываю данные на переносной винчестер, прихожу домой, врубаю mencoder и выпадаю в осадок: mencoder попросил 370Мб и 32 минуты на всё. Как говорится, почувствуйте разницу.


Пример с ffmpeg
Установим ffmpeg из стандартного дистрибутива Дебиан. После её установки у нас появляется возможность задавать множество параметров для пережатия захваченного видео с тюнера в MPEG4 с хорошим сжатием и неплохим качеством. Дабы не утомлять читателя man ffmpeg (а он там действительно впечатляющий), привожу свой башевский скрипт, настройки которого более или менее разумны:

#! /bin/sh
ffmpeg -i movie.avi -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 new.avi
Этот скрипт вызывает ffmpeg и указывает сжать файл movie.avi в новый, new.avi, с кодеком mpeg4 и хорошим качеством. Пережатие - долгая операция, так что можно за это время выпить чашечку любимого напитка или даже принять ванну.


Пример с mencoder

Входящая в комплект вместе с Mplayer, утилита mencoder так же очень здорово сжимает видеоданные, в том числе с ТВтюнера. Вот пример с настройками, дающие удовлетворительное качество видеоизображения для просмотра:
mencoder movie.avi -o new.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=1:vbitrate=1800 -ofps 24
При этом перекодируется входной файл movie.avi в новый файл, new.avi с визуально удовлетворительным качеством. Чтобы каджый раз не вбивать параметры в командную строку добавил профили в mencoder.conf, например так:

[ppc]
profile-desc="ppc"
vf=scale=320:240
oac=mp3lame=1
lameopts=mode=3:cbr=1:br=48
ovc=lavc=1
lavcopts=vcodec=mpeg4:vbitrate=270
ffourcc=DIVX

Для уменьшения размера с точными пропорциями можно vf=scale=320:240 заменить на

vf=scale=1
zoom=1
xy=320

Теперь видео будет иметь ширину 320, а высота будет просчитана автоматически с соблюдением пропорций.


Заключение
Наверное, есть ещё много разных способов и параметров конвертирования, которые знают уважаемые комментаторы. Просьба не стесняться и выкладывать в комментариях полезные ссылки, программы и свои оригинальные идеи по сжатию видео.
Читать далее

The Debian Day 14, или С Днём Рождения, Дебиан!



35 коммент.
В этот день, 16 августа 1993 года, Ян Мёрдок объявил о выходе нового дистрибутива, названного по частям имён: Дебры (его подруги, а в последствии жены) и Яна.
Сегодня Дебиан - один из самых продуманных и надёжных дистрибутивов, имеющий наибольшее количество живых ответвлений, включая Убунту, Кноппикс, Ксандрос и Фриспайр.
Лучшая система управления пакетами, огромное коммьюнити, ответственное отношение к тестированию пакетов и высокие стандарты качества - это делает Дебиан нашим выбором, которому мы доверяем кластеры, серверы, десктопы, ноутбуки и даже КПК - с бесценными данными на них.

С днём рождения!


На такой оптимистичной ноте мне хотелось бы поместить здесь ответ на часто задаваемый мне вопрос: "почему именно Дебиан?".

Далее - моё личное частное скромное мнение, и, может быть, несколько предостережений тем, кто хочет попробовать Дебиан и не знает, стоит ли.

Дебиан - не для всех
Этот дистрибутив никогда не ставил перед собой задачи стать "дружественным" или "простеньким" для неподготовленных пользователей. Никакой элитарности или крутизны в этом дистрибутиве нет, но у него есть чёткая направленность: мощный и продуманный конструктор для создания операционной системы любого назначения. Соответственно, и аудитория - в основном люди, которым нравится общаться с вычислительной техникой, нравится познавать новое и учиться преодолевать препятствия. Это в большинстве своём технически грамотные люди с чертами исследователя и экспериментатора, либо желающие развить в себе эти черты.


Первое время будет нелегко
Опыт показывает, что после мира М$ обычно Линукс вообще и Дебиан в частности воспринимается как что-то инопланетное. Здесь не обманывают новичков имитациями, а сразу показывают: это другая система, в которой ориентироваться после некоторого первоначального усилия просто и логично. Да, требуются терпение, настойчивость и сообразительность. Всё это потом с лихвой окупится очень продуктивной работой в вашей, удобной для вас, системе и окружении нужных вам приложений.


Дебиан - это создание операционной системы для себя
Вам очень понравится этот дистрибутив, если вы любите подстраивать вещи под себя, а не себя под вещи. Вы создаёте из конструктора то, что вам нравится и так, как вам удобно. Это до некоторой степени творческий процесс, с "напильником и паяльником", существенно облегчённый продуманной системой управления пакетами APT. Она избавит вас от совершенно ненужной возни с зависимостями, компиляторами и флагами - вы строите свою систему из хорошо оттестированных и подогнанных друг к другу блоков.
Созданную для себя систему не замечаешь - просто работаешь в ней, выполняя повседневные задачи. Это потому, что вы настраиваете систему для себя и под себя, так как удобно вам, а не кому-то, кто за вас подумал в Редмонте, Санта-Крузе или любой другой местности.


Придётся многое узнать и во многом разбираться
Прочтение статей и руководств существенно расширит ваши познания в вычислительной технике. Вы научитесь эффективно работать с компьютером, выполнять многие вещи гораздо быстрее, чем раньше - в этом вам помогут скриптовые языки и найденные руководства по ним в Сети.
Вы узнаете, что с помощью умелого использования команд, конвейеров ("pipes") и скриптов можно добиться многого и очень быстро. Написанию скриптов и программ будут способствовать обилие имеющихся в дистрибутиве языков программирования, доступных для установки "одним движением" и многообразие программистских инструментов в системе. Как говорится, "batteries included", то есть в дистрибутив включены все инструменты, которые могут потребоваться.


Система логична, проста и продуманна
Простые текстовые конфигурационные файлы, обильно прокомментированные и содержащие часто конкретные примеры. Все конфигурационные файлы лежат в /etc - там, где и положено, логи - где обычно, в /var/log, пользовательские программы - в /usr/bin, как и следует. Никакого бардака, всё упорядочено и логично. Каталоги прозрачно структурированы, и через некоторое время вы будете легко в них ориентироваться.
В системе пользователей может быть десятки и сотни - и никто друг другу не мешает. Настройки, выполненные один раз, действуют для всех пользователей сообразно с их правами доступа. Всё просто и логично.
Ничего лишнего, никакой самодеятельности со стороны операционной системы: вы хозяин своей системы, её царь, бог и воинский начальник.


Настроил и забыл
Это можно назвать девизом Дебиан, и, быть может, именно поэтому так мало форумов о Дебиан - ибо почти всё работает из коробки и так, как ожидаешь. Никакой утомительной компиляции, никаких проблем с зависимостями при установке или обновления системы. Всё продумано, чётко и отлажено. Через некоторое время, когда вы настроите систему для себя, вы перестанете её замечать: просто работаете и делаете своё дело, а Дебиан помогает вам в этом надёжной работой. Систему можно не отключать, открыв нужные приложения и документы - в таком состоянии компьютер будет работать месяцы и годы.

В Debian - работать одно удовольствие.
Читать далее