亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2214 | 回復(fù): 0
打印 上一主題 下一主題

RedHat AS上Sybase ASE和Oracle的ASYNC IO差異與性能影響 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-01-30 12:41 |只看該作者 |倒序瀏覽
RedHat AS上Sybase ASE和Oracle的ASYNC IO差異與性能影響







以Redhat AS 3.0的async io做范例來討論異步IO對性能的影響以及Sybase ASE(單進程多線程)和Oracle(多線程)架構(gòu)對異步IO不同的處理。以及OS參數(shù)對Sybase ASE的性能影響。

   OS kernel: 2.4.21-4.EL

   glibc: glibc-2.3.2-95.3

   DB: Adaptive Server Enterprise/12.5.1/EBF 11666 ESD#2

Oracle9i Enterprise Edition Release 9.2.0.4.0

   OS Parameter: /proc/sys/fs/aio-max-size 每一次異步IO的最大尺寸

                /proc/slabinfo  內(nèi)核slab 分配統(tǒng)計



一: async io能夠在以下方面提升性能

一: IO隊列不需要等待所以磁盤可以對零散的IO進行組織以相對次數(shù)較少的io以提升性能。(吞吐量的提升)

二:進程可在等待IO完成前執(zhí)行另外的任務(wù)以提升性能。(響應(yīng)時間的改善)



二: OS相關(guān)文件

/proc/slabinfo:  kio開頭的字段顯示是否有應(yīng)用在使用及使用狀況。

此時ASE & Oracle都沒有啟動,所以當(dāng)前活動對象數(shù)目都是0

[root@VMRHAS proc]# grep kio slabinfo

kioctx                 0     30    128    0    1    1 (kio請求次數(shù))

kiocb                  0   8220    128    0  274    1(kio的對象數(shù)目)

kiobuf                 0     30    128    0    1    1(kio buffer)

各列的含義:

slab緩存名       當(dāng)前活動對象數(shù)目  可活動對象的總數(shù)  每一個對象的字節(jié)數(shù)  最后一個活動對象的頁數(shù)  總共分配的頁數(shù)  每slab緩存的頁數(shù)



啟動oracle 后的slabinfo信息

[root@VMRHAS root]# su - oracle -c dbstart

[root@VMRHAS proc]# grep kio slabinfo

kioctx                 6     30    128    1    1    1

kiocb               6144   8220    128  205  274    1

kiobuf                 0     30    128    0    1    1

察看Oracle進程,在啟動后有6個oracle的系統(tǒng)進程

[root@VMRHAS proc]# ps -ef |grep ora_

oracle    2683     1  0 11:06 ?        00:00:00 ora_pmon_redhat

oracle    2685     1  0 11:06 ?        00:00:00 ora_dbw0_redhat

oracle    2687     1  0 11:06 ?        00:00:00 ora_lgwr_redhat

oracle    2689     1  0 11:06 ?        00:00:00 ora_ckpt_redhat

oracle    2691     1  0 11:06 ?        00:00:00 ora_smon_redhat

oracle    2693     1  0 11:06 ?        00:00:00 ora_reco_redhat

從windows連接一個oracle進程過去再看slabinfo和linux上oracle進程的改變情況

c:\>;sqlplus "dbo/dbo@vmrhas"

SQL*Plus: Release 9.0.1.0.1 - Production on 星期三 11月 10 11:10:30 2004

(c) Copyright 2001 Oracle Corporation.  All rights reserved.

連接到:

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.4.0 - Production

SQL>; select count(1) from v$session;

  COUNT(1)

----------

         7

[root@VMRHAS proc]# grep kio slabinfo

kioctx                 7     30    128    1    1    1

kiocb               7168   8220    128  239  274    1

kiobuf                 0     30    128    0    1    1



下面的pid為2740的進程就是windows連接的進程

[root@VMRHAS proc]# ps -ef |grep ora

oracle    2465     1  0 10:49 pts/2    00:00:00 /opt/oracle/product/9.2.0/bin/tnslsnr LISTENER -inherit

oracle    2683     1  0 11:06 ?        00:00:00 ora_pmon_redhat

oracle    2685     1  0 11:06 ?        00:00:00 ora_dbw0_redhat

