Просмотр статистики системы
pidin [опции] команда
- -d задержка
- Задержка (в десятых долях секунды). Значение по умолчанию –
10
.
- -F форматы
- Комбинация символов управления форматом, аналогично строке формата для функции printf(). Как и при работе с функцией printf(), с помощью данной опции можно задать ширину поля, указав в дополнение к формату число, например, "%I %60N".
- A
- Аргументы.
- a
- Идентификатор процесса.
- B
- Параметры блокировки. См. приведенный ниже раздел "Значения в столбце Blocked".
- b
- Идентификатор потока.
- c
- Размер кода процесса.
- d
- Размер данных процесса.
- E
- Окружение.
- e
- Идентификатор родительского процесса.
- f
- Флаги процесса (см. условное обозначение flags ниже).
- H
- Информация, связанная с диспетчеризацией, по каждому потоку. В случае использования адаптивного квотирования отображается название раздела, в котором выполняется поток. Для получения дополнительной информации см. «Руководство системного программиста (администратора)» КПДА.10964-01, раздел по адаптивной декомпозиции.
- h
- Имя потока. Если у потока нет имени, то утилита pidin отображает его идентификатор (tid).
- I
- Идентификатор процесса и идентификатор потока.
- i
- Процессорная маска и маска наследования.
- J
- Состояние потока. См. раздел «Жизненный цикл потока» в главе «Микроядро ЗОСРВ «Нейтрино» документа «Описание применения. Часть 1. Системная архитектура» КПДА.10964-01.
- K
- Последний выполненный вызов ядра.
- l
- ("эль") Последний ЦП, в котором выполнялся поток.
- M
- Память, используемая для процесса с данным идентификатором.
- m
- Размер стека процесса.
- N
- Краткое имя процесса.
- n
- Полное имя процесса.
- o
- Идентификаторы соединений и дескрипторы файлов, связанные с процессом (см. условное обозначение fds ниже).
- P
- (“P” в верхнем регистре) Родительская группа.
- p
- (“p” в нижнем регистре) Приоритет потока.
- Q
- Обработчики прерываний.
- q
- Обратная трассировка подпрограмм вызова. Для достижения оптимальных результатов следует использовать данный символ управления форматом вместе с символом I.
- R
- Таймеры.
- S
- Маска игнорируемых сигналов.
- s
- Маска ожидающих в очереди сигналов.
- T
- Число потоков.
- [
- Длина очередей отправки, получения, ответов и импульсов.
Если формат не указан, то по умолчанию используется формат "%a %b %N %p %J %B". Буква, следующая за номером приоритета диспетчеризации, указывает на используемый алгоритм диспетчеризации: - f – алгоритм диспетчеризации FIFO;
- r – алгоритм циклической ("карусельной") диспетчеризации;
- o – другой алгоритм диспетчеризации (в настоящий момент соответствует алгоритму циклической диспетчеризации);
- s – алгоритм спорадической диспетчеризации.
Для получения дополнительной информации об этих алгоритмах диспетчеризации см. раздел «Диспетчеризация потоков» документа «Описание применения. Часть 1. Системная архитектура» КПДА.10964-01.
- -f форматы
- Эта опция аналогична опции -F, но параметр форматы представляет собой непрерывную раскрываемую строку кодов формата. Например, строка -f mbe раскрывается в строку вида -F "%m %b %e".
- -h
- Вывести краткое сообщение о способах использования утилиты.
- -k
- Продолжать выводить данные для идентификаторов процессов (PID) и потоков (TID) до возникновения ошибки, например, до обнаружения PID/TID в неизвестном состоянии (поскольку PID/TID является частично работоспособным).
- -l
- Режим цикла. Выводить статистику с задержкой (в десятых долях секунды), заданной опцией -d.
- -M форматы
- Комбинация символов управления форматом (аналогичная строке формата для функции printf()), обеспечивающая управление форматированием информации об областях памяти. Предусмотрены следующие форматы:
- <
- Размер кода объекта памяти.
- =
- Размер данных объекта памяти.
- >
- Адрес объекта памяти.
- ?
- Смещение объекта памяти.
- M
- Память, используемая для процесса с данным идентификатором.
- : (двоеточие)
- Имя объекта памяти.
- ; (точка с запятой)
- Смещение.
Если формат не указан, по умолчанию используется пустая строка: "".
- -n узел
- Имя удаленного узла, от которого требуется получить информацию.
- -o приоритет
- Выполнить с приоритетом, указанным в значении аргумента приоритет.
- -P идентифиатор_процесса
- Отобразить только указанное семейство процессов (значение аргумента идентификатор_процесса может быть представлено именем или номером).
- -p идентификатор_процесса
- Отобразить только указанный процесс (значение аргумента идентификатор_процесса может быть представлено именем или номером).
| Если в качестве значения аргумента идентификатор_процесса указан номер, то он интерпретируется как идентификатор процесса. В противном случае он интерпретируется как имя.
Не следует присваивать процессам числовые имена. |
Сокращенный вариант команды определяются следующим образом. Необходимо ввести только то количество символов имени, которое требуется для его уникальной идентификации.
- arguments
- Вывести аргументы отображаемых процессов.
- backtrace
- Вывести информацию по обратной трассировке для каждого потока в отображаемых процессах. Пример:
$ pidin -p devc-con-hid back
pid-tid backtrace
4103-01 b033ab5b:b03323cb:b03324f3:804f6ed:804c120:804a285
4103-02 b033af63:805ca60:b031f0ad
В результате выводится идентификатор процесса и идентификатор потока, разделенные дефисом, за которыми следуют данные обратной трассировки адресов подпрограмм вызова.
- channels
- Отобразить длину очередей отправки, получения, ответов и импульсов. Это условное обозначение целесообразно использовать при отслеживании утечки импульсов, т.е. выявления процесса, в который не поступают импульсы. Это может привести к увеличению объема оперативной памяти, потребляемого ядром, поскольку структуры данных для импульсов выделяются непосредственно в ядре.
- environment
- Вывести информацию об окружении для отображаемых процессов.
- extsched
- Вывести подробную информацию об активной расширенной конфигурации диспетчера. В случае диспетчера адаптивной декомпозиции эти данные представлены одной строкой глобальной конфигурации, за которой выводится по одной строке с данными для каждого из определенных разделов (включая имя, бюджет, критический бюджет и уведомления о перегрузке). Для получения дополнительной информации см. «Руководство системного программиста (администратора)» КПДА.10964-01.
- family
- Вывести информацию о сеансах, группах процессов, а также родительских, одноуровневых и порожденных процессах отображаемых процессов.
- fds
- Отобразить информацию о соединениях процесса и дескрипторах файлов. Если у пользователя отсутствуют полномочия на доступ к ним, утилита pidin выводит ограниченную информацию. Информация по каждому соединению и дескриптору файла включает в себя следующие данные:
- дескриптор файла; если это побочный канал, то за дескриптором файла указывается
s
; - идентификатор процесса, с которым установлено соединение;
- открытые флаги (
r
или -
, за которыми указываются w
или -
) или MP для точки монтирования; - смещение;
- имя файла или устройства (при наличии).
- flags
- Отобразить флаги процессов в шестнадцатеричном формате следующим образом:
- _NTO_PF_NOCLDSTOP
- Значение:
0x00000001
- _NTO_PF_LOADING
- Значение:
0x00000002
- _NTO_PF_TERMING
- Значение:
0x00000004
- _NTO_PF_ZOMBIE
- Значение:
0x00000008
- _NTO_PF_NOZOMBIE
- Значение:
0x00000010
- _NTO_PF_FORKED
- Значение:
0x00000020
- _NTO_PF_ORPHAN_PGRP
- Значение:
0x00000040
- _NTO_PF_STOPPED
- Значение:
0x00000080
- _NTO_PF_DEBUG_STOPPED
- Значение:
0x00000100
- _NTO_PF_BKGND_PGRP
- Значение:
0x00000200
- _NTO_PF_NO_LIMITS
- Значение:
0x00000400
- _NTO_PF_CONTINUED
- Значение:
0x00000800
- _NTO_PF_CHECK_INTR
- Значение:
0x00001000
- _NTO_PF_COREDUMP
- Значение:
0x00002000
- _NTO_PF_PTRACED
- Значение:
0x00004000
- _NTO_PF_RING0
- Значение:
0x00008000
- _NTO_PF_SLEADER
- Значение:
0x00010000
- _NTO_PF_WAITINFO
- Значение:
0x00020000
- _NTO_PF_VFORKED
- Значение:
0x00040000
- _NTO_PF_DESTROYALL
- Значение:
0x00080000
- _NTO_PF_NOCOREDUMP
- Значение:
0x00100000
- _NTO_PF_NOCTTY
- Значение:
0x00200000
- _NTO_PF_THREADWATCH
- Значение:
0x80000000
- info
- Вывести информацию о системе, например, тип процессора (процессоров) и объем свободной памяти.
- irqs
- Показать обработчики запросов прерывания, принадлежащие процессу. Для каждого обработчика утилита pidin отображает следующие данные:
- id – идентификатор прерывания, возвращаемый при выполнении функции InterruptAttach() или InterruptAttachEvent().
- vector – вектор прерывания, передаваемый функции InterruptAttach() или InterruptAttachEvent().
- mask_count – счетчик уровня маски.
- flags – флаги прерывания. К действительным флагам относятся следующие:
- _NTO_INTR_FLAGS_TRK_MSK
- Обозначние:
T
- _NTO_INTR_FLAGS_PROCESS
- Обозначние:
P
- _NTO_INTR_FLAGS_END
- Обозначние:
E
- handler:area – адрес обработчика прерываний и область обработчика прерываний.
- event – описание доставляемого события сигнализации. К действительным описаниям относятся следующие:
- SIGNAL – номер сигнала;
- SIGNAL_CODE – код_сигнала:значение;
- SIGNAL_THREAD – код_сигнала:значение;
- PULSE – идентификатор_соединения:код_приоритета:значение;
- UNBLOCK;
- INTR;
- THREAD – код:значение.
- mapinfo
- Вывести информацию об отображении объектов в памяти. Выходные данные представлены следующим образом:
4101 8 proc/boot/io-usb 10o RECEIVE 80K 424K 4096(20K)
libc.so.3 @b0300000 452K 16K
devu-uhci.so @b8200000 24K 4096
devu-ohci.so @b8207000 24K 4096
devu-ehci.so @b820e000 28K 4096
Mapped Phys Memory @40100000 (ee000000) 12K S
Эти выходные данные включают в себя следующую информацию: - имя объекта памяти или Mapped Phys Memory в случае отображения объектов в физической памяти;
- адрес объекта памяти, за которым указывается смещение (если применимо);
- размеры кода и данных объекта;
- флаги объекта памяти, которые могут быть представлены следующими флагами:
- ANON –
MAP_PRIVATE
, MAP_ANON
; - E –
MAP_ELF
; - F –
MAP_FIXED
; - P –
MAP_PRIVATE
; - S –
MAP_SHARED
.
Для получения дополнительной информации об этих флагах см. описание функции mmap().
- memory
- Вывести данные о памяти, занятой отображаемыми процессами. Утилита pidin отображает области разделяемой памяти, включая разделяемые объекты и данные по использованию стека по каждому потоку. Разделяемые области кода и данных из размера процесса исключаются.
Цифры стека указывают на объем стека, на который в данный момент выполнено отображение, а в скобках указывается максимальное допустимое значение для данного процесса.
Символ *
рядом с размером стека указывает на то, что при завершении выполнения потока память, используемая в стеке, не возвращается автоматически в область системной динамически распределяемой памяти (памяти типа "куча"). Возвращение памяти выполняется по завершении выполнения процесса.
Записи после /dev/mem
указывают на разделяемую память, отображаемую в адресное пространство процесса. Пример:
/dev/mem @38100000 ( 0) 172K
Если в записях для различных процессов отображается один и тот же объект (в данном примере – "@38100000"), это значит, что все эти записи ссылаются на один и тот же объект разделяемой памяти. Процессы могут отображаться в такой разделяемой памяти различным образом. Число в круглых скобках представляет собой смещение, использованное при вызове функции mmap(), а последнее число определяет размер области отображения.
- net
- Вывести системную информацию обо всех узлах в сети Qnet.
- pmem
- Вывести информацию только о памяти, используемой процессом.
- rc
- Вывести имена и аргументы процессов всех удаленных узлов, подключенных к компьютеру.
- regs
- Вывести значения регистров.
- rmasks
- Вывести процессорные маски и маски наследования.
- sched
- Вывести полезные параметры диспетчеризации для каждого потока. Это условное обозначение является синонимом -f abNplHJ.
- session
- Сортировать по идентификатору сеанса, а затем по идентификатору процесса. По умолчанию утилита pidin выполняет сортировку выходных данных по идентификатору процесса.
- signals
- Вывести состояние сигналов отображаемого процесса.
- syspage
- Вывести запись syspage. Можно указать секцию, информацию о которой требуется вывести. Для этого необходимо задать ее имя (например, по команде pidin syspage=asinfo отображается раздел asinfo). По умолчанию выводятся все разделы. Для получения дополнительной информации см. раздел "Structure of the system page" ("Структура системной страницы") в главе "Customizing Image Startup Programs" ("Настройка программ запуска образов") документа Building Embedded Systems ("Создание встраиваемых систем").
- threads
- Вывести имя потока. Если у потока нет имени, то утилита pidin отображает его идентификатор (идентификатор_потока).
- timers
- Вывести информацию о таймерах, принадлежащих процессу. Для каждого таймера выводятся следующие данные:
- id – идентификатор таймера, возвращаемый функцией TimerCreate().
- tid – идентификатор потока, связанный с этим таймером (
0
для всего процесса). - overruns – количество переполнений.
- clock_type – используемый тип часов. К действительным описаниям относятся следующие:
- REAL –
CLOCK_REALTIME
; - SOFT –
CLOCK_SOFTTIME
; - MONO –
CLOCK_MONOTONIC
.
- flags – флаг таймера. К действительным флагам относятся следующие:
- X –
_NTO_TI_EXPIRED
; - A –
_NTO_TI_ABSOLUTE
; - a –
_NTO_TI_ACTIVE
;
- msec – время, оставшееся до истечения срока (в миллисекундах).
- interval_msec – интервал таймера (в миллисекундах).
- event – описание события сигнализации, доставляемого по истечении срока таймера. Список действительных описаний событий приведен в описании условного обозначения irq.
- times
- Для каждого отображаемого процесса выводятся следующие данные:
- start time
- время и дата запуска процесса;
- utime
- время использования ЦП процессом (в секундах);
- stime
- время использования ЦП ядром от имени процесса (в секундах);
- cutime
- время использования ЦП процессами, порожденными данным процессом (в секундах);
- cstime
- время использования ЦП ядром от имени процессов, порожденных данным процессом (в секундах).
Значения времени для порожденных процессов добавляются к cutime и cstime только по завершении работы порожденных процессов.
| Загрузка ЦП рассчитывается на основе выборки. При возникновении прерывания по таймеру ядро определяет выполняемый процесс и добавляет время к общему времени выполнения активного потока и его процесса. Если само ядро является активным, также добавляются значения системного времени (stime) активного потока и его процесса. Параметр utime соответствует общему времени выполнения за вычетом системного времени.
В результате эти значения времени оказываются приблизительными, т.е. могут быть неточными (например, если управление процессом осуществляется с помощью прерывания по таймеру). Для определения более точных значений времени следует использовать системную программу профилирования. Для получения дополнительной информации см. «Руководство системного программиста (администратора)» КПДА.10964-01, раздел по набору инструментов для системного анализа или раздел «Анализ системы с помощью трассировки ядра» документа «Руководство системного программиста (администратора)» КПДА.10964-01, подраздел по интегрированной среде разработки IDE. |
- ttimes
- Отобразить значения времени потоков.
- users
- Отобразить реальный, эффективный и сохраненный идентификаторы пользователя и группы для пользователя, выполнившего запуск процессов. Данная опция не обеспечивает отображение имени пользователя или имени группы – выводятся только числовые идентификаторы.
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Утилита pidin отображает статистику по процессам, выполняемым в системе ЗОСРВ «Нейтрино».
По умолчанию утилита pidin выводит статистику только один раз и завершает работу. Если указана опция -l, то утилита pidin работает циклично и отображает статистику с задержкой, заданной с помощью опции -d.
Если указаны опции -l и -k, то утилита pidin работает циклично до возникновения ошибки и отображает статистику с заданной задержкой. Наиболее часто возникающей ошибкой является состояние состязания: менеджер procnto сообщает о том, что процесс существует, но при его запросе со стороны утилиты pidin оказывается, что процесс уже завершен.
Если требуется узнать объем памяти, занимаемый файловой системой образа (IFS; Image File System), следует выполнить команду:
pidin syspage=asinfo
и найти строки с imagefs. Пример выходных данных, отображаемых на экране, представлен ниже.
Значения в столбце Blocked
Если указан формат "%B", то в выходные данные добавляется столбец Blocked, значения в котором зависят от состояния потока:
Состояние | Значение |
---|
CONDVAR | Адрес переменной условия. |
JOIN | Идентификатор блокирующего потока. |
MUTEX | Адрес взаимного исключения или идентификаторы блокируемого процесса и потока, за которыми указывается количество блокировок в следующем формате: "идентификатор_процесса-идентификатор_потока #количество_блокировок" |
RECEIVE | Идентификатор канала в процессе, в котором блокируется поток. |
REPLY | Идентификатор процесса. |
SEM | Адрес семафора. |
SEND | Идентификатор процесса. |
STACK | Размер стека. |
WAITPAGE | Виртуальный адрес страницы. |
WAITTHREAD | Идентификатор блокирующего потока. |
Команда pidin выводит список, подобный приведенному ниже:
pid tid name prio STATE Blocked
1 1 /sys/procnto-instr 0f READY
1 3 /sys/procnto-instr 10r RUNNING
1 4 /sys/procnto-instr 12r RECEIVE 1
1 5 /sys/procnto-instr 12r RECEIVE 1
1 6 /sys/procnto-instr 12r RECEIVE 1
1 11 /sys/procnto-instr 12r RECEIVE 1
1 12 /sys/procnto-instr 10r RECEIVE 1
1 13 /sys/procnto-instr 10r RECEIVE 1
1 15 /sys/procnto-instr 255r RECEIVE 1
1 16 /sys/procnto-instr 10r RECEIVE 1
1 17 /sys/procnto-instr 10r RECEIVE 1
2 1 sbin/tinit 10o REPLY 1
3 1 proc/boot/slogger 10o RECEIVE 1
5 1 proc/boot/pci-bios 10o RECEIVE 1
6 1 roc/boot/devb-eide 10o SIGWAITINFO
6 2 roc/boot/devb-eide 21r RECEIVE 1
...
Выполнение команды pidin -F "%I %60N" обеспечивает отображение идентификаторов процессов и потоков, а также части кратких имен процессов длиной до 60 символов:
pid-tid name
1-01 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-03 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-04 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-05 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-06 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-11 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-12 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-13 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-15 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-16 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
1-17 rldbuild/cdr/qnx6/tmp/target/qnx6/x86/boot/sys/procnto-instr
2-01 sbin/tinit
3-01 proc/boot/slogger
5-01 proc/boot/pci-bios
6-01 proc/boot/devb-eide
...
Команда pidin mem выводит следующие данные:
pid tid name prio STATE code data stack
1 1 /sys/procnto-instr 0f READY 1812K 12K 0(320)*
1 3 /sys/procnto-instr 10r RUNNING 1812K 12K 0(8192)
1 4 /sys/procnto-instr 12r RECEIVE 1812K 12K 0(8192)
1 5 /sys/procnto-instr 12r RECEIVE 1812K 12K 0(8192)
1 6 /sys/procnto-instr 12r RECEIVE 1812K 12K 0(8192)
1 11 /sys/procnto-instr 12r RECEIVE 1812K 12K 0(8192)
1 12 /sys/procnto-instr 10r RECEIVE 1812K 12K 0(8192)
1 13 /sys/procnto-instr 10r RECEIVE 1812K 12K 0(8192)
1 15 /sys/procnto-instr 255r RECEIVE 1812K 12K 0(8192)
1 16 /sys/procnto-instr 10r RECEIVE 1812K 12K 0(8192)
1 17 /sys/procnto-instr 10r RECEIVE 1812K 12K 0(8192)
procnto-instr @cfbe5000 12K 12K
2 1 sbin/tinit 10o REPLY 8192 36K 4096(516K)*
ldqnx.so.2 @b0300000 344K 16K
3 1 proc/boot/slogger 10o RECEIVE 8192 104K 4096(516K)*
ldqnx.so.2 @b0300000 344K 16K
5 1 proc/boot/pci-bios 10o RECEIVE 36K 40K 8192(516K)*
ldqnx.so.2 @b0300000 344K 16K
6 1 roc/boot/devb-eide 10o SIGWAITINFO 52K 91M 8192(516K)*
6 2 roc/boot/devb-eide 21r RECEIVE 52K 91M 4096(12K)
...
Команда pidin syspage=asinfo выводит следующие данные:
Section:asinfo offset:0x00000568 size:0x00000240
0) 0-ffff o:ffff a:0000 p:100 n:io
20) 0-ffffffff o:ffff a:0010 p:100 n:memory
40) 0-ffffff o:0020 a:0010 p:100 n:memory/isa
a0) 0-9fbff o:0040 a:0017 p:100 n:memory/isa/ram
180) 1000-cfff o:00a0 a:0007 p:100 n:memory/isa/ram/sysram
1a0) 20f98-9fbff o:00a0 a:0007 p:100 n:memory/isa/ram/sysram
c0) 100000-ffffff o:0040 a:0037 p:100 n:memory/isa/ram
1c0) 100000-40e507 o:00c0 a:0007 p:100 n:memory/isa/ram/sysram
1e0) 5e533c-ffffff o:00c0 a:0027 p:100 n:memory/isa/ram/sysram
60) 6000000-ffefffff o:0020 a:0013 p:100 n:memory/device
100) 6000000-ffeafff o:0060 a:0017 p:100 n:memory/device/ram
220) 6000000-ffeafff o:0100 a:0007 p:100 n:memory/device/ram/sysram
80) fff00000-ffffffff o:0020 a:0005 p:100 n:memory/rom
e0) 1000000-5ffffff o:0020 a:0037 p:100 n:memory/ram
200) 1000000-5ffffff o:00e0 a:0027 p:100 n:memory/ram/sysram
120) 40e508-5e533b o:0020 a:0005 p:100 n:memory/imagefs
140) 400400-40e507 o:0020 a:0007 p:100 n:memory/startup
160) 40e508-5e533b o:0020 a:0007 p:100 n:memory/bootram
Базовые подсистемы ЗОСРВ «Нейтрино»
hogs, ps, showmem, top
Предыдущий раздел: Утилиты