Linux: защита системы от программ на C ++ и FORTRAN, которые часто терпят крах

У меня есть программа, которая работает долго, около 3 недель. Это на самом деле приложение моделирования.

По истечении этого времени память обычно заполняется, система перестает работать, и мне приходится перезагружать весь компьютер. Я действительно не хочу этого делать, и, поскольку мы говорим об Ubuntu Linux 14.04 LTS, я думаю, что есть способ избежать этого. Swap выключен, потому что загрузка элементов программы подкачки слишком сильно замедлила бы его.

Программа частично написана на C ++ (около 10%) и FORTRAN (около 90%) и компилируется и связывается с использованием GNU Compiler Suite (g ++ и gfortran).

Как добраться до моего вопроса:

Есть ли хороший способ защитить систему от тех программ, которые портят ее, кроме виртуальной машины?

П.С .: Я знаю, что в программе есть ошибки, но я не могу их сейчас исправить, поэтому хочу защитить систему от зависаний. Также я не могу использовать отладчик, потому что он будет работать слишком долго.

Редактировать:

После некоторых комментариев я хочу уточнить некоторые вещи. Код слишком сложен. У меня нет времени на исправление ошибок, и есть версии, в которых я даже не получаю исходный код. Я должен запустить это, потому что мы вынуждены сделать это. У вас не всегда есть выбор.

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

-3

Решение

Ограничение этой дрянной памяти приложения — самая легкая часть. Вы можете, например, использовать Docker (https://goldmann.pl/blog/2014/09/11/resource-management-in-docker/#_memory) или cgroup, которые являются своего рода виртуальной машиной, но с гораздо меньшими накладными расходами. ulimit Также может быть вариант, как указано в комментариях.

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

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

Вы можете попытаться использовать valgrind для устранения проблем с памятью. У Fortran также есть хорошие директивы компиляции для проверки границ массивов, вы должны активировать эти настройки, если можете.

2

Другие решения


По вопросам рекламы [email protected]