Linux下開啟非同步IO

來源:互聯網
上載者:User

最近在研究如何在IO競爭的情況下,如果儲存層級已經無法最佳化,還有其他什麼辦法解決IO競爭問題。最後想到了非同步IO。

我的redo寫磁碟的速度已經達到了最大值,無論我如何調整redo大小和組數,無論我如何調整檢查點頻率都沒有什麼用處。調整redo大小,之後減少redo切換的頻率,增加redo組數只是為了避免所有redo都已經沒使用但是業務仍然需要新的日誌來記錄資料更改。可是如果IO不給力,會造成一堆redo都依然不夠的局面。也許非同步IO是你最後一招了,那就試試吧。

客戶的資料庫IO負載較重,檢查後發現並未設定非同步IO。

整個資料庫的負載都集中在IO相關的等待上:

Top 5 Timed Foreground Events

Event

Waits

Time(s)

Avg wait (ms)

% DB time

Wait Class

log file sync

697,116

70,128

101

36.29

Commit

db file sequential read

2,982,135

54,498

18

28.20

User I/O

db file scattered read

754,680

38,741

51

20.05

User I/O

free buffer waits

35,410

20,560

581

10.64

Configuration

DB CPU

 

6,172

 

3.19

 

檢查後發現,當前系統並未使用非同步io:
[Oracle@localhost ~]$ cat /proc/slabinfo | grep kio
kioctx 37 140 384 10 1 : tunables 54 27 8 : slabdata 14 14 0
kiocb 0 0 256 15 1 : tunables 120 60 8 : slabdata 0 0 0
返回結果中kiocp對應的前兩項為0,說明系統中沒有使用非同步io。
檢查顯示oracle已經連結了aio的包:
[oracle@localhost ~]$ /usr/bin/ldd $ORACLE_HOME/bin/oracle | grep libaio
libaio.so.1 => /lib64/libaio.so.1 (0x0000003e13000000)
而資料庫中檢查發現filesystemio_options設定有誤:
SQL> show parameter disk_asynch_io
NAME TYPE VALUE
------------------------------------ -------------------------------- --------------------
disk_asynch_io boolean TRUE
SQL> show parameter filesystemio_options
NAME TYPE VALUE
------------------------------------ -------------------------------- -------------------
filesystemio_options string none

當前使用的是檔案系統,因此需要將filesystemio_options設定為asynch,才能開啟非同步io:
SQL> ALTER SYSTEM SET FILESYSTEMIO_OPTIONS = ASYNCH SCOPE = SPFILE;
System altered.
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.
Total System Global Area 6.0264E+10 bytes
Fixed Size 2242912 bytes
Variable Size 2147485344 bytes
Database Buffers 5.7982E+10 bytes
Redo Buffers 131960832 bytes
Database mounted.
Database opened.
SQL>
再次檢查系統上非同步io的設定,發現非同步io已經啟動:
[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
可以看到,目前非同步IO已經生效。

在Linux上Oracle如何啟用非同步IO? 

多Oracle相關資訊見

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.