RedHat AS上Sybase ASE和Oracle的ASYNC IO差异与性能影响.docx
- 文档编号:12472777
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:11
- 大小:18.35KB
RedHat AS上Sybase ASE和Oracle的ASYNC IO差异与性能影响.docx
《RedHat AS上Sybase ASE和Oracle的ASYNC IO差异与性能影响.docx》由会员分享,可在线阅读,更多相关《RedHat AS上Sybase ASE和Oracle的ASYNC IO差异与性能影响.docx(11页珍藏版)》请在冰豆网上搜索。
RedHatAS上SybaseASE和Oracle的ASYNCIO差异与性能影响
以RedhatAS3.0的asyncio做范例来讨论异步IO对性能的影响以及SybaseASE(单进程多线程)和Oracle(多线程)架构对异步IO不同的处理。
以及OS参数对SybaseASE的性能影响....
以RedhatAS3.0的asyncio做范例来讨论异步IO对性能的影响以及SybaseASE(单进程多线程)和Oracle(多线程)架构对异步IO不同的处理。
以及OS参数对SybaseASE的性能影响。
OSkernel:
2.4.21-4.EL
glibc:
glibc-2.3.2-95.3
DB:
AdaptiveServerEnterprise/12.5.1/EBF11666ESD#2
Oracle9iEnterpriseEditionRelease9.2.0.4.0
OSParameter:
/proc/sys/fs/aio-max-size每一次异步IO的最大尺寸
/proc/slabinfo内核slab分配统计
一:
asyncio能够在以下方面提升性能
一:
IO队列不需要等待所以磁盘可以对零散的IO进行组织以相对次数较少的io以提升性能。
(吞吐量的提升)
二:
进程可在等待IO完成前执行另外的任务以提升性能。
(响应时间的改善)
二:
OS相关文件
/proc/slabinfo:
kio开头的字段显示是否有应用在使用及使用状况。
此时ASE&Oracle都没有启动,所以当前活动对象数目都是0
[root@VMRHASproc]#grepkioslabinfo
kioctx030128011(kio请求次数)
kiocb0822012802741(kio的对象数目)
kiobuf030128011(kiobuffer)
各列的含义:
slab缓存名当前活动对象数目可活动对象的总数每一个对象的字节数最后一个活动对象的页数总共分配的页数每slab缓存的页数
启动oracle后的slabinfo信息
[root@VMRHASroot]#su-oracle-cdbstart
[root@VMRHASproc]#grepkioslabinfo
kioctx630128111
kiocb614482201282052741
kiobuf030128011
察看Oracle进程,在启动后有6个oracle的系统进程
[root@VMRHASproc]#ps-ef|grepora_
oracle26831011:
06?
00:
00:
00ora_pmon_redhat
oracle26851011:
06?
00:
00:
00ora_dbw0_redhat
oracle26871011:
06?
00:
00:
00ora_lgwr_redhat
oracle26891011:
06?
00:
00:
00ora_ckpt_redhat
oracle26911011:
06?
00:
00:
00ora_smon_redhat
oracle26931011:
06?
00:
00:
00ora_reco_redhat
从windows连接一个oracle进程过去再看slabinfo和linux上oracle进程的改变情况
c:
\>sqlplus"dbo/dbo@vmrhas"
SQL*Plus:
Release9.0.1.0.1-Productionon星期三11月1011:
10:
302004
(c)Copyright2001OracleCorporation.Allrightsreserved.
连接到:
Oracle9iEnterpriseEditionRelease9.2.0.4.0-Production
WiththePartitioning,OLAPandOracleDataMiningoptions
JServerRelease9.2.0.4.0-Production
SQL>selectcount
(1)fromv$session;
COUNT
(1)
----------
7
[root@VMRHASproc]#grepkioslabinfo
kioctx730128111
kiocb716882201282392741
kiobuf030128011
下面的pid为2740的进程就是windows连接的进程
[root@VMRHASproc]#ps-ef|grepora
oracle24651010:
49pts/200:
00:
00/opt/oracle/product/9.2.0/bin/tnslsnrLISTENER-inherit
oracle26831011:
06?
00:
00:
00ora_pmon_redhat
oracle26851011:
06?
00:
00:
00ora_dbw0_redhat
oracle26871011:
06?
00:
00:
00ora_lgwr_redhat
oracle26891011:
06?
00:
00:
00ora_ckpt_redhat
oracle26911011:
06?
00:
00:
00ora_smon_redhat
oracle26931011:
06?
00:
00:
00ora_reco_redhat
oracle27291011:
10pts/200:
00:
00oracleredhat(LOCAL=NO)
root27401749011:
11pts/000:
00:
00grepora
shutdownOracle,再来看ASE的情况
启动ASE
[root@VMRHASproc]#su-sybase-casestart
[root@VMRHASproc]#grepkioslabinfo
kioctx130128111
kiocb10248220128352741
kiobuf030128011
从windows建立一个sybase的连接过去
c:
\>isql-Usa-Svmrhas
Password:
1>sp_who
2>go
fidspidstatusloginameorignamehostnameblk_spid
dbnamecmdblock_xloid
------------------------------------------------------------------
-------------------------------------
02sleepingNULLNULL0
masterDEADLOCKTUNE0
03sleepingNULLNULL0
masterMIRRORHANDLER0
04sleepingNULLNULL0
masterASTCHANDLER0
05sleepingNULLNULL0
masterCHECKPOINTSLEEP0
06sleepingNULLNULL0
masterHKWASH0
07sleepingNULLNULL0
masterHKGC0
08sleepingNULLNULL0
masterHKCHORES0
09sleepingNULLNULL0
masterPORTMANAGER0
010sleepingNULLNULL0
masterNETWORKHANDLER0
011sleepingNULLNULL0
masterNETWORKHANDLER0
015runningsasaTest0
masterSELECT0
(11rowsaffected)
(returnstatus=0)
可以看到只有一个spid为15的用户进程,其余都是系统进程。
此时再看slabinfo
[root@VMRHASproc]#grepkioslabinfo
kioctx130128111
kiocb10248220128352741
kiobuf030128011
当关闭ASE的异步IO
c:
\>isql-Usa-Svmrhas
Password:
1>sp_configure'allowsqlserver'
2>go
ParameterNameDefaultMemoryUsedConfigValue
RunValueUnitType
----------------------------------------------------------------
-----------------------------------------
allowsqlserverasynci/o100
0switchstatic
(1rowaffected)
(returnstatus=0)
此时kioctx,kiocb都等于0
[root@VMRHASproc]#grepkioslabinfo
kioctx030128011
kiocb010501280351
kiobuf00128001
从上面的这些输出可以看出oracle是一个多进程架构,即一个数据库连接会产生一个os的进程。
如果开启了异步IO,可以看到每一个进程会打开1024个asyncIO的对象。
而ASE是单进程多线程架构,即不管多少用户连接在OS上只会有一个dataserver的进程(SMP不在考虑之列,即多少个engine会有多少个dataserver的进程)。
ASE不管多少用户进程都是一个dataserver进程打开1024个异步IO对象。
ASE的引擎结构决定了由dataserver进程管理自己的network,diskIO和线程间通信资源,减少开销。
观察异步IO是否启用可以看kiocb的打开的异步IO对象数目,如果其为0代表没有启用。
关于slabinfo,aio的详情如果安装了linux的sourcecode的话,可以在/usr/src/linux-x.x/目录下看看aio.c和slab.c或者manslabinfo。
/proc/sys/fs/aio-max-size
[root@VMRHASproc]#catsys/fs/aio-max-size
131072
更改aio-max-size的方法:
echoxxx>/proc/sys/fs/aio-max-size或编辑/etc/sysctl.conf,添加一行fs.aio-max-size=xxx然后sysctl–p
三:
数据库参数
Oracledefault是关闭异步IO的。
开启:
make-fins_rdbms.mkasync_on
make-fins_rdbms.mkioracle
参数:
disk_asynch_io=true(defaulttrue)
filesystemio_options=asynch(defaultnone)
ASE:
default开启
参数:
allowsqlserverasynci/o(default1)
maxasynci/osperengine(default2147483647)
maxasynci/osperserver(default2147483647)
diski/ostructures(default256)
这里重点有两个参数。
maxasynci/osperserver指定一次能够同时进行的未完成的异步IO请求的数目,这个参数default就是最大值,我们一般不会进行调整。
diski/ostructures指定的是启动时分配的磁盘IO控制块的数目,即maxasynci/osperserver不能超过此值。
这个参数数配置到操作系统所允许的最大值以避免有IO限制。
关于这点,可以用sp_sysmon看到
下面是一段摘自sysmon的输出
I/OsDelayedby
DiskI/OStructuresn/an/a0n/a
ServerConfigLimitn/an/a0n/a
EngineConfigLimitn/an/a0n/a
OperatingSystemLimitn/an/a0n/a
上面的diski/ostructures指出的就是由于磁盘IO控制块超限导致的IO延迟,需要加大该参数,一般在linux下到4096。
等于default(256)时见过一次超限,所以<
至于serverconfiglimit和engineconfiglimit没有见到过超限的,因为default值都是最大。
四:
aio-max-size不同大小的性能影响
aio-max-size的大小基本可用从下规则来界定:
dss因为进行大量的连续IO所以使用较大的值(1M甚至更大),如果是oltp则是进行大量的小型交易所以default的128K能够提供良好的性能。
以下的输出是在redhatas2.1下单IDE硬盘,开启DMA分别在reboot后启动ASE直接创建1Gdata,512Mlog2Kpage的数据库在aio-max-size等于128K和1M时的时间间隔分别是32min28S和1min1S。
创建数据库是一个典型连续写的过程,从此可以看出该参数对性能的影响。
Apr920042:
07:
38:
803PM
(1rowaffected)
CREATEDATABASE:
allocating512000logicalpages(1000.0megabytes)ondisk
'db_dat03'.
CREATEDATABASE:
allocating256000logicalpages(500.0megabytes)ondisk
'db_dat04'.
------------------------------
Apr920042:
40:
06:
843PM
------------------------------
Apr920043:
13:
53:
030PM
(1rowaffected)
CREATEDATABASE:
allocating512000logicalpages(1000.0megabytes)ondisk
'db_dat03'.
CREATEDATABASE:
allocating256000logicalpages(500.0megabytes)ondisk
'db_dat04'.
------------------------------
Apr920043:
14:
55:
460PM
当然对于日常的应用不太会出现这么大的差异,但例如recovery,loaddatabase,dbcc或者largetablescan,createindex,bcp等大量IO操作时还是有相当大的影响。
如果是混合以应用,例如ERP等就需要对此参数需要进行调谐了,oltp时使用较小值而进行月结等交易时加大此值。
使用sp_sysmon和dbcc,setstatistics,vmstat等工具对个别交易进行测试,看得到的性能回报或者下降。
切记:
任何的数据库或者OS调整都不会是一劳永逸,数据量,交易量或者交易类型的改变都可能需要另外调整。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RedHat AS上Sybase ASE和Oracle的ASYNC IO差异与性能影响 AS Sybase ASE Oracle ASYNC IO 差异 性能 影响