tuning 第九章

第九章 系统资源的管理

一、了解操作系统的性能问题
操作系统性能问题通常包或进程管理、内存管理和日程安排。如果oracle实例已经调优过了,性能仍需要优化,可以验证工作并长时间

少系统时间。
确保有足够的i/o带宽、cpu频率、交换分区。
不要期望着其他对操作系统的调优能极大改善性能。
对于数据库配置的修改或应用的调整相比于对操作系统的调整更能改善性能。

1.使用操作系统缓存
操作系统和磁盘控制器提供的数据缓存不会与oracle缓存管理冲突,但是这些结构不仅不能提高性能,还可能消耗更多资源。
这种情况在linux或unix文件系统上要注意。
默认情况下,所有数据库i/o是通过文件系统缓存的。

由于oracle的buffer cache缓存块,操作系统缓存可能通常是多余的,但有些情况下数据库不适用buffer cache,这时使用direct i/o

或裸设备可能比使用操作系统buffer性能更差。

例如temp表空间的读写、nocache lobs数据的存储、数据的并行查询

有时候数据库可以在buffer cache中缓存并行查询数据,在数据库内存充足时。

1)异步i/o
串行i/o情况下,当一次i/o申请被提交到操作系统时,写进程在确认提交前发生阻塞。提交后继续运行。
而异步i/o时,i/o请求提交时进程继续执行。
若使用异步i/o能够避免瓶颈,就可以使用

2)filesystemio_options 参数
该参数设置在文件系统上是使用异步i/o还是直接i/o。此参数因平台不同而有所差异,每种平台有特定的默认值。
asynch:允许文件的异步i/o,对transmission没有时间要求
directio:文件的直接i/o,绕开了buffer cache
setall:两者都允许
none:都不允许

3)在nfs服务器环境下限值异步i/o
nfs服务器环境下,如果一段时间内产生大量异步i/o请求,性能可能会受到影响。
使用dnfs_batch_size参数可以通过限值i/o来提高性能和稳定性。

direct nfs启用的情况下,dnfs_batch_size控制着oracle前台进程可以进行的异步i/o的数量。

2.内存使用
内存使用收buffer cache和初始化参数的限制

(1)buffer cache限制
unix的缓冲区消耗操作系统资源。尽管在一些unix版本中,buffer cache可能被分配了一部分内存,但当今大部分的内存管理机制还是

消耗资源的。
通常来说,这样的系统中操作系统的告警工具提示没有空余内存是很普通的。如果进程需要更多的内存,通常需要释放内存缓存的i/o数

据以便分配内存。

(2)参数影响内存的使用
一个会话需要的内存有多方面因素决定,通常包括:
打开的游标个数
pl/sql使用的内存量
sort_area_size参数的设置

oracle中的pga_aggregate_target对于会话的内存使用控制力很强

3.使用操作系统资源管理器
某些平台提供了资源管理器。此工具区分系统资源来减少峰值负载的影响。
通常可以监控哪些资源使用者能够被访问以及这些资源中每个用户可以占用多少。

操作系统的资源管理器和域以及其他设备不同。域提供了一或多个完整的分离操作系统。磁盘、cpu、内存等资源被分配到每个域下面,

不能被其他域所使用。其他类似的设备只将某一部分资源完全分配到不同区域,通常是cpu或内存区域。
比如域,划分的资源区域只能有对应的进程使用,进程不能迁移越界,其他资源被整个分区所共享,oracle数据库在域下运行。

操作系统资源管理器在整个资源池上分配。进程被分为组,轮流使用资源池中的资源。
【oracle在某些unix操作系统的资源管理器和分配机制上不受支持,oracle的资源管理器只对oracle实例提供资源分配方案,不能用于

系统其它组件】

如果一个节点上有多个实例,想要在上面分配资源,那么每个实例都应该放入操作系统的资源管理器组或管理设备中。在管理设备上运

