LINUX.ORG.RU
ФорумTalks

Почему в Linux последнее время ВСЁ железное тянут в userspace? Переключать контекст не задалбывает???

 


0

2

Вопрос возник в связи с плотным общением с pulseaudio и ntfs-3g/exfat. Изначально, эти два проекта решают 2 простые задачи: - миксовать звуковые потоки прозрачно для человека за компом - рулить хитрой структурой потоков разделов ntfs.

Если посмотреть на FreeBSD, то там звуковой драйвер намного, намного менее навороченный, задо софтверный миксер был чуть ли не первой принципиальной фичей при его создании. И, как бы, это всё, что было нужно - звук звучит, админу больше ничего не надо. Всё это работало на древнем тормозном железе, работает и сейчас. В Linux всё не так: в особо извращённых случаях нужно настроить alsa так, чтобы она перенаправляла звук в pulseaudio, а тот, смиксовав, направлял обратно. Это как известная история, что из Одессы посылка с сотовым телефоном, посылавшим координаты, в Москву ехала через Новосибирск.

То же и с драйверами фс - мало того, что логика работы с ntfs очень навороченная и требует ресурсов, так ещё каждый байт гоняется по нескольку раз kernel<->userspace. И всех всё устраивает! И почему, пока не утек код из Samsung, exfat модуль нельзя было переделать на kernelspace? просто допилить код vfat модуля, на основе exfat для fuse... Что за хрень? Или я чё-то не догоняю?

★★★★★

мнэээ.. ntfs-3g, вроде как, лицензионная ситуация не позволяет в ядро засунуть. Владеет им контора, которая его написала, Tuxera, и выпускает под двойной лицензией.

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

лицензионная ситуация

неправильные_двери.txt

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

не уронит систему

Какая разница - она её СТАВИТ. Мне нужна система, которая и не стоит тоже. С ядерной ntfs есть шанс, что она будет периодически лежать, а с userspace - она всегда стоит. Если чо, на роутере MIPS 480 мГц.

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

Это всё не причины переключать контекст :)

А вообще, 1) не хочу, он мне нравится 2) диск USB, должен читаться везде (да, я в курсе про успешный ext4 под виндой - роутер и диск не для меня) 3) На роутер не такой выбор ОС 4) Люблю торренты

Shadow ★★★★★
() автор топика

И почему, пока не утек код из Samsung, exfat модуль нельзя было переделать на kernelspace?

Если ты не видел обсуждения в fsdevel, я напомню. Выглядели они примерно так: человек задаёт вопрос про exfat, а в ответ тишина, никто не отвечает. Не хотят создавать прецедент, к которому можно прицепиться в суде. Технических препятствий нет, переделывай.

То же и с драйверами фс - мало того, что логика работы с ntfs очень навороченная и требует ресурсов, так ещё каждый байт гоняется по нескольку раз kernel<->userspace. И всех всё устраивает!

У конторы, которая делает ntfs-3g, есть ядерный модуль. Они его продают, это их бизнес. http://www.tuxera.com/products/tuxera-ntfs-embedded/

fuse

Есть FUSE под Windows: http://dokan-dev.net/en/about/

i-rinat ★★★★★
()

Alsa - dmix
Ntfs - непонятки с лицензией

devl547 ★★★★★
()

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

Artificial_Thought ★★★★
()

Если что, с удовольствием под виндой использую ext2fsd. Зачем там вообще что-либо из линукса (в смысле, ядерный код), не знаю. А про микширование потоков вот я и говорю - задача простая по формулировке: чтоб звучало из разных приложений. Не важно, как, главное - без треска. Но перфекционисты делают автогеном через жопу уже более 10 лет... Да, dmix ok, но хочется везде и из коробки.

Shadow ★★★★★
() автор топика
Последнее исправление: Shadow (всего исправлений: 2)
Ответ на: комментарий от devl547

Под винду есть ifs, на кой фиг там fuse? =\

А я думал драйвер под IFS надо в ядро тащить. Он что-ли в user-mode выполняется?

i-rinat ★★★★★
()

Кодеры-сыкуны в лице школьников-неосиляторов возрощенных потренгом.

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

