LINUX.ORG.RU

Kdbus — межпроцессный обмен сообщениями на уровне ядра

 , ,


0

0

В целях увеличения производительности компьютера представлен проект Kdbus — реализация службы межпроцессного обмена сообщениями dbus на уровне ядра Linux. Производительность заметно возрастает за счёт уменьшения числа копирования областей памяти и минимизации числа переключения контекста между ядром и процессом-демоном, работающим в пользовательском пространстве.

Пока ещё надо запускать службу dbus для аутентификации и активации dbus, драйвер org.freedesktop.DBus пока реализован только через службу dbus.

>>> Подробности

★★

Проверено: annoynimous ()
Последнее исправление: annoynimous (всего исправлений: 2)

Ответ на: комментарий от anonymous

Так-то оно так, но DBus насколько мне известно необходим для обмена инфой между прикладными процессами. В таком случае хоть разделяемую память используй быстрее некуда. Зачем городить ещё один IPC? Linux не микроядро поэтому оптимизация работы очереди сообщения для обмена инфой м/у сервисамми и микроядром не нужна.

anonymous
()
Ответ на: комментарий от Atlant

Вопрос что в этом IPC нового? Если не устраивает текущая реализация очереди сообщений пусть патчат ядро и совершенствуют.

anonymous
()

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

sergej ★★★★★
()

>KVM/i386, with kdbus:Fetched 300000 rows in 24368ms (26% faster - x1.35)

26% прироста производительности - отличный результат. Если работа не захлопнет, то когда допилят интересно будет пощупать его «живьем».

Genuine ★★★
()
Ответ на: комментарий от anonymous

1. Вопрос не ко мне.
2. Ломать существующее? 8)
Да его потом съедят жЫвьём! Уж не говоря о внедрении функциональность в ядро. И будут правы!

Atlant ★★★★★
()

Данный шаг позволит повысить производительность D-BUS до максимально возможного уровня, ведь так? А если так, то это просто отлично. Желаю успехов создателям этого проекта и скорейшей реализации важной нужной вещи!

И попутно вопрос: во всех современных дистрибутивах трей (область уведомлений) работает через D-BUS. Так это работает в KDE 4 и есть ли это в Gnome 2.30 например?

И напоследок: почему применяется копирование а не, что намного проще и быстрее, просто передача страницы памяти во владение другому процессу?

I-Love-Microsoft ★★★★★
()

Это неверный путь. D-Bus - не настолько критичная по времени выполнения штука, как скажем fuse. Десктопу - десктопное, нефиг тащить в основную ветку ядра всякий хлам.

jcd ★★★★★
()
Ответ на: комментарий от jcd

Это неверный путь. D-Bus - не настолько критичная по времени выполнения штука, как скажем fuse.

Не согласен. Такая вещь как D-BUS должна быть максимально быстрой, чтобы можно было организовать эффективное взаимодействие между программами, службами и т.п. Чтобы чуть ли не драйверы можно было в юзерспейсе писать для ядра.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от dmiceman

Даже не знаю. Посмотрел в wiki, действительно не видно. Даже странно, откуда такая ассоциация :-) Но это даже хорошо же.

AlexKiriukha ★★★★
()
Ответ на: комментарий от post-factum

>Это, конечно, супермегаафигенно. Но не будет ли это попыткой из монолита сделать микроядро?

ИМХО для таких целей dbus толстоват.

yurkis
()
Ответ на: комментарий от I-Love-Microsoft

Мне вот интересно, когда dbus по сети научится нормально работать? А то пихают его куда зря...

sergej ★★★★★
()
Ответ на: комментарий от Genuine

26% прироста производительности - отличный результат.

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

mikki
()
Ответ на: комментарий от namezys

Для того, что должно работать быстро, есть стабильные ext? и reiserfs. А всякие там самбы и прочие блаблабла теперь при каком-то косяке вылетят тихо и мирно, а не потянут за собой kernel panic.

INFOMAN ★★★★★
()
Ответ на: комментарий от Genuine

Угу, когда в ядро притащат стопицот таких «26% приростов производительности», то там получится уже не 26, а слегка поменьше, вкупе с весьма забавными эксплойтами и кернел паником напоследок.

INFOMAN ★★★★★
()
Ответ на: комментарий от zyoung

