URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 136314
[ Назад ]

Исходное сообщение
"Представлен TinyKVM для виртуализации на уровне отдельных процессов"

Отправлено opennews , 17-Мрт-25 13:17 
Компания Varnish Software, разрабатывающая системы для построения сетей доставки и  кэширования контента, представила открытый проект TinyKVM, развивающий инструментарий для изоляции выполнения отдельных процессов при помощи гипервизора KVM. Целью проекта заявлено создание самой быстрой системы sandbox-изоляции отдельных процессов, использующей аппаратную виртуализацию. Код проекта написан на языках C и С++, и распространяется под лицензией GPLv3...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=62898


Содержание

Сообщения в этом обсуждении
"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено X512 , 17-Мрт-25 13:17 
Не понимаю зачем это нужно когда обычные процессы со своим адресным пространством и потоками -- это по сути и есть мини виртуальные машины.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 13:22 
Программы все еще работают слишком быстро. Надо срочно обвязать в новую прослойку.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено myster , 17-Мрт-25 13:55 
А мне это видится, как замена тормознутой и ужасной JVM.
Если в вебе уже есть WebAssembly, то это для бека неплохая замена Джаве.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено sena , 17-Мрт-25 14:56 
не понял, почему это замена Яве? это же просто ещё одна система виртуализации

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено myster , 17-Мрт-25 15:25 
Обе технологии - VM заточенные под процесс.
JVM через JNI позволяет запускать программы внутри свой VM на других языках, а не только Java-программы. Так что сходство у технологий есть.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 16:24 
у коровы и яишницы тоже есть сходство

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено myster , 17-Мрт-25 17:13 
нет, ты что, у коровы и яичницы гораздо меньше сходства.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 09:22 
как ты измерял?

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено myster , 18-Мрт-25 13:15 
на глаз

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 15:02 
> GPLv3 (для не готовых выполнять требования GPLv3 предоставляется коммерческая лицензия).

GPL прямо запрещает изенение или добавление любык пунктов к GPL лицензии а, значит и удаление их т.б.всех... хоть автором ПО.
Если они это игнрируют - они нарушиители GPL и закона.
Их исходный код под GPL - нелегален и пользователям...
Проект - максимувм в топку...


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено myster , 18-Мрт-25 15:30 
> GPL прямо запрещает изенение или добавление любык пунктов к GPL лицензии а,
> значит и удаление их т.б.всех... хоть автором ПО.

можно накрутить свой проприетарный код поверх открытого GPL кода, при условии, что вы не изменяете оригинальный код. Чем собственно пользуются многие российские дистрибутивы Linux, например, им это не мешает.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 22:00 
А они и не меняют GPL, они предоставляют под совершенно другой лицензией, что GPL запретить не может ни явно, ни неявно. Но раз ты уверен, что незаконно — подавай в суд, прославишься.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Антон , 17-Мрт-25 18:34 
Java через JNI запускает любой код за пределами VM.
Код на C или C++ или ассемблере может вмешаться и в память приложений.
И нарушить работу самой Java машины, деинсталлировать еë, и поставить Doom.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 00:57 
То есть мвхнуть рукой и начать играть в компьютерные игры? Нет, такой вариант плох, проходил. Впустую потрачено ценное жизненное время, а раз впустую значит в минус. Как минимум в минус, а с учётом какие бывают игры это ещё и вредно как просмотр фильмов ужасов.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Прохожий , 18-Мрт-25 02:35 
>Впустую потрачено ценное жизненное время

Вся ваша жизнь в глобальных масштабах не имеет никакого смысла. Также есть мнение, высказанное писателем Ричардом Бахом в одном из его произведений: "Мы пришли в эту жизнь ради двух вещей: обучение и получение удовольствий". Я к тому, что время, проведённое за играми, вполне себе имеет смысловое наполнение с такой точки зрения.


>вредно как просмотр фильмов ужасов

