abbra: (Default)
[personal profile] abbra

Поскольку устройство мы выпустили и даже отпраздновали вчера, можно рассказывать байки. А может и не байки, а страшилки, но это уж как кому подумается. Сегодня рассказ о том, как на N900 используется виртуализация.

Обычно виртуализацию используют для того, чтобы экономить. Экономят на электроэнергии, на расходах на покупку серверов, "уплотняют" нагрузку на единицу серверной мощности и повышают ARPU в расчете на одного хостера. В N900 виртуализация используется для реализации идей Робина Гуда -- отнять у богатых и раздать бедным. Или, как говорилось, у нас все для человека и мы знаем имя этого человека -- Пользователь.

В ядре Linux поддерживаются несколько методов виртуализации, среди которых выделяется виртуализация методом контейнеров. Для контейнеров характерна так называемая "легкая виртуализация" -- все контейнеры работают под управлением одного и того же ядра, а вот доступ к дисковому пространству, к пространству процессов и памяти у них разграничен. Один контейнер не видит, что творится в другом контейнере. Из знакомых решений такого типа -- OpenVZ (и коммерческий вариант Virtuozzo от Parallels), Linux Vserver и еще несколько альтернатив.

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

Независимое дисковое пространство умеют в POSIX-совместимых системах уже довольно давно. Изоляция "в chroot" -- нормальная практика с 1982 года, когда системный вызов chroot(2) появился в том, что стало через 17 месяцев версией 4.2BSD -- для тестирования установки и сборки системы. В девяностые в Plan 9 идея изоляции пространств имен была доведена до логического конца, с изолированными сетевым пространством для каждого процесса. В ядре Linux адаптация изолрованных пространств продолжается до сих пор, отдельные типы пространств можно использовать довольно стабильно с 2.6.25.

А вот с подсчетом ресурсов долгое время было не очень. Фактически, для контейнерной виртуализации нужно обсчитывать потребление всего, что только можно -- потребление памяти, использования процессора, создаваемый сетевой трафик, дисковое пространство и так далее. Идея привязать к каждому типу ресурса счетчик вылилась в довольно сложную на практике задачу, так что самодельные подходы со временем были приведены к общему знаменателю -- управляющим группам.

Control groups или cgroups, представляют собой как раз такой общий знаменатель. Тот или иной вариант ресурса описывается определенным типом управляющей группы, а процессы в системе могут быть добавлены в "пространство" соответствующей управляющей группы. В этом случае использование ресурсов этими процессами будет подсчитано согласно и учтено.

Управляющие группы не дают еще возможность полностью реализовать контейнер, они позволяют сгруппировать процессы и влиять на их поведение. Контейнер получается, когда вся группа процессов, входящая в cgroup, помещается в отдельное пространство имен, а вокруг этого выстраивается разнообразная инфраструктура, превращающая группу процессов в отдельную систему, со своими терминалами, корневой файловой системой и сетевыми адаптерами.

Это очень схематичное описание, для приблизительного представления. [livejournal.com profile] k001 может рассказать более подробно, а у меня совсем иная цель.

Вернемся к управляющим группам и ресурсам. В ядре Linux определено несколько типов контролеров ресурсов, позволяющих обсчитывать их потребление. Разработка новых контролеров ведется постоянно, как и усовершенствование существующих. С точки зрения системы с ограниченными ресурсами, которую представляет из себя мобильное устройство, интересны контролеры памяти, процессора и сети.

У системы с ограниченными ресурсами основная головная боль состоит в том, чтобы научиться вовремя изыскивать ресурсы для тех, кому они нужны и отбирать их у тех, кто сейчас ими пользоваться не должен. Крайне опасная в жизни, но очень полезная в мобильном телефоне способность. Хорошо, что нет в телефоне демократии и оппозиции, а то бы Крылов с "а вы, друзья, как ни садитесь..." наверняка был бы на каждой коробке невышедшего в продажу устройства.

