Chinaunix首页 | 论坛 | 博客
  • 博客访问: 463554
  • 博文数量: 97
  • 博客积分: 3396
  • 博客等级: 中校
  • 技术积分: 996
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-25 13:14
文章分类

全部博文(97)

文章存档

2014年(1)

2013年(2)

2012年(7)

2011年(13)

2010年(18)

2009年(7)

2007年(10)

2006年(39)

分类: 数据库开发技术

2006-05-28 15:37:21

刚刚找到了两篇文档,关于VMTUNE,受益匪浅
1.
对DB2数据库(包括INFORMIX)系统来说,在很多情况下,数据库自己进行文件的缓存,没有必要在操作系统一级上再进行文件缓存。这就有必要限制操作系统用于文件缓存的内存数量,从而使DB2(INFORMIX)数据库系统能够使用更多的物理内存。这个功能可以通过设置AIX的VMM(虚拟内存管理器)的参数进行。
下面将介绍四个相关的参数。
maxfree:VMM中空闲内存列表(freelist)的最大值。
minfree:VMM中空闲内存列表(freelist)的最小值。
maxperm:设置允许的文件缓存占物理内存的最大百分比。
minperm:设置允许的文件缓存占物理内存的最小百分比。
   在AIX的虚拟内存管理器中始终维护一个空闲的内存列表,如果内存列表中的内存少于minfree指定的值,那么VMM就会启动page stealer,从已经分配的内存中窃取内存加入到空闲内存列表,把它的内容放到Page Space中。如果空闲内存列表超过了maxfree指定的值,那么page stealer就会停止内存窃取工作。所以在实际系统中,如果内存的空闲列表始终大于或等于maxfree设定的值,那么该系统应该不存在任何内存短缺的问题。
当page stealer工作时,它检查minperm和maxperm的设置值,如果现在的文件缓存少于minperm设定的值,那么它将同时从文件系统缓存和计算内存中窃取页面。当文件缓存大于maxperm设定的值时,它将只从文件系统缓存中窃取页面。当文件换存介于两者之间时,除非文件缓存的repages大于计算缓存的repages,它将从文件系统缓存中窃取页面。
   操作系统默认的maxperm设置值为80,对于数据库系统来说,应该设置一个比较小的值,例如40,这样以来,我们就可以使文件系统的缓存数量减少。从而DB2系统能够使用更多的物理内存。同时操作系统又需要文件缓存来进行其他的操作,所以可以将minperm设置为20。
对于maxfree和minfree来说,可根据你系统内存使用的状况来作调整。该数值以4K字节为单位。如果minfree如果调整过高,可能引起不必要的内存窃取,影响系统的性能。但是如果设置过低,可能在系统内存不够的状况下,内存窃取器需要花费更多的页面扫描来窃取页面到空闲内存列表中,也会影响系统性能。对于maxfree而言,可以将minfree的值加上一个范围值来设定。
   对于一个系统的性能调优,有很多需要考虑的方面,应该在调整的时候,一个参数一个参数的调整,随时监控系统的运行状况并做适当调整。
调整AIX VMM参数,对于AIX 5.1及4.3.3版本,可以使用/usr/samples/kernel/vmtune命令来进行调整。要查看该命令在你的AIX系统上是
否可用,可以使用下列命令检查:
# lslpp -lI bos.adt.samples
   如果该程序包没有安装,请安装该程序包以使用该命令。如设置maxperm=40, minperm=20, maxfree=200, minfree=120可以使用下列命令调
整:
/usr/samples/kernel/vmtune -P 40 -p 20 -F 200 -f 120
   对于AIX 5.2版本, AIX操作系统提供了新的VMM调整命令vmo。它是文件集bos.perf.tune中的一部分,可以从AIX基本安装介质中安装该文
件集。
如设置maxperm=40, minperm=20, maxfree=200, minfree=120可以使用下列命令调整:
vmo -o maxperm%=40 -o minperm%=20 -o maxfree=200 -o minfree=120
   注意:在调整该参数时,在AIX 5.1及4.3.3版本中,一定得把调整命令加入到启动脚本中,如将调整条目加入/etc/inittab中。在AIX 5.2
