LINUX.ORG.RU
ФорумTalks

В Linux появился способ обойти системные вызовы, просто превратив процессы в библиотеки

 


0

8

Было 19 000 тактов. Стало 1 700. Это вообще нормально?

Инженеры Bytedance представили новый способ ускорения взаимодействия между процессами (IPC) в Linux, который они назвали RPAL — Run Process As Library («Запуск процесса как библиотеки»). Идея заключается в том, чтобы один процесс мог вызывать другой так, как будто это обычная функция в памяти, без участия ядра операционной системы. По их словам, это позволяет существенно повысить производительность и снизить нагрузку на CPU.

Классический IPC в Linux, включая сокеты и системные вызовы, часто становится узким местом в высоконагруженных системах. RPAL предлагает другой подход: минимизировать копирование данных, избегать переключений контекста ядра и при этом не требовать серьёзных изменений в коде приложений. По сути, это способ превратить отдельный процесс в библиотеку, которую можно вызвать напрямую, как обычную функцию.

Первичные тесты, проведённые Bytedance, показывают внушительный прирост производительности. В одном из экспериментов клиент передал миллион сообщений по 32 байта. При использовании обычного подхода на каждое сообщение тратилось в среднем 19 616 тактов процессора. С RPAL задержка снизилась до 1 703 тактов — это более чем 91% ускорения.

Кроме того, в реальных сценариях в дата-центре RPAL позволил снизить загрузку CPU до 15,5% за счёт уменьшения системных вызовов и более эффективного управления памятью. Особенно значимый вклад дала возможность делить адресное пространство между процессами, что сократило количество копий данных.

Однако у технологии есть ограничения. RPAL требует поддержки аппаратной функции Memory Protection Key (MPK), доступной на современных процессорах Intel и AMD Zen 4 и новее. Bytedance заявляет, что в будущем RPAL может работать и без MPK, но пока эта возможность только в планах.

Исходные патчи и RFC для внедрения RPAL уже опубликованы, и любой желающий может ознакомиться с кодом и предложениями Bytedance. Новая модель IPC выглядит как потенциальный шаг вперёд для Linux-систем, особенно в области высокопроизводительных микросервисов и систем реального времени.

https://www.securitylab.ru/news/558942.php

https://lore.kernel.org/lkml/CAP2HCOmAkRVTci0ObtyW=3v6GFOrt9zCn2NwLUbZ+Di49xkBiw@mail.gmail.com/

Кто-нибудь уже использовал?

Возможно ли создать шелл с поддержкой данной технологии?



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

высокопроизводительных микросервисов и систем реального времени.

Как заковыристо они свой тикток называют…

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

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

pkeys aka mpk, там правда всего 4 бита, так что вероятность выстрела в ногу имеется

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

До 90 не получится. Налоговая нагрузка во всех странах, включая РФ, около 50%. Не путать с отдельными налогами, они могут разниться.

peregrine ★★★★★
()

всё новое - это хорошо забытое старое.

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

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

Iron_Bug ★★★★★
()

Чтобы проще было докладывать большому брату в обход самой системы

One ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)