сначала про kde подумал. KDE - графический рабочий стол внутри ядра для увеличения быстродействия.

Ну да, а потом мужественно убеждать друг друга мантрой «а у меня Plasma не падает».

maxkit
()
Ответ на: комментарий от I-Love-Microsoft

1) реальное ускорение в 25% для вещи, которая только и делает что кидает куски текстовой (XML же) не-реалтайм информации между процессами - полный отстой, и если не перегружать свой софт её использованием - разница будет даже незаметна для глаза.
2) D-Bus - отнюдь не вышеупомянутый IPC, который должен быть критически быстрым, это - повторяю - лишь десктопная приблуда для обмена текстом. для обмена межпроцессной информацией по firewire тоже будем пользоваться d-bus?
3) всё это не нужно, так как предел при упоре на связь между процессами внутри ядра равен микроядерной архитектуре, и Линус не согласится на полный рефакторинг своего детища - у них с Таненбаумом была куча срачей на эту тему в самом начале. если запилить Kdbus и сделать на него упор при проектировании софта - ядро линукса превратится в пятнадцатиногого слона с головой орангутанга и внешностью мэрилин монро.

сначала мне самому понравился сабж, но потом я подумал.

jcd ★★★★★
()

Танненбаум давно уже говорил...

Viglim
()

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

KblCb ★★★★★
()
Ответ на: комментарий от male66

>зы. во всяком случае - menuconfig никто еще не отменял...

гм, ну локально может кто-то и отменил в пользу nconfig :)
По сабжу: будем смотреть, что они там сделают. Если честно, это была недавная мысль, что обмен сообщениями между приложениями как-то логичнее проводить в ядре. Другое дело, что подход в DBus какой-то непонятный с этими их длинными «классами»... машине, конечно, сугубо пофиг, но вот понимать все эти super.app.My.doc.Dongle.Org.что-то там ещё... а делов-то... почитать мануал по дбасу)) чем возможно сейчас и займусь.

mcdebugger ★★
()

Я знаю, в ядро нужно плазму засунуть. Заодно и разберемся, падает она или нет =)

dion
()
Ответ на: комментарий от jcd

1) Может ли D-Bus обмениваться бинарными данными? Я не очень в курсе этой шины...

2) Если не он, то что может лучше подойти для быстрого обмена _бинарными_ данными между процессами?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

> Такая вещь как D-BUS должна быть максимально быстрой, чтобы можно было организовать эффективное взаимодействие между программами, службами и т.п.

Зачем? Какой взаимодействие между службами потребует значительного потока данных?

Чтобы чуть ли не драйверы можно было в юзерспейсе писать для ядра.

Через DBUS? Ты в своем уме?

tailgunner ★★★★★
()
Ответ на: комментарий от jcd

В своей войне с XML неплохо бы проверять факты прежде чем :}

Deleted
()
Ответ на: комментарий от tailgunner

>Какой взаимодействие между службами потребует значительного потока данных?

Меню через DBUS уже нарисовали. То ли ещё будет.

Deleted
()
Ответ на: комментарий от Deleted

>> Какой взаимодействие между службами потребует значительного потока данных?

Меню через DBUS уже нарисовали.

Меню - это копейки^Wкилобайты в худшем случае.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Так это пока, я в них верю! :) Да и Empathy уже упомянули, мало ли ещё таких монстров будет (хотя у меня его нет, не знаю насколько куча таких программ бы влияла на производительность).

Deleted
()

Идея быстрого IPC между ядром и юзерспейсом и в комбинациях меня очень возбудила. Если не D-Bus, то что - какие есть аналоги?

И повторю свой другой вопрос - почему не переназначение владельца страницы памяти, а именно копирование применяют?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от tailgunner

На самом деле, есть такие штуки, например, тот же Tracker --- локальный поисковик для GNOME. В настоящее время там используется следующий подход: поисковый запрос идет через D-Bus, в ответ возвращается дескриптор на анонимный pipe (D-Bus умеет пробрасывать через себя файловые дескрипторы, не могу сказать, насколько это завязано на возможность пробрасывать файловые дескрипторы через Unix socket) и по этому pipe клиенту поиска приходят данные, являющиеся ответом.

На самом деле, ускорение D-Bus важная и полезная задача и дело не только килобайтах, но и в конском round trip time.

