The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

27.09.2018 17:21  Запуск WebAssembly runtime как модуля ядра Linux

Проект Wasmjit развивает не привязанный к браузеру небольшой встраиваемый WebAssembly runtime для запуска WebAssembly-модулей, сгенерированных компилятором Emscripten. Помимо средств для выполнения в пространстве пользователя на базе Wasmjit также развивается модуль ядра Linux, позволяющий выполнять промежуточный код WebAssembly на уровне ядра (ring 0). При выполнении на уровне ядра модуль позволяет обращаться к системным вызовам в форме вызова обычных функций. Код написан на языке C (C90), что позволяет легко портировать Wasmjit на различные платформы. Наработки проекта распространяются под лицензией MIT.

Запуск WebAssembly-приложений на уровне ядра даёт возможность избавиться от накладных расходов, связанных с вытеснением таблиц страниц памяти и трансляцией вызовов между ядром и пространством пользователя. Использование модуля ядра позволяет существенно увеличить производительность приложений, в которых производится активное обращение к системным вызовам, например, web-серверов и реализаций файловых систем на базе FUSE.

Из планов на будущее отмечается: создание модуля для ядра macOS; доведение проекта до возможности выполнения nginx, скомпилированного в WebAssembly; подготовка runtime для псевдокода WebAssembly, сгенерированного из кода на языках Rust и Go; создание интерпретатора; подготовка JIT для архитектуры ARM64; оптимизация x86_64 JIT.

  1. Главная ссылка к новости (https://github.com/rianhunter/...)
  2. OpenNews: Проекты по созданию компиляторов из Java в JavaScript и исполняемые файлы
  3. OpenNews: В рамках проекта Nebulet развивается микроядро для запуска WebAssembly
  4. OpenNews: Сравнение производительности различных реализаций WebAssembly
  5. OpenNews: В компилятор LDC языка D добавлена поддержка WebAssembly
Автор новости: Аноним
Тип: К сведению
Ключевые слова: webassembly, runtime
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, zfs (??), 18:40, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +11 +/
    > Запуск WebAssembly-приложений на уровне ядра позволяет избавиться от накладных расходов

    А так же от безопасности, изоляции процессов и т.п.
    Пярмо DOS+DPMI64 какой-то.

     
     
  • 2.7, Ordu (ok), 18:53, 27/09/2018 [^] [ответить]     [к модератору]
  • –2 +/
    wasm-код изолирован от внешнего мира Он выполняется в песочнице, из которой кра... весь текст скрыт [показать]
     
     
  • 3.12, Аноним (-), 19:02, 27/09/2018 [^] [ответить]    [к модератору]  
  • +7 +/
    А вот тут или-или. Вы или таки имеете накладные расходы на песочницу и оверхед на хренову кучу проверок того что то что оно делает здесь и сейчас - типа безопасно, или таки на это забивается, и вот тогда - быстро :).

    В общем не с того конца они яйца чистить начали. Да и вообще, если их в модули ядра понесло - ну, сделали бы нормальную сборку gcc'ом для начала, чтоли. А то все эти перверсии с emscripten'ом - занятие для очень небольшого числа ценителей странного.

     
     
  • 4.19, Ordu (ok), 19:40, 27/09/2018 [^] [ответить]     [к модератору]  
  • +/
    Это oversimplification Переупрощение, наверное, если переводить на русский Всё... весь текст скрыт [показать]
     
     
  • 5.25, Аноним (25), 21:37, 27/09/2018 [^] [ответить]     [к модератору]  
  • +/
    Дудки Дополнительные проверки для безопасности или есть, и на это тратятся ресу... весь текст скрыт [показать]
     
     
  • 6.28, Ordu (ok), 22:10, 27/09/2018 [^] [ответить]     [к модератору]  
  • +/
    gt оверквотинг удален А вот сейчас ты пытаешься переусложнить Зачем Чтобы вы... весь текст скрыт [показать]
     
  • 5.41, Совершенно другой аноним (?), 11:08, 28/09/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    А ещё можно графику в ядро засунуть и тогда Wait OH, SHI--... весь текст скрыт [показать]
     
     
  • 6.42, Ordu (ok), 12:15, 28/09/2018 [^] [ответить]     [к модератору]  
  • +/
    Это зачем Думаешь это уменьшит количество сисколлов Ну, может быть, я честно г... весь текст скрыт [показать]
     
  • 3.16, Кирилл (??), 19:29, 27/09/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Так главная идея этого модуля в том, чтобы выкинуть эту самую песочницу с высокими стенками и дать коду привилегии ядра и полный доступ к памяти и прочим ресурсам.
     
     
  • 4.18, Ordu (ok), 19:39, 27/09/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    Можно цитату со ссылкой, где эта главная идея изложена Если пройти по ссылке ... весь текст скрыт [показать]
     
     
  • 5.20, Аноним (20), 19:51, 27/09/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    Это означает, как минимум, доступ к сети, а также, скорее всего, еще и к диску ... весь текст скрыт [показать]
     
     
  • 6.22, Ordu (ok), 20:58, 27/09/2018 [^] [ответить]     [к модератору]  
  • +/
    То есть необходимый набор сисколлов, чтобы было как у юзерспейс процесса, так ве... весь текст скрыт [показать]
     
     
  • 7.26, Аноним (25), 21:44, 27/09/2018 [^] [ответить]     [к модератору]  
  • +/
    Там как бы есть один жирный плюс изоляция кернел-юзер аппаратно энфорсится желе... весь текст скрыт [показать]
     
     
  • 8.29, Ordu (ok), 22:24, 27/09/2018 [^] [ответить]     [к модератору]  
  • +/
    И в чём, собственно, плюс Как я понимаю этот плюс он хорош для выполнения нед... весь текст скрыт [показать]
     
  • 5.47, eganru (?), 13:43, 30/09/2018 [^] [ответить]     [к модератору]  
  • +/
    насколько я помню ядро linux выполняется в одном адресном пространстве если не ... весь текст скрыт [показать]
     
     
  • 6.49, Ordu (ok), 15:00, 30/09/2018 [^] [ответить]     [к модератору]  
  • +/
    Угу А ещё выполнение в ring3 означает доступ к сисколлам, так Попробуй из wasm... весь текст скрыт [показать]
     
     
  • 7.50, eganru (?), 16:32, 30/09/2018 [^] [ответить]     [к модератору]  
  • +/
    i А ещё выполнение в ring3 означает доступ к сисколлам, так i - конечно нет ... весь текст скрыт [показать]
     
     
  • 8.51, Ordu (ok), 18:18, 30/09/2018 [^] [ответить]     [к модератору]  
  • +/
    Абсолютная аналогия с вызовами из виртуальной машины наружу Что vm позволит, то... весь текст скрыт [показать]
     
  • 3.44, Аноним (44), 16:15, 28/09/2018 [^] [ответить]    [к модератору]  
  • +/
    не изолирован. Он выполняется с правами ring 0, в каком месте он изолирован?
     
     
  • 4.45, Ordu (ok), 16:34, 28/09/2018 [^] [ответить]    [к модератору]  
  • +/
    > не изолирован. Он выполняется с правами ring 0, в каком месте он
    > изолирован?

    Он выполняется в песочнице jit.

     
  • 1.2, yet another anonymous (?), 18:41, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    А если работать в физичеких адресах, то накладных расходов ещё меньше.
     
     
  • 2.9, Ordu (ok), 18:54, 27/09/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    Да, но тогда мы лишаемся изоляции, и любая ошибка может привести к подвисанию компьютера. Прям как в досе.
     
     
  • 3.27, Аноним (-), 21:51, 27/09/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    К тому же трансляция здорово подперта железом В самом хучшем случае требуется в... весь текст скрыт [показать]
     
  • 1.3, Нанобот (ok), 18:43, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    > увеличить производительность приложений, в которых производится активное обращение к системным вызовам, например, web-серверов

    Кстати, а почему никто до сих пор не запилил nginx, работающий в режиме ядра?

     
     
  • 2.8, Аноним (8), 18:54, 27/09/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    https en wikipedia org wiki TUX_web_server ... весь текст скрыт [показать]
     
     
  • 3.17, Нанобот (ok), 19:31, 27/09/2018 [^] [ответить]    [к модератору]  
  • +/
    Это не то, оно умеет только статику раздавать, это 5% от nginx
     
  • 2.36, Crazy Alex (ok), 09:42, 28/09/2018 [^] [ответить]     [к модератору]  
  • +/
    Потому что для типового случая профита нет, всё равно все расходы будут в бизнес... весь текст скрыт [показать]
     
  • 1.4, Аноним (4), 18:44, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    VS Code и Хром больше кушать память и тормозить не будет.
     
  • 1.5, Аноним (8), 18:49, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +7 +/
    > доведение проекта до возможности выполнения nginx, скомпилированного в WebAssembly

    Может ещё nginx в браузере запустить?

     
  • 1.6, Аноним (6), 18:50, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Безумие какое-то. Зачем запускать nginx под wasm?
     
     
  • 2.10, Аноним (4), 18:55, 27/09/2018 [^] [ответить]    [к модератору]  
  • +/
    Чтоб вебсервер был ближе к кольцу 0.
     
  • 1.11, th3m3 (ok), 19:01, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Что-то я не совсем понял. Это будет очередной Electron в вакууме?
     
     
  • 2.13, Аноним (8), 19:09, 27/09/2018 [^] [ответить]    [к модератору]  
  • +3 +/
    Нет, теперь nginx будет запускаться в Electron
     
     
  • 3.33, th3m3 (ok), 23:25, 27/09/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    > Нет, теперь nginx будет запускаться в Electron

    Т.е. теперь мы к ним?

     
  • 3.34, Аноним (34), 23:51, 27/09/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    осталось запустить электрон в электроне
     
  • 1.14, Аноним (14), 19:10, 27/09/2018 [ответить] [показать ветку] [···]     [к модератору]  
  • +3 +/
    Для тех, кто не понял Это альтернатива юзерспейсным сетевым стекам И то, и дру... весь текст скрыт [показать]
     
  • 1.15, Аноним (15), 19:14, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +4 +/
    Подождите, не кмаменьтьте. Я воздушную кукурузу и свч печи достану.
     
     
  • 2.21, Аноним (8), 20:15, 27/09/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    > Подождите, не кмаменьтьте. Я воздушную кукурузу и свч печи достану.

    Уже можно?

     
  • 1.23, Аноним (23), 20:59, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Маразм крепчал...
     
  • 1.30, Аноним (30), 22:46, 27/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Жабаскриптерам стало обидно, что код сишников в ядре может крутица, а ихний - нет.
     
  • 1.35, AntonAlekseevich (ok), 00:23, 28/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Дальше ждать когда WebAssembly будет крутиться в внутри uefi-flash? (Добро пожаловать в мир где устройство обязано иметь доступ к полноценному интернету.)
     
     
  • 2.52, Александр (??), 23:25, 02/10/2018 [^] [ответить]    [к модератору]  
  • +/
    Не, у них там своя атмосфера. EFI Byte Code зовётся. Но суть в принципе та же.
     
  • 1.37, evkogan (?), 10:03, 28/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Не понимаю. Изначально wasm - это запуск C/C++ в браузере. Эта штука позволяет запускать wasm без браузера и даже как модуль ядра.
    Но зачем? Почему не запускать C/C++ просто скомпиленным и если надо, то как модуль ядра?
    И да запилить из NGINX модуль ядра наверняка можно и более простыми методами, без wasm.
     
     
  • 2.40, Аноним (40), 10:31, 28/09/2018 [^] [ответить]     [к модератору]  
  • +/
    В ядре уже есть eBPF webaassembly ещё одна виртуальная машина для ядра, не перв... весь текст скрыт [показать]
     
  • 1.38, Аноним (38), 10:09, 28/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Стоило только Линусу на месяцок отлучится, как _эти_ со своими бредовыми идеями налетели.
     
     
  • 2.43, Аноним (43), 15:04, 28/09/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Чует моё сердце, что Линус больше не вернётся.
     
     
  • 3.46, anonymous (??), 23:14, 28/09/2018 [^] [ответить]    [к модератору]  
  • +/
    Есть такое.
     
  • 1.39, Аноним (38), 10:23, 28/09/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    И почему бы, кому это реально хочется, просто не оформить существующий код nginx в виде модуля ядра?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor