# buffers.g command

Used in conjunction with the buffers BASIC program, the buffers.g command produces
a graphic histogram of buffer usage for a range of dates and times.

**For Windows:**Not Supported

## Syntax

```
buffers.g counter{start.day{-end.day} {step {start.time-{end.time}}} {(options}
```

## Parameter(s)

| counter | Attribute name in the dm,buffers.log, file to examine. | |
| --- | --- | --- |
| start.day | Beginning day-of-the-week for the graph results. The available values are: Sunday–Saturday or 0–6. | |
| end.day | Ending day-of-the-week for the graph results. The available values are: Sunday–Saturday or 0–6. | |
| * | Spans the entire week. | |
| start.time | Beginning time-of-day for the graph results. The valid values are: 00:00:00–23:59:59. | |
| end.time | Ending time-of-day for the graph results. The valid values are: 00:00:00–23:59:59. | |
| options | g | Displays a graph, rather than a histogram. With this option, the step is automatically calculated. The results are averaged in an attempt to make the curve smoother. |
| p | Directs output to printer. | |
The reports are histogram averages of the buffer values
sampled over a period of time (from the buffers command). These reports can give the system administrator a better
idea of the workload of the D3 system, and identify possible bottlenecks
in the system’s performance.

The activity log is stored in the
file buffers.log with a data level per weekday (buffer.log, Monday,
buffer.log, Tuesday, and so on). The file is created automatically
when the buffers command, with the h option, is used for the first time. Each data level is cleared when
changing the day, so that the file records a whole week of activity
automatically. The item-ID is the internal time.

The buffers command also creates automatically the dictionary
attributes corresponding to the various counters, as shown in the
next table. The attribute *time* displays the sampling time and
the attribute *description*, in the D-pointers Monday, Tuesday
and so on, contains the date. The file is created with a dx attribute.

The available attribute names
include:

| 0 | time | Times. |
| --- | --- | --- |
| 1 | activ | Activations. |
| 2 | idle | Idle time. |
| 3 | fflt | Frame faults. |
| 4 | writes | Disk writes. |
| 5 | bfail | Buffer search fails. |
| 6 | fqfull | Read queue full. |
| 7 | wqfull | Write queue full. |
| 8 | dskerr | Disk errors. |
| 9 | elapsd | Elapsed time. |
| 21 | ww | Write required. |
| 22 | iobusy | I/O busy. |
| 23 | mlock | Memory locked. |
| 24 | ref | Referenced. |
| 25 | wq | Enqueued writes (write queues). |
| 26 | tophsh | Top-of-hash. |
| 27 | avail | Number of available buffers. |
| 28 | batch | Batch. |
Additional attributes available on a hosted UNIX system
include:

| 10 | dblsrc | Double-source. |
| --- | --- | --- |
| 11 | breuse | Buffers reused. |
| 12 | bsleep | Buffers sleeping. |
| 13 | sem | Semaphores. |

## Example(s)

```
buffers.g sem 6
0 1 2 3 4 5 6...
+------+------+------+------+------+------+---
16:52:05
16:52:11
16:52:18 **************
16:52:25
16:52:31
16:52:38 *******
16:52:45 *********************
16:52:51
16:52:58
16:53:05 *******
16:53:12 *******
16:53:18
Number of samples : 13
Total : 14
Average per period : 0.0002 / sec.
Max value : 4
Max value /s : 0.2857
Peak time : 16:52:45
```

```
buffers.g writes tuesday (g
49.0 *
46.3 | *
43.5 | * **
40.8 | *** * * ***
38.1 | * *** * ** **
35.4 | * * ** * *** * **
32.7 |* * *** ** *
29.9 | **
27.2 | **
24.5 |
21.8 |
19.0 |
16.3 |
13.6 |
10.9 |
8.2 |
5.4 |
2.7 |
0/s +------+------+------+------+------+------+------
 09:09:26 09:11:46 09:14:06 09:16:26
```

```
buffers.g fflt * 01:00:00
```
Lists the number of frames faults (disk reads), for the
whole week, by step of one hour. In the example below, no history
was recorded before Wednesday.

```
No log for Sunday
No log for Monday
No log for Tuesday
20Feb2003; Wednesday; Ctr=fflt, Step=01:00:00, Range=00:00:00-23:59:59
 0 8848 17696 26544 35392 44240 53088 61936
 +------+------+------+------+------+------+------+------+----
10:59:28 *************************
11:59:54 ***********************************************************
13:00:25 **********************************************************
14:00:52 ************************************
15:01:18 ***************************
16:01:49 ********************************************************
17:02:22 ***************************************
18:02:55 ******
19:03:32 ***********************************************
20:04:08 *************************************************
21:04:43
22:05:21 ***************************************************
23:05:55 *************
Number of samples : 155
Total : 622070
Average per period : 7.1999 / sec.
Max value : 88481
Peak time : 13:00:25
buffers.g ww monday-friday 00:30 08:00-17:30 (p
```
Lists the percentage of write-required buffers, for the
weekdays only, during business hours, by steps of 30 minutes.

## Interpreting Results

After taking a significant
sample, list the results with the buffers.g command.
The most useful parameters to survey are:

| Fflt | Measures the number of frame faults. If this number approaches the disk bandwidth as determined by the manufacturer, the system becomes disk bound. Solutions range from increasing the memory allocated to D3, to changing disks, or reorganizing the D3 database on separate disks to increase parallelism. |
| --- | --- |
| Writes | Number should stay about one third to a half of the number of frame faults. It is not normal for a system to do more writes than it reads, under normal operation. |
| Bfail | Number should never be nonzero. If it is not the case, the memory allocated to D3 is definitely too small. |
| WqFull | Number should not be nonzero too often. If it is the case, and if the number of writes is too big also, there is an abnormal rate of writes. |
| Bcolls | If this number becomes too high, this indicates that a lot of batch jobs (for example, selects of big files) are done while other processes are doing data entry. It is also an indicator that indeed interactive jobs are receiving higher priority than batch processes. |
| ww | Number should never go above 50% of the whole buffer pool. If this is the case, the flusher is probably not activated often enough. |
| avail | Number should never go below 10% of the whole buffer pool. If this is the case, memory must be increased or the flusher must be adjusted. |

## See also

- [buf-map command](https://d3codex.com/tcl/buf-map-command/)
- [buffers command](https://d3codex.com/tcl/buffers-command/)
- [flush command](https://d3codex.com/tcl/flush-command/)
- [Flusher](https://d3codex.com/definitions/flusher/)
- [monitor-status command](https://d3codex.com/tcl/monitor-status-command/)
- [set-flush command](https://d3codex.com/tcl/set-flush-command/)

---
Source: https://d3codex.com/tcl/buffers-g-command/ - part of the D3Codex reference.