В случае с N900 все исполняемые процессы классифицируются определенным образом на тех, кто помогает приложению, с которым сейчас работает Пользователь, и на тех, кто может и подождать. Помощники получают "подпитку", в виде дополнительных памяти и циклов процессора, а также приоритетов при планировании процессов на исполнение. Классификация -- дело довольно сложное, политики классификатора описаны в виде базы знаний на языке Пролог. Неудобный для реализации "типичных алгоритмов" других задач, Пролог пришелся к месту для классификации приоритетов.

На самом деле, этот классификатор в N900 также обслуживает и распределение звуковых потоков между приложениями, определяя, кому и в какой момент времени можно звучать и куда -- в колонки, наушники, радио-передатчик FM-диапазона и так далее. Расширение области его применения для управление перебрасыванием процессов из одной приоритетной управляющей группы в другую теперь уже кажется делом совершенно логичным, а вот еще полгода назад...

Впрочем, в этом месте можно и остановиться. Когда приходит телефонный звонок, все незадействованные в его обработке процессы умирают -- на доли секунды у них отбирают всякую возможность быть запланированными на исполнение, чтобы Пользователь смог увидеть и услышать сигнал звонка. А когда Пользователь не смотрит на экран, потому что он выключен, все незадействованные в обслуживании Пользователя процессы получают минимальный приоритет. В результате, все ресурсы отдаются проигрывателю или тому, кому они в этот момент нужны -- например, браузеру, который транслирует поток из интернет-радио. Все равно кроме звука или отображения на телевизор пользователь больше делать ничего не будет -- экран-то выключен.

Все это сказывается положительным образом на энергопотреблении. Ядро бы и радо отключать определенные аппаратные устройства и уходить в режимы сниженного энергопотребления, да хорошо бы, чтобы приложения не заставляли невовремя из этих режимов выходить. Я теперь не могу смотреть на скринсейверы на десктопах, "как же они расходуют-то энергию!". Так и представляются толпы замызганых прерываний, в поте лица тягающие сигналами неповоротливых и прожорливых приложения в топку Переключателя Контекста и Господина Батарейкина.

В результате, удается не только звонок вовремя доставлять, но и экономить батарейку, причем существенно. В великом деле мелочей не бывает.

Date: 2009-12-10 09:20 pm (UTC)
From: [identity profile] liks-cryptor.livejournal.com
Никогда не задумывался, что это в телефоне реализовано так сложно :)

Date: 2009-12-10 09:31 pm (UTC)
From: [identity profile] alexkuklin.livejournal.com
в WM - через Ж, очевидно :)
держу в руках glofiish X800 - и очень хочется его раз...ть за тормоза, при том, что там довольно мощный проц

(no subject)

From: [identity profile] arkanoid.livejournal.com - Date: 2009-12-10 10:36 pm (UTC) - Expand

(no subject)

From: [identity profile] lazybear.livejournal.com - Date: 2009-12-11 05:39 am (UTC) - Expand

(no subject)

From: [identity profile] arkanoid.livejournal.com - Date: 2009-12-11 05:45 am (UTC) - Expand

(no subject)

From: [identity profile] lazybear.livejournal.com - Date: 2009-12-11 06:03 am (UTC) - Expand

(no subject)

From: [identity profile] arkanoid.livejournal.com - Date: 2009-12-11 10:19 am (UTC) - Expand

(no subject)

From: [identity profile] lazybear.livejournal.com - Date: 2009-12-11 06:00 am (UTC) - Expand

(no subject)

From: [identity profile] lazybear.livejournal.com - Date: 2009-12-11 06:19 am (UTC) - Expand

(no subject)

From: [identity profile] fr0ster.livejournal.com - Date: 2009-12-11 11:20 am (UTC) - Expand

(no subject)

From: [identity profile] ex-tripgun357.livejournal.com - Date: 2009-12-11 11:25 am (UTC) - Expand

