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
3. Oracle が aio パッケージをリンクしていることを示します
4. データベースを調整します。 aio を有効にするためのパラメータ
データベースの filesystemio_options パラメータが Oracle で設定されていないようです。
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。
以上がOracle での AIO 分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。