Где-то читал, что просмотр фильмов ужасов наоборот полезен может быть. Так что и здесь вы неправы.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено тоже Аноним , 18-Мрт-25 09:21 
Не в одном, а в трех как минимум.
И Бах не давал оправданий растительной жизни, он предлагал задавать себе вопросы.
Например, "ну и чему ты научился, потратив годы на задрoтство?"...

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено аролп5 , 18-Мрт-25 14:50 
Нет, jni работает внутри ОС, а не в jvm

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено myster , 18-Мрт-25 15:22 
Спасибо. Я как свинья в апельсинах в java.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено день открытых дверей , 18-Мрт-25 19:51 
Справедливости ради jni уже далеко не первый год как не исползуется. Так что все рассуждения про него явно устарели.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Анонизмус , 17-Мрт-25 14:21 
Нет, KVM обеспечивает лучшую изоляцию. KVM минимально вмешивается в работу нагрузки и он построен на хардварных методах виртуализации, поддерживает шифрование памяти, лучше производительность для сложных нагрузок. Namespaces и cgroups же это полностью программная виртуализация, больше накладные расходы, и отсюда же большая уязвимость. Ну и самое главное неправильно настроенные контейнеры могут стать огромной дырой в безопасности, с KVM практически не возможно ошибиться из-за большей простоты.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено sena , 17-Мрт-25 14:57 
Непонятно, зачем изолировать отдельный процесс. Можно конкретный пример из обычной жизни, но толкьо без экзотики.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Incorporated , 17-Мрт-25 15:09 
"системы для построения сетей доставки и кэширования контента" - для этого и пилят. DRM?

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 15:15 
Какие вы неграмотные вещи пишете...

Cgroups и namespaces вообще не имеют никаких накладных расходов, это просто ещё один int в таблице процессов.

И виртуализацией они тоже не являются ни в каком виде.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Wwwww , 17-Мрт-25 19:15 
Дополню, при трансляции виртуального адреса в физический в виртуальной машине сначала адрес транслируется через 4-ре таблицы в виртуальной машине, а затем полученный адрес транслируется снова через 4-ре таблицы, но уже на хосте. Рост накладных расходов не просто в два раза, а в разы. Конечно в CPU есть ITLB1, DTLB1 и т.п. для кеширования адреса к которому часто обращаются, но чем больше виртуалок тем бестрее кеш "выедается" и всё это всё больше и больше тормозит.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Анон12345 , 17-Мрт-25 19:22 
> Cgroups и namespaces вообще не имеют никаких накладных расходов, это просто ещё один int в таблице процессов.

И правда:

> Какие вы неграмотные вещи пишете...


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено anonymous , 17-Мрт-25 19:20 
Накладые расходы как раз много меньше.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено freehck , 18-Мрт-25 08:38 
> Namespaces и cgroups же это полностью программная виртуализация, больше накладные расходы

Сомнительный тезис. Они реализованы в ядре. Расходы вроде быть примерно одинаковые.
Как бы, вы ж в KVM тоже что-то запустите ведь, и это что-то должно будет тоже с железом взаимодействовать как-то.
В связи с этим:

> лучше производительность для сложных нагрузок

Поискал сравнение перформанса между kvm/skvm/tkvm и ns+cg, не нашёл толком.
Если у вас есть аналитика на эту тему, я был бы признателен.

> с KVM практически не возможно ошибиться из-за большей простоты

ну кстати да, вероятно


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 19-Мрт-25 18:18 
> Поискал сравнение перформанса между kvm/skvm/tkvm и ns+cg, не нашёл толком.

Про docker то скорее всего слышали? ns+cg - это те самые контейнеры. И их сравнение с kvm найти уже никакой проблемы не составляет.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено freehck , 19-Мрт-25 18:24 
Окей, окей, лишнего написал. Конечно же интересует именно что skvm/tkvm.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 14:23 
там же написано. всякие ограничения, можешь заморозить\восстановить состояния. в целом нужно для запуска приложений, которым не доверяешь.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено sena , 17-Мрт-25 14:59 
> в целом нужно для запуска приложений, которым не доверяешь.

