Hibernate для приложений
От: maks1180  
Дата: 11.06.24 22:17
Оценка:
Настроил я у себя функцию Hibernate в Linux.
Я подумал, что было бы удобно если я NMVe диск вынесу из корпуса компа через USB переходник (т.е. диск размером с флешку получится). Linux нормально грузиться с такого диска, проверял.
Потом это диск воткну например на работе в другой комп и продолжу работать.
Но думаю, что будут проблемы, так ? Если железо другое, то другие драйвера должны быть в памяти ?
А если одинаковые компы, будут ли проблемы ? Например мак адреса у них всё равно разные и другие id могут отличатся.

Было бы классно, если был бы Hibernate только для приложений (речь идёт о браузере, офисные приложение, терминалы, среда разработки).
Т.е. всю память выделенную для приложений мы сохраняем в файл, а ядро нет, ядро загружаем каждый раз заново.
Может уже есть такое решение ?
Если нет, насколько сложно его реализовать ?
Ведь из ядра нужно сохранить все открытые дескрипторы, которые приложение держит.
===============================================
(реклама, удалена модератором)
Отредактировано 11.06.2024 22:18 maks1180 . Предыдущая версия .
Re: Hibernate для приложений
От: cppguard  
Дата: 12.06.24 00:37
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Может уже есть такое решение ?

M>Если нет, насколько сложно его реализовать ?
M>Ведь из ядра нужно сохранить все открытые дескрипторы, которые приложение держит.

Виртуальная машина с аппаратным ускорением. Только образ будет тем дольше записываться, чем больше объём памяти у образа VM. Будет небольшая потеря производительности, но если оно того стоит (вместо обычного ноутбука), то должно окупиться.
Re[2]: Hibernate для приложений
От: maks1180  
Дата: 12.06.24 00:55
Оценка:
C>Виртуальная машина с аппаратным ускорением. Только образ будет тем дольше записываться, чем больше объём памяти у образа VM. Будет небольшая потеря производительности, но если оно того стоит (вместо обычного ноутбука), то должно окупиться.

Пользуюсь VMWare, когда host был Windows 10, то нормально работал, когда host = Linux Mint, то часто начинает тормозить (помогает только перезагрузка хоста), то иногда вообще зависает.

Не уверен, что "Виртуальная машина с аппаратным ускорением" можно восстановить на хосте с другим железом. Уверен что если проц различного производителя Intel и AMD то точно не выйдет !
===============================================
(реклама, удалена модератором)
Re: Hibernate для приложений
От: m2user  
Дата: 12.06.24 03:30
Оценка: +1
Что-то типа CRIU (https://criu.org).
Т.е. замораживать контейнер, и ОС потом в shutdown.

P.S. CRIU на практике не использовал.
criu
Re: Hibernate для приложений
От: Pzz Россия https://github.com/alexpevzner
Дата: 12.06.24 10:13
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Было бы классно, если был бы Hibernate только для приложений (речь идёт о браузере, офисные приложение, терминалы, среда разработки).

M>Т.е. всю память выделенную для приложений мы сохраняем в файл, а ядро нет, ядро загружаем каждый раз заново.
M>Может уже есть такое решение ?

Технически, оно есть. Есть же миграция процессов в облаке с машинки на машинку.

Там, кстати, не только память надо сохранить, но открытые файлы, соединения, открытые окна, весь контекст. Который часто не в ядре, а в других user space программах.

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

Из очевидно слабых мест, состояние какого-нибудь фиревокса или либреофиса, оно большое. Боюсь, будет какое-то заметное время на диск записываться. По сравнению с тем, что "захлопнул крышку ноутбука и готово", будет непривычно и будет раздражать.
Re[3]: Hibernate для приложений
От: cppguard  
Дата: 14.06.24 00:17
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Не уверен, что "Виртуальная машина с аппаратным ускорением" можно восстановить на хосте с другим железом. Уверен что если проц различного производителя Intel и AMD то точно не выйдет !


Под аппаратным ускорением я понимаю поддержка инструкций VMX. А образы отлично запускаются на совместимых платформах. На торрентах часто выкладывают приложения для диагности автомобилией в виде образов VM.
Re[4]: Hibernate для приложений
От: m2user  
Дата: 14.06.24 02:24
Оценка: +1
M>>Не уверен, что "Виртуальная машина с аппаратным ускорением" можно восстановить на хосте с другим железом. Уверен что если проц различного производителя Intel и AMD то точно не выйдет !
C>Под аппаратным ускорением я понимаю поддержка инструкций VMX. А образы отлично запускаются на совместимых платформах. На торрентах часто выкладывают приложения для диагности автомобилией в виде образов VM.

Так они запускаются не из suspend`а, как хочет ТС, а из shutdown`а.
Если ты увёл VM в suspend, то выводить обратно нужно на совместимых vCPU и версии гипервизора.
См. 14.16.3. Determining a Compatible CPU Model to Suit a Pool of Host Physical Machines

The more common case, though, is where there is variation in CPUs between host physical machines. In this mixed CPU environment, the lowest common denominator CPU must be determined.
This is not entirely straightforward, so libvirt provides an API for exactly this task. If libvirt is provided a list of XML documents, each describing a CPU model for a host physical machine,
libvirt will internally convert these to CPUID masks, calculate their intersection, and convert the CPUID mask result back into an XML CPU description.

https://qemu-project.gitlab.io/qemu/system/qemu-cpu-models.html
https://www.libvirt.org/manpages/virsh.html#cpu-baseline

Compute baseline CPU which will be supported by all host CPUs given in <file>.

Re: Hibernate для приложений
От: Буравчик Россия  
Дата: 14.06.24 05:27
Оценка:
Здравствуйте, maks1180, Вы писали:


M>Было бы классно, если был бы Hibernate только для приложений (речь идёт о браузере, офисные приложение, терминалы, среда разработки).


Вот проект похожий — cryopid. Заброшен
https://www.opennet.ru/prog/info/3323.shtml
Best regards, Буравчик
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.