После шести месяцев разработки опубликован выпуск инструментария CRIU 4.2 (Checkpoint and Restore In Userspace), предназначенного для сохранения и восстановления процессов в пространстве пользователя. Инструментарий позволяет сохранить состояние одного или группы процессов, а затем возобновить работу с сохранённой позиции, в том числе после перезагрузки системы или на другом сервере без разрыва уже установленных сетевых соединений. Код проекта написан на языке Си и распространяется под лицензией GPLv2. CRIU применяется в таких системах управления контейнерами, как OpenVZ, LXC/LXD и Docker. Необходимые для работы CRIU изменения включены в основной состав ядра Linux...Подробнее: https://www.opennet.me/opennews/art.shtml?num=64248
Использую в продуктивной системе, здоровья проекту!
продуктовой (с) тех-лид ВТБ
Попробовал. Хм...Джава-стек сумело корректно сохранить и восстановить
А чего там восстанавливать? Только с видеокартами были сложности. Лучше расскажи, какое практическое применение есть? Я могу придумать только продолжительный рендер без возможности прервать и срочное обновление.
На старых версия не всегда корректно работал с большим количеством JNI-вызовов, ведь должны захватываться и они.
> Лучше расскажи, какое практическое применение есть?Рендер, расчеты.
На билдферме может выполняться сборочный процесс.
Иногда просто нежелательно тушить процесс
Сборка Раста.
>без разрыва уже установленных сетевых соединенийЭто невозможно. Другая сторона в сетевом соединении увидит разрыв. Если есть данные прикреплённые к сессии, то они сбросятся.
Другая сторона только отвалится по таймауту. Если не успеет, то всё будет как будто у нас тут небольшой свопинг приключился.
Там специальные подпорки в ядре, позволяющие реконструировать внутреннее состояние сокета без использования вызовов сокетного апи, поэтому сокет будет восстановлен точно в том же состоянии, и если удалённая сторона не затаймаутилась - то она ничего не заметит, закрытия сокета и посылки FIN не происходит, а после разморозки трафик едет дальше, как ни в чём не бывало.
> после разморозки трафик едет дальше, как ни в чём не бывало.даже через неделю?
Через неделю-то тайаут произойдёт. Но если только та сторона тоже решила заморозиться, то и через месяц.
> Устранено целочисленное переполнение в функции pagemap_len()А вот это типично сишная проблема. Многие тупо не парятся и везде пишут int, когда даже стандартом не определено, сколько точно байтофф оно занимает, ибо architecture dependent. Про знаковые/беззнаковые вообще молчу. А использовать всякие uint32_t не хотим, это ненужное ненужно.
Даже в расте такой номер не пройдет, если только специально не поиздеваться.
Понравилась цитата защищавшего расто-операторов, суну сюда: "Это вы себе что-то придумывете. А люди обучаются, исправляют ошибки, получают знания и удовольствие."
> А вот это типично сишная проблема.Бред сивой кобылы. Такое возможно в любом ЯП, где целые занимают фиксированный размер в памяти. Ржа тоже вполне себе подвержена ошибкам из-за выхода за допустимый диапазон значений.
Забавно, ржавозависимые при каждом баге в растокоде упрекают всех, что от их драгоценной ржи требуют чего-то, чего ржа не обещала, но сами не могут определиться с тем, чего же она все-таки обещала ;)
Ржавчина использует для подобных вещей везде isize/usize, и не позволяет неявных конверсий между ним и intВ то время как в сишке для совместимости везде int и грабли
эту штуку могли бы использовать в proxmox для живой миграции контейнеров lxc