行多个实例,并使用instance caging决定每个实例分配的资源。
用oracle资源管理器管理cpu资源时,实例的资源是变化的。
Without instance caging, it expects the available CPU resources to be equal to the number of CPUs in the managed

entity. With instance caging, it expects the available CPU resources to be equal to the value of the CPU_COUNT

initialization parameter. If there are less CPU resources than expected, then Oracle Database Resource Manager is not

as effective at enforcing the resource allocations in the resource plan.

二、操作系统资源问题的解决

1.unix类系统上的性能提示
性能目标是在总的时间上来说,花费更多的时间完成应用,即用户模式上,而不是系统模式上。

主要包括分页或交换(paging or swapping)、过多的操作系统请求、过多的进程

如果存在这些情况,应用所占用的时间会减少。

2.windows类系统的性能提示
类似于unix系统,可以通过windows的性能管理工具来查看cpu、网络、i/o、内存,关注时间比率。

3.hp openVMS系列系统的性能提示
重点考虑分页参数。
在繁忙的系统中,空闲内存可能包含着一个或多个活动进程的分页。这种情况叫做soft page fault,page包含在进程的工作中。如果进

程不能扩展工作区,匹配进程的某一个pages就会被移动到free set中。

三、理解cpu
解决CPU问题,首先评估系统大概需要多少cpu资源,然后判断cpu资源是否充足,找出那些时段耗用的cpu资源做多。

oracle实例使用的cpu主要注意三个方面:
1.系统的idle状态,活动会话很少或没有
2.系统平均负载
3.系统负载峰值

可以用用awr报告的快照、statspack或utlbstat/utlestat设备等来查看系统。vmstat、sar、iostat等unix上的工具或windows上的性能

监控工具可以和v$osstat、v$sysmetric_history视图一起使用。

通常来说每分钟的会话量tpm(transactions per minute)与cpu使用率并不是现象变化的。tpm值越高,cpu使用率增加的越快

四、解决cpu问题
1.使用和调整cpu使用率
系统中运行的每个进程都影响着cpu使用率,因此调整数据库模块以外的资源也能够提高数据库性能。
使用v$osstat、v$sysmetric_history可以监控操作系统中的使用数据。
主要包括的指标有:
cpu颗数
cpu使用率
负载
paging
物理内存

使用sar -u等命令可以在unix类系统上查看cpu使用率。统计数据中包括了user time、system time、idle time、time waiting for

i/o等。
在正常或低负载的系统中如果idle time和time waiting for i/o都接近于零,cpu就存在问题。

在windows中,可以使用性能管理工具查看cpu。主要是processor time、user time、privileged time、interrupt time、DPC time。

(1)内存
关注分页和交换分区、分页表
使用v$osstat、利用sar或vmstat查看分页和交换分区的原因

unix中,如果进程空间很大,会造成page tables很大。

(2)i/o
确保负载都放入内存中。
如果进程浪费了大量时间来确保可以运行且所有必要的组件都计算进去了,可能进程只能使用50%的时间完成实际工作。

(3)网络
检查客户端、服务器回环。避免大量的少量网络交互,尽量使用数据插入等。

(4)进程
进程的安排和启停。
内容转换,由于字符集等原因造成的内容转换也会很耗资源。

2.使用oracle资源管理器管理cpu资源
有如下方式:
(1)阻止cpu饱和:如果cpu使用率100%,可以使用oracle资源管理器为每个会话分配最大消耗资源组。
此特性确保高优先级的会话立即使用充足的资源,而低优先级的分配少一些

(2)为资源组限制cpu使用
使用max_utilization_limit限制某个组可以使用的cpu资源。

(3)限制并行语句
11.2.0.2开始,oracle资源管理器用parallel_target_percentage阻止一个资源消耗组占用所有连接。

3.使用instance caging管理cpu资源
一个系统中运行多个实例时,实例争用cpu资源。可以使用instance caging限制每个实例可以使用的cpu。然后oracle资源管理器根据资

源计划分配cpu

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26451536/viewspace-752713/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26451536/viewspace-752713/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值