如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大
大均衡I/O的负载,加快Swap交换的速度 。如果只有一个交换区,所有的交换操作会使交
换区变得很忙,使系统大多数时间位于等待状态,效率很低,用性能监视工具就会发现
,此时的CPU并不很忙,而系统却慢,这说明,瓶颈在I/O上,依靠提高CPU的速度是解决
不了问题的 。
性能监视
Swap空间的分配固然很重要,而系统在运行时的性能监控却更加有价值,通过性能监视
工具可以检查系统的各项性能指标,找到系统性能的瓶颈 。本文只介绍一下在Solaris下
和Swap相关的一些命令和用途 。
最常用的是Vmstat命令,在大多数Unix平台下都有此命令,此命令可以查看大多数性能
的指标 。
另外使用swap -s 也能简单的查看当前swap资源的使用情况 。例如:
# swap -s
total: 65896k bytes allocated + 56840k reserved = 122736k used, 1069456k
available
能够方便的看出swap空间的已用和未用资源的大小 。应该使Swap保持30%的负载以下,
才能保证系统的良好性能 。
Solaris中Swap的特点
虚拟Swap空间
本来Swap空间就是为虚拟内存服务的,现在Solaris的Swap空间也成为虚拟,这到底是
怎么回事呢? 让我们看一个例子就明白了,当在Solaris 2以前版本的Solaris(或其它
Unix,如Linux)上编程时经常会出现一个问题:
假设系统当前还有可用的内存空间为30M,而只剩下10M的Swap空间了,这时,如果有一
个进程开始运行并企图执行Malloc(15*1024*1024)的命令(分配15M空间),这个进程
会因为这个命令而失败 。
为什么呢?系统不是有30M可用的内存空间吗?原因在于:你的Swap空间不足,系统认为
你在分配空间以后,没有能力(空间)在发生页面交换时,将这部分数据保存起来,因此
认为你没有资格分配这块空间 。这不是太不公平了吧!也许这15M空间根本不用交换,当
前系统可是还有30M内存空间的富余啊!
还有更不公平的呢?有些大型系统配备了海量的内存,1G或4G,配了这么多内存就是为了
避免交换,提高运行速度,可是系统还要为这个系统分配并不需要的Swap空间,占用了
大量磁盘资源 。
为了弥补这个缺陷,Sun为Solaris 2 以后的版本设计了虚拟Swap空间 。所谓虚拟的
Swap空间,概念其实很简单,swap空间再也不是单指硬盘的分区或文件 。虚拟Swap空间
包含两个部分:部分物理内存和传统上的Swap分区 。经过适当的配置,可以使系统需要
Swap空间时,先使用内存部分的swap空间,如果内存部分的swap空间不够,再使用磁盘
部分的Swap空间 。这样,也许你硬盘上的Swap空间很少得到使用了,甚至根本不需要
Swap分区 。
Swap空间与TMPFS文件系统的关系
你知道吗?虚拟Swap空间与 /tmp目录有相当大的关系 。Sun在实现/tmp目录时,充分考
虑了应用程序运行的效率 。许多应用程序,特别是数据库服务都会频繁使用 /tmp目录作
为临时数据保存区,而Solaris将 /tmp目录下的文件都放在内存中而不是硬盘里,这样
会大大提高应用程序的效率 。但是/tmp目录的空间是从系统虚拟空间里挤出来的,是虚
拟Swap空间的一部分 。如果说,你用完了/tmp空间,也就是用完了Swap空间,所以要小
心监视系统的/tmp目录的使用情况,千万别用光了,否则系统会瘫痪!下面两点建议作为
参考:
1.在Mount /tmp目录时,使用(-o Size)选项来控制/tmp目录的大小 。
推荐阅读
- 最简单的恢复微信记录方法 教你快速找回误删的微信记录
- vivox27中设置锁屏密码的操作教程
- 为什么15的月亮16才圆
- 生姜蓟马的症状及防治方法
- vivox27中卸载软件的简单操作教程
- 我的爱——没刷过机的西门子m65——快捷键篇
- 四个人吃饭放多少米
- 女贞子的功效与作用
- 什么斗之才的成语
- 苍蝇有什么用处