Оне всё равно под OpenWRT atheros мне не соберут и не пришлют :( Кстати, да. Парагон круты, можно использовать на большом компе.

Shadow ★★★★★
() автор топика
Последнее исправление: Shadow (всего исправлений: 1)

А с чего ты решил что там не корова? :-) А переключение контекста - то фигня.

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

о, круто, дожили, переключение контекста - фигня :(

А незадолго до этого MMU стало фигней. Прикинь, да?

tailgunner ★★★★★
()

pulseaudio

посмотри кто автор. он прославился своим вкладом в велосипедную промышленность и поднял ее на новые, до селе не виданные высоты!

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

Сначала стоит убедиться что проблема именно в этом. Давай уж выкладывай показания, скажем, top. Ну и сколько переключений контекста происходит (как это посмотреть написано в гугле).

true_admin ★★★★★
()

Вопрос возник в связи с плотным общением с pulseaudio и ntfs-3g/exfat. Изначально, эти два проекта решают 2 простые задачи: - миксовать звуковые потоки прозрачно для человека за компом - рулить хитрой структурой потоков разделов ntfs. (кусь) В Linux всё не так: в особо извращённых случаях нужно настроить alsa так, чтобы она перенаправляла звук в pulseaudio, а тот, смиксовав, направлял обратно.

Для начала осиль Welcome To The Jungle и wiki/PulseAudio и того на замену чего оно собственно и пришло wiki/ARts и wiki/esd и если что то да ты прав тупо миксовать умеет и ядерная alsa… А вот, к примеру, передать звук по сети так у ядерной alsa с этим как то знаешь в общем то не очень да и не её это забота по большему счету. Потому как alsa это модули для низкоуровневой работы с сугубо конкретным звуковым оборудованием а pulse это уже более высокий уровень абстракции который нужен для совсем других задач. Так что не надо смешить все в месте: мухи отдельно котлеты отдельно.

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

Я, вообщето, опытный юзер jack audio, например. " А вот, к примеру, передать звук по сети так у ядерной alsa с этим как то знаешь в общем то не очень да" - опупеть, у меня дня не проходит, чтоб по сети не погонять ввод или вывод аудио! Не, в контексте bluetooth гарнитуры pulse нужен... Я про то, что достаточно низкий уровень абстракции тянут в userspace.

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

Уже не могу, собрал ядерный exfat и сменил NTFS на exfat. Стало хорошо.

По сути проблемы: я хотел сделать переносимый extroot со свопом для OpenWRT в виде loop ext4 системы посреди ntfs системы. Естественно, что при запуске торрентов они мало того, что писали в куче потоков, так ещё и свопили... И всё через ntfs-3g...

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

Я, вообщето, опытный юзер jack audio, например

Он создавался совершенно под другие цели и не умеет в энергосбережение как pulse, например.

Ну и он в юзерспейсе поверх той же alsa.

Я про то, что достаточно низкий уровень абстракции тянут в userspace.

Он не низкий, если разобраться. А аналоги пульсы даже в страшном сне в ядро никто не тащил.

По поводу ntfs в треде всё сказали.

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 1)
Ответ на: комментарий от ckotinko

Тогда надо делать нормальное микроядро, в котором как раз соптимизированы все эти передачи user<->kernel

cvs-255 ★★★★★
()
Ответ на: комментарий от x3al

не умеет в энергосбережение как pulse, например.

А вообще-то управлять питанием - задача драйвера устройства, а не сервера, перекидывающего звук по сети. то, что этим заниемает PA, лишь показывает степень костыльности.

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

в котором как раз соптимизированы все эти передачи user<->kernel

Ты имеешь в виду передачу данных или переключение контекста?

По-моему, микроядерные ОС ничего нового в передачу данных не приносят. По поводу переключения контекста ничего сказать не могу.

true_admin ★★★★★
()
Ответ на: комментарий от cvs-255

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

Оно не управляет питанием. Осиль матчасть. Оно позволяет уменьшить число прерываний за счёт большего буфера. Кстати, из кернелспейса ты это ничерта не сделаешь так.

x3al ★★★★★
()

вообще-то хотелось бы монтирования и управления звуком без рутовских прав