То есть это будет конкурент для  flatpak и snap?


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноньимъ , 17-Мрт-25 20:33 
Они Erlang изобрели?

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Соль земли , 17-Мрт-25 16:22 
Твои проблемы, если не понимаешь. Такого ответа ещё было. Пользуйся.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено HyC , 17-Мрт-25 13:41 
Сперва всю изоляцию с сегментной адресацией и тремя уровнями привилегий загнали в плоское адресное пространство и два уровня привилегий, поделив это друг от друга только страничным механизмом, героически сделали этот горбыль легаси, теперь стали изобретать этот велосипед обратно.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено mma , 17-Мрт-25 19:18 
>Сперва всю изоляцию с сегментной адресацией и тремя уровнями привилегий

От первого ушли вприпрыжку и без сожаления. Забавно было бы посмотреть как надо изгаляться на 16Гб с сегментной адресацией.

А последним и так не пользовались, слишком высоки накладные расходы, хотябы на переключение контекстов.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 08:20 
Какие проблемы создать сегмент на 48бит адресного пространства?

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


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 20:09 
> Какие проблемы создать сегмент на 48бит адресного пространства?

А толку? Вот какой глубинный смысл в этом?

Страницы позволяют создавать виртуальное адресное пространство которое отображается на физическое не линейно с гранулярностью в размер страницы. То есть последовательные страницы не обязательно отображаются на последовательные физические адреса. Это хорошо и удобно, потому что позволяет маппинг памяти, со всеми фишками типа shared memory и swapping. Эти вещи не противоречат сегментам, но для того чтобы иметь сегменты, которые так могут мапится на физическую память, всё равно придётся создавать таблицы страниц, которые будут задавать отображение. Отсюда вопрос: в чём тогда смысл создания сегментов?


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено fidoman , 18-Мрт-25 15:59 
Слишком высоки, неужто даже больше, чем

"Накладные расходы на вызов каждого системного вызова составляют около 2 микросекунд."

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


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Neon , 18-Мрт-25 06:27 
Сегменты еще со времен x8086 всех достали

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 13:51 
> разрабатывающая системы для построения сетей доставки и кэширования контента

Интересно, как они собираются зарабатывать с такой-то лицензией.

> Код проекта написан на языках C и С++

Жду новостей "выполнение кода за пределами гостевой системы из-за выхода за пределы буфера"))


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Онанимус , 17-Мрт-25 14:24 
Тоже про c и c++ в самом начале новости так подумал и увидел твой коммент. Тут почти каждая первая новость про уязвимость связана с переполнением буфера.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 14:31 
Как и многогие другие комерсы - двойным лицензированием. Они собственники этого кода, поэтому так могут.
"Licensing
TinyKVM and VMOD-TinyKVM are released under a dual licensing model:

Open Source License: GPL‑3.0 (see LICENSE).
Commercial License: Available under terms controlled by Varnish Software."


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 14:51 
Ну тогда это следовало бы отразить в новости)
А то слегка вводит в заблуждение.

ps отправил запрос на изменение новости


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 17:23 
> Интересно, как они собираются зарабатывать с такой-то лицензией.

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


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 01:10 
>> Интересно, как они собираются зарабатывать с такой-то лицензией.
> При помощи двойного лицензирования

SaaS-овец (т.е. владелец "сети доставки") вообще может взять хоть прям "под GPL" - он же бинарник все равно только на своих мощностях крутить будет, т.е. сорцы и доработки никому "отдавать" не обязан.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено ананим.orig , 17-Мрт-25 17:31 
>> разрабатывающая системы для построения сетей доставки и кэширования контента
> Интересно, как они собираются зарабатывать с такой-то лицензией.

Зарабатывать с сетей доставки и с кода для сетей доставки - разные вещи.

>> Код проекта написан на языках C и С++
> Жду новостей "выполнение кода за пределами гостевой системы из-за выхода за пределы буфера"))

А что вам ещё остаётся то?
kvm то давно в ведре.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено onanim , 17-Мрт-25 14:37 
> TinyKVM runs static Linux ELF programs.

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


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено myster , 17-Мрт-25 15:40 
Тут ответ, хоть и про другую систему и технологию пишут
https://www.qubes-os.org/faq/#why-is-os-security-important

Идея в том, чтобы ОС не была коммунальной квартирой, а была изолированной, для программ.

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


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 17:10 
> чтобы ОС не была коммунальной квартирой, а была изолированной, для программ.

