Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« : 16-05-2008 16:33 » |
|
Нет ли для Linux какой консольной утилитки, которая бы надёжно фиксировала максимум расхода памяти дочерним процессом.
Есть time, но оно у меня память не измеряет - всегда 0 возвращает. В man написано, что она во FreeBSD измеряет всё заявленное, но надо в Linux.
Или не, лучше так: нет ли консольной программы, которая бы ограничивала объём памяти, доступный дочернему процессу, а в случае превышения лимита убивала бы процесс и сообщала что-нибудь дружелюбное?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #1 : 16-05-2008 17:13 » |
|
Некогда использовал memprof (только она гуевая): и текущую память показывала, и пики, и утечки. Посмотри в pinfo libc раздел "Resource Usage And Limitation". Подраздел "Resource Usage". The function 'getrusage' and the data type 'struct rusage' are used to examine the resource usage of a process. ...
Подраздел "Limiting Resource Usage": You can specify limits for the resource usage of a process. When the process tries to exceed a limit, it may get a signal, or the system call by which it tried to do so may fail, depending on the resource. Each process initialy inherits its limit values from its parent, but is can subsequently change them. ...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #2 : 17-05-2008 16:00 » |
|
Увы, time именно её содержимое и выдаёт. Во FreeBSD работает, в Linux - нет.
По поводу лимитов, я так понимаю, нужно в сторону профиля пользователя копать. То, что во FreeBSD в /etc/login.conf описывается, а в Linux... какой-то /etc/login.defs есть...
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #3 : 17-05-2008 17:41 » |
|
dimka, нет, профиля не нужны - здесь все програмно делается. time тоже не надо заменять на getrusage - они могут по разному работать.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Антон (LogRus)
|
|
« Ответ #4 : 19-05-2008 05:34 » |
|
чем top в batch моде не устраивает?
|
|
|
Записан
|
Странно всё это....
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #5 : 20-05-2008 08:47 » |
|
LogRus, скоростью обновления: может пропустить пики расхода памяти, может не успеть зафиксировать быстро отработавшую программу.
Пока сделал во FreeBSD при помощи time внутри bash-скрипта, который пускает программу как фоновый job, а сам ждёт ограниченное реальное время завершения её работы с ежесекундными проверками. Если timeout случился, а программа ещё работает, то убивает фоновый job и завершает работу. Если фоновый job завершился до timeout, то завершается сам скрипт. Хотя надо попробовать задать параметры через login.conf.
|
|
« Последнее редактирование: 20-05-2008 08:56 от dimka »
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Sla
|
|
« Ответ #6 : 20-05-2008 08:52 » |
|
dimka, а что это за time? DESCRIPTION The time utility executes and times the specified utility. After the utility finishes, time writes to the standard error stream, (in seconds): the total time elapsed, the time used to execute the utility process and the time consumed by system overhead.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
McZim
|
|
« Ответ #7 : 20-05-2008 08:53 » |
|
dimka, а как на счет top --help
top -d 0.1
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #8 : 20-05-2008 08:59 » |
|
Недостаток скрипта в том, что он определяет timeout в календарном времени, а не во времени работы процессора. Т.е. при высоко загруженной системе, фоновый job получит мало времени CPU и может не выработать весь ресурс.
McZim, чтобы 80% ресурсов системы уходило на работу top? Спасибо, я как-нибудь иначе сделаю.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
McZim
|
|
« Ответ #9 : 20-05-2008 09:01 » |
|
dimka, это кто ж тебе такое сказал? у меня выше 17 не поднимается!
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #10 : 20-05-2008 09:51 » |
|
dimka, если хочешь полностью мониторить расход динамической памяти, то надо перехватывать malloc/free при загрузке программы. Как это делается - не спрашивай, но метод такой есть. Конечно, обходной маневр с системным вызовом на выделение блока памяти это не перехватит. Тот memprof такими вещами и занимался. Что удобно было: по завершению программы он показывал, в какой ф-ии, на какой строке (естьественно, была отладочная сборка) и сколько памяти выделено и не освобождено при завершении программы. И пик расхода тоже фиксировался.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #11 : 20-05-2008 09:59 » |
|
McZim, я не знаю, как там у тебя, а у меня на PII-266 ресурсы сжираются все. Для своей машины выбери 0.01 или 0.001 - будет аналогично.
И частота роли не играет, поскольку измерения происходят через интервалы времени, а что происходит внутри этих интервалов, top не знает. Поэтому top можно применять, когда существует обоснование, что расход памяти приложением достаточно монотоннный. У меня соблюдение такого условия не гарантируется.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Sla
|
|
« Ответ #12 : 20-05-2008 11:19 » |
|
а может здесь помочь ? ps -p <pid>
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Sla
|
|
« Ответ #13 : 20-05-2008 11:39 » |
|
можно попытаться еще и rrdtool
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Антон (LogRus)
|
|
« Ответ #14 : 21-05-2008 05:08 » |
|
попробуй valgrind отличная тулза для анализа выделений памяти
|
|
|
Записан
|
Странно всё это....
|
|
|
|