一般說來
異步I/O是和同步I/O相比較來說的
如果是同步I/O
當一個I/O操作執行時
應用程序必須等待
直到此I/O執行完
相反
異步I/O操作在後台運行
I/O操作和應用程序可以同時運行
提高了系統性能; 使用異步I/O會提高I/O流量
如果應用是對裸設備進行操作
這種優勢更加明顯
因此象數據庫
文件服務器等應用往往會利用異步I/O
使得多個I/O操作同時執行
文件集的安裝
要在aix平台上使用異步I/O特征
系統必須安裝有文件集bos
rte
aio
可以通過如下命令檢查之:
lslpp
l bos
rte
aio
然後再通過smitty(smit)使得異步I/O可用
#smit chgaio
STATE to be configured at system restart available
如何確定是否需要使用異步I/O
a
使用VMSTAT命令查看列wa
如何其值超過
%
則使用;
b
使用命令iostat * *
如果%tm_act超過
%
則使用;
值得注意的是
在SMP系統中
vmstat的值us
id
wa列是所有處理器之間的平均值
但是每個處理器的i/o等待值卻不是平均值
而是一個全局的統
計數值
當前aio服務器的數目
pstat
a | grep aios | wc
l
如何設置aio 服務器
一般有三個規則可以用來決定因素aio的數目
a 限定MAXIMUM等於十倍的當前使用的物理磁盤數
MINIMUM等於一半的MAXIMUM數;
b 設置MAXIMUM為
MINIMUM為默認值
監控系統正常的負荷情況
過一段時間後
再進行調整如下:
MAXIMUM=當前運行的aio數+
MINIMUM=當前運行的aio數
c 在最高I/O活動開始之前
使用vmstat
s看結果中的iodones
隔一時間段再執行
查看二次iodones之差值
便可以知道在這個時間段內有多少個物理I/O發生了
如果便可以考慮增加MAXIMUM數再進行觀察調整
異步I/O的幾個參數
可以使用chdev或是smit來修改有關AIO的參數
主要考慮如下幾個
MINIMUM number of servers :指定分配給異步I/O進程的最少內核進程數
MAXIMUM number of servers :指定分配給異步I/O進程的最大內核進程數
Maximum number of REQUESTS :指定能同一時間分配的最大數目的異步I/O請求數
它包括進程中的請求
也包括等待中的請求數
最大數不能小於MAXIMUM number of servers
它定義在/usr/include/sys/limits
h中
Server PRIORITY:指定分析給異步I/O進程的優先級
建議用默認值
STATE to be configured at system
restart:指定系統初始化時
異步I/O進程的狀態
可能值是
)defined(處於定義狀態且不可用)
)available(可用)STATE of FastPath:如果選擇disable
則表明強迫所有的I/O活動都通過異步內核進程
默認是enable
此平台上的數據庫
如oracle中使用異步i/o
則需要設置參數disk_asynch_io = TRUE就可以了
Hp
ux使用Aio的補丁要求
b
HP
UX
i的補丁要求為
PHKL_
vm preemption point
mlock/async_io
PHKL_
asyncio driver patch
使用swlist
l product檢查
創建aio的字符設備
a
建立aio字符設備
#/sbin/mknod /dev/async c
x
b
調整設備的屬主
這個例中假定用戶為oracle
組為dba
#chown oracle:dba /dev/async
c
調整設備的權限位
#chmod
/dev/async
Hp
ux要要調整的內核參數
調整內核參數據需要使用root用戶
a
把asyncdsk置為in
sam
> Kernel Configuration
> Drivers
>asyncdsk調整為in
b
調整max_async_ports參數
這個參數限定的是同時使用/dev/async設備的最大進程數
對於Oracle這個參數應大於等於init< sid>
ora中的processes+後台的進程數
當max_
async_ports的值達到時
其余的進程將采用同步IO的方式
c
調整set aio_max_ops參數
這個參數所限定的是在任意一個時間點排隊的Aio操作的最大的數目
一般保持默認值就可以
可以用glance監測一下
d
調整fs_async參數
這個參數表明的是對文件系統的寫是否采用Aio的方式
設定fs_async=
指定對於文件系統寫不用Aio
設定fs_async=
則指定使用aio的方式
Ora
cle不建議將這個什設置為
其它方面設置
值得注意的是要為oracle用戶的組(一般為dba)設定MLOCK的權限
否則在數據庫啟動會報錯或在庫運行時會出現莫名其妙的數據庫hang的現象
具體說明如下
a
有二個命令getprivgrp(檢查)
setprivgrp(設置)
eg
:檢查dba組是否有MLOCK的權限
root#getprivgrp dba
eg
:設定dba組的MLOCK的權限
roolt#setprivgrp dba MLOCK
b
也可以把設定加入配置文件中
這樣在下次啟動時就自動生效了
在/etc/privgroup中加入如下的一行
dba MLOCK
如果privgroup不存在
可以編輯一個
i 及以後的版本 :在init< sid>
ora中設定disk_asynch_io = TRUE
檢查一下aio是否生效了
#fuser /dev/async
有進程列出來說明aio已經生效了
在hp
上使用異步I/O時可能還有些問題
會出現一些ora
的錯誤
但是hp
i後應沒有問題了
From:http://tw.wingwit.com/Article/program/Oracle/201311/16605.html