There is a possible performance impact from having too little memory available for multiphysical buffers. When the system requires a scatter-gather, transfer, or copy buffer when none is available, it will put the process requiring the resource to sleep until one is available. The number of 4KB pages of memory available for these buffers is determined by the value of the kernel parameter NMPBUF.
``Configuring kernel parameters'' tells you how you can use the configure(ADM) utility to change the value of NMPBUF.
Use sar -B and sar -h (or their mpsar equivalents for SMP) to see if enough multiphysical buffers are configured. The output from sar -B reports on the system's use of copy buffers:
23:59:44 cpybufs/s slpcpybufs/s 23:59:49 0.00 0.00 23:59:54 0.00 0.00 23:59:59 0.00 0.00The
Average 0.00 0.00
slpcpybufs/scolumn shows how many times per second a process has to sleep waiting for a copy buffer.
sar -h reports on the usage of the other multiphysical buffers:
23:59:44 mpbuf/s ompb/s mphbuf/s omphbuf/s pbuf/s spbuf/s dmabuf/s sdmabuf/s 23:59:49 0.10 0.00 0.21 0.00 0.06 0.00 0.04 0.00 23:59:54 0.09 0.00 6.22 0.00 0.18 0.00 0.07 0.00 23:59:59 0.20 0.00 0.54 0.00 0.05 0.00 0.03 0.00The columns
Average 0.13 0.00 2.32 0.00 0.10 0.00 0.05 0.00
sdmabuf/sshow how many times the system ran short of scatter-gather and DMA transfer buffers per second.
If sar -B and sar -h report
non-zero values for
increase the value of the kernel parameter NMPBUF by at
least the maximum value reported for the sum of the following
slpcpybufs/s / ( 4
NMPBUF ( 4
For example, suppose sar -B and sar -h reported the following shortfall in the availability of multiphysical buffers at a particular point in time:
12:00:00 cpybufs/s slpcpybufs/s 12:05:00 4.01 1.17In this case, if the current value of NMPBUF is 40, you should increase it by:
12:00:00 mpbuf/s ompb/s mphbuf/s omphbuf/s pbuf/s spbuf/s dmabuf/s sdmabuf/s 12:05:00 3.05 0.30 5.11 1.21 2.89 0.54 7.62 1.54
40((1.17/(44.01))+(40.30/3.05)+(1.54/7.62))This evaluates to 27 when rounded up to the nearest whole number. If you wish to err on the safe side, double the value of NMPBUF to 80. This will require an extra 160KB of memory (40 4KB pages).
The following table summarizes the commands that you can use to view multiphysical buffer activity:
Viewing multiphysical buffer activity
|[mp]sar -B||cpybufs/s||copy buffer usage per second|
|slpcpybufs/s||sleeps waiting for copy buffer per second|
|[mp]sar -h||%mpbuf/s||scatter-gather buffer usage per second|
|ompb/s||number of times scatter-gather buffers were not available per second|
|dmabuf/s||DMA transfer buffers usage per second|
|sdmabuf/s||sleeps waiting for DMA transfer buffers per second|