в особо извращённых случаях

разве не всегда?

stevejobs ★★★★☆
()

плюс придется убить Линуса и все правила кодирования ядра, потому что нормальным людям разбираться со всеми этими заморочками нафиг не упало

да и вообще, можно написать все под BSD-лицензией на питоне

stevejobs ★★★★☆
()

Не-не-не, ядро линукса это очень ок, любой нуб может за неделю написать свой шедулер или oom менеджер, например. Вот BSD ядро всё ещё содержит остатки кода 70-х...

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

Прочитал. PA реализует, простите, эдакий аутсорс буфера в приложении. Идея хорошая, но неожиданная (нфига?). Т.е. обычно приложение имеет буфер, и само регулирует его размер в зависимости от того, нужно больше потреблять больше CPU и иметь малую задержку или при несущественной задержке иметь приятный непрерывный звук при минимуме потребления ресурсов. Тут же мы это всё делаем через PA, который пинаем специальным API по буферу/задержке... Я же писал про простой софтверный миксер для тупых аудиовыходов, который сидит в ядре и что получает на входе, кидает в выход. Ему не нужен буфер, и юзера не парит, что звук трещит при просыпании компа.

Shadow ★★★★★
() автор топика

С ростом мощностей мы неизбежно придём к микроядру, т.к. микроядерные системы более стабильны и управляемы by design.

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

Интересно, если «поднять» проект MkLinux...

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

Sadler ★★★
()

Это как известная история, что из Одессы посылка с сотовым телефоном, посылавшим координаты, в Москву ехала через Новосибирск.

Почта россии контрибутит в луникс. Пока - в плане архитектуры.
Ждём брендиованный нджайникс, час отдающий контент а остаток суток - e500.

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

Идея хорошая, но неожиданная (нфига?)

Ну начни читать же. Есть железный размер буфера. От него зависит, как часто будет просыпаться процессор. Напрямую с alsa приложению нельзя управлять его размером: dmix же, приложение ничерта не знает о других звучащих приложениях. А пульсе — запросто можно. И именно на уровне пульсы можно отличать voip/игры от плеера музыки и увеличивать буфер только когда звуков от voip/игр нет. Отсюда и получаем лишние 0,4 ватта экономии без компромиссов.

Ресурсы CPU не настолько важны, как возможность дольше оставлять его спящим. Вывод звука не является сложным для современных машин независимо от наличия пульсы.

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

Есть железный размер буфера.

Всегда думал, что это софтовый момент.

Да, если речь идёт о воспроизведении звука спящим процессором из железного буфера звуковухи и что управлять этим всем лучше всего из PA - то OMG... накуй оно надо? Не, системность подхода впечатляет, но лучше бы чо реально полезно допилить... Например, ядерный микшер из коробки.

Ресурсы CPU не настолько важны

Я на гитарных софт-процессорах собаку съел. Чем меньше задержка, тем сильнее грузится процессор (бо буфера щпочти нет).

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

Всегда думал, что это софтовый момент.

Ага, щаз.

Софт пишет в буфер и уходит спать. Звуковая карта по прерыванию (это и есть хардварная часть) пробуждает софт. Софт пишет в буфер и уходит спать. Чтобы при этом гарантировать отсутствие затыканий (пока софт просыпается и заполняет буфер), в системах с голой алсой есть 2 волшебные переменные — число буферов и размер буфера, обе настраиваемые, но нужную можно разве что угадать (обычно берут с запасом, жертвуя энергопотреблением). Автоматически управлять ими нереально.

Пульса даёт максимальный возможный в данный момент размер буфера, автоматически уменьшая его только когда нужно. Уже ради этого она нужна. Добавленные минуты работы от аккумулятора вполне реальны.

Например, ядерный микшер из коробки.

Нафиг?

Чем меньше задержка, тем сильнее грузится процессор (бо буфера щпочти нет).

В десктопном применении разницу видно только по энергопотреблению, действительно низкой задержки никому не нужно вне профессионального применения. Тупо потому, что для профприменения давно есть jack, который забивает на энергоэффективность и выполняет свою работу.

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

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

вот.

onon ★★★
()
Последнее исправление: onon (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.