LINUX.ORG.RU

лог потребления памяти


0

1

У меня есть некий bash-скрипт. Он вызывает всякие программы, делает полезные дела, и т.д.

Я хочу лог памяти — сколько занимает памяти этот скрипт и порождённые им процессы. Записывать в него, скажем, раз в 30 секунд. А потом построю красивый график.

Как бы мне это сделать?...

Заранее благодарен!


#!/bin/sh

PID=1
TOTAL_MEM=0

for CHILD_PID in $(ps -o pid,ppid ax | awk "{ if ( \$2 == $PID ) { print \$1 }}")
do
    CHILD_MEM=$(ps -o pid,rss ax | grep -v grep | awk "{if ( \$1 == $CHILD_PID ) { print \$2 }}")
    TOTAL_MEM=$(($TOTAL_MEM + $CHILD_MEM))
done

echo "Total child memory usage: $TOTAL_MEM"
blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

то есть, я должен все подпроцессы запускать в фоне (со словом &), а эту штуку прогонять раз в 30 секунд, чтобы получить лог?

И ещё, если мой процессА запустил процессБ, а тот запустил процессВ, то этот скрипт отловит ли память,используемую процессомВ ?

az ()

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

Komintern ★★★★★ ()
Ответ на: комментарий от blind_oracle

процесс вообще-то может, но не в моём случае:) мне надо иметь примерное представление о потребностях в памяти. И примерно следить за динамикой этого. Подчёркиваю, примерно!

Если мои процессы зажирают много памяти,они выпадают в своп и до следующей 30-секундной проверки висят в свопе.

az ()
Ответ на: комментарий от Led

atop ниасилил. он показывает и логирует за все процессы в системе, а мне надо за один процесс и всех его потомков.

az ()
Ответ на: комментарий от az

всё-таки осилил atop:) он всё,что надо,умеет - надо только после всего обработать его вывод напильником - выявить все child-процессы и просуммировать их память.

как бы этот мой скрипт сделать доступным широкой публике? он на питончике,поэтому сюда вставить его не удаётся - шибко длинный и indentation съезжает. а то авось кому ещё пригодится.

az ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.