中,可以使用参数开关 -p来指定调整适用于当前值和重新启动后。
 
 
 
 
2.
AIX中内存是如何使用和替换的。
在AIX中所使用的文件系统是日志文件系统, 这是一种缓存(cached)文件系统,即任何文件一旦被读入内存后就会一直留在内存中。cached 文件系统对那些一旦读入后,会被反复使用的文件数据非常有效。 因为当文件中的内容再次被使用时,直接从内存就可得到它们,无需到硬盘上去查找。 大大的提高了读的性能。
当出现以下两种情况时文件内存页面才会被释放:
       1.当读入内存的文件被删除时,所占空间会被释放。
       2.当系统中没有足够多的空闲内存时,操作系统扫描内存,选择那些满足释放条件的文件内存页面,将其释放掉。 
  当系统中空闲内存不足时,所选中被替换的内存页面,可能是用于计算页面(其上有程序代码和它临时使用的空间),也可能是非计算页面(存放读入的文件数据)。 在不同情况下,AIX会根据系统中设置的参数来选择将哪种页面替换出去。这两个参数就是 maxperm 和minperm
minperm  这是一个百分数,如果内存中文件页面(file pages)与物理内存的百分比低于此值,页面替换算法将替换文件页面和计算页面 (computational pages),而不考虑再使用率(repage rate)。 minperm的缺省值为20。
maxperm
这也是一个百分数,如果内存中文件页面(file pages)与物理内存的百分比高于此值,页面替换算法将只替换文件页面,maxperm的缺省值为80
如果在物理内存中的文件页面所占的百分比在minperm和maxperm两个值之间,页面替凰惴ㄍǔV惶婊晃募?趁妗?但是当文件页面的再使用率(repagin rate)高于计算页面的再使用率时,页面替换算法也将替换计算页面。
  页面替换算法和再使用率的主要目的是公正对待计算页面和文件页面。 例如,在进行顺序的读大文件时,尽可能不要将再次会使用的计算页面替换出去。
 系统中缺省的情况下,Maxperm 是软限制(soft limit)。 也就是,系统会保留 20% 的内存用于文件页面。 只要有空闲内存,文件页面就可以无限制的使用它。
这一缺省设置适用于大多数情况。 但当出现以下两种情况时就不再适用了:
1. 大量的读写文件操作,而读入的数据只使用一次 。
2.运行的程序需要大量的工作内存。
 在使用tar,pax 等命令进行大文件备份时,系统将大量文件数据读入内存,空闲内存会下降得很快。 此时文件页面所占内存会与计算页面争夺有限的内存资源,就会有些计算页面被替换到系统的换页空间(paging space), vmstat 命令的输出结果中表现为po (paging out)不为零, 当系统中再次需要使用这些计算页面时不得不pi (paging in)。 对于交互应用表现出来就是响应时间慢。甚至新的交易无法进行。
在备份过程中读入的文件数据,大部分只会使用一次,降低了内存的利用率。 为了保证计算页面尽可能少的被换到paging space,在系统就要限制文件页面的数量。
在AIX中通过调整minperm 和 maxperm 就可限制系统中文件页面的数量,使之在与计算页面争用内存时,系统替换的是文件页面,而不是将会再次使用的计算页面。
用系统中的 /usr/samples/kernel/vmtune 命令可动态调整minperm 和 maxperm 值。
   如 :
     #/usr/samples/kernel/vmtune –p 10 –P 20
表示系统中为文件页面保留了10%的内存空间,当文件页面与计算页面争用内存时,文件页面最多可使用20%的内存,超过20%时,如果需要替换页面,则替换文件页面。
由于maxperm 的限制不是严格的限制(hard limit),在大多数的系统中将其调小,不会引起其他性能问题。
 
 
阅读(1036) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~