кольца защиты и страничная трансляция это всегда делали. Дак что именно сабж предложил?


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 17:27 
> что именно сабж предложил?

Удобный и доступный интерфейс для всего этого. Это куда важнее языка реализации и использованных технологий.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено nuclight , 19-Мрт-25 11:41 
Покусанный дизайнерами? Технологии как раз важнее, интерфейс можно навертеть какой угодно.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 15:01 
Ура, Товарищи! То что я более 10 лет назад сформулировал как "нужно сделать" - сделали (вообще-то сделали раньше, но QEMU для юзерспейса вообще не создавался как песочница).

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 15:25 
Сформулировал, а потом 10 лет лежал на диване в ожидании? Бока не намял?

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 15:43 
Он не мял бока и с телевизором разговривал, а разговаривал с Ним и формулировал то, что жалкие людишки сделают через 100, 1000 и даже 1_000_000 лет. Такой вот он скромный и незаметный прыщ-труженик.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 20:16 
Как радостно, что есть люди, способные это понять, и в то же время как грустно, что понял именно ты и что теперь тебя придётся убрать...

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 17:21 
Просто системное программирование - не мой профиль. Но ежу понятно - для сандбоксинга надо:
1. порвать любую прямую связь программы с ОС
2. в непрямую связь вставить агрессивный фильтр

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

Отсюда простой вывод: с появлением аппаратной виртуализации ring 2,3 изжили себя. Ограничения на инструкции? Зачем, если можно каждой программе по своему ring 0 выдать. Ограничения на доступ к памяти? Зачем, если можно каждому процессу всё полностью своё адресное пространство выдать.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 15:01 
>В самой виртуальной машине не используются какие-либо драйверы, ввод/вывод и виртуальные устройства.

Надо понимать, что процессы внутри этой ВМ не смогут писать логи - IO отсутствует.
Это решение для повышения безопасности? Я не ослышался?


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 15:17 
Можно писать логи в сокет, видимо.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 15:26 
логи не повышают безопасность. особенно когда их никто не читает

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 16:12 
>логи не повышают безопасность

Настоящее икспертное мнение.
>особенно когда их никто не читает

Почитай в википедии про SIEM


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 16:23 
Логи сами себя на анализируют. SIEM - это уже не логи.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 15:02 
На сишке песочница? Это же как бэкдор в firewall.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 17-Мрт-25 15:21 
Я почитал блог и глянул исходник.

Это не песочница. Это просто stepping stone для TEE, смысл простой: засовывается любая обычная ELF-программа в TEE без всякого геморроя с анклавами, и их API - это всё на себя берёт TinyKVM. Просто на данном этапе TEE не реализовано.

Фильтра IO нет никакого. Это не для безопасности хоста от вредоносных приложений делалось. Это делается для "защиты" приложений от хостера. В кавычках - потому что держится такая "защита" на честном слове. Надо будет поломать очередной силк - просто придут к Intel - и аттестация будет подделана для конкретной физической машины - той, что у хостера стоит), когда быдло будет продолжать отведывать DеRьMа и наслаждаться им.

Для безопасности от хостера - только гомоморфная криптография.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено YetAnotherOnanym , 17-Мрт-25 18:43 
> Накладные расходы на вызов каждого системного вызова составляют около 2 микросекунд

Это считается мало?


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Ivan7 , 17-Мрт-25 18:44 
Зачем это в реальной жизни???

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено qwertKI , 17-Мрт-25 21:54 
... вот тоже ничего не понял ... " Вы можете взять обычную программу Linux, которую вы только что создали в своем терминале, и запустить ее в TinyKVM. " ... зачем ... зачем мне все это ... моей машиной управляет комп с линукс на борту , в моем телефоне линукс ( виртуализация на линукс ОС) на работе у меня ноут с Ubuntu , дома комп с Ubuntu ... меня все устраивает ... это куда ... может нужно научиться делать правильный выбор в начале ... ??? ... можно добавить SmartTV + Android Box и конечно же стиралка ... ... TinyKVM остался без работы ... и потом в терминале я могу наваять на скорую руку скрипт ... к чему из выше описанного его прикручивать ?



