绩效管理指南用vmtune命令来优化VMM页面转换[讨论]_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4896 | 回复: 0   主题: 绩效管理指南用vmtune命令来优化VMM页面转换[讨论]        下一篇 
zhouqingfa
注册用户
等级:中士
经验:234
发帖:13
精华:0
注册:2012-6-8
状态:离线
发送短消息息给zhouqingfa 加好友    发送短消息息给zhouqingfa 发消息
发表于: IP:您无权察看 2012-6-8 16:35:32 | [全部帖] [楼主帖] 楼主

讨论在实时内存管理,内存管理算法,试图保持空闲列表的大小和指定范围内的持久段页面所占用的实际内存的百分比。这些界限可以改变vmtune命令,只能由root用户运行。这个工具所做的更改仍然有效,直到下次重新启动系统。以确定是否vmtune命令安装和可用,运行以下命令:

# lslpp -lI bos.adt.samples


注:vmtune命令的样本目录,是因为它是非常依赖VMM的实施。vmtune代码,伴随着每一个版本的操作系统,是专门针对在该版本的VMM。运行vmtune命令从一个不同版本的发布可能会导致在操作系统出现故障。它也有可能vmtune的功能可能会改变。 vmtune文件的新版本,以确保该脚本仍会有预期的效果,而不检查,不传播shell脚本或/ etc / inittab文件中的条目到一个新的版本包括vmtune命令。执行AIX 4.3.3vmtune命令没有选项,在下面的输出结果:

# /usr/samples/kernel/vmtune  vmtune:  current values:    -p       -P        -r          -R         -f       -F       -N        -W  minperm  maxperm  minpgahead maxpgahead  minfree  maxfree  pd_npages maxrandwrt    52190   208760       2          8        120      128     524288        0       -M      -w      -k      -c        -b         -B           -u        -l    -d  maxpin npswarn npskill numclust numfsbufs hd_pbuf_cnt lvm_bufcnt lrubucket defps     209581    4096    1024       1      93         96          9      131072     1             -s              -n         -S           -h  sync_release_ilock  nokillroot  v_pinshm  strict_maxperm          0               0           0             0     number of valid memory pages = 261976   maxperm=79.7% of real memory  maximum pinable=80.0% of real memory    minperm=19.9% of real memory  number of file memory pages = 19772     numperm=7.5% of real memory


这个输出结果显示的是当前所有的参数的设置

选择mimfreemaxfree的设置

实时终止进程释放内存页面帧的空闲列表的目的是为了保持跟踪,并立即向请求者提供页帧,而不强迫他们等待页面抢断和所附的I / O完成。 minfree的限制指定的空闲列表的大小,下面要开始偷来补充空闲列表页。 maxfree的参数是大小偷上方将结束。调整这些限制的目的是要确保: 关键响应时间目标的任何活动,总是可以得到的页面帧,它需要从空闲列表。 系统并不会遇到不必要的高层次的I/ O,因为过早的页面窃取扩大免费列表。minfreemaxfree的默认值依赖于机器的内存大小。 maxfree的默认值由这个公式:

maxfree = minimum (# of memory pages/128, 128)


默认情况下,minfree的值是maxfree的价值 -  8。然而,minfreemaxfree之间的差异,应该始终等于或大于maxpgahead更大。或者换句话说,maxfree的价值应该总是大于或等于minfree的加maxpgahead的大小。会有所不同,如果有一个以上的内存池的minfree/ maxfree的值。在AIX 4.3.3中引入了大量的RAM MP系统内存池。每个内存池都将有其自己的minfree/ maxfree的,这是由以前的公式确定,但一下minfree/ maxfree的显示值由vmtune命令将所有的内存池的minfree/ maxfree的总和。

请记住,minfree的网页,在某种意义上说是一种浪费,因为它们是可用的,但不使用。如果你有一个短名单的节目,你要跑得快,你可以调查与svmon命令内存要求(见确定如何多的内存正在使用),并设置minfree的最大规模。这种技术可能过于保守,因为不是所有的网页,在一个突发取得一个进程使用。在同一时间,你可能会丢失没有在您的名单,可能会降低您的关键程序运行时的空闲列表的平均规模从方案的动态需求。

一个不太精确,但更全面的调查minfree的适当规模的工具是vmstat命令。以下是获得一个空闲的系统上运行一个C编译的vmstat命令输出的一部分。

# vmstat 1  kthr     memory             page              faults        cpu  ----- ----------- ------------------------ ------------ -----------   r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa   0  0  3085   118   0   0   0   0    0   0 115    2  19  0  0 99  0   0  0  3086   117   0   0   0   0    0   0 119  134  24  1  3 96  0   2  0  3141    55   2   0   6  24   98   0 175  223  60  3  9 54 34   0  1  3254    57   0   0   6 176  814   0 205  219 110 22 14  0 64   0  1  3342    59   0   0  42 104  249   0 163  314  57 43 16  0 42   1  0  3411    78   0   0  49 104  169   0 176  306  51 30 15  0 55   1  0  3528   160   1   0  10 216  487   0 143  387  54 50 22  0 27   1  0  3627    94   0   0   0  72  160   0 148  292  79 57  9  0 34   1  0  3444   327   0   0   0  64  102   0 132  150  41 82  8  0 11   1  0  3505   251   0   0   0   0    0   0 128  189  50 79 11  0 11   1  0  3550   206   0   0   0   0    0   0 124  150  22 94  6  0  0   1  0  3576   180   0   0   0   0    0   0 121  145  30 96  4  0  0   0  1  3654   100   0   0   0   0    0   0 124  145  28 91  8  0  1   1  0  3586   208   0   0   0  40   68   0 123  139  24 91  9  0  0


编译器的编译器本身的代码,因为编译器尚未运行,最近,必须读入总而言之,在大约6秒获得约2 MB。在这32 MB的系统,maxfree的是64minfree的是56。编译器几乎即刻推动低于minfree空闲列表的大小,几秒钟的快速页面盗窃活动发生。一些需要的抢断,肮脏的工作段页面被写入到分页空间,这表明在po��。如果抢断造成脏永久段页的文字,该I / O不会出现在vmstat报告(除非你已指示vmstat命令报告该常设网页正在物理卷的I / O活动书面)。

这个例子说明一个fork()和exec()环境(而不是一个过程是长期生活在环境,如在数据库中,),并没有打算建议设置minfree500个,以适应大编制。这表明如何使用vmstat命令确定的情况下加以补充,而一个程序空间等待空闲列表。在这种情况下,约2秒被添加到编译器的执行时间,因为没有立即提供足够的页帧。如果你观察你的程序的页面框架初始化期间或在正常加工,消费,你很快就会有一个想法的数页帧,需要等待内存的程序是要保持在空闲列表。

如果我们的结论从上述minfree的需要是128的例子,我们maxpgahead16日,以改善连续性能,我们将使用下面的命令vmtune

# /usr/samples/kernel/vmtune -f 128 -F 144


优化内存池

在比AIX4.3.3版本操作系统,vmtune-M number_of_memory_pools命令允许您更改在系统引导时配置的内存池的数量。因此,-m标志是不是一个动态的变化。这种变化是书面的内核文件,如果它是一个MP内核(的变化不会允许在UP内核)。值0恢复默认数量的内存池。

默认情况下,vmtune-m命令写入文件/ usr / lib中的/ boot/ unix_mp,但可以用命令vmtune -  U path_to_unix_file改变。 vmtune命令改变内核文件之前,保存原始文件作为name_of_original_file.sav

调整,lrubucket可以减少扫描对大内存系统开销。在AIX4.3中,添加一个新的参数lrubucket。页面替换算法扫描内存帧,寻找一个自由的框架。这个扫描过程中,页面的参考位复位,如果一直没有找到一个免费的帧,进行第二次扫描。在第二次扫描,如果仍然是关闭的参考位,帧将被用于一个新的页面(页面替换)。

大内存的系统上,可能有太多的帧扫描,所以现在内存分为帧桶。页面替换算法将扫描桶中的帧,然后开始,然后再移动到下一个桶桶,第二次扫描。在这桶帧的默认号码是131072512 MBRAM。帧数可调,用命令vmtune-L和值在4 K的框架。

选择minpermmaxperm的设置

操作系统的实际内存的不同要求留在已读取或写入的文件的内存页的优势。如果该文件的页面再次请求重新分配页帧之前,这项技术节省了I / O操作。这些文件的网页可能是从本地或远程(例如,NFS)文件系统。

· 用于这些文件与用于计算(工作或程序文本)段的页面帧的比例是松散的控制minpermmaxperm值:

· 如果文件页面占用的内存的百分比高于maxperm的上升,页面替换断球只有文件页面。

· 如果占用内存的百分比低于处于minperm文件页面,页面替换窃取文件和计算页面。

如果文件页面占用的内存的百分比是minpermmaxperm之间,页面替换断球只有文件页面,除非文件repages的比计算repages数量更高。

在一个特定的工作量,它可能是值得强调避免文件I / O。在另一个工作量,计算段的页面保存在内存中,可能更重要。在未调整状态的比例是要了解什么,我们使用不带参数的vmtune命令。

# /usr/samples/kernel/vmtune  vmtune:  current values:    -p       -P        -r          -R         -f       -F       -N        -W  minperm  maxperm  minpgahead maxpgahead  minfree  maxfree  pd_npages maxrandwrt    52190   208760       2          8        120      128     524288        0       -M      -w      -k      -c        -b         -B           -u        -l    -d  maxpin npswarn npskill numclust numfsbufs hd_pbuf_cnt lvm_bufcnt lrubucket defps  209581    4096    1024       1      93         96          9      131072     1             -s              -n         -S           -h  sync_release_ilock  nokillroot  v_pinshm  strict_maxperm          0               0           0             0     number of valid memory pages = 261976   maxperm=79.7% of real memory  maximum pinable=80.0% of real memory    minperm=19.9% of real memory  number of file memory pages = 19772     numperm=7.5% of real memory


默认值是由以下算法计算:

minperm (in pages) = ((number of memory frames) - 1024) * .2  maxperm (in pages) = ((number of memory frames) - 1024) * .8


numperm值在内存中的文件页面数量,19772。这是真实内存的7.5%。

如果我们知道我们的工作量,使得最近读取或写入的文件很少使用,我们可能要限制用于此目的的内存量。下面的命令:

# /usr/samples/kernel/vmtune -p 15 -P 50


处于minperm设置到15%和maxperm50%的实际内存。这将确保该VMM窃取只从文件页面的页框时的总内存页面文件页面的比例超过50%。这应减少分页页面空间没有产生不利影响的持久性存储。 maxperm的值是不是一个严格的限制,只考虑当VMM需要进行页面替换。正因为如此,它通常是安全的maxperm的值,以减少在大多数系统上。

另一方面,如果我们的应用程序经常引用一个现有的文件(特别是如果这些文件是在一个NFS文件系统)的一小部分,我们可能要允许更多的本地缓存文件的网页空间,通过使用以下命令:

# /usr/samples/kernel/vmtune -p 30 -P 90


maxperm的价值增加,主要用于大量的RAM读取的NFS服务器可以受益。这使得更多的页面驻留在RAM中,这样的NFS客户端可以访问他们不强制NFS服务器再次从磁盘检索的网页。

另一个例子是一个程序,读入2 GB的真实内存的系统的工作存储1.5 GB的连续文件数据。你可能想设置maxperm50%或更少,因为你不需要保存在内存中的文件数据。

关于持久性文件缓存与strict_maxperm配售硬限制

AIX4.3.3开始,一个新的vmtune选项(-H)称为strict_maxperm已加入。此选项,设置为1时,持久文件缓存使用多少内存maxperm的值是这个文件缓存的上限的硬性限制。当达到上限,最少最近使用(LRU)的持久页面。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论