2012-04-09 5 views
2

У меня была куча EAGAIN из попыток fork() или нереста потоков, что заставило меня поверить, что я где-то утешаю ресурсы.мониторинг ресурсов unix изнутри процесса

Можно ли, в POSIX, чтобы получить следующее внутри самого процесса:

  • количество активных Pthreads
  • количество активного ребенка обрабатывает
  • количество активных труб
  • номер из активных сокетов (или, может быть, это и трубы будут считаться файловыми дескрипторами?)

Или эти hav e для подсчета вручную? Для них уже есть счетчики, но я думаю, что один из них протекает.

+0

Сколько детей/нитей вы создаете? – Duck

+0

Наверное, совсем немного, они чаще всего обращаются к fork() перед запуском exec(), но я хочу знать, правильно ли они заканчиваются или нет. – kamziro

ответ

1

Мое предположение, что вы получаете EAGAIN, потому что вы нажимаете ограничения ресурсов. Существует системное ограничение количества потоков/процессов, которые могут быть запущены. Вы можете просмотреть его с

cat /proc/sys/kernel/threads-max 

и изменить его с помощью

echo 100000 > /proc/sys/kernel/threads-max 

соответственно. Скорее всего, вы нарушаете ограничения пользователей на процессы. Вы должны прочитать страницы руководства и выполнить поиск по getrlimit и ulimit. Существует много информации о них прямо здесь, на SO.

Предполагая, что вы рождаете все эти процессы от одного родителя, им должно быть легко отслеживать их. Вы увеличиваете счетчик в родительском до fork(). Если дети порождают детей, тогда это становится более сложным, и вам понадобится использовать разделяемую память или какой-либо другой механизм IPC. В любом случае вы можете определить статус своих детей, используя системные вызовы wait() и waitpid(), и на основе этого уменьшите свои счетчики процессов. Данные состояния, возвращаемые wait, сообщают вам о прекращении расположения каждого ребенка. Опять же, есть много вопросов о SO, которые в значительной степени описывают это, если вы столкнулись с проблемой.

В ответ на ваш основной вопрос есть способы запросить систему (обычно через/proc) для некоторых ресурсов, с которыми вы связаны. Это почти всегда неправильный путь, если вы обеспокоены своими собственными ресурсами. В ваших возможностях следить за ними самостоятельно - и гораздо эффективнее.

Удачи. Надеюсь, это указывает на правильные направления.

 Смежные вопросы

  • Нет связанных вопросов^_^