Linux Asynchronous I/O (AIO) ist eine erweiterte Funktion, die im Linux-Kernel bereitgestellt wird. Es handelt sich um eine Standardfunktion des Linux 2.6-Kernels. Die Grundidee von AIO besteht darin, einem Prozess die Initiierung vieler E/A-Vorgänge zu ermöglichen, ohne den Abschluss eines Vorgangs zu blockieren oder abzuwarten. Der Prozess kann die Ergebnisse des E/A-Vorgangs später abrufen oder wenn ihm mitgeteilt wird, dass der E/A-Vorgang abgeschlossen ist.
Synchronous IO: Der Thread startet einen IO-Vorgang und wechselt dann sofort in den Wartezustand. Er wacht erst auf, wenn der IO-Vorgang abgeschlossen ist, um die Ausführung fortzusetzen.
Asynchrone E/A: Der Thread sendet eine E/A-Anfrage an den Kernel und verarbeitet dann weiterhin andere Dinge. Nachdem der Kernel die E/A-Anfrage abgeschlossen hat, benachrichtigt er den Thread, dass der E/A-Vorgang abgeschlossen ist
1 . – Überprüfen Sie, ob das System asynchrone E/A verwendet. Slab ist der Linux-Speicherzuweiser und es wurden AIO-bezogene Speicherstrukturen zugewiesen.
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
Achten Sie darauf, dass in der kiocb-Zeile 0 angezeigt wird, was darauf hinweist, dass die asynchrone E/A nicht gestartet wurde.
2. Überprüfen Sie, ob in der Datenbank asynchrones IO aktiviert ist
(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 hat das AIO-Paket verknüpft
[oracle@localhost ~]$ /usr/bin/ldd $ORACLE_HOME/bin/oracle | grep libaio libaio.so.1 => /lib64/libaio.so.1 (0x0000003e13000000)
Hinweis: Die Überprüfung zeigt, dass Oracle das AIO-Paket verknüpft hat
4. Passen Sie die Datenbankparameter an, um AIO zu aktivieren.
Der Parameter filesystemio_options ist anscheinend auf „none“ gesetzt dass asynchron in Oracle nicht konfiguriert ist,
Hier können Sie den Parameter filesystemio_options auf setall anpassen;
SQL> alter system set filesystemio_options = setall scope=spfile; SQL> alter system set disk_asynch_io = true scope=spfile; SQL> shutdown immediate; SQL> startup;
Zusätzlich: Es werden kostenlose Pufferwartezeiten angezeigt. Wenn das Warten auf ein Ereignis oder io nicht ausreicht, können Sie erwägen, aio zu aktivieren.
Das obige ist der detaillierte Inhalt vonAIO-Analyse in Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!