|
|
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Часто возникает вот такая задача: --------------------------- 1) остановить процесс: посылаем просто сигнал SIGSTOP 2) сделать дамп памяти в файл 3) убить процесс ------------------------- 4) востановить из файла процесс 5) послать сигнал SIGCONT 6) процесс продолжает свою работу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 02:13:08 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Имхо, такое невозможно отдельно от всей ОС. Ибо что делать с открытыми сокетами, файлами, межпроцессным взаимодействием и т.п ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 13:31:39 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Если возможно востановить структуры ядра, которые отвечают за сокеты, файлы и т.д., то возможно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 22:38:11 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
FeniksaЕсли возможно востановить структуры ядра, которые отвечают за сокеты, файлы и т.д., то возможноа что толку их восстанавливать, если остальные процессы уже закрыли свои сокеты, стерли файлы, отмонтировали сетевые диски? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2008, 22:46:26 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Может, вам подойдет какая-либо из виртуальных машин, например, vmware? Тогда можно будет под ваш процесс выделить отдельный экземпляр ОС и останавливать/запускать вместе с этим экземпляром ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 00:10:09 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
ИМХО, проще в само приложение добавить возможность сохранять свое состояние, а потом его восстанавливать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 00:16:58 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
miksoftа что толку их восстанавливать, если остальные процессы уже закрыли свои сокеты, стерли файлы, отмонтировали сетевые диски? В данном вопросе я с вами не согласен. Да, есть вероятность, что процесс или ресурс могут быть либо заняты либо вообще недоступны. Но межпроцессное взаимодействие отлично умеет обрабатывать такого рода ошибки. С другой стороны, если файл, к которому был открыт дескриптор, был удалён, то наш процесс коректно (как правило), обработает данную ошибку. Но это все крайности, так как изначально задача была в том, что все ресурсы будут доступны для правильного продолжения процесса. miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware? нет, это не рационально и глупо Белый КотИМХО, проще в само приложение добавить возможность сохранять свое состояние, а потом его восстанавливать. если бы была возможность переписать ВЕСЬ софт, то можно так сделать :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 03:41:08 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
взять gdb, открыть им корку и посмотреть стек вызовов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 09:16:53 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Feniksa miksoftа что толку их восстанавливать, если остальные процессы уже закрыли свои сокеты, стерли файлы, отмонтировали сетевые диски? В данном вопросе я с вами не согласен. Да, есть вероятность, что процесс или ресурс могут быть либо заняты либо вообще недоступны. Но межпроцессное взаимодействие отлично умеет обрабатывать такого рода ошибки. С другой стороны, если файл, к которому был открыт дескриптор, был удалён, то наш процесс коректно (как правило), обработает данную ошибку. Но это все крайности, так как изначально задача была в том, что все ресурсы будут доступны для правильного продолжения процесса.Так дело не только в потенциальном исчезновении файлов или закрытии сокетов. Дело в том, что вы не сможете гарантировать неизменность всего окружения процесса в течение времени. Например, к моменту возобновления работы вашего процесса другим процессам могут быть выданы ресурсы (те же сокеты) под теми номерами, которые использовались в вашем процессе. Как вы предполагаете разрешать такую коллизию? Шанс, что не изменится ничего критичного, наверное, есть. Но гарантии-то нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 09:34:27 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware?нет, это не рационально и глупоИзложите всю задачу целиком, а не то, каким способом вы хотите ее решить. Тогда, возможно, у кого-то найдется решение, которое не покажется вам глупым. А пока мне кажется глупой постановка задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 09:37:06 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware? нет, это не рационально и глупо Вот как раз вариант с виртуальной машиной - самый рациональный из предложенных. Запускаете на виртуалке всю Вашу инфраструктуру, а по необходимости "приостанавливаете" работу виртуальной машины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 11:53:52 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Белый Кот Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware? нет, это не рационально и глупо Вот как раз вариант с виртуальной машиной - самый рациональный из предложенных. Запускаете на виртуалке всю Вашу инфраструктуру, а по необходимости "приостанавливаете" работу виртуальной машины. гениально! и че с ней делать после остановки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 11:56:04 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Умаксуман Белый Кот Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware? нет, это не рационально и глупо Вот как раз вариант с виртуальной машиной - самый рациональный из предложенных. Запускаете на виртуалке всю Вашу инфраструктуру, а по необходимости "приостанавливаете" работу виртуальной машины. гениально! и че с ней делать после остановки? Продолжить выполнение с места остановки. Мало того, VirtualBox допустим, позволяет делать снапшоты по ходу работы:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 12:51:34 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
miksoft Feniksa miksoftМожет, вам подойдет какая-либо из виртуальных машин, например, vmware?нет, это не рационально и глупоИзложите всю задачу целиком, а не то, каким способом вы хотите ее решить. Тогда, возможно, у кого-то найдется решение, которое не покажется вам глупым. А пока мне кажется глупой постановка задачи. +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 12:58:49 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
nik_x Продолжить выполнение с места остановки. Мало того, VirtualBox допустим, позволяет делать снапшоты по ходу работы:) Да это ежу понятно, что продолжить. а что за снапшоты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 13:04:42 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Умаксуман nik_x Продолжить выполнение с места остановки. Мало того, VirtualBox допустим, позволяет делать снапшоты по ходу работы:) Да это ежу понятно, что продолжить. а что за снапшоты? With VirtualBox’s snapshots, you can save a particular state of a virtual machine for later use. At any later time, you can revert to that state, even though you may have changed the VM considerably since then. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2008, 16:38:27 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
nik_x Умаксуман nik_x Продолжить выполнение с места остановки. Мало того, VirtualBox допустим, позволяет делать снапшоты по ходу работы:) Да это ежу понятно, что продолжить. а что за снапшоты? With VirtualBox’s snapshots, you can save a particular state of a virtual machine for later use. At any later time, you can revert to that state, even though you may have changed the VM considerably since then. А конкретнее? Он может показать стек вызовов? Или просто дает распечатку регистров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 09:26:50 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
У вас тут возникает такой страшный сырбор из-за простого вопроса. Чтобы ответить на данный вопрос нужно сначала разобратся что из себя представляет процесс в ОС. Итак это: 1) Виртуальное адрестное пространство (таблица страниц и указатель на нее) + сами страницы, как храняшиеся в памяти, так и в свопе. 2) Структуры ядра такие как "структура пользователя" и структура в таблице ядра. 3) То что хранится описанных выше структурах машинные регистры, таблица дескрипторов файлов, параметры планирования и прочее. В обшем из этого должно стать понятно, что не имея доступа к структурам ядра не возможно остановить процесс, а затем заново его запустить. Кроме того даже если такое возможно необходимо что б и состояние системы оставалось прежним (иначе на данный способ будут наложены сушественные ограничения), например если данному процессу нужно взаимдействовать с породившим его процессом, то сушествует вероятность что когда процесс будет запушен заново, то породившего процесса уже может и не быть. Да и вообше сложно будет востановить (обновить) все таблицы ядра. В обшем ИМХО я считаю, что то что хочет сделать Feniksa возможно, но очень уж геморойно как по мне. Хотя если разсматривается чисто теоретическая возможность, то это возможно. Однако если нужно это реализовать на практике, то придется столкнутся с сильными ограничениями. Возможно (если процесс будет запускатся заново в ходе одного сеанса ОС), проше приостановить все потоки процесса и отправить все страничные блоки в своп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 18:47:17 |
|
||
|
Как восстановить работу процесса из дампа?
|
|||
|---|---|---|---|
|
#18+
Proger89проше приостановить все потоки процесса и отправить все страничные блоки в своп. Скорее всего я попробую реализовать данную функциональность. Хоть и существует вероятность того "что админ цепанёт ногой шнур сервака". Но предложеная вами идея решения данной проблемы мне кажеться самой оптимальной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 19:00:23 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=35451120&tid=1486690]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
111ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 198ms |
| total: | 409ms |

| 0 / 0 |
