Solaris 性能与调整( 六 )



在/etc/system的IPC参数设置中拼错字是非常可能的 。这种错误会对应用程序带来严重的性能影响 。要检查拼写错误,遍历/var/adm/messages寻找这样形式的消息:

genUnix: [ID 492708 kern.notice] sorry, variable "seminfo_semopn"

is not defined in the "semsys"

这说明其中有一个拼写错误 。用Grep找"sorry" 。

Solaris 8操作环境比以前的版本改进了IPC参数的缺省值 。

对于Solaris 2.6操作环境之前的版本,共享内存需要更多的交换空间(也就是“后援空间”) 。用swap -l,将block数值除2就可以得到兆字节数 。应该有至少两倍于已分配共享内存(shmmax)的交换空间 。

这里是shmmax的缺省值和最大值:

缺省 最大

shmmax 1048576 (Meg) 4294967295 (4GB) 2.5.1, 2.6, 32位solaris 7

2147483647 (2GB) 2.5或更低

在Solaris 2.6操作环境下,shmmax和shmmin是无符号整型(32位) 。在Solaris 7操作环境下,"32位"的shmmax和shmmin是无符号整型(32位) 。在Solaris 7操作环境下,"64位"的shmmax 和shmmin是无符号长整型(64位) 。在所有情况下,shmmni和shmseg都是有符号整型(32位) 。表2汇总了这些命令和它们的类型 。

命令
Solaris 2.6

32位
Solaris 7

32位
Solaris 7

64位

shmmax
无符号整型
无符号整型
无符号长整型

shmmin
无符号整型
无符号整型
无符号长整型

shmmni
有符号整型
有符号整型
--

shmseg
有符号整型
有符号整型
--



表2: 命令类型
shmmax限值共享内存段的最大大小,这是shmget(2)所能请求的最大值 。它所控制的资源不是预先分配的,而是根据需要分配的 。

在Solaris 7和8环境下,64位突破了4-Gbyte的限制 。这个最大值是理论上的 。实际的设置需要根据象内存、数据库大小、系统配置这些系统资源来确定 。段的最大值本身(shmmax)是一个上限 。

附加资源
A. 源自SunSolve Online[sm]关于IPC的文章
关于IPC参数话题,Sun解决方案中心已经写了大量的文章 。这些文章可以在SunSolve Online[sm]获得 。(合同客户可以访问附加的相关出版物 。) 接下来是部分文章列表 。

如果对/etc/system文件的修改似乎没有起作用,请看文档12824: sysdef -i 不报告设置在/etc/system中的IPC参数 。

关于IPC参数的一般信息:

文档6328: 在2.X中所有关于共享内存参数的信息
文档2270: 理解信号灯、seminfo_信号灯信息
文档12075: 如何在你的系统中配置IPC信号灯和共享内存
文档5288: 如何通过adb确定IPC参数值
文档2273: 针对消息队列的内核调整参数
文档7241: 确定消息队列参数
关于调试问题:

文档12174: 怎样检查系统使用了多少共享内存
文档16985: 一个使用共享内存的进程已经终止,但是交换空间似乎没有被回收
B. SUN性能信息
The Sun Performance page提供了各种资源 。
SunWorld在线专栏 1995-1999
Cockcroft, Adrian和Richard Pettit, SUN性能与调整——Java[tm]与Internet(Sun Performance and Tuning - Java[tm] and the Internet), Sun Microsystems Press, 1998. 这是一本有用的书,其中介绍的原则经受了时间的考验 。不过很多内容在应用到当前的系统时需要带一点怀疑地去看待 。
Garg, Rajat和Ilya Sharapov, 优化应用程序的技巧:高性能计算(Techniques for Optimizing Applications: High Performance Computing), Sun BluePrints, 2001. 这本书是在基于Sun UltraSPARC技术的平台上对计算密集型程序进行性能优化的实用指导,对于理解应用程序如何利用系统资源会有帮助 。
Mauro, Jim和Richard McDougall, Solaris内部,核心内核架构(Solaris Internals, Core Kernel Architecture), Sun Microsystems Press, 2001. 这本书被认为是关于Solaris操作环境内部工作非常优秀的深入指南 。

推荐阅读