(no subject)

From: [identity profile] fr0ster.livejournal.com - Date: 2009-12-11 12:59 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 11:27 am (UTC) - Expand

(no subject)

From: [identity profile] lazybear.livejournal.com - Date: 2009-12-11 01:09 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 01:30 pm (UTC) - Expand

(no subject)

From: [identity profile] lazybear.livejournal.com - Date: 2009-12-11 01:38 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 01:45 pm (UTC) - Expand

(no subject)

From: [identity profile] lazybear.livejournal.com - Date: 2009-12-11 01:51 pm (UTC) - Expand

JFYI

From: [identity profile] lazybear.livejournal.com - Date: 2009-12-14 11:30 am (UTC) - Expand

Re: JFYI

From: [identity profile] silpol.livejournal.com - Date: 2009-12-14 12:01 pm (UTC) - Expand

(no subject)

From: [identity profile] lazybear.livejournal.com - Date: 2009-12-11 01:31 pm (UTC) - Expand

(no subject)

From: [identity profile] arkanoid.livejournal.com - Date: 2009-12-11 10:57 am (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 11:30 am (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 11:35 am (UTC) - Expand

Date: 2009-12-10 09:27 pm (UTC)
From: [identity profile] strangestone.livejournal.com
я вот кручу сейчас "устройство" в руках и поражаюсь, как вы превратили из гадкого утенка n810 в такуе красивую и удобную железку =)

спасибо, продолжайте в том же духе =)

Date: 2009-12-10 09:40 pm (UTC)
From: [identity profile] kiryl.livejournal.com
На n900 будет VLC? ;)

Date: 2009-12-10 09:53 pm (UTC)
From: [identity profile] strangestone.livejournal.com
у нас всё готово, кроме интерфейса.

(no subject)

From: [identity profile] amavlyanov.livejournal.com - Date: 2009-12-11 09:55 am (UTC) - Expand

(no subject)

From: [identity profile] strangestone.livejournal.com - Date: 2009-12-11 10:00 am (UTC) - Expand

Date: 2009-12-10 10:28 pm (UTC)
From: [identity profile] strangestone.livejournal.com
очень хорошо кстати видно, как тормозится работа всего при выключении экрана:

apt-get update через ssh работать даже перестаёт =)

Date: 2009-12-11 08:08 am (UTC)
From: [identity profile] kiryl.livejournal.com
Так именно перестаёт или медленно всё? И какая частота процессора /proc/cpuinfo ?
В общем случае, системе нужно какое-то время, что бы понять, что нужно поднять частоты. События от тачскрина, насколько я знаю, способствуют более быстрому подъёму частот.

(no subject)

