Solaris 上swap -s 命令输出的各项内容解释如下:
bytes allocated : The total amount of swap space in 1024-byte blocks that is currently allocated as backing store (disk-backed swap space).
reserved: The total amount of swap space in 1024-byte blocks not currently allocated, but claimed by memory for possible future use.
used: The total amount of swap space in 1024-byte blocks that is either allocated or reserved.
available: The total amount of swap space in 1024-byte blocks that is currently available for future reservation and allocation.
一般我们可以通过以下公式计算swap 使用率:
Output of ‘swap -s’ is:
total: 2514952k bytes allocated + 202368k reserved = 2717320k used, 7021424k available
Swap Utilization (%) is:
(2717320/(2717320+7021424))*100
= 27.9%
但是实际上Total virtual swap = RAM backed swap + Disk backed swap
swap -l report disk backed swap usage. It does not report virtual swap usage.
Physical disk swap configured:
# /usr/sbin/swap -l
swapfile dev swaplo blocks free
/dev/zvol/dsk/uppool/swap 181,3 8 163839992 163839992
Total Disk backed swap: 163839992 x 512 = 78G
还是建议用vmstat -p 监控下换页的情况:
# vmstat 5
kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 s1 s2 s3 in sy cs us sy id
…
0 0 0 3296516 38201892 4321 49454 0 0 0 0 0 0 0 6 0 11521 164084 69372 11 31 59
0 0 0 3361076 38193196 3034 34037 0 0 0 0 0 0 0 47 0 9639 107575 37481 8 24 68
0 0 0 3501776 38286380 3325 36763 0 0 0 0 0 0 0 5 0 12679 113673 42466 8 25 67
0 0 0 3545612 38326200 4935 57916 0 0 0 0 0 0 0 63 0 13688 111744 35804 12 31 56 <<
Available virtual swap: 3545612 KB =~ 3G
并关注tmpfs文件系统的使用情况,在Solaris下/tmp目录可能会占用大量swap
The space remains allocated untill you either delete the files from /tmp directory or restart the server, as at the time of restart the swap space (/tmp) is cleaned.
Example.: If an export is performed into the /tmp directory, then the swap space will decrease with the size of the export dump file.
=====
solaris_user>swap -s
total: 2879320k bytes allocated + 277104k reserved = 3156424k used, 771104k available
solaris_user>dd if=/dev/zero of=/tmp/test.out count=100
100+0 records in
100+0 records out
solaris_user>swap -s
total: 2879416k bytes allocated + 277072k reserved = 3156488k used, 771040k available
High swap-space usage does not necessarily mean the system needs additional physical memory or that such usage is the reason for bad performance. High swapping in and out activities (observable with vmstat -p
) can lead to performance problems: some processes have to wait for swapping activities to be finished before the processes run forward. Moreover, swapping is a single-threaded activity.
In some cases, you must also be aware of the available swap space. For example, the system runs hundreds or even thousands of Oracle session processes or Apache processes, and each process needs to reserve or allocate some swap space. In such cases, you must allocate an adequate swap device or add multiple swap devices.
One difference between Solaris and other operating systems is /tmp
, which is a nonpersistent, memory-based file system on Solaris (tmpfs). Tmpfs is designed for the situation in which a large number of short-lived files (like PHP sessions) need to be written and accessed on a fast file system. You can also create your own tmpfs file system and specify the size. See the man page for mount_tmpfs
(1M).
Solaris also provides a ramdisk facility. You can create a ramdisk with ramdiskadm
(1M) as a block device. The ramdisk uses physical memory only. By default, at most 25 percent of available physical memory can be allocated to ramdisks. The tmpfs file system uses virtual memory resources that include physical memory and swap space.
Large-sized files placed in tmpfs can affect the amount of memory space left over for program execution. Likewise, programs requiring large amounts of memory use up the space available to tmpfs. If you encounter this constraint (for example, running out of space on tmpfs), you can allocate more swap space by using the swap
(1M) command. Avoid swapping in this case because swapping indicates shortage of physical memory and hurts performance even if swap space is sufficient.
tmpfs Filesystem
tmpfs file system also reports about virtual swap usage.tmpfs is a memory resident file system. It uses the page cache for caching file data. Files created in a tmpfs file system avoid physical disk read and write. The primary goal of designing tmpfs was to improve read/write performance of short lived files without invoking network and disk I/O. tmpfs does not use a dedicated memory such as a “RAM DISK”. Instead it uses virtual memory (VM) maintained by the kernel. This allows it to use VM and kernel resource allocation policies. Tmpfs files are written and read directly from the kernel memory. Pages allocated to tmpfs files are treated the same way as any other physical memory pages. Physical memory assigned to tmpfs files uses anonymous memory to store file data. The kernel does not differentiate tmpfs file data from the page cache. During memory pressure, tmpfs pages can be freed and written back to the physical swap device if the page daemon selects them as candidates for such. It is the user’s responsibility to keep a back up of tmpfs files by copying tmpfs files to disk based file system such as ufs. Otherwise, tmpfs files will be lost in case of a crash or reboot.
Tmpfs size changes dynamically depending upon how much virtual swap is available.
The "kbytes" column in "df -k /tmp" output is the amount of swap space available, rather than the total.
The tmpfs file system also has a minfree, so the total is slightly less than the amount of swap available. "kbytes" column of "df -k /tmp" output actually correspond to "swap -s" output of swap available. Normally, these two numbers are pretty close.
The difference is due to the tmpfs_minfree value, which is 2MB by default.
# df -kl -Z /tmp
Filesystem kbytes used avail capacity Mounted on
swap 3449940 116 3449824 1% /tmp
When a process releases memory then df -k /tmp would also show that its total file system size has increased.