"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 02:50 
затем же, зачем и кубесОС

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено 12yoexpert , 17-Мрт-25 21:16 
> для не готовых выполнять требования GPLv3 предоставляется коммерческая лицензия

как это обычно работает, если в проект контрибьютили сторонние люди? они не имеют права на часть прибыли от продаж коммерческой лицензии?


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 00:53 
Они подписали передачу имущественных прав перед тем, как их коммит приняли и никаких прав на прибыль не имеют.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено 12yoexpert , 18-Мрт-25 11:32 
это в GPL такое написано? как подпись происходит и почему владелец репы не подписывал? он ведь такой же коммитер

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено slavanap , 18-Мрт-25 06:17 
Hugepage же обычно с 64кБ страницами используется, разве нет?

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено PnD , 18-Мрт-25 21:03 
# grep Hugepagesize /proc/meminfo
Hugepagesize:       2048 kB

В принципе, должно зависеть от CPU. Но практически всегда (x86_64, arm64) — вот так:
# hugeadm --page-sizes-all
2097152
1073741824

Или 2МБ (по умолчанию), или 1ГБ (не сталкивался с применением).


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 18-Мрт-25 09:56 
>Основные возможности TinyKVM:
>Ограничение потребления памяти.

Интересно как. Современный софт не умеет ограничивать себя в потреблении памяти, hello world на go требует для своего запуска 1 Гб виртуальной памяти, на меньшем падает. А после того, как виртуальная память выделена, процесс может её сколь угодно много занимать, единственный вариант для борьбы с этим - убийство процесса.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено fidoman , 18-Мрт-25 16:06 
Ну да, ведь без KVM ОС никак не может узнать, сколько памяти процесс потребляет.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 19-Мрт-25 11:38 
Давайте, расскажите, как это сделать, с учётом overcommit-а, а так же того, что большая часть софта выделяет памяти на порядок больше, чем использует. Тот же go выделяет 1 Гб виртуальной памяти сразу же, даже если запускается буквально hello world.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено fidoman , 20-Мрт-25 18:36 
Что именно рассказать? Что ОС "забыла" сколько страниц на физическую память отмапила?

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 21-Мрт-25 09:42 
Какие варианты кроме убийства процесса с возможной порчей файлов вы можете предложить? Надеюсь, вы знаете, что даже запись в массив может привести к выделению новых страниц в физической памяти?

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено fidoman , 21-Мрт-25 12:58 
> Какие варианты кроме убийства процесса с возможной порчей файлов вы можете предложить?
> Надеюсь, вы знаете, что даже запись в массив может привести к
> выделению новых страниц в физической памяти?

Ну так RTFM

ps ax -o pid,user,args,vsz,rss,uss

Внезапно, page fault, который происходит при записи в неотмапленную страницу, обрабатывается тоже ОС, а не какими-нибудь волшебными феями.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 21-Мрт-25 14:29 
>Внезапно, page fault, который происходит при записи в неотмапленную страницу, обрабатывается тоже ОС

Вот есть какой-то цикл на псевдокоде.
int * arr = malloc(big_size * sizeof(int));
for (size_t i = 0; i < big_size; i++) {
    arr[i] = 0;
}
Вот на arr[i] = 0; памяти ещё хватало, а вот на arr[i++] = 0 - уже нет. Как сообщить об этом процессу, чтобы он мог это обработать, и самое главное, почему он должено обрабатывать эту ситуацию, а не int * arr = malloc(big_size * sizeof(int))?


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено fidoman , 21-Мрт-25 15:40 
Ваш вопрос понятен, но будьте справедливы - в новости указано "ограничение потребления памяти", что можно сделать и через cgroups, а не "гарантия доступности физической памяти", что действительно проще сделать виртуалкой. Кстати, и не факт, что с KVM это сработает - если в Hyper-V физическая память на виртуалку нарезается сразу, то насчёт KVM я не уверен.

