原帖由 shahand 于 2007-12-27 14:35 发表 你确定已经使用了dio/cio ? 为何还将maxperm设置这么高(90),这就是你free mem很少的原因吧 maxperm对于数据库系统来说,应该设置一个比较小的值,例如20,这样以来,我们就可以使文件系统的缓存数量减少。从而oracle系统能够使用更多的物理内存。
使用道具 举报
原帖由 biti_rainy 于 2007-12-27 15:33 发表 cat /etc/tunables/nextboot 大多数情况下我们会设置类似如下几个参数: minperm%="5" maxperm% = "15" maxclient% = "10" strict_maxclient = "0" strict_maxperm = "0" v_pinshm = "1" 其中 strict_maxperm = "1" 表示 hard limit,也就是说只要设置了这个参数,fs cache 的使用就不会超过 maxperm 设定,如果这个为0,则表示 允许fs cache超过maxperm 设置,但在fs cache 介于 maxperm 和minperm之间的时候会有相关调度算法来决定是换 fs cache 页 还是 计算内存页。 在strict_maxperm的时候 fs cache倾向于尽量多的使用free memory,所以实际上依然会很大。 所以这个时候降低maxperm就降低性能的说法是不确切的。如果 v_pinshm = "1" 再配合 lock_sga=true ,则这部分原则上被 钉在物理内存中了不会参与页交换(除非另外一些特别情况产生) 。 所以lz的情况,db cache size 设置为32G的并且v_pinshm = "1" 再配合 lock_sga=true ,设置 strict_maxperm 为0 (为1 可能引起bug 致系统hang) ,那么 maxperm 设置为10 也就可以了。如果你还坚持设置为 80,那么建议同时跟上这个参数 lru_file_repage = "0"
973227.txt
2007-12-27 15:52 上传
点击文件名下载附件
5.86 KB, 下载次数: 27
原帖由 iops 于 2007-12-27 22:54 发表 1. I/O的负载承受度是固定的(32*10K*300G), 但是应用的性能需求是持续的增加,系统运行还没有缓慢到无法承受的程度, I/O wait 高是隐患. 2. 因为有些report要跑好几个月的资料,所以时间长点用户能接受: 是多长的时间,这个时间会随着数据量的增加, 而变长吗? 你的系统正式上线有多久的时间了?
原帖由 biti_rainy 于 2007-12-26 11:51 发表 一点建议: share_pool_size 的 free虽然少但是parse却不多的,可以考虑控制在2G 以内 2: SGA 大小 和你的oracle 进程数量有关,假定当前稳定数量是 N . 到底 oracle process 每个消耗多少内存,sap 不知道是怎样的,比如正常数据库可能在5--6 MB/进程,但是 oracle EBS 却几乎达到 20MB/进程 。如何看呢,这样 ps -e -o pid=PID -o 'vsz=VirtualMem(K)' -o rss='RealMem(K)' -o pcpu=%CPU -o args=command | sort -b +2 -n |grep "LOCAL=NO" 这样将连接上来的server 进程的私有内存消耗排序列出来。你看看第二列,大体上平均值是多少。假定平均值是 M 则 SGA 大小可以这样控制: SGA = 64G*80% - N*M(MB)*150%/1024 这样假定你现在稳定有1000个进程,每个进程消耗10MB,那么就是 64*0.8 - 1000*10*1.5/1024, 大约可以设置到35G SGA 左右。 如果你使用的是文件系统,那么还可以适当降低SGA到30G 以内,但 sga 注意配合 VMO 调整v_pinshm同时使用 lock_sga = true 。
本版积分规则 发表回复 回帖后跳转到最后一页