I'm looking for an explanation for some apparent inconsistencies in the output 
from the prtswap command.  There is an example of prtswap in section 6.18.7 of 
the Solaris Performance and Tools book.

I extracted prtswap from the file RMC3.9.5beta.tar.Z on the memtool download 
site http://www.solarisinternals.com/si/downloads/_memtool/.  prtswap is a ksh 
script that draws its data from the swap(1M) command and the kernel's swap 
accounting data structures.  I assume that version 3.9.5beta is the most 
current, but it looks like it hasn't been updated for a few years.

Here's the output from prtswap on a SF6800 with 8GB RAM installed and 8143MB of 
disk-based swap space.  The system is running Solaris 8, and is patch-current:

# prtswap -l

Swap Reservations:
--------------------------------------------------------------------------
Total Virtual Swap Configured:                          14490MB =
RAM Swap Configured:                                         6347MB
Physical Swap Configured:                              +     8143MB

Total Virtual Swap Reserved Against:                     7573MB =
RAM Swap Reserved Against:                                   2336MB
Physical Swap Reserved Against:                        +     5237MB

Total Virtual Swap Unresv. & Avail. for Reservation:     6917MB =
Physical Swap Unresv. & Avail. for Reservations:             2906MB
RAM Swap Unresv. & Avail. for Reservations:            +     4011MB


Swap Allocations: (Reserved and Phys pages allocated)
--------------------------------------------------------------------------
Total Virtual Swap Configured:                          14490MB
Total Virtual Swap Allocated Against:                    4535MB

Physical Swap Utilization: (pages swapped out)
--------------------------------------------------------------------------
Physical Swap Free (should not be zero!):                8143MB =
Physical Swap Configured:                                    8143MB
Physical Swap Used (pages swapped out):                -        0MB


The data in the Swap Reservations section seems credible, and after reading 
section 6.18, the following relation is true:

Total Virtual Swap Reserved Against (7573MB) > Total Virtual Swap Allocated 
Against (4535MB).

But these relations in the report don't make sense to me:

1) The last line states that no pages are swapped out (Physical swap used = 0), 
so the allocated swap (4535MB) should all be in RAM.  But RAM swap reserved is 
2336MB.  How can this be if, according to figure 6.5 on page 167, reserved swap 
includes allocated swap, unallocated swap, and used physical swap?

2) The sum of RAM swap unreserved and available for reservations (4011MB) and 
the total virtual swap allocated (4535MB), which again must all be in RAM since 
there are no pages swapped out to disk, is 8545MB.  But this is greater than 
the amount of RAM installed in the server - why?

3) I've included a run of vmstat below:

bash-2.03$ vmstat 1 10
 procs     memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr s0 s1 s6 s1   in   sy   cs us sy id
 0 0 0 6706904 2656984 283 981 131 1 0 0 0  8  1  0  0 3082  210 2978  6  5 89
 0 0 0 7088672 1922488 0  6  0  0  0  0  0 12  0  0 11 4430 19570 6471 16 13 70
 0 0 0 7088736 1922552 0  0  0  0  0  0  0 11  4  0 12 4331 17241 6086 14 15 71
 0 0 0 7088672 1922488 0  0  0  0  0  0  0 12  0  0 11 4347 19184 6131 9 13 77
 0 0 0 7088672 1922496 0  0  0  0  0  0  0 12  0  0 11 4292 17556 6110 15 13 72
 0 0 0 7088736 1922552 0  0  0  0  0  0  0 12  0  0 12 4354 18878 6383 9 13 79
 0 0 0 7088672 1922488 0  0  0  0  0  0  0 13  0  0 12 4412 19544 6584 16 12 71
 0 0 0 7088672 1922488 0  0  0  0  0  0  0 14  0  0 12 4330 17511 6057 10 14 76
 0 0 0 7088736 1922552 0  0  0  0  0  0  0 11  0  0 11 4209 16148 5786 11 12 77
 0 0 0 7088736 1922552 0  0  0  0  0  0  0 15  0  0 14 4392 17389 6243 9 12 78

Available swap is in the range 7088672 - 7088736, or about 6922MB.   This is 
"close enough" to the value prtswap reported for total virtual swap unreserved, 
6917MB.  But free memory, ranging from 1922488 to 1922552 or about 1877MB, is 
nowhere near the 4011MB that prtswap reports is unreserved RAM swap.   

I've looked at the prtswap script and the anonymous memory structures 
themselves in the Solaris 8 header file /usr/include/vm/anon.h for explanations 
without success.  The code seems consistent with the documentation, and 
vice-versa.

Does anyone have any insight into these findings?

Thanks!

Peter
--
This message posted from opensolaris.org
_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to