Oracle의 AIO 분석

一个新手
一个新手원래의
2017-09-08 10:50:421217검색

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 매개변수가 Oracle에 구성되지 않은 것 같습니다.
여기에서 데이터베이스의 filesystemio_options 매개변수를 setall로 조정할 수 있습니다. effect

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

추가: 여유 버퍼가 나타납니다. waits가 이벤트를 기다리고 있거나 io가 강력하지 않은 경우 aio를 켜는 것을 고려할 수 있습니다.

위 내용은 Oracle의 AIO 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.