Кто-нибудь знает способ контролировать загрузку и использование ресурсов одной программы. У меня есть процесс, который я хотел бы знать, какую нагрузку он оказывает на сервер, но это не то, что я могу просто «контролировать», чтобы почувствовать.
Я бы хотел сделать что-то вроде
$ monitor "someapp" &
и дайте ему поработать, затем просмотрите какой-нибудь журнал. Есть ли какой-нибудь пакет Red Hat или загружаемая программа, которая может более или менее отслеживать загрузку всего процесса и использование ресурсов?
Проблема в том, что ваш запрос не совсем точно определен. Вы говорите, что хотите отслеживать, «какую нагрузку он оказывает на сервер», но это не единственная вещь. Программы могут вызывать загрузку ввода-вывода, загрузку процессора, сетевую нагрузку, «загрузку» памяти (т. Е. Нехватку памяти), даже прерывание нагрузки (если они взаимодействуют с оборудованием), но все эти вещи затем агрегируются для эффективности ядром .
Например, если ваш процесс использует разделяемую библиотеку, которую использует другая программа, по какой программе она учитывается? Что, если он использует общую библиотеку, которая в настоящее время не используется (и, следовательно, не загружена)? Если два процесса одновременно запрашивают загрузку общей библиотеки, с какого из них взимается плата за ввод-вывод диска? Что, если бы эти дисковые блоки находились в кэше с опережающим чтением, потому что произошел совершенно не связанный процесс чтения файла, находящегося «поблизости» на диске? ОС - это операционная система... как таковой, он демонстрирует сложные взаимодействия, которые не обязательно позволяют анализировать отдельные части по отдельности.
Некоторые вещи, которые дадут вам полезную информацию:
top, конечно, покажет вам ранжированный список на основе некоторых показателей, хотя прочтите справочная страница внимательно о том, как выполняется учет памяти.
/ proc / - это опосредованное ядром представление вашего процесса, включая то, какие дескрипторы файлов он открыл, какая память ему сопоставлена, и многое другое. Увидеть справочная страница для получения подробной информации.
strace будет отслеживать системные вызовы, выполняемые программой, чтобы вы могли сказать, по крайней мере, до некоторой степени, что она делает. Опять же, справочная страница есть подробная информация.
SystemTap это то, что вы ищете. Это будет непросто (но и не слишком сложно), но окупится.
SystemTap - это назначенный и поддерживаемый RH инструмент для этого типа сбора данных. Имя пакета rpm: systemtap
. Это похоже на Dtrace от Solaris.
И нет, это не расплывчатый вопрос. Но ... да, глядя только на поведение одного процесса и игнорируя остальную систему, вы можете получить неопределенное ответ.