|Command||tcl.buffers Verb: Access/TCL
Applicable release versions: AP
|Description||displays a single "snapshot" of the status of memory-resident buffers. The "l" (loop) option repeats the display until voluntarily stopped.
The following elements are monitored by the buffers command:
Activ Number of Process activations. Each disk read, keystroke, process wake up after a sleep increments this counter. When the number of frame faults is subtracted from this counter, this gives an idea of the volume of data entry.
Idle Idle time. Not supported on Unix Implementations
Fflt Frame faults. This counts the number of disk reads. If this number approaches the disk I/O bandwidth (as determined by the manufacturer), the system becomes disk-bound. Solutions range from increasing the memory allocated to Pick, to changing disk drives, to reorganizing the Pick database on separate disk drives to increase parallelism ("disk striping").
Writes Disk Writes. All writes are normally done by the background flush process to update disk from dirty frames in memory. This number should remain at 30% - 50% of the number of frame faults. A higher number indicates a lot of updates, or else there may be insufficient memory allocated for the Pick virtual machine.
Bfail Buffer Search Failures. This counter counts the number of failures to allocate a buffer in memory for a new frame. When non zero, this indicates that the memory is insufficient. This counter should never be non zero. If it is, it indicates that the memory allocated to Pick is too small.
RqFull Disk Read Queue Full. Not supported on Unix Implementations
WqFull Disk Write Queue Full. This counter counts the number of instances where the flusher cannot keep up with the dirtying of frames. This is an indication that either the Flusher's write queue is too small for the given configuration (See the 'dwqnum' parameter in the "pick0" file), or that the memory allocated to Pick is too small.
DskErr Disk Errors.
Elapsd Elapsed time. This is the time in seconds between two sampling. For internal use only.
DblSrc Double Search. This counts the number of collisions between two or more processes frame faulting on the same frame at the same instant. A non zero counter should be exceptional.
Breuse Buffer Re-Use. This counts the number of instances where a memory buffer has been allocated by one process to read one FID and another process allocated the same buffer to contain another FID. A non zero counter should be exceptional.
Bcolls Batch Contentions/Collisions. This counts the number of collisions between a 'batch' process (i.e., a process which is disk intensive) and an 'interactive' process (i.e., a process which is keyboard input intensive). By default, Pick insures that interactive processes are given priority over batch processes in accessing certain resources. See the command 'set-batchdly' for more details.
Sem Semaphores Collisions. This counts the number of collisions between two processes trying to access a system wide internal table.
Vlocks Virtual Locks Failures. This counts the number of cases when a Pick process tried to assert a virtual lock and failed to acquire it because another process had it.
Blocks FlashBASIC or Pick/BASIC Locks Failures. This counts the number of cases when a Pick process tried to assert a FlashBASIC or Pick/BASIC lock and failed to acquire it because another process had it.
B0reg Buffers with no Virtual Registers attached. These are the buffers not currently attached for immediate reference. At any given time, very few buffers are actually attached. It is therefore normal that this number be almost equal to the total buffers in memory.
B1reg Buffers used by more than one process, but not used by its owner any more. These should be in very small number.
B2reg Buffers used exclusively by their owner. On RISC implementations, this situation allows better performance, because there is no conflict on these buffers. Normally, these buffers contain private workspace, data which is not shared, etc...
B>3reg Buffers used both by their owner and other processes. This number represent the number of pages actually shared among processes (data files) at any given time.
ww Write Required. This counts the number of buffers currently modified and not yet written to disk. This number should never go above 50% of the whole buffer pool. If it does, then the flusher ('set-flush') is probably not being activated enough.
IObusy Buffers being read from disk. This counts the number of pending disk reads. This counters is usually null, since the reads are too fast to be picked up.
Mlock Number of buffers memory locked. If the ABS section is locked, this number is at least equal to the ABS size. Also included, are the tape buffers when the tape is attached.
Ref Referenced Buffers. This counts the number of buffers which have been recently used.
WQ Write Queued. Number of buffers currently enqueued for write.
Tophsh Top of Hash. This number measures the quality of the hashing algorithm used to find a frame in memory. This number must be high (above 60% of the total buffers).
avail Available buffers. Number of buffers that are candidates for replacement. These are the buffers that nobody has been using recently. When this number drops below 10% of the total buffers, performance decreases significantly.
batch Batch Buffers. This is the Number of buffers used by batch processes. A high level (something approaching 50% of disk buffers) indicates that disk intensive activity is taking place by batch processes.
|Options||number (integer number). Sets delay between "snapshots". Default is 1/5 seconds.
c Clears history log before starting process. If not present, the history file is created as a "dx" file, meaning that it will not be saved by a file-save or account-save. This process appends to the "buffers.log" history file, unless the "c" option is specified.
h Creates a history file called "buffers.log", where statistical data about system performance may be stored.
s Displays system counters.
l Loops continuously. Operator is prompted to enter an "x" to stop or an "r" to redraw the screen. The default delay between activations is five seconds.