pidin

Просмотр статистики системы (QNX Neutrino)

Синтаксис:

pidin [опции] условное_обозначение

Поддерживаемые платформы:

Neutrino

Опции:

-d задержка

Задержка (в десятых долях секунды). Значение по умолчанию – 10.

-F форматы

Комбинация символов управления форматом, аналогично строке формата для функции printf(). Как и при работе с функцией printf(), с помощью данной опции можно задать ширину поля, указав в дополнение к формату число, например, "%I %60N".

Формат

Описание

A

Аргументы.

a

Идентификатор процесса.

B

Параметры блокировки. См. приведенный ниже раздел "Значения в столбце Blocked".

b

Идентификатор потока.

c

Размер кода процесса.

d

Размер данных процесса.

E

Окружение.

e

Идентификатор родительского процесса.

f

Флаги процесса (см. условное обозначение flags ниже).

H

Информация, связанная с диспетчеризацией, по каждому потоку. В случае использования адаптивного квотирования отображается название раздела, в котором выполняется поток. Для получения дополнительной информации см. «Руководство системного программиста (администратора)» КПДА.10964-01 32, раздел по адаптивной декомпозиции.

Этот код форматирования был добавлен в QNX Neutrino Core OS 6.3.2.

h

Имя потока. Если у потока нет имени, то утилита pidin отображает его идентификатор (tid).

Этот код форматирования был добавлен в QNX Neutrino Core OS 6.3.2.

I

Идентификатор процесса и идентификатор потока.

i

Процессорная маска и маска наследования.

Этот код форматирования был добавлен в QNX Neutrino Core OS 6.3.2.

J

Состояние потока. См. раздел "Thread life cycle" ("Жизненный цикл потока") в главе "QNX Neutrino Microkernel" ("Микроядро QNX Neutrino") руководства по системной архитектуре.

K

Последний выполненный вызов ядра.

l

("эль") Последний ЦП, в котором выполнялся поток.

M

Память, используемая для процесса с данным идентификатором.

m

Размер стека процесса.

N

Краткое имя процесса.

n

Полное имя процесса.

o

Идентификаторы соединений и дескрипторы файлов, связанные с процессом (см. условное обозначение fds ниже).

Этот код форматирования был добавлен в QNX Neutrino Core OS 6.3.2.

P

("P" в верхнем регистре) Родительская группа.

p

("p" в нижнем регистре) Приоритет потока.

Q

Обработчики прерываний.

q

Обратная трассировка подпрограмм вызова. Для достижения оптимальных результатов следует использовать данный символ управления форматом вместе с символом I.

Этот код форматирования был добавлен в QNX Neutrino 6.4.0.

R

Таймеры.

S

Маска игнорируемых сигналов.

s

Маска ожидающих в очереди сигналов.

T

Число потоков.

[

Длина очередей отправки, получения, ответов и импульсов.

Этот код форматирования был добавлен в QNX Neutrino 6.4.0.


Если формат не указан, то по умолчанию используется формат "%a %b %N %p %J %B".

Буква, следующая за номером приоритета диспетчеризации, указывает на используемый алгоритм диспетчеризации:
Для получения дополнительной информации об этих алгоритмах диспетчеризации см. раздел "Thread scheduling" ("Диспетчеризация потоков") руководства по системной архитектуре.

-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

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

Примечание
. Условное обозначение backtrace было добавлено в QNX Neutrino 6.4.0.

channels

Отобразить длину очередей отправки, получения, ответов и импульсов. Это условное обозначение целесообразно использовать при отслеживании утечки импульсов, т.е. выявления процесса, в который не поступают импульсы. Это может привести к увеличению объема оперативной памяти, потребляемого ядром, поскольку структуры данных для импульсов выделяются непосредственно в ядре.

Примечание. Условное обозначение channels было добавлено в QNX Neutrino 6.4.0.

environment

Вывести информацию об окружении для отображаемых процессов.

extsched

Вывести подробную информацию об активной расширенной конфигурации диспетчера.

В случае диспетчера адаптивной декомпозиции эти данные представлены одной строкой глобальной конфигурации, за которой выводится по одной строке с данными для каждого из определенных разделов (включая имя, бюджет, критический бюджет и уведомления о перегрузке). Для получения дополнительной информации см. «Руководство системного программиста (администратора)» КПДА.10964-01 32.

Примечание. Условное обозначение extsched было добавлено в ОС QNX Neutrino Core 6.3.2.

family

Вывести информацию о сеансах, группах процессов, а также родительских, одноуровневых и порожденных процессах отображаемых процессов.

fds

Отобразить информацию о соединениях процесса и дескрипторах файлов. Если у пользователя отсутствуют полномочия на доступ к ним, утилита pidin выводит ограниченную информацию.

Примечание. Условное обозначение fds было добавлено в ОС QNX Neutrino Core 6.3.2.

Информация по каждому соединению и дескриптору файла включает в себя следующие данные:

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 отображает следующие данные:

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

Эти выходные данные включают в себя следующую информацию: Для получения дополнительной информации об этих флагах см. описание функции mmap() в руководстве по библиотекам QNX Neutrino Library Reference.
Примечание. Условное обозначение mapinfo было добавлено в QNX Neutrino 6.4.0.

memory

Вывести данные о памяти, занятой отображаемыми процессами. Утилита pidin отображает области разделяемой памяти, включая разделяемые объекты и данные по использованию стека по каждому потоку. Разделяемые области кода и данных из размера процесса исключаются.

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

Символ * рядом с размером стека указывает на то, что при завершении выполнения потока память, используемая в стеке, не возвращается автоматически в область системной динамически распределяемой памяти (памяти типа "куча"). Возвращение памяти выполняется по завершении выполнения процесса.

Записи после /dev/mem указывают на разделяемую память, отображаемую в адресное пространство процесса. Пример:

/dev/mem @38100000 ( 0) 172K

Если в записях для различных процессов отображается один и тот же объект (в данном примере – @38100000), это значит, что все эти записи ссылаются на один и тот же объект разделяемой памяти. Процессы могут отображаться в такой разделяемой памяти различным образом. Число в круглых скобках представляет собой смещение, использованное при вызове функции mmap(), а последнее число определяет размер области отображения.

net

Вывести системную информацию обо всех узлах в сети Qnet.

pmem

Вывести информацию только о памяти, используемой процессом.

rc

Вывести имена и аргументы процессов всех удаленных узлов, подключенных к компьютеру.

regs

Вывести значения регистров.

rmasks


Вывести процессорные маски и маски наследования.

Примечание. Условное обозначение rmasks было добавлено в ОС QNX Neutrino Core 6.3.2.

sched


Вывести полезные параметры диспетчеризации для каждого потока. Это условное обозначение является синонимом -f abNplHJ.

Примечание. Условное обозначение sched было добавлено в ОС QNX Neutrino Core 6.3.2.

session

Сортировать по идентификатору сеанса, а затем по идентификатору процесса. По умолчанию утилита pidin выполняет сортировку выходных данных по идентификатору процесса.

signals

Вывести состояние сигналов отображаемого процесса.

syspage

Вывести запись syspage. Можно указать секцию, информацию о которой требуется вывести. Для этого необходимо задать ее имя (например, по команде pidin syspage=asinfo отображается раздел asinfo). По умолчанию выводятся все разделы. Для получения дополнительной информации см. раздел "Structure of the system page" ("Структура системной страницы") в главе "Customizing Image Startup Programs" ("Настройка программ запуска образов") документа Building Embedded Systems ("Создание встраиваемых систем").

threads

Вывести имя потока. Если у потока нет имени, то утилита pidin отображает его идентификатор (идентификатор_потока).

timers

Вывести информацию о таймерах, принадлежащих процессу. Для каждого таймера выводятся следующие данные:

times

Для каждого отображаемого процесса выводятся следующие данные:
Значения времени для порожденных процессов добавляются к cutime и cstime только по завершении работы порожденных процессов.

Примечание.

Загрузка ЦП рассчитывается на основе выборки. При возникновении прерывания по таймеру ядро определяет выполняемый процесс и добавляет время к общему времени выполнения активного потока и его процесса. Если само ядро является активным, также добавляются значения системного времени (stime) активного потока и его процесса. Параметр utime соответствует общему времени выполнения за вычетом системного времени.

В результате эти значения времени оказываются приблизительными, т.е. могут быть неточными (например, если управление процессом осуществляется с помощью прерывания по таймеру). Для определения более точных значений времени следует использовать системную программу профилирования. Для получения дополнительной информации см. «Руководство системного программиста (администратора)» КПДА.10964-01 32, раздел по набору инструментов для системного анализа или раздел Analyzing Your System with Kernel Tracing ("Анализ системы с помощью трассировки ядра") в «Руководстве системного программиста (администратора)» КПДА.10964-01 32, подраздел по интегрированной среде разработки IDE.

ttimes

Отобразить значения времени потоков.

users

Отобразить реальный, эффективный и сохраненный идентификаторы пользователя и группы для пользователя, выполнившего запуск процессов. Данная опция не обеспечивает отображение имени пользователя или имени группы – выводятся только числовые идентификаторы.

Описание:

Утилита pidin отображает статистику по процессам, выполняемым в системе QNX Neutrino.

По умолчанию утилита 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