Oracle中AIO解析

Linux 異步 I/O (AIO)是 Linux 內核中提供的一個增強的功能。它是Linux 2.6 版本內核的一個標準特性,AIO 背后的基本思想是允許進程發起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知時,進程就可以檢索 I/O 操作的結果。

同步IO:線程啟動一個IO操作然后就立即進入等待狀態,直到IO操作完成后才醒來繼續執行。
異步IO:線程發送一個IO請求到內核,然后繼續處理其他的事情,內核完成IO請求后,將會通知線程IO操作完成

1、–查看系統是否使用異步IO 。 slab是Linux的內存分配器,AIO相關的內存結構已經分配。

more?/proc/slabinfo?|grep?kio  [root@localhost?~]#?grep?kio?/proc/slabinfo  kioctx?0?0?384?10?1?:?tunables?54?27?0?:?slabdata?0?0?0  kiocb?0?0?256?15?1?:?tunables?120?60?0?:?slabdata?0?0?0

看到kiocb行顯示為0,說明異步IO沒有啟動。

2、 查看數據庫是否開啟異步io

(11G)SYS@qixindb>?show?parameter?disk_asynch_io  NAME?TYPE?VALUE  ------------------------------------?-----------?------------------------------  disk_asynch_io?boolean?TRUE  (11G)SYS@qixindb>?show?parameter?filesystem  NAME?TYPE?VALUE  ------------------------------------?-----------?------------------------------  filesystemio_options?string?none
filesystemio_options?的四種值:  ASYNCH:?enable?asynchronous?I/O?on?file?system?files,?which?has?no?timing?requirement?for?transmission.  在文件系統文件上啟用異步I/O,在數據傳送上沒有計時要求。  DIRECTIO:?enable?direct?I/O?on?file?system?files,?which?bypasses?the?buffer?cache.  在文件系統文件上啟用直接I/O,繞過buffer?cache。  SETALL:?enable?both?asynchronous?and?direct?I/O?on?file?system?files.  在文件系統文件上啟用異步和直接I/O。  NONE:?disable?both?asynchronous?and?direct?I/O?on?file?system?files.  在文件系統文件上禁用異步和直接I/O。

3、 oracle已經鏈接了aio的包

[oracle@localhost?~]$?/usr/bin/ldd?$ORACLE_HOME/bin/oracle?|?grep?libaio  libaio.so.1?=>?/lib64/libaio.so.1?(0x0000003e13000000)

說明:檢查顯示oracle已經鏈接了aio的包

4、 調整數據庫參數 開啟aio
數據庫中的filesystemio_options參數設置為none,看來oracle中也沒有配置異步IO,
這里可以將數據庫中的filesystemio_options參數調整為setall;

SQL>?alter?system?set?filesystemio_options?=?setall?scope=spfile;?  SQL>?alter?system?set?disk_asynch_io?=?true?scope=spfile;?  SQL>?shutdown?immediate;  SQL>?startup;

5、查看aio是否生效

[oracle@localhost?~]$?more?/proc/slabinfo?|grep?kio  kioctx?130?160?384?10?1?:?tunables?54?27?8?:?slabdata?16?16?0  kiocb?16?30?256?15?1?:?tunables?120?60?8?:?slabdata?2?2?1

補充:出現 free buffer waits 等待事件 或者 io不給力的時候, 可以考慮開啟aio。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享