From: [identity profile] strangestone.livejournal.com - Date: 2009-12-11 08:10 am (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2009-12-11 08:22 am (UTC) - Expand

Date: 2009-12-10 10:37 pm (UTC)
From: [identity profile] arkanoid.livejournal.com
А вот такая штука, как "скринсейвер в стиле s60" - редко обновляемая картинка на рефлективном экране без подсветки, в эту архитектуру не вписывается?

(no subject)

From: [identity profile] luarvique.livejournal.com - Date: 2009-12-11 09:12 pm (UTC) - Expand

Date: 2009-12-11 06:27 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Да, блин, Точно надо маемо сносить и ставить более доступный пониманию человека дистриутив.
Мало того, что я так и не разобрался как сделать, чтобы в maemo 3/4 пользователя звали не user а vitus, так еще теперь получается что устройство не предназначено ни для чего кроме вывода на экран и наушники.

(no subject)

From: [personal profile] vitus_wagner - Date: 2009-12-11 07:16 am (UTC) - Expand

(no subject)

From: [identity profile] strangestone.livejournal.com - Date: 2009-12-11 07:58 am (UTC) - Expand

(no subject)

From: [identity profile] duke-igthorn.livejournal.com - Date: 2009-12-11 09:46 am (UTC) - Expand

(no subject)

From: [identity profile] strangestone.livejournal.com - Date: 2009-12-11 10:01 am (UTC) - Expand

(no subject)

From: [identity profile] duke-igthorn.livejournal.com - Date: 2009-12-11 10:06 am (UTC) - Expand

(no subject)

From: [personal profile] wizzard - Date: 2009-12-11 08:20 am (UTC) - Expand

(no subject)

From: [personal profile] wizzard - Date: 2009-12-11 08:22 am (UTC) - Expand

(no subject)

From: [personal profile] vitus_wagner - Date: 2009-12-11 03:11 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 09:48 am (UTC) - Expand

(no subject)

From: [identity profile] tarkhil.livejournal.com - Date: 2009-12-11 10:38 am (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 11:02 am (UTC) - Expand

(no subject)

From: [identity profile] luarvique.livejournal.com - Date: 2009-12-12 07:41 pm (UTC) - Expand

Date: 2009-12-14 11:58 am (UTC)
From: [identity profile] dmarck.livejournal.com
Я (n800) просто добавил себя с тем же уидом, не морочась. всё работает ;P

Date: 2009-12-11 06:39 am (UTC)
From: [identity profile] inhate.livejournal.com
Вай-вай, сколько ж это оно стоит - половину самолёта!
Надеюсь, через годик подешевеет баксов до 400...

Date: 2009-12-11 07:12 am (UTC)
From: [identity profile] kiryl.livejournal.com
Я бы не решился летать на таких самолётах ;)

Date: 2009-12-11 09:46 am (UTC)
From: [identity profile] ignik.livejournal.com
Во глюкало то...

imho коробка будет хоть немного осмысленной лишь когда будет нормальное описание того, как всю эту херь снести и документированная opensource реализация телефонной части. А ведь всё ради того, чтобы телефонию в драйвер не засаживать.

Date: 2009-12-11 09:51 am (UTC)
ext_653744: (Default)
From: [identity profile] amavlyanov.livejournal.com
ты же понимаешь что не будет opensource телефонии... gnu radio хоть и работает, но пока, если я правильно понимаю, не готов к использованию чуть менее чем полностью.

(no subject)

From: [identity profile] ignik.livejournal.com - Date: 2009-12-11 10:06 am (UTC) - Expand

(no subject)

From: [identity profile] pishi-chitai.livejournal.com - Date: 2009-12-11 10:54 am (UTC) - Expand

(no subject)

From: [identity profile] ignik.livejournal.com - Date: 2009-12-11 11:29 am (UTC) - Expand

(no subject)

From: [identity profile] dkzm.livejournal.com - Date: 2009-12-11 06:39 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 11:20 am (UTC) - Expand

(no subject)

From: [identity profile] ignik.livejournal.com - Date: 2009-12-11 04:47 pm (UTC) - Expand

(no subject)

From: [identity profile] arkanoid.livejournal.com - Date: 2009-12-12 01:04 am (UTC) - Expand

(no subject)

From: [identity profile] ignik.livejournal.com - Date: 2009-12-12 01:38 am (UTC) - Expand

(no subject)

From: [identity profile] arkanoid.livejournal.com - Date: 2009-12-12 01:42 am (UTC) - Expand

(no subject)

From: [identity profile] ignik.livejournal.com - Date: 2009-12-12 10:50 am (UTC) - Expand

Date: 2009-12-11 09:49 am (UTC)
From: [identity profile] duke-igthorn.livejournal.com
Все-таки интересно, услышит ли нокия мой (и не только мой) стон - сделать устройство с размером экрана хотя бы как 810 и НОРМАЛЬНОЙ клавиатурой? Или производители мобильных устройств издеваются? От 12-клавишной морды классического мобилы перешли к КАК БЫ qwerty, но это КАК БЫ настолько сильно, что делает всю затею почти бессмысленной...

Date: 2009-12-11 11:18 am (UTC)
From: [identity profile] silpol.livejournal.com
твой голос ДАВНО был услышан - на графиках user feedback увеличение клавы стоит в первых строках (межды 2 и 5, в зависимости от разреза), приьем не первый год.

Проблема so far заключается в том, что никто из product management + marketing не хочет выходить на эту тропу: до сих пор, все кто по ней пошел, с точки зрения бизнеса "умер" (палм, иже и понеже, и чем больше экран и клава, тем быстрее умирали), и никто не хочет положить на алтарь рынка строчки своего _личного_ CV. В том смысле, что они все нацелены на удовлетворение той части рынка, что дает максимальный профит. Это судьба prosumer market segment, к которому мы с тобой принадлежим - мы в меньшинстве, и никто нам за рупь сорок собаку не будет из будки доставать (в том смысле, что современный бизнес фактически умерщвляет все, что хоть на секунду позволяет благотворительность).

Единственный виабельный метод, хотя и паллиатив "по всей морде" - это раскладная клава с крэдлом для устройства. Она все-таки ухудшает reliability всего пакета (хотя бы в механическом плане), но позитив в том, что ее можно "срастить" с активным USB-хабом, и таким образом (заодно) решить проблему несовместимости батарейности устройства и нужды в USB host...

(no subject)

From: [identity profile] duke-igthorn.livejournal.com - Date: 2009-12-11 11:28 am (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 11:41 am (UTC) - Expand

(no subject)

From: [identity profile] duke-igthorn.livejournal.com - Date: 2009-12-11 11:46 am (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 12:13 pm (UTC) - Expand

(no subject)

From: [identity profile] duke-igthorn.livejournal.com - Date: 2009-12-11 12:14 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 01:20 pm (UTC) - Expand

(no subject)

From: [identity profile] duke-igthorn.livejournal.com - Date: 2009-12-11 01:23 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 03:46 pm (UTC) - Expand

(no subject)

From: [identity profile] duke-igthorn.livejournal.com - Date: 2009-12-11 03:58 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 03:24 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 03:39 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 03:46 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 04:11 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 04:15 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 05:46 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 05:59 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 06:21 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 06:24 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 06:25 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 04:19 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 05:54 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 06:02 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 06:15 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 06:15 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 06:22 pm (UTC) - Expand

(no subject)

From: [identity profile] awind.livejournal.com - Date: 2009-12-11 07:50 pm (UTC) - Expand

(no subject)

From: [identity profile] v-s.livejournal.com - Date: 2009-12-11 08:22 pm (UTC) - Expand

(no subject)

From: [identity profile] awind.livejournal.com - Date: 2009-12-11 07:45 pm (UTC) - Expand

(no subject)

From: [identity profile] silpol.livejournal.com - Date: 2009-12-11 09:28 pm (UTC) - Expand

HTC HD2 aka Leo

From: [identity profile] luarvique.livejournal.com - Date: 2009-12-12 08:01 pm (UTC) - Expand

Date: 2009-12-11 11:13 am (UTC)
From: [identity profile] kerne1-panic.livejournal.com
Ммм, ну и нямка этот n900

Date: 2009-12-11 07:43 pm (UTC)
From: [identity profile] antimirov.livejournal.com
Спасибо за телефон, у меня их уже 2 :)
From: [identity profile] poige.livejournal.com
> , "как же они расходуют-то энергию!".

Типичный xscreensaver, к примеру, отправляет SIGSTOP рисовалке с того момента, как включается DPMS и показывать красивости бесполезно.

(Я лично никогда не любил CPU-hogs screensavers — поскольку понимаю, что ради финтифлюшек слишком уж много энергии тратится.)

Что касается классификатора — вы переделали планировщик, или просто навернули что-то внешнее?…

April 2016

S M T W T F S
     12
3456789
1011121314 1516
17181920212223
24252627282930

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 8th, 2026 09:42 pm
Powered by Dreamwidth Studios