Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ pstat(8) — OS/MP 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ps(1)

chmod(2V)

fork(2V)

getpriority(2)

lseek(2V)

stat(2V)

vadvise(2)

vfork(2)

fs(5)

iostat(8)

oncpu(8)

vmstat(8)

PSTAT(8)  —  MAINTENANCE COMMANDS

NAME

pstat − print system facts

SYNOPSIS

/usr/etc/pstat [ −afipSsTb ] [ −u pid ] [ system [ corefile ] ]

DESCRIPTION

pstat interprets the contents of certain system tables.  If corefile is given, the tables are sought there, otherwise in /dev/kmem.  The required namelist is taken from /vmunix unless system is specified. 

OPTIONS

−a Under −p, describe all process slots rather than just active ones. 

−b Print a stack backtrace of all processes in the system. 

−f Print the open file table with these headings:

LOC The memory address of this table entry. 

TYPE The type of object the file table entry points to. 

FLG Miscellaneous state variables encoded thus:

R open for reading

W open for writing

A open for appending

S shared lock present

X exclusive lock present

I signal pgrp when data ready

CNT Number of processes that know this open file. 

MSG Number of references from message queue. 

DATA The location of the vnode table entry or socket for this file. 

OFFSET The file offset (see lseek(2V)). 

−i Print the inode table including the associated vnode entries with these headings:

ILOC The memory address of this table entry. 

IFLAG Miscellaneous inode state variables encoded thus:

A inode access time must be corrected

C inode change time must be corrected

L inode is locked

R inode is being referenced

U update time (fs(5)) must be corrected

W wanted by another process (L flag is on)

IDEVICE Major and minor device number of file system in which this inode resides. 

INO I-number within the device. 

MODE Mode bits in octal, see chmod(2V). 

NLK Number of links to this inode. 

UID User ID of owner. 

SIZE/DEV Number of bytes in an ordinary file, or major and minor device of special file. 

VFLAG Miscellaneous vnode state variables encoded thus:

R root of its file system

S shared lock applied

E exclusive lock applied

Z process is waiting for a shared or exclusive lock

CNT Number of open file table entries for this vnode. 

SHC Reference count of shared locks on the vnode. 

EXC Reference count of exclusive locks on the vnode (this may be ‘> 1’ if, for example, a file descriptor is inherited across a fork). 

TYPE Vnode file type, either VNON (no type), VREG (regular), VDIR (directory), VBLK (block device), VCHR (character device), VLNK (symbolic link), VSOCK (socket), VFIFO (named pipe), or VBAD (bad). 

−p Print process table for active processes with these headings:

LOC The memory address of this table entry. 

S Run state encoded thus:

0 no process

1 awaiting an event

2 (abandoned state)

3 runnable

4 being created

5 being terminated

6 stopped (by signal or under trace)

F Miscellaneous state variables, ORed together (hexadecimal):

0000001 loaded

0000002 a system process (scheduler or page-out daemon)

0000004 locked for swap out

0000008 swapped out during process creation

0000010 process is being traced

0000020 tracing parent has been told that process is stopped

0000040 user settable lock in memory

0000080 in page-wait

0000100 prevented from swapping during fork(2V)

0000200 will restore old mask after taking signal

0000400 exiting

0000800 doing physical I/O

0001000 process resulted from a vfork(2) which is not yet complete

0002000 another flag for vfork(2)

0004000 process has no virtual memory, as it is a parent in the context of vfork(2)

0008000 process is demand paging pages from its executable image vnode

0010000 process has advised of sequential VM behavior with vadvise(2)

0020000 process has advised of random VM behavior with vadvise(2)

0080000 process is a session process group leader

0100000 process is tracing another process

0200000 process needs a profiling tick

0400000 process is scanning descriptors during select

4000000 process has done record locks

8000000 process is having its system calls traced

PRI Scheduling priority, see getpriority(2). 

SIG Signals received (signals 1-32 coded in bits 0-31). 

UID Real user ID. 

SLP Amount of time process has been blocked. 

TIM Time resident in seconds; times over 127 coded as 127. 

CPU Weighted integral of CPU time, for scheduler. 

NI Nice level, see getpriority(2). 

PGRP Process number of root of process group. 

PID The process ID number. 

PPID The process ID of parent process. 

RSS Resident set size — the number of physical page frames allocated to this process. 

SRSS RSS at last swap (0 if never swapped). 

SIZE The size of the process image.  That is, the sum of the data and stack segment sizes, not including the sizes of any shared libraries. 

WCHAN Wait channel number of a waiting process. 

LINK Link pointer in list of runnable processes. 

PAM Current process affinity bitmask. 

SPAM Saved process affinity bitmask. 

ROTOR Index of the next free list where pages will be allocated from when a new page is required.  This is used to avoid cache aliasing. 

−S Print the streams table with these headings:

LOC The memory address of this table entry. 

WRQ The address of this stream’s write queue. 

VNODE The address of this stream’s vnode. 

DEVICE Major and minor device number of device to which this stream refers. 

PGRP This stream’s process group number. 

SIGIO The process id or process group that has this stream open(). 

FLG Miscellaneous stream state variables encoded thus:

I waiting for ioctl() to finish

R read/recvmsg is blocked

W write/putmsg is blocked

P priority message is at stream head

H device has been “hung up” (M_HANGUP)

O waiting for open to finish

M stream is linked under multiplexor

D stream is in message-discard mode

N stream is in message-nondiscard mode

E fatal error has occurred (M_ERROR)

T waiting for queue to drain when closing

2 waiting for previous ioctl() to finish before starting new one

3 waiting for acknowledgment for ioctl()

B stream is in non-blocking mode

A stream is in asynchronous mode

o stream uses old-style no-delay mode

S stream has had TOSTOP set

C VTIME clock running

V VTIME timer expired

r collision on select() for reading

w collision on select() for writing

e collision on select() for exceptional condition

The queues on the write and read sides of the stream are listed for each stream.  Each queue is printed with  these headings:

NAME The name of the module or driver for this queue. 

COUNT The approximate number of bytes on this queue. 

FLG Miscellaneous state variables encoded thus:

E queue is enabled to run

R someone wants to get from this queue when it becomes non-empty

W someone wants to put on this queue when it drains

F queue is full

N queue should not be enabled automatically by a putq

MINPS The minimum packet size for this queue. 

MAXPS The maximum packet size for this queue, or INF if there is no maximum. 

HIWAT The high-water mark for this queue. 

LOWAT The low-water mark for this queue. 

−s Print information about swap space usage:

allocated: The amount of swap space (in bytes) allocated to private pages. 

reserved: The number of swap space bytes not currently allocated, but claimed by memory mappings that have not yet created private pages. 

used: The total amount of swap space, in bytes, that is either allocated or reserved. 

available: The total swap space, in bytes, that is currently available for future reservation and allocation. 

−T Print the number of used and free slots in the several system tables.  This is useful for checking to see how full system tables have become if the system is under heavy load.  Shows both used and cached inodes. 

−u pid
Print information about the process with ID pid.

FILES

/vmunix namelist

/dev/kmem default source of tables

SEE ALSO

ps(1), chmod(2V), fork(2V), getpriority(2), lseek(2V), stat(2V), vadvise(2), vfork(2), fs(5) iostat(8), oncpu(8), vmstat(8),

BUGS

It would be very useful if the system recorded “maximum occupancy” on the tables reported by −T; even more useful if these tables were dynamically allocated. 

Solbourne Computer, Inc.  —  10 Jan 1994

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026