Простой инструмент для графика использования памяти?


14

Существует ли скрипт, который будет отображать использование памяти в виде графика, например, в виде круговой диаграммы, где каждый процесс представляет собой отдельный фрагмент?

Я не ищу что-то вроде Munin для отображения графика использования памяти с течением времени, а скорее показываю использование памяти для каждого процесса в определенный момент времени.

Чтобы сделать мой запрос еще более непонятным, он относится к серверу без монитора (поэтому никаких X-приложений). Самый простой способ - написать файл PNG или файл HTML (который может использовать Javascript для фильтрации процессов, переключения между типами графиков и т. Д.)

Ответы:


13

Учет памяти каждого процесса сложен по ряду причин, о которых я расскажу через минуту. Для простого мониторинга вполне достаточно сценариев gkrellmd или nagios. Если вы хотите большей точности, вам нужно выглядеть сложнее.

SEMEM представляет концепцию пропорционального размера набора :

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

Пример: вы запускаете GNOME, вызывая запуск нескольких процессов, по одному для каждого апплета и программы. Все они связаны с libglib. Linux загружает libglib в один блок памяти и отображает его в каждом процессе, который хочет libglib. Наивный учет памяти подсчитывает полный размер libglib для каждого связанного с ним процесса.

SEMEM делит стоимость libglib между процессами, использующими его, чтобы дать более полную картину реальности. Он также имеет ряд опций для отображения использования памяти (с веб-сайта):

  1. Показать основную информацию о процессе смем
  2. Показать системное представление smem -R 4G -K / path / to / vmlinux -w
  3. Показать итоги и проценты smem -t -p
  4. Показать разные столбцы smem -c "name user pss"
  5. Показать процессы, отфильтрованные по отображению smem -M libxml
  6. Показать отображения, отфильтрованные по процессу smem -m -P [e] volution
  7. Чтение данных из архива SEMP для захвата --source capture.tar.gz
  8. Показать гистограмму с пометкой pid smem --bar pid -c "pss uss"
  9. Покажите круговую диаграмму RSS, помеченную именем smem --pie name -s rss

Вам, однако, понадобится совсем новое ядро ​​(> 2.6.27).


1
Да, их предположение, что 2.6.27 является относительно новым, довольно смешно. Единственные известные мне дистрибутивы с более новым ядром - это Fedora 10 и Ubuntu 9.01.
Дейв Чейни

9,04; Ubuntu 8.10 поставляется с 2.6.27, но 2.6.30 в rc3.
Jldugger

Мои извинения, я потратил много времени на земле RHEL, где 2.6.18 считается недавним.
Дейв Чейни

5

Ничего не могу придумать с полки

однако, комбинация PHP-скрипта, выполняющего ps -AH v | awk '{print $ 8, $ 9, $ 10}' и использование этого с pChart может дать вам веб-страницу, которая будет делать то, что вы ищете? (использование в килобайтах, процент от общего количества и имени процесса)


1
+1, я думал об этом с API Google Chart. :)
Node

хорошая точка зрения. Google API API, вероятно, быстрее работать с ...
Марк Регенсберг

2

Посмотрите на sarface - это зависит от данных sar, и вы можете отслеживать использование памяти (и всех других данных sar / sysstat) в реальном времени.



1

Сделай сам. Сделайте простой скрипт для обновления базы данных RRD. Затем нарисуйте график с помощью rrdtool.


1

Если вы действительно на более низких уровнях детализации, не забывайте собирать. Вот пример типов использования памяти для каждого процесса:

ЗАПИСЬ 1 cag-dl585-02 (1244758290.002) (чт, 11 июня, 18:11:30 2009)

РЕЗЮМЕ ПРОЦЕССА (счетчики / сек)
# Пользователь PID S VmSize VmLck VmRSS VmData VmStk VmExe VmLib MajF Команда MinF
 9089 root S 66856K 0 2328K 1440K 212K 736K 6812K 0 0 sendmail:
 9097 smmsp S 57600K 0 1772K 1304K 204K 736K 5904K 0 0 sendmail:
 9108 root S 6428K 0 360K 180K 84K 88K 1944K 0 0 гал / мин
 9120 корень S 74808K 0 1136K 476K 520K 48K 1920K 0 0 крон
 9173 xfs S 20904K 0 1828K 1124K 88K 104K 3084K 0 0 xfs

Если вас интересуют конкретные процессы, вы можете указать соответствующие фильтры (включая переключатель для отображения потоков).

И если вы интересуетесь памятью в целом, она также может показать детали плиты и даже имеет вывод в формате vmstat. Зачем вам показывать данные в формате vmstat, если существующий инструмент уже это делает? Это просто - с помощью функции накопления вы можете записать статистику в файл и воспроизвести ее позже в нескольких форматах.

попробуй, тебе понравится


1
  1. Grep процесс (ы).
  2. Разобрать вывод и сохранить в формате через запятую в текстовом файле.
  3. откройте разделенный запятыми файл в Excel.
  4. Нарисуйте график для этих данных с помощью утилиты диаграммы Excel.

Если вы хотите снимки памяти на другом интервале времени ... установите задание cron с желаемым интервалом и запустите скрипт.

надеюсь, это поможет....


0

Это не совсем то, что вы ищете, но, возможно, вы можете адаптировать его к вашим потребностям, используя эту ссылку (ищите «Использование памяти на процесс»).




0

Я не стал вдаваться в подробности, но collectl имеет опцию для генерации вывода, разделенного разделителями, поэтому в случае с gnuplot вы просто генерируете свои данные с пробелами, и все готово. Он даже прекрасно загрузится в Excel. Если вам нужны запятые, вы можете изменить разделитель, и если вы действительно хотите выполнить rrd-маршрут (просто будьте осторожны, так как графики не обязательно соответствуют данным!), Вы можете изменить разделитель на двоеточия и даже изменить метки времени на UTC. -отметка


0

kSar, основанный на данных sar, но основанный на java, более или менее независим от платформы и позволит вам получить ssh на удаленном хосте для получения данных.

http://ksar.atomique.net/


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.