Weird swap size on Solaris 9

I have a machine: SunOS <server> 5.9 Generic_117171-15 sun4u sparc SUNW,Sun-Fire-480R

It has these filesystems:

Filesystem             size   used  avail capacity  Mounted on
/dev/md/dsk/d0          19G    15G   3.9G    80%    /
/proc                    0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
fd                       0K     0K     0K     0%    /dev/fd
swap                    27G    32K    27G     1%    /var/run
swap                    27G   384K    27G     1%    /tmp
/dev/md/dsk/d7          20G    15G   4.2G    79%    /space1
/dev/md/dsk/d10        9.6G   600M   8.9G     7%    /space2

The machine has two systems disks which are software mirrored:

Current partition table (original):
Total disk cylinders available: 14087 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm    3298 -  7323       19.54GB    (4026/0/0)   40968576
  1       swap    wu       0 -  3297       16.00GB    (3298/0/0)   33560448
  2     backup    wm       0 - 14086       68.35GB    (14087/0/0) 143349312
  3 unassigned    wm    7324 -  7927        2.93GB    (604/0/0)     6146304
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm    7928 -  9940        9.77GB    (2013/0/0)   20484288
  6 unassigned    wm    9941 - 14083       20.10GB    (4143/0/0)   42159168
  7 unassigned    wm   14084 - 14086       14.91MB    (3/0/0)         30528

The problem is: why is the swap showing to be 27Gb in size when the partition is only 16Gb? I performed a swap -l and see no other swapfiles:

swapfile             dev  swaplo blocks   free
/dev/md/dsk/d3      85,3      16 33560432 33559968

Is this because I have my swap partition mirrored?

#device         device          mount           FS      fsck    mount   mount
#to mount       to fsck         point           type    pass    at boot options
#
fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
/dev/md/dsk/d3  -       -       swap    -       no      -
/dev/md/dsk/d0  /dev/md/rdsk/d0 /       ufs     1       no      -
swap    -       /tmp    tmpfs   -       yes     -
/dev/md/dsk/d7  /dev/md/rdsk/d7 /space1        ufs     2       yes     -
/dev/md/dsk/d10 /dev/md/rdsk/d10        /space2        ufs     2       yes     -

Should I break the swap mirror, or is this just fine..?

That may not be the case, can you post swap -s and swap -l and df -h o/p? How much memory do you have?

swap -l and df -h are already given (I've wrapped them in code to make easier reading), the rest are:

# swap -s
total: 1112792k bytes allocated + 383920k reserved = 1496712k used, 28872784k available

# prtconf | grep Mem
Memory size: 16384 Megabytes

Thanks for using code tags.

The outputs that you have shown us shows that:
swap -s => total of ~31G swap space (includes 16G memory and 16G swap on disk)
swap -l => shows that you have 16G swap configured on volume d3

Can you post detaiils about 'd3'. I want to see whether d3 is really a mirror and not a concat volume.
Also, can you post a prtvtoc of the second half of the mirror disk (you have posted one above).

At this stage, I think you have these options (I personally would choose to do the 2nd of these):

Reboot this machine, and check whether the correct amount of swap is noted in df o/p

OR

Destroy and re-create swap volume using SVM commands (can't help you with those)
AND
Delete and re-create swap via swap commands

Please post the output of metastat.

Thanks for the interest guys. All is normal then? As my meta device is just a OK! :b:

# metastat
d3: Mirror
    Submirror 0: d4
      State: Okay         
    Submirror 1: d5
      State: Okay         
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 33560448 blocks (16 GB)

d4: Submirror of d3
    State: Okay         
    Size: 33560448 blocks (16 GB)
    Stripe 0:
        Device     Start Block  Dbase        State Reloc Hot Spare
        c1t0d0s1          0     No            Okay   Yes 


d5: Submirror of d3
    State: Okay         
    Size: 33560448 blocks (16 GB)
    Stripe 0:
        Device     Start Block  Dbase        State Reloc Hot Spare
        c1t1d0s1          0     No            Okay   Yes

[snip]

The mirror disk's is as follows:

partition> p
Current partition table (original):
Total disk cylinders available: 14087 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0 unassigned    wm    3298 -  7323       19.54GB    (4026/0/0)   40968576
  1 unassigned    wm       0 -  3297       16.00GB    (3298/0/0)   33560448
  2     backup    wm       0 - 14086       68.35GB    (14087/0/0) 143349312
  3 unassigned    wm    7324 -  7927        2.93GB    (604/0/0)     6146304
  4 unassigned    wm       0                0         (0/0/0)             0
  5 unassigned    wm    7928 -  9940        9.77GB    (2013/0/0)   20484288
  6 unassigned    wm    9941 - 14083       20.10GB    (4143/0/0)   42159168
  7 unassigned    wm   14084 - 14086       14.91MB    (3/0/0)         30528

Yes, your swap area looks properly configured. As for your original question, 16 GB of memory + 16 GB of swap = 32 GB of virtual memory except that some of it is permanently allocated to the kernel and various data structures leaving you with 27 GB of usable virtual memory. I know that's not how it's labeled, but the kernel has evolved and these older tools don't make as much sense as they once did.