Одновременно с тем, очевидно, что начинать оптимизации D-Bus с создания AF_DBUS --- довольно странно, если не сказать глупо. D-Bus делает еще кучу бесполезной (или почти бесполезной) работы. Свидетельством этого являются, например, сравнительные измерения D-Bus с похожим методом IPC --- Orbit: http://live.gnome.org/GAP/AtSpiDbusInvestigation#DBus_and_ORBit_Benchmarking

Для общего просвещения в вопросах ускорения D-Bus стоит почитать умных людей в мэйл-листе: http://lists.freedesktop.org/pipermail/dbus/2010-January/012066.html

anonymous
()

Хорошая идея, давно бы так! Всяко лучше, чем тащить в основную ветку всякие женоубицфс.

Lighting ★★★★★
()
Ответ на: комментарий от INFOMAN

>Была куча глючных экспериментальных драйверов фс — стал fuse.

Плохой пример. FUSE больше подходит для небольших костылей вроде ФС через OBEX или MTP, когда ядерный модуль избыточен и слишком сложен.

Lighting ★★★★★
()
Ответ на: комментарий от Lighting

Также FUSE позволяет использовать что-то кроме С

vertexua ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

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

anonymous
()
Ответ на: комментарий от ttnl

в zen и ядре бубунты он будет точно.

uju ★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Если не он, то что может лучше подойти для быстрого обмена _бинарными_ данными между процессами?

msgrcv и msgsnd?

anonymous
()
Ответ на: комментарий от anonymous

> На самом деле, есть такие штуки, например, тот же Tracker --- локальный поисковик для GNOME

То есть из-за того, что какие-то странные люде не осилили использование IPC с нормальной производительностью, нужно вводить в ядро всякий мусор?

Для общего просвещения в вопросах ускорения D-Bus стоит почитать умных людей в мэйл-листе: http://lists.freedesktop.org/pipermail/dbus/2010-January/012066.html

Ты сам-то читал? «in all reality the current setup works fine and is portable to almost any operating system». Но умельцам народным неймется...

tailgunner ★★★★★
()

Уши бы оторвал

Для нормального IPC ядру не хватает одной единственной вещи: именованных mailboxов.

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

авторов велосипеда пороть. посылаю также луч говна тем, кто суёт xml куда не попадя.

ckotinko ☆☆☆
()
Ответ на: Уши бы оторвал от ckotinko

это можно съэмулировать через mmap (узеры в readonly) + сигналы, но гемморой состоит в запоминании, каким процессам надо послать сигнал и слежении за ними. плюс, mmap - это весьма не быстрая и к тому же расходующая vmarea вещь

ckotinko ☆☆☆
()
Ответ на: комментарий от ckotinko

ЗЫ: рассуждающим про FUSE - как разраб говорю, что fuse оооочень хорош в теории, для создания хитрожопых ФС с небольшой нагрузкой - т.е. того, что нужно на десктопе. например корневая сжатая фс для мелких дистрибутивов, загружаемых с потенциально выдирабельной флешки(сам делал).

но фуз имеет API такой, будто на него внимательно смотрит свиборг. он уродлив чуть более, чем полностью. аргументы не удобны для использования(файлы нужно идентифицировать числом, хотя бы 64битным атомарно инкрементируемым-на i386 это тоже делается без блокировок), сам api избыточен, разрабы просто должны делать все основные библиотечные вызовы для работы с файлами. poll не поддерживается и т.д. и т.п.

ckotinko ☆☆☆
()
Ответ на: комментарий от dmiceman

Строго говоря, есть в виде DBus.Introspectable. Но сам протокол да, бинарный.

dmsh
()
Ответ на: комментарий от post-factum

+100500 DBUS в таком виде, как он есть в ядро пускать нельзя!!!

drfaust ★★★★★
()
Ответ на: комментарий от Lighting

> Всяко лучше, чем тащить в основную ветку всякие женоубицфс.

Вы намекаете на то, что ФС якобы плоха из-за того, что автор совершил убийство?

mix_mix ★★★★★
()
Ответ на: комментарий от ckotinko

>> А poll на дескрипторах дисковых файлов вообще поддерживается?

на уровне сисколлов это aio_xxx

Ну то есть poll(2) не поддерживается, об этом и был вопрос.

в струтуре file_operations за это отвечает poll()

Детали мало кому интересны.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.