Так что простого решения нет, только mlock + инициализация.
Ну oom_score_adj.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено PnD , 18-Мрт-25 21:29 
Ближе к 1ГБ виртуальной. Которая вообще по фигу. "Обещать — не значит жениться."
И в районе 10МБ резидентной. Которую можно (жёстко) ограничить, посадив процесс в memory c-group.
И если RSS хоть на байт выбежит за лимит, к процессу придёт всамделишный OOM-киллер.
Мне не очень нравится такой трюк. Но у соседей в "кубиках" некие вопросы решаются именно так.

…С другой стороны, 20кБ-фитюлька с буквально четырьмя syscall'ами на сях (вывод кой-чего на консоль). На свою миллисекундную работу (буквально, 3мс запустился-показал сотню vlan-всё) жрёт 1.5 МБ RSS в моменте. "640 килобайт хватит всем", ага.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Аноним , 19-Мрт-25 11:53 
>Которая вообще по фигу. "Обещать — не значит жениться."

Нет. Вот есть вызов malloc, запрашивающий 10 Гб памяти. Без оверкоммита он вернёт либо указатель, если память есть, либо null, если памяти нет, что уже можно обработать в коде. С оверкоммитом он всегда вернёт указатель, которым уже можно начинать пользоваться. Если это массив, то при его заполнении память начнёт постепенно уходить, и размер резидентной начнёт приближаться к размеру виртуальной. И в тот момент, когда закончаться свободные страницы в физической памяти либо придёт oom, либо система просто зависнет. С точки зрения процесса совершенно непонятно, почему для a[i] = v; память есть, а для a[i + 1] = v; уже нет
>И в районе 10МБ резидентной. Которую можно (жёстко) ограничить, посадив процесс в memory c-group.

При этом ограничении процесс просто упадёт, побив данные. Файлы в кеше останутся не удалёнными, файлы в процессе работы останутся частично записанными.
>И если RSS хоть на байт выбежит за лимит, к процессу придёт всамделишный OOM-киллер.

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

А мне это не нравится совсем
>С другой стороны, 20кБ-фитюлька с буквально четырьмя syscall'ами на сях

Как хорошо, что в 2025 году можно запускать софт на 20 Кб, как и в 90-ых


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено pda , 18-Мрт-25 13:47 
cow2 это новый elf... :-/

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено fidoman , 18-Мрт-25 16:04 
Это рано или поздно должно было произойти, низведение виртуализации до того, что должно было обеспечиваться механизмами защищённого режима.
А когда и kvm издырявят окончательно ради того, чтобы эта дичь нормально работала, очевидно интел/амд анонсируют ещё более крутую какую-нибудь метавиртуализацию/партишны/ещё что-нибудь и начнётся следующий круг.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено вымя , 18-Мрт-25 20:35 
> Это рано или поздно должно было произойти, низведение виртуализации до того, что
> должно было обеспечиваться механизмами защищённого режима.

Побег двойным chroot, неаккуратная работа docker с namespaces и ошибки в самой реализации namespaces, уязвимости в невидии и io_uring — это всё, по-вашему, из-за одного адресного пространства на всех, что ли? Вылезайте из 1989-го, у современных ядер attack surface огого.


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено fidoman , 20-Мрт-25 18:39 
Одно адресное пространство на всех? А вы точно уверены насчёт того, кто именно в 1989?

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено вымя , 20-Мрт-25 22:57 
> Одно адресное пространство на всех? А вы точно уверены насчёт того, кто
> именно в 1989?

Ну а кто из нас в начале треда пишет про то, что защищённый режим — панацея от всего, забывая о других видах уязвимостей?


"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено fidoman , 21-Мрт-25 12:34 
Вы точно уверены, что там так и было написано - "панацея от всего"?
Речь о совершенно обратном, что если напихивать в kvm фишки для интеграции виртуализованного процесса в хост ОС (а их будут напихивать, потому что hello world это одно, а нормальный процесс со всеми доступами к fs, ipc и т.д. это уже совсем другое), от защиты, которую даёт виртуализация не останется ничего.

"Представлен TinyKVM для виртуализации на уровне отдельных пр..."
Отправлено Ддд , 18-Мрт-25 23:04 
Тут походу никто не понял что это аппаратная виртуализация ради надежности но вместо гостевой ОС  все вызовы идут в хост ОС. Так понятнее?  И не нужно плясать с докером и lxd