The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Инструкция к командам мониторинга из Linux пакета procps (linux monitor proc memory process)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: linux, monitor, proc, memory, process,  (найти похожие документы)
From: Roman Sozinov <http://sozinov.blogspot.com>; Date: Mon, 19 Dec 2007 14:31:37 +0000 (UTC) Subject: Инструкция к командам мониторинга из Linux пакета procps Оригинал: http://sozinov.blogspot.com/2006/08/1-procps.html В большинстве стандартых поставок Linux дистрибутивов входит пакет procps, он содержит программы для мониторинга системных ресурсов. В данном контексте меня интересует только те утилиты из этого пакета, которые помогают оценить состояние системы и помочь при решении задач, касающихся производительности. free Возвращает информацию о свободной и используемой памяти в системе, как физической, так и виртуальной. Физическая память - реальный объем оперативной памяти, виртуальная - часть диска, использующаяся как продолжение физической памяти. Виртуальная память = swap область на диске. Пример вывода #free total used free shared buffers cached Mem: 516588 480172 36416 0 5524 75704 -/+ buffers/cache: 398944 117644 Swap: 1975976 70200 1905776 * total - всего доступной физической памяти. Некоторая область оперативной памяти может быть зарезервирована ядром, поэтому показатель total может быть меньше реального объема оперативной памяти. * used - используется памяти (used=total-free) * free - незадействованая память. На самом деле память задействованная в кэшах(cached) тоже является свободной и может быть использована в любое время, если есть на то нужда какого-то процесса. Работает принцип "свободная память - потерянная память". * shared - память распределенная между процессами, но по непонятной причине всегда показывает 0. * buffers - память используемая в буферах. * cached - память используемая для кэширования. * -/+ buffers/cache - использованная память без учета буферов и кэшей/свободная память с учётом буферов и кэшей * swap - использование swap-области Разница между буферами и кэшами следующая: буфер - это временное хранилище данных, работающих в данный момент процессов, своеобразный временный терминал; кэш - это данные, к которым уже обращались(они были считаны с устройств ввода/вывода), но они были оставлены в памяти для того, чтобы сократить издержки из-за доступа к устройствам ввода/вывода(I/O), скорость доступа к которым значительно(в 1000-чи раз) ниже по сравнению с оперативной памятью. pmap Возвращает карту памяти указанного процесса. Ключ -d выводит значение используемой writeable/private-памяти - памяти, которую занимает сам процесс, исключая использование общих(shared)-библиотек. ps Выводит список текущих процессов. Много полезной информации выводится с ключами aux. Ключ f показывает процессы с ветвлением от родителей. Столбцы : * UID - идентификатор пользователя; * PID - идентификатор процесса * PPID - идентификатор родительского процесса. Родителем всех процессов является процесс init с PID равной 1 * C - приоритет процесса, используемый планировщиком задач; * STIME - время старта процесса; * TTY - терминал, с которым связан данный процесс; * TIME - общее время работы процесса; * CMD - команда, запустившая данный процесс <<с некоторыми опциями выводит и каталог откуда процесс был запущен>>; * STAT - состояние, в котором на данный момент находится процесс. Параметры STAT: * R - процесс выполняется в данный момент * S - процесс ожидает выполнение ("спит" менее 20 секунд) * D - процесс в полной (непрерываемой) спячке, например, ожидает ввода/вывода * Z - zombie или defunct процесс, то есть процесс у которого нет родителя. * T - процесс остановлен. * W - процесс в свопе * < - процесс в приоритетном режиме. * N - процесс в режиме низкого приоритета * L - real-time процесс, имеются страницы заблокированные в памяти. * D - процесс находится в ожидании дисковой (непрерываемой) операции * I - процесс в ожидающем режиме (процесс "спит" более 20 секунд) * J - процесс в "тюрьме" (см. man 2 jail) Символ + показывает что процесс выполняются на переднем плане (foreground-процессы), s говорит о том, что процесс является начальным в сеансе. sysctl Модифицирует параметры ядра во время его работы. Полезна, если необходимо изменить какие-то переменные ядра, без перезагрузки и перекомпиляции. tload Отображает график загрузки системы(load average). График выводится с заданной задержкой на терминал в виде столбиков. top Отображает загрузку процессора. Используется для слежения за активностью процессора в реальном времени. Полезные команды: * c - Включает/выключает отображение имени программы/полной командной строки в поле COMMAND * x - Включает/выключает подсветку колонки, по которой происходит сортировка процессов * <,> - сортировка по выбранному столбцу * z - Включает/выключает цвет * u - показать процессы указанного пользователя * Пробел - Заставляет программу перечитать список процессов Состояние процессора: * us - процент использования процессорного времени программами пользователей. * sy - процент использования процессорного времени процессами ядра. * ni - процент использования процессорного времени программами с измененным приоритетом. * id - простой процессора. * wa - процент процессорного времени, потраченного на завершение ввода/вывода(IO) * hi - процент процессорного времени, потраченного на обработку hard-прерываний (IRQ) * si - процент процессорного времени, потраченного на обработку soft-прерываний (network) Столбцы: * VIRT -- общий объем виртуальной памяти, используемой процессом, включает в себя: область кода (CODE), данные (DATA), разделяемые библиотеки (SHARED) и страницы, перемещенные в swap-область памяти. Если приложение потребовало от ядра выделить ему 100Мб памяти, а использует всего 5 Мб, данный столбец всё равно будет показывать цифру 100. * RES -- количество резидентной (не перемещаемой в swap) памяти в килобайтах. Если приложение потребовало от ядра выделить ему 100Мб памяти, а использует всего 5 Мб, то данный столбец покажет 5. Но здесь есть два ньюанса: а) RES не показывает сколько данных было перемещено в swap, б) часть RES-памяти может быть разделяемой. * SHR -- количество разделяемой (shared) памяти программы в килобайтах, т.е. памяти, которая может быть использована другими приложениями. * DATA - объем памяти, занятой данными, используемые процессом в ходе выполнения. * SWAP - объем памяти, используемой процессом, но перемещенной в swap-область. * CODE - объем памяти, содержащая исполняемый код процесса. Эмпирически можно вычислить следующее отношение: VIRT = RES + SWAP. Все остальные столбцы аналогичны столбцам команды ps. Кроме интерактивного режима, в котором top выводит данные на экран, можно использовать так называемый командный режим (Batch mode). Он применяется, когда результаты работы программы необходимо передать другим программам или сохранить в файле. Для запуска программы в командном режиме используют параметр -b. В этом случае список отсортированных процессов (по умолчанию, процессы сортируются по проценту использования процессорного времени) будет с определенной задержкой (по умолчанию три секунды) выводится на стандартный вывод. Количество повторов не ограничено, поэтому необходимо явно завершать работу программы, например, при помощь комбинации клавиш Ctrl+C. * n - количество повторов. * d - задержка между повторами в секундах. * u - определяет пользователя, с правами которого выполняются процессы. * p - определяет PID процессов, за которыми должна следить программа. Например, необходимо с задержкой в четыре секунды два раза получить список процессов, выполняемых с правами пользователя daemon. Для этого программу запускают со следующими параметрами: #top -b -d 4 -n 3 -u daemon top - 17:28:22 up 34 min, 1 user, load average: 0.15, 0.05, 0.03 Tasks: 66 total, 1 running, 65 sleeping, 0 stopped, 0 zombie Cpu(s): 2.1% us, 0.6% sy, 0.0% ni, 91.7% id, 5.5% wa, 0.1% hi, 0.0% si Mem: 246832k total, 242968k used, 3864k free, 2708k buffers Swap: 514072k total, 0k used, 514072k free, 107936k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3753 daemon 16 0 4972 2616 1940 S 0.0 1.1 0:00.01 named 3787 daemon 16 0 1684 688 584 S 0.0 0.3 0:00.00 atd top - 17:28:26 up 34 min, 1 user, load average: 0.13, 0.05, 0.03 Tasks: 66 total, 1 running, 65 sleeping, 0 stopped, 0 zombie Cpu(s): 0.8% us, 0.0% sy, 0.0% ni, 99.0% id, 0.0% wa, 0.2% hi, 0.0% si Mem: 246832k total, 242928k used, 3904k free, 2708k buffers Swap: 514072k total, 0k used, 514072k free, 107936k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3753 daemon 16 0 4972 2616 1940 S 0.0 1.1 0:00.01 named 3787 daemon 16 0 1684 688 584 S 0.0 0.3 0:00.00 atd uptime Возвращает время работы системы, количество вошедших в нее пользователей и загрузку системы. Всё то же самое выводит в реальном времени команда top, но top "ест" больше ресурсов. vmstat Отображает статистику виртуальной памяти, включая информацию о процессах, памяти, страницах, блоках ввода-вывода, прерываниях и активности CPU. В отчете, выдаваемом по умолчанию, имеются следующие поля: * procs - число процессов, которые: * r - находятся в очереди на выполнение; * b - заблокированы в ожидании ресурсов, например, пока закончатся дисковые операции ввода/вывода или paging; * w - выключены из обмена. Эти значения всегда отражают текущую ситуацию, если даже высвечивается полная информация с момента загрузки. * memory - выводит информацию о памяти(в Кб) * swpd - размер используемой в данный момент виртуальной памяти * free - размер свободной памяти * buff - объем памяти, задействованной в буферах * cache - объем памяти, задействованной на кэширование * swap - сообщает о производительности системы при выполнении замещения страниц по требованию. Пока не будет высвечена полная информация с момента загрузки, эта информация усредняется по производительности на интервале в (interval)-секунд. * si - число загруженных процессов. * so - число выгруженных процессов. * io - содержит информацию об общении с устройствами ввода/вывода * bi - принято блоков из блочного устройства (блоков/сек) * bo - послано блоков на блочное устройство (блоков/сек) * system - сообщает об активности основной системы. Пока не будет высвечена суммарная информация с момента загрузки, эти позиции показывают средние значения за последние (interval)-секунд. * in - число прерываний(в секунду) устройств (несинхронных). * cs - число переключений(в секунду) контекста. * cpu - процент цикла процессора, затрачиваемый на различные режимы: * us - пользователь * sy - система * id - ожидание * wa - операции i/o(ввода/вывода). До Linux 2.5.41 показывала 0. Литература: 1. FAQ Linux Memory Management 2. Перевод статьи Understanding memory usage on Linux 3. Ps - Википедия 4. Исследуем процессы 5. Top - Wiki Open Book 6. On measuring memory usage

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру