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


14

Чи існує сценарій, який відображатиме використання пам'яті як графік, наприклад, як кругова діаграма, при цьому кожен процес є окремим фрагментом?

Я не шукаю щось на зразок Муніна, щоб графік використання пам’яті з плином часу, а швидше показую використання пам’яті за процес в один момент часу.

Щоб зробити мій запит ще більш незрозумілим, це для безголівкового сервера (тому немає X додатків). Найпростішим способом було б написати файл PNG або, можливо, файл HTML (який міг би використовувати Javascript для фільтрації процесів, змінюючись між типами графіків тощо)

Відповіді:


13

Облік оперативної пам’яті є складним з кількох причин, за які я потрапляю за хвилину. Для простого моніторингу, ймовірно, достатньо скриптів gkrellmd або nagios. Якщо ви хочете більшої точності, вам потрібно буде виглядати важче.

smem вводить концепцію пропорційного розміру набору :

Оскільки великі частини фізичної пам'яті зазвичай діляться між декількома програмами, стандартний показник використання пам'яті, відомий як розмір набору резидентів (RSS), значно завищить використання пам'яті. Натомість PSS вимірює "справедливу частку" кожної програми в кожному додатку, щоб дати реалістичну міру.

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

smem розподіляє вартість лібглібу серед процесів його використання, щоб дати більш детальну картину реальності. Він також має ряд варіантів відображення використання пам'яті (з веб-сайту):

  1. Показати основну інформацію про процес
  2. Показати smem системи перегляду -R 4G -K / шлях / до / vmlinux -w
  3. Показати підсумки та відсотки smem -t -p
  4. Показати різні стовпці smem -c "ім'я користувача pss"
  5. Показати процеси, відфільтровані шляхом відображення smem -M libxml
  6. Показати відображення, відфільтровані за технологією volum smem -m -P [e]
  7. Прочитайте дані із захоплення тарболом smem --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, про це я торкнувся з goigle chart api. :)
Вузол

гарна думка. goigle chart 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 команда 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 корінь 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. Обріжте процес (и).
  2. Проаналізуйте вихід і збережіть у розділеному комою форматі у текстовому файлі.
  3. відкрити розділений комою файл у excel.
  4. Намалюйте графік для цих даних за допомогою утиліти діаграми excel.

Якщо ви хочете робити знімки пам'яті на різному часовому інтервалі ... встановіть завдання cron на потрібний інтервал і запустіть сценарій.

сподіваюся, що допомагає….


0

Це не зовсім те, що ви шукаєте, але, можливо, ви можете адаптувати його до ваших потреб, скориставшись цим посиланням (шукайте "Використання пам'яті за процес").




0

Я не вдавався в більш детальні відомості, але у collel є можливість генерувати розділений вихід роздільника, тому у випадку gnuplot ви просто генеруєте свої дані з пробілами в ньому, і все налаштовано. Це навіть добре завантажиться в excel. Якщо ви хочете комами, ви можете змінити роздільник і якщо ви дійсно хочете виконати rrd-маршрут (просто будьте обережні, оскільки ділянки не відповідають даним!), Ви можете змінити деліметр на колонки і навіть змінити часові позначки на UTC. -знак


0

kSar, заснований на даних sar, але він базується на Java, тому більш-менш платформний незалежний і дозволить вам сш на віддалений хост для отримання даних.

http://ksar.atomique.net/


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.