Вход на сайт

Навигация

Сейчас на сайте

Пользователей онлайн: 0.

Сбор новостей

Подписка на Сбор новостей

Вы здесь

[РЕШЕНО] Время работы программы

Доброго времени суток.
Есть сервак, естественно под Linux'ом. Даже не сервак, а маленькая СуперЭВМ, пара сотен ядер, несколько десятков Гб оперативки.
На этом серваке крутится хитрое ПО для инженерных расчетов. Распараллеливание и все такое.
И захотело наше начальство, внезапно, узнать, сколько времени это самое хитрое ПО реально работает. Там GUI-шный клиент удаленный может запустить сложный расчет по сетке. Клиент, кстати, под "другую ОС".
Так вот, задача - определить время которое процесс с определенным именем реально работал на машине за определенный промежуток времени. Например за месяц, или год.
Задача поставлена так, что можно начинать отслеживание работы с текущего момента. Что можно покрутить в ядре или какие утилиты использовать, чтобы решить задачу с наименьшими потерями?
Все заранее спасибо!

РЕШЕНИЕ - пакет программ sys-process/acct. Отдельное спасибо товарищам SysA и pascorp за дельные ответы!

lordalexx написал(а):
Доброго времени суток.
Есть сервак, естественно под Linux'ом. Даже не сервак, а маленькая СуперЭВМ, пара сотен ядер, несколько десятков Гб оперативки.
На этом серваке крутится хитрое ПО для инженерных расчетов. Распараллеливание и все такое.
И захотело наше начальство, внезапно, узнать, сколько времени это самое хитрое ПО реально работает. Там GUI-шный клиент удаленный может запустить сложный расчет по сетке. Клиент, кстати, под "другую ОС".
Так вот, задача - определить время которое процесс с определенным именем реально работал на машине за определенный промежуток времени. Например за месяц, или год.
Задача поставлена так, что можно начинать отслеживание работы с текущего момента. Что можно покрутить в ядре или какие утилиты использовать, чтобы решить задачу с наименьшими потерями?
Все заранее спасибо!

Ну что тут можно сказать, вопрос и правда сложный. Одевайте трусики и идите к гинеколагам.

В безвременный бан отправлен сей персонаж чудный модератором скучным.

Thahkai4 написал(а):
...трусики...гинеколаг...

Коробок-барабок? Дорожка? Синька? Клей? Порно? (или что там ещё так забавно торкает...)
Санитаров в этот тред!..

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Это возможно подойдет
Правда там находится uptime процесса, а не время когда он, что-то полезное делал.

Спасибо, мне, собственно, uptime и нужен. Ну не буду же я начальству объяснять, что это такое.
Правда, тут есть одна проблема - предложенным способом можно узнать время работы запущенного в данный момент процесса, а если он уже завершен или перезапускался, это не поможет.
Есть, конечно, еще вариант - запустить демона, который будет раз, например, в минуту опрашивать все запущенные процессы и писать в логи факт наличия заданного по имени процесса, но этот вариант мне не нравится... :(
Ладно, будем искать дальше.

Возможно Вам будет проще найти команду запуска нужного процесса и обернуть его в time, а вывод перенаправить в файл, из которого и будете смотреть статистику.
Например:
pas@pas-1G ~ $ time echo "Всякая фигня">>/var/log/time.log

Не забудьте только разобраться с правами для записи лога и исключите time.log из логротатора (что бы файл не затирался внезапно)

lordalexx написал(а):
...вариант - запустить демона, который будет раз, например, в минуту опрашивать все запущенные процессы и писать в логи...

Совсем не вариант, а супер кривой костыль с жутким оверхедом!

Открой для себя GNU system accounting - sys-process/acct.
Только имей ввиду, что статистика показывается только по уже завершенным процессам, поэтому надо будет добавить текущие, как тебе уже подсказали.

Открой для себя GNU system accounting - sys-process/acct

Да, точно! Я же помнил, что было что-то такое! Гугл не помог, поэтому я решил, что придумал эту штуку.
Спасибо, тебе, дружище, SysA!
Проблему можно считать решенной!

Насчет оверхеда - мы же вроде как не в девяностых. Для современного железа скрипт, который выводит список процессов через обращение хоть к тому же ps раз в секунду и составляет таблицу - и минуты одного ядра CPU за сутки не потратит.

Т.е. задача топикстартера решается простейшим скриптом на perl/python/php/любой другой интерпретатор для разбора логов за 10 минут.
Причем, логика этого скрипта будет заведомо более гибкой. Ну, а если захочется оптимизировать, то можно смотреть папку /proc и брать оттуда вообще все, что интересно. И не придется лезть в ядро и включать устаревший "BSD-style process accounting".

Ну да, для админов локалхоста - наисовременнейшее решение!
Где уж нам до вас...

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

Нет, хотел сказать, что мои сервера, в отличие от некоторых, загружены полезной работой, на которую клиенты подписались! ;)