The buffers BASIC program displays a single snapshot of the status of memory-resident buffers. The loop (l) option repeats the display until voluntarily stopped.
For Windows: Not Supported
These elements listed are monitored by the buffers command:
|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 time
For UNIX: Not Supported
|Frame fault counter 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 D3, to changing disk drives, to reorganizing the D3 database on separate disk drives, and to increase parallelism (such as disk striping).
|Disk writes are 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 D3 virtual machine.
|Buffer search failure counter counts the number of failures to allocate a buffer in memory for a new frame. When not nonzero, this indicates that the memory is insufficient. This counter should never be nonzero. If it is, it indicates that the memory allocated to D3 is too small.
| Disk read queue full.
For UNIX: Not Supported
|Elapsed time is the time in seconds between two sampling. For internal use only.
|Double search counts the number of collisions between two or more processes frame faulting on the same frame at the same instant. A nonzero counter should be exceptional.
|Buffer reuse 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 nonzero counter should be exceptional.
|Batch contention/collision counts the number of collisions between a batch process (that is, a process which is disk intensive) and an interactive process (that is, a process, which is keyboard input intensive). By default, D3 ensures that interactive processes are given priority over batch processes in accessing certain resources.
|Semaphores collision counts the number of collisions between two processes trying to access a system wide internal table.
|Virtual locks failure counts the number of cases when a D3 process tried to assert a virtual lock and failed to acquire it because another process had it.
|BASIC locks failure counts the number of cases when a D3 process tried to assert a BASIC lock and failed to acquire it because another process had it.
|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.
|Buffers used by more than one process, but not used by its owner anymore. These should be in very small number.
|Buffers used exclusively by their owner.
|Buffers used both by their owner and other processes. This number represents the number of pages actually shared among processes (data files) at any given time.
|Write required 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.
|Buffers being read from disk counts the number of pending disk reads. This counters is usually null, since the reads are too fast to be picked up.
|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.
|Referenced buffers count the number of buffers that have been recently used.
|Indicates the percentage of buffers that are found on the first look-up attempt in the buffers table. If this percentage remains consistently low (for example, below 10%), then it is likely that either a system restore and/or more memory is required.
|Available buffers is the 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 buffers 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.
|Integer number that sets the delay between snapshots. Default is .2 seconds.
|Clears history log before starting process. If not present, the history file is created as a dx file, meaning that it is not being saved by a file-save or account-save. This process appends to the buffers.log history file, unless the c option is specified.
|Creates a history file called buffers.log, where statistical data about system performance may be stored.
|Displays system counters.
|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.
For UNIX: The number of process activations does not reflect the actual process scheduling, which is controlled by UNIX. This number roughly measures the occurrences when a process voluntarily relinquishes CPU control (sleeps).