Моя Perl программа Стас - PullRequest
2 голосов
/ 16 июня 2011

Мне нужна ваша помощь, чтобы реализовать что-то для мониторинга использования CPU / MEM во время или в конце выполнения perl-программы.

Представьте себе, что для программы, которая запускается каждые N минут и запускается другой Perl-программой, выполнение последней может варьироваться от нескольких секунд до 1 минуты. Как я могу получить использование CPU / MEM в результате выполнения этой программы.

Некоторые требования:

  • мониторинг должен мешать так же мало насколько это возможно с выполнением программа.
  • мониторинг должен использовать минимум системные ресурсы
  • OS независимой, насколько это возможно. должен работать в Linux, Win32, HP-UX, Solaris, AIX. Хорошо, но давайте сосредоточимся сначала Linux.

Я думал о некоторых подходах:

  1. Реализация моего собственного Devel :: MyProfiler и запустите программу с -d «Вариант». (например: $ perl -dMyProfiler program.pl)
  2. Реализация оболочки, которая получает статистику каждые N секунд из / proc / pid или "$ ps aux "и получает среднюю статистику в конце программы
  3. Реализация параллельной программы, которая создает "$ ps aux" каждые N секунд
  4. Использование инструмента трассировки процесса !!
  5. ???

Любой совет будет полезен !!!

Примечание: этот вопрос был также опубликован в http://perlmonks.com/?node_id=909934

Tks,

гульденов

Ответы [ 2 ]

1 голос
/ 16 июня 2011

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

Большинство операционных систем UNIX-y поддерживают системные вызовы, такие как getrusage(), что позволит вам получить статистику использования ресурсов для текущего или дочерних процессов.Для этого есть интерфейс Perl в Unix::Getrusage;альтернативно, большинство систем UNIX имеют встроенную утилиту и / или оболочку time, которая собирает статистику дочернего процесса.

Windows - это черный ящик для меня, поэтому я не уверен, есть ли у него какой-либоэквивалент.

0 голосов
/ 17 июня 2011

Если вы хотите выполнить профилирование, посмотрите на http://open.blogs.nytimes.com/2008/03/05/the-new-york-times-perl-profiler

Издержки разумны.Карта памяти очень полезна.

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