исчерпать системный ресурс (выполнить много программ в сценарии оболочки) - PullRequest
0 голосов
/ 27 сентября 2010

Я запускаю сценарий оболочки на сервере университета.В этом сценарии оболочки я буду выполнять программы java, c, c ++, python и perl.Потому что каждая программа будет выполняться много-много раз (я учитель-ассистент и буду тестировать программы студентов со многими различными входами).Сервер всегда выдает мне ошибку: «заканчивается системный ресурс».Наверное, это связано с тем, что я не выпускаю ресурс.

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

Есть ли способ выяснить эту проблему?

Я представляю часть своего шелл-кода следующим образом:

# maxconnect4 is the compiled c code
for ((i = 1; i <= 21; i++))
do
    maxconnect4 input1.txt
done

Спасибо

Чжун

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

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

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

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

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

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

1 голос
/ 27 сентября 2010

Вы, кажется, запускаете maxconnect4, затем ждете, пока он завершит работу, прежде чем начинать следующий запуск, поэтому я не думаю, что сам скрипт вашей оболочки является isuue.Большой вопрос в том, что делает maxconnect4.Он может быть очень требователен к ресурсам или сам может запускать дочерние процессы и возвращаться к вашему сценарию.

Я бы попробовал несколько экспериментов, например, вручную запустил maxconnect4 несколько раз, вы видите ошибку ресурса?

Я бы также использовал системные инструменты для invetsigate.Например, используйте ps, чтобы увидеть, запущено ли много процессов.Используйте vmstat для просмотра загрузки процессора и памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...