oracle    2687     1  0 11:06 ?        00:00:00 ora_lgwr_redhat

oracle    2689     1  0 11:06 ?        00:00:00 ora_ckpt_redhat

oracle    2691     1  0 11:06 ?        00:00:00 ora_smon_redhat

oracle    2693     1  0 11:06 ?        00:00:00 ora_reco_redhat

oracle    2729     1  0 11:10 pts/2    00:00:00 oracleredhat (LOCAL=NO)

root      2740  1749  0 11:11 pts/0    00:00:00 grep ora



shutdown Oracle,再來看ASE的情況

啟動ASE

[root@VMRHAS proc]# su - sybase -c asestart

[root@VMRHAS proc]# grep kio slabinfo

kioctx                 1     30    128    1    1    1

kiocb               1024   8220    128   35  274    1

kiobuf                 0     30    128    0    1    1



從windows建立一個sybase的連接過去

c:\>;isql -Usa -Svmrhas

Password:

1>; sp_who

2>; go

fid    spid   status       loginame     origname     hostname   blk_spid

         dbname     cmd              block_xloid

------ ------ ------------ ------------ ------------ ---------- --------

         ---------- ---------------- -----------

      0      2 sleeping     NULL         NULL                    0

         master     DEADLOCK TUNE              0

      0      3 sleeping     NULL         NULL                    0

         master     MIRROR HANDLER             0

      0      4 sleeping     NULL         NULL                    0

         master     ASTC HANDLER               0

      0      5 sleeping     NULL         NULL                    0

         master     CHECKPOINT SLEEP           0

      0      6 sleeping     NULL         NULL                    0

         master     HK WASH                    0

      0      7 sleeping     NULL         NULL                    0

         master     HK GC                      0

      0      8 sleeping     NULL         NULL                    0

         master     HK CHORES                  0

      0      9 sleeping     NULL         NULL                    0

         master     PORT MANAGER               0

      0     10 sleeping     NULL         NULL                    0

         master     NETWORK HANDLER            0

      0     11 sleeping     NULL         NULL                    0

         master     NETWORK HANDLER            0

      0     15 running      sa           sa           Test          0

         master     SELECT                     0

(11 rows affected)

(return status = 0)

可以看到只有一個spid為15的用戶進程,其余都是系統(tǒng)進程。

此時再看slabinfo

[root@VMRHAS proc]# grep kio slabinfo

kioctx                 1     30    128    1    1    1

kiocb               1024   8220    128   35  274    1

kiobuf                 0     30    128    0    1    1

當(dāng)關(guān)閉ASE的異步IO

c:\>;isql -Usa -Svmrhas

Password:

1>; sp_configure 'allow sql server'

2>; go

Parameter Name                 Default     Memory Used Config Value

         Run Value   Unit                 Type

------------------------------ ----------- ----------- ------------

         ----------- -------------------- ----------

allow sql server async i/o               1           0           0

                   0 switch               static

(1 row affected)

(return status = 0)

此時kioctx,kiocb都等于0

[root@VMRHAS proc]# grep kio slabinfo

kioctx                 0     30    128    0    1    1

kiocb                  0   1050    128    0   35    1

kiobuf                 0      0    128    0    0    1





從上面的這些輸出可以看出oracle是一個多進程架構(gòu),即一個數(shù)據(jù)庫連接會產(chǎn)生一個os的進程。如果開啟了異步IO,可以看到每一個進程會打開1024個async IO的對象。而ASE是單進程多線程架構(gòu),即不管多少用戶連接在OS上只會有一個dataserver的進程(SMP不在考慮之列,即多少個engine會有多少個dataserver的進程)。ASE不管多少用戶進程都是一個dataserver進程打開1024個異步IO對象。ASE的引擎結(jié)構(gòu)決定了由dataserver進程管理自己的network, disk IO和線程間通信資源,減少開銷。

觀察異步IO是否啟用可以看kiocb的打開的異步IO對象數(shù)目,如果其為0代表沒有啟用。

關(guān)于slabinfo ,aio的詳情如果安裝了linux的source code的話,可以在/usr/src/linux-x.x/目錄下看看aio.c和slab.c 或者man slabinfo。



