pidin

Просмотр статистики системы

Синтаксис:

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". Буква, следующая за номером приоритета диспетчеризации, указывает на используемый алгоритм диспетчеризации: Для получения дополнительной информации об этих алгоритмах диспетчеризации см. раздел «Диспетчеризация потоков» документа «Описание применения. Часть 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 идентификатор_процесса
Отобразить только указанный процесс (значение аргумента идентификатор_процесса может быть представлено именем или номером).

Note: Если в качестве значения аргумента идентификатор_процесса указан номер, то он интерпретируется как идентификатор процесса. В противном случае он интерпретируется как имя.

Не следует присваивать процессам числовые имена.

Команды:

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

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 выводит ограниченную информацию. Информация по каждому соединению и дескриптору файла включает в себя следующие данные:
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().
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
Вывести информацию о таймерах, принадлежащих процессу. Для каждого таймера выводятся следующие данные:
times
Для каждого отображаемого процесса выводятся следующие данные:
start time
время и дата запуска процесса;
utime
время использования ЦП процессом (в секундах);
stime
время использования ЦП ядром от имени процесса (в секундах);
cutime
время использования ЦП процессами, порожденными данным процессом (в секундах);
cstime
время использования ЦП ядром от имени процессов, порожденных данным процессом (в секундах).

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

Note: Загрузка ЦП рассчитывается на основе выборки. При возникновении прерывания по таймеру ядро определяет выполняемый процесс и добавляет время к общему времени выполнения активного потока и его процесса. Если само ядро является активным, также добавляются значения системного времени (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




Предыдущий раздел: Утилиты