/proc/sys/fs/aio-max-size

[root@VMRHAS proc]# cat sys/fs/aio-max-size

131072

更改aio-max-size的方法:echo xxx >;/proc/sys/fs/aio-max-size 或編輯/etc/sysctl.conf,添加一行fs.aio-max-size = xxx 然后sysctl –p



三:數(shù)據(jù)庫參數(shù)

Oracle default 是關(guān)閉異步IO的。

  開啟: make -f ins_rdbms.mk async_on

       make -f ins_rdbms.mk ioracle

  參數(shù): disk_asynch_io=true(default true)

filesystemio_options=asynch( default none)



ASE: default 開啟

參數(shù): allow sql server async i/o (default 1)

     max async i/os per engine (default 2147483647)

     max async i/os per server (default 2147483647)

     disk i/o structures (default 256)

這里重點有兩個參數(shù)。

     max async i/os per server指定一次能夠同時進行的未完成的異步IO請求的數(shù)目,這個參數(shù)default就是最大值,我們一般不會進行調(diào)整。

disk i/o structures指定的是啟動時分配的磁盤IO控制塊的數(shù)目,即 max async i/os per server不能超過此值。這個參數(shù)數(shù)配置到操作系統(tǒng)所允許的最大值以避免有IO限制。關(guān)于這點,可以用sp_sysmon看到

下面是一段摘自sysmon的輸出

I/Os Delayed by

    Disk I/O Structures               n/a           n/a           0       n/a  

    Server Config Limit               n/a           n/a           0       n/a  

    Engine Config Limit               n/a           n/a           0       n/a   

    Operating System Limit            n/a           n/a           0       n/a  



上面的disk i/o structures指出的就是由于磁盤IO控制塊超限導(dǎo)致的IO延遲,需要加大該參數(shù),一般在linux下到4096。等于default(256)時見過一次超限,所以<<System Administrator Guide>;>;指出將此值配置到OS的最大值。

至于server config limit和engine config limit沒有見到過超限的,因為default值都是最大。



四:aio-max-size不同大小的性能影響

aio-max-size的大小基本可用從下規(guī)則來界定:dss因為進行大量的連續(xù)IO所以使用較大的值(1M甚至更大),如果是oltp則是進行大量的小型交易所以default的128K能夠提供良好的性能。

以下的輸出是在redhat as 2.1下單IDE硬盤,開啟DMA分別在reboot后啟動ASE直接創(chuàng)建1G data,512M log 2K page的數(shù)據(jù)庫在aio-max-size等于128K和1M時的時間間隔分別是32min28S和1min1S。創(chuàng)建數(shù)據(jù)庫是一個典型連續(xù)寫的過程,從此可以看出該參數(shù)對性能的影響。

Apr  9 2004  2:07:38:803PM

(1 row affected)

CREATE DATABASE: allocating 512000 logical pages (1000.0 megabytes) on disk

'db_dat03'.

CREATE DATABASE: allocating 256000 logical pages (500.0 megabytes) on disk

'db_dat04'.

------------------------------

Apr  9 2004  2:40:06:843PM



------------------------------

Apr  9 2004  3:13:53:030PM

(1 row affected)

CREATE DATABASE: allocating 512000 logical pages (1000.0 megabytes) on disk

'db_dat03'.

CREATE DATABASE: allocating 256000 logical pages (500.0 megabytes) on disk

'db_dat04'.

------------------------------

Apr  9 2004  3:14:55:460PM

當(dāng)然對于日常的應(yīng)用不太會出現(xiàn)這么大的差異,但例如recovery,load database ,dbcc 或者large table scan,create index , bcp等大量IO操作時還是有相當(dāng)大的影響。如果是混合以應(yīng)用,例如ERP等就需要對此參數(shù)需要進行調(diào)諧了,oltp時使用較小值而進行月結(jié)等交易時加大此值。

使用sp_sysmon和dbcc,set statistics,vmstat等工具對個別交易進行測試,看得到的性能回報或者下降。

切記:任何的數(shù)據(jù)庫或者OS調(diào)整都不會是一勞永逸,數(shù)據(jù)量,交易量或者交易類型的改變都可能需要另外調(diào)整。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP